identity
Interfaces
Section titled “Interfaces”CharacterAccountData
Section titled “CharacterAccountData”Defined in: packages/sage/src/internal/c4/identity.ts:231
SDK-owned decoded Character data.
Example
Section titled “Example”declare const character: CharacterAccountData;const atlas = character.atlas;Properties
Section titled “Properties”readonly atlas: number;Defined in: packages/sage/src/internal/c4/identity.ts:242
atlasRaw
Section titled “atlasRaw”readonly atlasRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:241
readonly bump: number;Defined in: packages/sage/src/internal/c4/identity.ts:235
checkIn
Section titled “checkIn”readonly checkIn: { lastCheckInTime: bigint; streak: number;};Defined in: packages/sage/src/internal/c4/identity.ts:236
lastCheckInTime
Section titled “lastCheckInTime”readonly lastCheckInTime: bigint;streak
Section titled “streak”readonly streak: number;counts
Section titled “counts”readonly counts: { claimStakes: number; craftingHabs: number; fleets: number;};Defined in: packages/sage/src/internal/c4/identity.ts:243
claimStakes
Section titled “claimStakes”readonly claimStakes: number;craftingHabs
Section titled “craftingHabs”readonly craftingHabs: number;fleets
Section titled “fleets”readonly fleets: number;readonly game: Address;Defined in: packages/sage/src/internal/c4/identity.ts:234
modifiers
Section titled “modifiers”readonly modifiers: CharacterModifiersData;Defined in: packages/sage/src/internal/c4/identity.ts:254
pilotXpBudget
Section titled “pilotXpBudget”readonly pilotXpBudget: { available: number; fractionalCarry: number; fractionalCarryRaw: bigint; lastAccrualTime: bigint;};Defined in: packages/sage/src/internal/c4/identity.ts:248
available
Section titled “available”readonly available: number;fractionalCarry
Section titled “fractionalCarry”readonly fractionalCarry: number;fractionalCarryRaw
Section titled “fractionalCarryRaw”readonly fractionalCarryRaw: bigint;lastAccrualTime
Section titled “lastAccrualTime”readonly lastAccrualTime: bigint;playerProfile
Section titled “playerProfile”readonly playerProfile: Address;Defined in: packages/sage/src/internal/c4/identity.ts:233
version
Section titled “version”readonly version: number;Defined in: packages/sage/src/internal/c4/identity.ts:232
readonly xp: CharacterXpData;Defined in: packages/sage/src/internal/c4/identity.ts:240
CharacterModifierData
Section titled “CharacterModifierData”Defined in: packages/sage/src/internal/c4/identity.ts:171
SDK-owned translation of Character modifier values.
Example
Section titled “Example”declare const modifiers: CharacterModifierData;const fleetLimit = modifiers.fleetSize;Properties
Section titled “Properties”cargoCategories
Section titled “cargoCategories”readonly cargoCategories: readonly number[];Defined in: packages/sage/src/internal/c4/identity.ts:202
craftingEfficiencyModifier
Section titled “craftingEfficiencyModifier”readonly craftingEfficiencyModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:184
craftingEfficiencyModifierRaw
Section titled “craftingEfficiencyModifierRaw”readonly craftingEfficiencyModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:185
craftingJobConcurrencyBonus
Section titled “craftingJobConcurrencyBonus”readonly craftingJobConcurrencyBonus: number;Defined in: packages/sage/src/internal/c4/identity.ts:188
craftingTimeModifier
Section titled “craftingTimeModifier”readonly craftingTimeModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:186
craftingTimeModifierRaw
Section titled “craftingTimeModifierRaw”readonly craftingTimeModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:187
enemyFactionZoneAccess
Section titled “enemyFactionZoneAccess”readonly enemyFactionZoneAccess: boolean;Defined in: packages/sage/src/internal/c4/identity.ts:194
fleetConcurrency
Section titled “fleetConcurrency”readonly fleetConcurrency: number;Defined in: packages/sage/src/internal/c4/identity.ts:173
fleetSize
Section titled “fleetSize”readonly fleetSize: number;Defined in: packages/sage/src/internal/c4/identity.ts:172
maxDailyStreakLength
Section titled “maxDailyStreakLength”readonly maxDailyStreakLength: number;Defined in: packages/sage/src/internal/c4/identity.ts:195
maxProductivePlots
Section titled “maxProductivePlots”readonly maxProductivePlots: number;Defined in: packages/sage/src/internal/c4/identity.ts:192
maxProductivePlotTier?
Section titled “maxProductivePlotTier?”readonly optional maxProductivePlotTier?: 1 | 2 | 3 | 4 | 5;Defined in: packages/sage/src/internal/c4/identity.ts:191
maxResidentialPlots
Section titled “maxResidentialPlots”readonly maxResidentialPlots: number;Defined in: packages/sage/src/internal/c4/identity.ts:190
maxResidentialPlotTier?
Section titled “maxResidentialPlotTier?”readonly optional maxResidentialPlotTier?: 1 | 2 | 3 | 4 | 5;Defined in: packages/sage/src/internal/c4/identity.ts:189
maxShipSize
Section titled “maxShipSize”readonly maxShipSize: ShipSize;Defined in: packages/sage/src/internal/c4/identity.ts:196
rareMineralDiscovery
Section titled “rareMineralDiscovery”readonly rareMineralDiscovery: readonly RareMineralDiscoveryData[];Defined in: packages/sage/src/internal/c4/identity.ts:203
researchTags
Section titled “researchTags”readonly researchTags: readonly number[];Defined in: packages/sage/src/internal/c4/identity.ts:201
respawnTimeModifier
Section titled “respawnTimeModifier”readonly respawnTimeModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:174
respawnTimeModifierRaw
Section titled “respawnTimeModifierRaw”readonly respawnTimeModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:175
scanCoolDownModifier
Section titled “scanCoolDownModifier”readonly scanCoolDownModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:199
scanCoolDownModifierRaw
Section titled “scanCoolDownModifierRaw”readonly scanCoolDownModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:200
scanPowerModifier
Section titled “scanPowerModifier”readonly scanPowerModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:197
scanPowerModifierRaw
Section titled “scanPowerModifierRaw”readonly scanPowerModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:198
securityZoneAccess
Section titled “securityZoneAccess”readonly securityZoneAccess: RiskZoneAccess;Defined in: packages/sage/src/internal/c4/identity.ts:193
subwarpSpeedModifier
Section titled “subwarpSpeedModifier”readonly subwarpSpeedModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:180
subwarpSpeedModifierRaw
Section titled “subwarpSpeedModifierRaw”readonly subwarpSpeedModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:181
warpCooldownModifier
Section titled “warpCooldownModifier”readonly warpCooldownModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:182
warpCooldownModifierRaw
Section titled “warpCooldownModifierRaw”readonly warpCooldownModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:183
warpLaneFeeModifier
Section titled “warpLaneFeeModifier”readonly warpLaneFeeModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:176
warpLaneFeeModifierRaw
Section titled “warpLaneFeeModifierRaw”readonly warpLaneFeeModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:177
warpSpeedModifier
Section titled “warpSpeedModifier”readonly warpSpeedModifier: number;Defined in: packages/sage/src/internal/c4/identity.ts:178
warpSpeedModifierRaw
Section titled “warpSpeedModifierRaw”readonly warpSpeedModifierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:179
CharacterModifiersData
Section titled “CharacterModifiersData”Defined in: packages/sage/src/internal/c4/identity.ts:213
SDK-owned Character modifier state from the Character account.
Example
Section titled “Example”declare const modifiers: CharacterModifiersData;const nodes = modifiers.unlockedNodes;Properties
Section titled “Properties”nodeLevels
Section titled “nodeLevels”readonly nodeLevels: readonly { level: number; nodeId: number;}[];Defined in: packages/sage/src/internal/c4/identity.ts:217
readonly seqId: number;Defined in: packages/sage/src/internal/c4/identity.ts:214
unlockedNodes
Section titled “unlockedNodes”readonly unlockedNodes: readonly number[];Defined in: packages/sage/src/internal/c4/identity.ts:216
unupdatedCount
Section titled “unupdatedCount”readonly unupdatedCount: number;Defined in: packages/sage/src/internal/c4/identity.ts:215
values
Section titled “values”readonly values: CharacterModifierData;Defined in: packages/sage/src/internal/c4/identity.ts:221
CharacterProgressionSnapshot
Section titled “CharacterProgressionSnapshot”Defined in: packages/sage/src/identity/index.ts:138
Character XP and pilot state joined to sequence-matched Game XP rules.
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const progression: CharacterProgressionSnapshot = await getCharacterProgressionForProfile(ctx, profileAddress);console.log(progression.xp.pilot.level);Properties
Section titled “Properties”character
Section titled “character”readonly character: EntityRef<"character">;Defined in: packages/sage/src/identity/index.ts:140
readonly kind: "characterProgression";Defined in: packages/sage/src/identity/index.ts:139
pilotXpBudget
Section titled “pilotXpBudget”readonly pilotXpBudget: { available: number; fractionalCarry: number; fractionalCarryRaw: bigint; lastAccrualTime: bigint;};Defined in: packages/sage/src/identity/index.ts:142
available
Section titled “available”readonly available: number;fractionalCarry
Section titled “fractionalCarry”readonly fractionalCarry: number;fractionalCarryRaw
Section titled “fractionalCarryRaw”readonly fractionalCarryRaw: bigint;lastAccrualTime
Section titled “lastAccrualTime”readonly lastAccrualTime: bigint;readonly xp: CharacterXpData;Defined in: packages/sage/src/identity/index.ts:141
xpDefinitions
Section titled “xpDefinitions”readonly xpDefinitions: GameXpDefinitionsSectionData;Defined in: packages/sage/src/identity/index.ts:143
Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/identity/index.ts:144
Returns
Section titled “Returns”unknown
CharacterSnapshot
Section titled “CharacterSnapshot”Defined in: packages/sage/src/identity/index.ts:117
Immutable Character snapshot derived from a Player Profile and Game.
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const character: CharacterSnapshot = await getCharacterForProfile(ctx, profileAddress);console.log(character.profile.address);Extends
Section titled “Extends”Omit<CharacterAccountData,"playerProfile">
Extended by
Section titled “Extended by”Properties
Section titled “Properties”address
Section titled “address”readonly address: Address;Defined in: packages/sage/src/identity/index.ts:122
readonly atlas: number;Defined in: packages/sage/src/internal/c4/identity.ts:242
Inherited from
Section titled “Inherited from”atlasRaw
Section titled “atlasRaw”readonly atlasRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:241
Inherited from
Section titled “Inherited from”readonly bump: number;Defined in: packages/sage/src/internal/c4/identity.ts:235
Inherited from
Section titled “Inherited from”checkIn
Section titled “checkIn”readonly checkIn: { lastCheckInTime: bigint; streak: number;};Defined in: packages/sage/src/internal/c4/identity.ts:236
lastCheckInTime
Section titled “lastCheckInTime”readonly lastCheckInTime: bigint;streak
Section titled “streak”readonly streak: number;Inherited from
Section titled “Inherited from”counts
Section titled “counts”readonly counts: { claimStakes: number; craftingHabs: number; fleets: number;};Defined in: packages/sage/src/internal/c4/identity.ts:243
claimStakes
Section titled “claimStakes”readonly claimStakes: number;craftingHabs
Section titled “craftingHabs”readonly craftingHabs: number;fleets
Section titled “fleets”readonly fleets: number;Inherited from
Section titled “Inherited from”readonly game: Address;Defined in: packages/sage/src/internal/c4/identity.ts:234
Inherited from
Section titled “Inherited from”readonly kind: "character";Defined in: packages/sage/src/identity/index.ts:121
modifiers
Section titled “modifiers”readonly modifiers: CharacterModifiersData;Defined in: packages/sage/src/internal/c4/identity.ts:254
Inherited from
Section titled “Inherited from”CharacterAccountData.modifiers
pilotXpBudget
Section titled “pilotXpBudget”readonly pilotXpBudget: { available: number; fractionalCarry: number; fractionalCarryRaw: bigint; lastAccrualTime: bigint;};Defined in: packages/sage/src/internal/c4/identity.ts:248
available
Section titled “available”readonly available: number;fractionalCarry
Section titled “fractionalCarry”readonly fractionalCarry: number;fractionalCarryRaw
Section titled “fractionalCarryRaw”readonly fractionalCarryRaw: bigint;lastAccrualTime
Section titled “lastAccrualTime”readonly lastAccrualTime: bigint;Inherited from
Section titled “Inherited from”CharacterAccountData.pilotXpBudget
profile
Section titled “profile”readonly profile: EntityRef<"profile">;Defined in: packages/sage/src/identity/index.ts:123
version
Section titled “version”readonly version: number;Defined in: packages/sage/src/internal/c4/identity.ts:232
Inherited from
Section titled “Inherited from”readonly xp: CharacterXpData;Defined in: packages/sage/src/internal/c4/identity.ts:240
Inherited from
Section titled “Inherited from”Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/identity/index.ts:124
Returns
Section titled “Returns”unknown
CharacterXpCategoryData
Section titled “CharacterXpCategoryData”Defined in: packages/sage/src/internal/c4/identity.ts:101
SDK-owned XP values for one Character category.
Example
Section titled “Example”declare const category: CharacterXpCategoryData;const level = category.level;Properties
Section titled “Properties”earned
Section titled “earned”readonly earned: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:103
readonly level: number;Defined in: packages/sage/src/internal/c4/identity.ts:104
readonly spent: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:102
CharacterXpData
Section titled “CharacterXpData”Defined in: packages/sage/src/internal/c4/identity.ts:114
SDK-owned Character XP state.
Example
Section titled “Example”declare const xp: CharacterXpData;const pilotLevel = xp.pilot.level;Properties
Section titled “Properties”building
Section titled “building”readonly building: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:121
combat
Section titled “combat”readonly combat: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:123
councilRank
Section titled “councilRank”readonly councilRank: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:116
councilRankLevelCarry
Section titled “councilRankLevelCarry”readonly councilRankLevelCarry: number;Defined in: packages/sage/src/internal/c4/identity.ts:124
crafting
Section titled “crafting”readonly crafting: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:122
dailyXp
Section titled “dailyXp”readonly dailyXp: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:117
dataRunner
Section titled “dataRunner”readonly dataRunner: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:119
mining
Section titled “mining”readonly mining: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:120
readonly pilot: CharacterXpCategoryData;Defined in: packages/sage/src/internal/c4/identity.ts:118
readonly seqId: number;Defined in: packages/sage/src/internal/c4/identity.ts:115
ProfileAccountData
Section titled “ProfileAccountData”Defined in: packages/sage/src/internal/c4/identity.ts:85
SDK-owned decoded Player Profile data.
Example
Section titled “Example”declare const profile: ProfileAccountData;const keys = profile.keys;Extended by
Section titled “Extended by”Properties
Section titled “Properties”authKeyCount
Section titled “authKeyCount”readonly authKeyCount: number;Defined in: packages/sage/src/internal/c4/identity.ts:87
createdAt
Section titled “createdAt”readonly createdAt: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:90
readonly keys: readonly ProfileKeyData[];Defined in: packages/sage/src/internal/c4/identity.ts:91
keyThreshold
Section titled “keyThreshold”readonly keyThreshold: number;Defined in: packages/sage/src/internal/c4/identity.ts:88
nextSeqId
Section titled “nextSeqId”readonly nextSeqId: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:89
version
Section titled “version”readonly version: number;Defined in: packages/sage/src/internal/c4/identity.ts:86
ProfileKeyData
Section titled “ProfileKeyData”Defined in: packages/sage/src/internal/c4/identity.ts:69
SDK-owned representation of one Player Profile key.
Example
Section titled “Example”declare const key: ProfileKeyData;const expiresAt = key.expiresAt;Properties
Section titled “Properties”address
Section titled “address”readonly address: Address;Defined in: packages/sage/src/internal/c4/identity.ts:70
expiresAt?
Section titled “expiresAt?”readonly optional expiresAt?: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:73
expiresAtRaw
Section titled “expiresAtRaw”readonly expiresAtRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:72
permissions
Section titled “permissions”readonly permissions: readonly ProfilePermission[];Defined in: packages/sage/src/internal/c4/identity.ts:75
permissionsRaw
Section titled “permissionsRaw”readonly permissionsRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:74
readonly scope: Address;Defined in: packages/sage/src/internal/c4/identity.ts:71
ProfileSnapshot
Section titled “ProfileSnapshot”Defined in: packages/sage/src/identity/index.ts:101
Immutable, translated Player Profile snapshot.
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const profile: ProfileSnapshot = await getProfile(ctx, profileAddress);console.log(profile.address, profile.keys.length);Extends
Section titled “Extends”Extended by
Section titled “Extended by”Properties
Section titled “Properties”address
Section titled “address”readonly address: Address;Defined in: packages/sage/src/identity/index.ts:103
authKeyCount
Section titled “authKeyCount”readonly authKeyCount: number;Defined in: packages/sage/src/internal/c4/identity.ts:87
Inherited from
Section titled “Inherited from”ProfileAccountData.authKeyCount
createdAt
Section titled “createdAt”readonly createdAt: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:90
Inherited from
Section titled “Inherited from”readonly keys: readonly ProfileKeyData[];Defined in: packages/sage/src/internal/c4/identity.ts:91
Inherited from
Section titled “Inherited from”keyThreshold
Section titled “keyThreshold”readonly keyThreshold: number;Defined in: packages/sage/src/internal/c4/identity.ts:88
Inherited from
Section titled “Inherited from”ProfileAccountData.keyThreshold
readonly kind: "profile";Defined in: packages/sage/src/identity/index.ts:102
nextSeqId
Section titled “nextSeqId”readonly nextSeqId: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:89
Inherited from
Section titled “Inherited from”version
Section titled “version”readonly version: number;Defined in: packages/sage/src/internal/c4/identity.ts:86
Inherited from
Section titled “Inherited from”Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/identity/index.ts:104
Returns
Section titled “Returns”unknown
RareMineralDiscoveryData
Section titled “RareMineralDiscoveryData”Defined in: packages/sage/src/internal/c4/identity.ts:158
One translated cargo-specific research modifier.
Example
Section titled “Example”declare const discovery: RareMineralDiscoveryData;const multiplier = discovery.multiplier;Properties
Section titled “Properties”cargoId
Section titled “cargoId”readonly cargoId: number;Defined in: packages/sage/src/internal/c4/identity.ts:159
multiplier
Section titled “multiplier”readonly multiplier: number;Defined in: packages/sage/src/internal/c4/identity.ts:160
multiplierRaw
Section titled “multiplierRaw”readonly multiplierRaw: bigint;Defined in: packages/sage/src/internal/c4/identity.ts:161
ResearchCatalogSnapshot
Section titled “ResearchCatalogSnapshot”Defined in: packages/sage/src/identity/index.ts:156
Independent Game research catalog without Character perk or unlock claims.
Example
Section titled “Example”declare const ctx: SageContext;const catalog: ResearchCatalogSnapshot = await getResearchCatalog(ctx);console.log(catalog.nodes.length);Properties
Section titled “Properties”readonly game: EntityRef<"game">;Defined in: packages/sage/src/identity/index.ts:158
readonly kind: "researchCatalog";Defined in: packages/sage/src/identity/index.ts:157
readonly nodes: readonly GameResearchNodeData[];Defined in: packages/sage/src/identity/index.ts:159
sequenceId
Section titled “sequenceId”readonly sequenceId: number;Defined in: packages/sage/src/identity/index.ts:160
Methods
Section titled “Methods”toJSON()
Section titled “toJSON()”toJSON(): unknown;Defined in: packages/sage/src/identity/index.ts:161
Returns
Section titled “Returns”unknown
Type Aliases
Section titled “Type Aliases”ProfilePermission
Section titled “ProfilePermission”type ProfilePermission = | "authenticate" | "addKeys" | "removeKeys" | "changeName" | "createRole" | "removeRole" | "setAuthorizer" | "joinRole" | "leaveRole" | "toggleAcceptingNewMembers" | "addMember" | "removeMember" | "drainSolVault";Defined in: packages/sage/src/internal/c4/identity.ts:47
Stable labels for Player Profile key permissions.
Example
Section titled “Example”const permission: ProfilePermission = 'authenticate';ResearchNodeDefinition
Section titled “ResearchNodeDefinition”type ResearchNodeDefinition = GameResearchNodeData;Defined in: packages/sage/src/identity/index.ts:89
One Game research node definition with no claimed player unlock state.
Example
Section titled “Example”declare const node: ResearchNodeDefinition;console.log(node.name, node.maxLevel);RiskZoneAccess
Section titled “RiskZoneAccess”type RiskZoneAccess = "low" | "medium" | "high";Defined in: packages/sage/src/internal/c4/identity.ts:149
Stable risk-zone labels translated from generated numeric enums.
Example
Section titled “Example”const access: RiskZoneAccess = 'low';ShipSize
Section titled “ShipSize”type ShipSize = | "xx-small" | "x-small" | "small" | "medium" | "large" | "capital" | "commander" | "titan";Defined in: packages/sage/src/internal/c4/identity.ts:133
Stable ship-size labels translated from generated numeric enums.
Example
Section titled “Example”const size: ShipSize = 'medium';WalletProfileDiscoveryOptions
Section titled “WalletProfileDiscoveryOptions”type WalletProfileDiscoveryOptions = | Omit<ReadOptions, "maxAgeMs" | "refresh"> & { addresses: readonly Address[]; strategy: "known-addresses";} | Omit<ReadOptions, "maxAgeMs" | "refresh"> & { addresses?: never; strategy: "provider";};Defined in: packages/sage/src/identity/index.ts:179
Explicit strategy and read controls for wallet-to-Profile discovery.
Known addresses and provider hints follow the same direct on-chain validation path. The strategy is required so callers never mistake a known application mapping for provider discovery.
Example
Section titled “Example”declare const profileAddress: Address;const options: WalletProfileDiscoveryOptions = { strategy: 'known-addresses', addresses: [profileAddress],};XpCategory
Section titled “XpCategory”type XpCategory = GameXpCategory;Defined in: packages/sage/src/identity/index.ts:62
Stable gameplay label for one Game XP category.
Example
Section titled “Example”const category: XpCategory = 'pilot';XpDefinitions
Section titled “XpDefinitions”type XpDefinitions = GameXpDefinitionsSectionData;Defined in: packages/sage/src/identity/index.ts:80
Sequence-versioned Game XP rules joined to Character XP.
Example
Section titled “Example”declare const definitions: XpDefinitions;console.log(definitions.sequenceId);XpLevelThreshold
Section titled “XpLevelThreshold”type XpLevelThreshold = GameXpLevelThresholdData;Defined in: packages/sage/src/identity/index.ts:71
Exact XP thresholds for one level across every category.
Example
Section titled “Example”declare const threshold: XpLevelThreshold;console.log(threshold.pilot);Functions
Section titled “Functions”getCharacterForProfile()
Section titled “getCharacterForProfile()”function getCharacterForProfile( ctx, profileAddress,options?): Promise<CharacterSnapshot>;Defined in: packages/sage/src/identity/index.ts:458
Derives and reads the Character associated with a known Player Profile.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
profileAddress | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<CharacterSnapshot>
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const character = await getCharacterForProfile(ctx, profileAddress);getCharacterProgressionForProfile()
Section titled “getCharacterProgressionForProfile()”function getCharacterProgressionForProfile( ctx, profileAddress,options?): Promise<CharacterProgressionSnapshot>;Defined in: packages/sage/src/identity/index.ts:377
Reads a derived Character and joins its XP state to matching Game rules.
The Profile-to-Character PDA remains the canonical discovery path. Game XP rules are loaded lazily and must carry the Character’s exact sequence id.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
profileAddress | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<CharacterProgressionSnapshot>
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const progression = await getCharacterProgressionForProfile(ctx, profileAddress);getCharactersForWallet()
Section titled “getCharactersForWallet()”function getCharactersForWallet( ctx, wallet,options): Promise<readonly CharacterSnapshot[]>;Defined in: packages/sage/src/identity/index.ts:645
Resolves wallet Profiles and derives every Character currently present for them.
The returned list preserves the wallet discovery strategy metadata. Profiles without a Character are omitted because Character creation is optional.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
wallet | Address |
options | WalletProfileDiscoveryOptions |
Returns
Section titled “Returns”Promise<readonly CharacterSnapshot[]>
Example
Section titled “Example”declare const ctx: SageContext;declare const wallet: Address;const characters = await getCharactersForWallet(ctx, wallet, { strategy: 'provider',});getProfile()
Section titled “getProfile()”function getProfile( ctx, address,options?): Promise<ProfileSnapshot>;Defined in: packages/sage/src/identity/index.ts:355
Reads a required Player Profile by account address.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
address | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<ProfileSnapshot>
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const profile = await getProfile(ctx, profileAddress);getProfilesForWallet()
Section titled “getProfilesForWallet()”function getProfilesForWallet( ctx, wallet,options): Promise<readonly ProfileSnapshot[]>;Defined in: packages/sage/src/identity/index.ts:517
Resolves and directly validates zero, one, or many Player Profiles for a wallet.
Provider and known-address results are address hints only. Every unique candidate is read through the context data plane, validated as a Player Profile, and checked for the requested wallet in its decoded key list. Stored matching keys are accepted regardless of expiry; consumers remain responsible for applying authorization policy to the returned key details. Missing candidates are treated as stale hints and omitted; a contradictory present Profile rejects the discovery.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
wallet | Address |
options | WalletProfileDiscoveryOptions |
Returns
Section titled “Returns”Promise<readonly ProfileSnapshot[]>
Example
Section titled “Example”declare const ctx: SageContext;declare const wallet: Address;const profiles = await getProfilesForWallet(ctx, wallet, { strategy: 'provider',});getResearchCatalog()
Section titled “getResearchCatalog()”function getResearchCatalog(ctx): Promise<ResearchCatalogSnapshot>;Defined in: packages/sage/src/identity/index.ts:401
Reads the Game research tree as an independent, context-cached catalog.
The result intentionally has no Character relation, unlock flags, perk state, or inferred player ownership. It also has no read metadata because the definitions registry does not expose an authoritative per-read envelope.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
Returns
Section titled “Returns”Promise<ResearchCatalogSnapshot>
Example
Section titled “Example”declare const ctx: SageContext;const catalog = await getResearchCatalog(ctx);maybeGetCharacterForProfile()
Section titled “maybeGetCharacterForProfile()”function maybeGetCharacterForProfile( ctx, profileAddress, options?): Promise< | CharacterSnapshot| undefined>;Defined in: packages/sage/src/identity/index.ts:481
Derives and optionally reads the Character for a known Player Profile.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
profileAddress | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<
| CharacterSnapshot
| undefined>
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const character = await maybeGetCharacterForProfile(ctx, profileAddress);maybeGetProfile()
Section titled “maybeGetProfile()”function maybeGetProfile( ctx, address,options?): Promise<ProfileSnapshot | undefined>;Defined in: packages/sage/src/identity/index.ts:436
Reads an optional Player Profile by account address.
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
ctx | SageContext |
address | Address |
options? | ReadOptions |
Returns
Section titled “Returns”Promise<ProfileSnapshot | undefined>
Example
Section titled “Example”declare const ctx: SageContext;declare const profileAddress: Address;const profile = await maybeGetProfile(ctx, profileAddress);