#pragma once enum SceNpServiceState : s32 { SCE_NP_SERVICE_STATE_UNKNOWN = 0, SCE_NP_SERVICE_STATE_SIGNED_OUT, SCE_NP_SERVICE_STATE_SIGNED_IN, SCE_NP_SERVICE_STATE_ONLINE }; struct SceNpCommunicationId { char data[9]; char term; u8 num; char dummy; }; struct SceNpCommunicationPassphrase { u8 data[128]; }; struct SceNpCommunicationSignature { u8 data[160]; }; struct SceNpCommunicationConfig { vm::lcptr commId; vm::lcptr commPassphrase; vm::lcptr commSignature; }; struct SceNpCountryCode { char data[2]; char term; char padding[1]; }; struct SceNpOnlineId { char data[16]; char term; char dummy[3]; }; struct SceNpId { SceNpOnlineId handle; u8 opt[8]; u8 reserved[8]; }; struct SceNpAvatarUrl { char data[127]; char term; }; struct SceNpUserInformation { SceNpId userId; SceNpAvatarUrl icon; u8 reserved[52]; }; struct SceNpMyLanguages { le_t language1; le_t language2; le_t language3; u8 padding[4]; }; struct SceNpAvatarImage { u8 data[200 * 1024]; le_t size; u8 reserved[12]; }; enum SceNpAvatarSizeType : s32 { SCE_NP_AVATAR_SIZE_LARGE, SCE_NP_AVATAR_SIZE_MIDDLE, SCE_NP_AVATAR_SIZE_SMALL }; struct SceNpAboutMe { char data[64]; }; struct SceNpDate { le_t year; u8 month; u8 day; }; union SceNpTicketParam { le_t _s32; le_t _s64; le_t _u32; le_t _u64; SceNpDate date; u8 data[256]; }; struct SceNpTicketVersion { le_t major; le_t minor; }; using SceNpAuthCallback = s32(s32 id, s32 result, vm::ptr arg); struct SceNpAuthRequestParameter { le_t size; SceNpTicketVersion version; vm::lcptr serviceId; vm::lcptr cookie; le_t cookieSize; vm::lcptr entitlementId; le_t consumedCount; vm::lptr ticketCb; vm::lptr cbArg; }; struct SceNpEntitlementId { u8 data[32]; }; struct SceNpEntitlement { SceNpEntitlementId id; le_t createdDate; le_t expireDate; le_t type; le_t remainingCount; le_t consumedCount; char padding[4]; };