@aephia/atlas-kit 0.6.0-next.107 → 0.6.0-next.108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  2. package/dist/cargo/actions/deposit.js +22 -125
  3. package/dist/cargo/actions/deposit.js.map +1 -1
  4. package/dist/cargo/actions/wallet-context.d.ts +51 -2
  5. package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
  6. package/dist/cargo/actions/wallet-context.js +125 -2
  7. package/dist/cargo/actions/wallet-context.js.map +1 -1
  8. package/dist/cargo/actions/wallet-token.d.ts +1 -6
  9. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  10. package/dist/cargo/actions/wallet-token.js +0 -45
  11. package/dist/cargo/actions/wallet-token.js.map +1 -1
  12. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  13. package/dist/cargo/actions/withdrawal.js +35 -162
  14. package/dist/cargo/actions/withdrawal.js.map +1 -1
  15. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  16. package/dist/fleets/actions/ship-import.js +31 -77
  17. package/dist/fleets/actions/ship-import.js.map +1 -1
  18. package/dist/internal/planning/original-token.d.ts +34 -0
  19. package/dist/internal/planning/original-token.d.ts.map +1 -0
  20. package/dist/internal/planning/original-token.js +98 -0
  21. package/dist/internal/planning/original-token.js.map +1 -0
  22. package/dist/internal/planning/ship-token.d.ts +1 -5
  23. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  24. package/dist/internal/planning/ship-token.js +0 -36
  25. package/dist/internal/planning/ship-token.js.map +1 -1
  26. package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -1
  27. package/dist/internal/planning/starbase-player-owner.js +5 -13
  28. package/dist/internal/planning/starbase-player-owner.js.map +1 -1
  29. package/dist/internal/planning/wallet-starbase.d.ts +34 -0
  30. package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
  31. package/dist/internal/planning/wallet-starbase.js +39 -0
  32. package/dist/internal/planning/wallet-starbase.js.map +1 -0
  33. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/deposit.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAkBzE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAShE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAqQf"}
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kDAAkD,CAAC;AAO1D,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAqHf"}
@@ -1,18 +1,10 @@
1
- import { validateStarbaseSystem } from '../../internal/planning/starbase-system.js';
2
- import { observeWalletAccount, validateWalletCargoCache, } from './wallet-context.js';
3
- import { getAddressEncoder, getProgramDerivedAddress, isOffCurveAddress, } from '@solana/kit';
4
- import { InvalidActionInputError } from '../../client/errors.js';
5
- import { readContextRawAccounts } from '../../client/reconciliation.js';
6
- import { SAGE_PROGRAM_ADDRESS } from '../../internal/c4/runtime-bindings.js';
7
- import { profileAccountDefinition } from '../../internal/c4/identity.js';
8
- import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/character.js';
9
- import { deriveStarbasePlayerAddress, starbasePlayerAccountDefinition, } from '../../internal/c4/starbase.js';
10
- import { starSystemAccountDefinition, deriveStarSystemAddress, } from '../../internal/c4/world.js';
1
+ import { observeWalletAccount, readWalletCargo, requireWalletAccount, resolveWalletCargo, validateWalletCargoAmount, walletCargoGuards, } from './wallet-context.js';
2
+ import { isOffCurveAddress } from '@solana/kit';
11
3
  import { requireGameAddress } from '../../internal/game-context.js';
12
4
  import { adaptDepositCargoToGameInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
5
+ import { TOKEN_TRANSFER_DISCLOSURE, deriveAssociatedTokenAddress, isTokenMultisig, readTokenAccount, } from '../../internal/planning/original-token.js';
13
6
  import { createPlan } from '../../planning/index.js';
14
- import { readFreshGameCargoBytesConfiguration } from '../../registry/cargo.js';
15
- import { deriveWalletTokenAddress, failWalletCargo, validateWalletMint, validateWalletToken, } from './wallet-token.js';
7
+ import { failWalletCargo } from './wallet-token.js';
16
8
  /** Plans a wallet-to-game cargo deposit without signing, sending, or creating accounts.
17
9
  * Amount is exact raw token units, independent of mint display decimals. Refresh
18
10
  * the loaded Starbase before planning; execution checks the retained guards.
@@ -34,141 +26,46 @@ import { deriveWalletTokenAddress, failWalletCargo, validateWalletMint, validate
34
26
  */
35
27
  export async function planDepositCargoToGame(ctx, starbase, options) {
36
28
  validatePlanAuthorization(options.authorization);
37
- if (typeof options.amount !== 'bigint' ||
38
- options.amount <= 0n ||
39
- options.amount > 18446744073709551615n) {
40
- throw new InvalidActionInputError('amount', options.amount, 'a positive bigint no greater than u64 maximum', 'Supply an exact raw token amount as bigint.');
41
- }
42
- if (!Number.isSafeInteger(options.cargoId) ||
43
- options.cargoId < 0 ||
44
- options.cargoId > 65535) {
45
- throw new InvalidActionInputError('cargoId', options.cargoId, 'an unsigned u16 cargo ID', 'Choose an existing cargo definition ID.');
46
- }
29
+ validateWalletCargoAmount(options.amount, options.cargoId);
47
30
  if (isOffCurveAddress(options.owner))
48
31
  failWalletCargo('The token owner must be a directly signing wallet; program authorities are unsupported.', options.owner);
49
32
  const game = requireGameAddress(ctx);
50
- const character = await findCharacterPda(options.authorization.profile, game);
51
- const player = await deriveStarbasePlayerAddress(starbase.system.address, character);
52
- if (starbase.kind !== 'starbasePlayer' ||
53
- starbase.address !== player ||
54
- starbase.playerProfile.address !== options.authorization.profile ||
55
- starbase.character.address !== character) {
56
- failWalletCargo('The loaded Starbase must be the canonical registration for the authorized Profile and Character.', starbase.address);
57
- }
58
- const config = await readFreshGameCargoBytesConfiguration(ctx, options.cargoId);
59
- const [canonicalCache, canonicalCacheBump] = await getProgramDerivedAddress({
60
- programAddress: SAGE_PROGRAM_ADDRESS,
61
- seeds: [
62
- new TextEncoder().encode('CargoDefinitionsCache'),
63
- getAddressEncoder().encode(game),
64
- ],
65
- });
66
- if (config.cache !== canonicalCache)
67
- failWalletCargo('The configured cargo cache does not match the canonical Game cargo-cache PDA.', config.cache);
33
+ const { profile } = options.authorization;
34
+ const cargo = await resolveWalletCargo(ctx, starbase, profile, options.cargoId, game);
68
35
  const source = options.source ??
69
- (await deriveWalletTokenAddress(options.owner, config.cargo.mint));
70
- const destination = await deriveWalletTokenAddress(config.cache, config.cargo.mint);
71
- const addresses = [
72
- options.authorization.profile,
73
- character,
74
- player,
75
- starbase.system.address,
76
- config.cache,
77
- config.cargo.mint,
36
+ (await deriveAssociatedTokenAddress(options.owner, cargo.mint));
37
+ const { characterRaw, decimals, extraAccounts: [sourceCandidate, ownerAccount], playerRaw, profileRaw, systemGuard, } = await readWalletCargo(ctx, cargo, profile, game, 'deposit', [
78
38
  source,
79
- destination,
80
- ];
81
- const candidates = await readContextRawAccounts(ctx, [
82
- ...addresses,
83
39
  options.owner,
84
40
  ]);
85
- const ownerAccount = candidates[addresses.length];
86
41
  // Account program ownership does not determine whether an on-curve address
87
42
  // can sign. Only the Token programs' explicit 355-byte multisig authority
88
43
  // layout requires additional signer semantics outside this planner.
89
- if (ownerAccount &&
90
- ownerAccount.data.length === 355 &&
91
- (ownerAccount.owner ===
92
- 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' ||
93
- ownerAccount.owner ===
94
- 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb')) {
44
+ if (isTokenMultisig(ownerAccount))
95
45
  failWalletCargo('The source token owner is a Token multisig authority, which this single-owner deposit planner does not support.', options.owner);
96
- }
97
- const accounts = addresses.map((address, index) => {
98
- const account = candidates[index];
99
- if (!account)
100
- failWalletCargo(`Required deposit account ${address} is missing or the provider returned a different address. Register the player or create the required token account separately.`, address);
101
- return account;
102
- });
103
- const [profileRaw, characterRaw, playerRaw, systemRaw, cacheRaw, mintRaw, sourceRaw, vaultRaw,] = accounts;
104
- profileAccountDefinition.decode(profileRaw);
105
- const characterData = characterAccountDefinition.decode(characterRaw);
106
- const playerData = starbasePlayerAccountDefinition.decode(playerRaw);
107
- const systemData = starSystemAccountDefinition.decode(systemRaw);
108
- if (characterData.game !== game ||
109
- characterData.playerProfile !== options.authorization.profile ||
110
- playerData.playerProfile !== options.authorization.profile ||
111
- playerData.character !== character ||
112
- playerData.system !== starbase.system.address ||
113
- systemData.game !== game ||
114
- (await deriveStarSystemAddress(game, systemData.systemId)) !==
115
- starbase.system.address) {
116
- failWalletCargo('Fresh Character, player Starbase, and System must belong to the configured Game and authorized Profile.', player);
117
- }
118
- const systemGuard = {
119
- kind: 'starbase-system',
120
- address: systemRaw.address,
121
- game,
122
- starbaseSequenceId: systemData.sequenceId,
123
- requireCss: true,
124
- describes: 'The canonical Star System retains its active Starbase and generation as a Central Space Station; unrelated shared activity may change.',
125
- };
126
- await validateStarbaseSystem(systemRaw, systemGuard);
127
- validateWalletCargoCache(cacheRaw, game, canonicalCacheBump);
128
- const decimals = validateWalletMint(mintRaw);
129
- const balance = validateWalletToken(sourceRaw, config.cargo.mint, options.owner);
130
- validateWalletToken(vaultRaw, config.cargo.mint, config.cache);
46
+ const balance = readTokenAccount(requireWalletAccount(sourceCandidate, source, 'deposit'), cargo.mint, options.owner, failWalletCargo);
131
47
  if (balance < options.amount)
132
48
  failWalletCargo(`Source balance ${String(balance)} raw units is below requested ${String(options.amount)}. Reduce the amount.`, source);
133
- const describes = `Deposit ${String(options.amount)} raw units of cargo ${String(options.cargoId)} (mint ${config.cargo.mint}, ${String(decimals)} display decimals) from token account ${source} to Game vault ${destination}, for player Starbase ${player}; the program determines the resulting game inventory credit. Profile authority ${options.authorization.authority} and token owner ${options.owner} authorize the deposit. Network fees are paid separately by the execution fee payer. Permissions, access gates, credit conversion, and final balances remain chain-authoritative; simulate before signing. System identity, active Starbase generation and applicable CSS requirements are rechecked before signing; unrelated System combat, shield, health and hab activity is not equality-bound. Execution access checks remain chain-authoritative, not a client-side atomicity guarantee. Mint supply and authorities may change; initialized original Token mint layout and decimals are rechecked before signing.${ownerAccount ? '' : ' An absent source wallet may receive native funding as an empty, non-executable System account.'}`;
49
+ const describes = `Deposit ${String(options.amount)} raw units of cargo ${String(options.cargoId)} (mint ${cargo.mint}, ${String(decimals)} display decimals) from token account ${source} to Game vault ${cargo.vault}, for player Starbase ${cargo.player}; the program determines the resulting game inventory credit. Profile authority ${options.authorization.authority} and token owner ${options.owner} authorize the deposit. Network fees are paid separately by the execution fee payer. Permissions, access gates, credit conversion, and final balances remain chain-authoritative; simulate before signing. ${TOKEN_TRANSFER_DISCLOSURE}${ownerAccount ? '' : ' An absent source wallet may receive native funding as an empty, non-executable System account.'}`;
134
50
  return createPlan({
135
51
  kind: 'cargo.wallet-deposit',
136
52
  summary: describes,
137
53
  preconditions: [
138
54
  systemGuard,
139
- {
140
- kind: 'token-mint',
141
- address: mintRaw.address,
142
- decimals,
143
- describes: `Mint ${mintRaw.address} remains a valid initialized original Token Mint with unchanged decimals; supply and authorities may change.`,
144
- },
145
- {
146
- kind: 'game-cargo-bytes-config',
147
- address: game,
148
- cargoId: options.cargoId,
149
- configHash: config.configHash,
150
- describes: 'The selected cargo’s full encoded configuration, including its stored name, and cache identity remain unchanged; unrelated Game changes are allowed.',
151
- },
152
- {
153
- kind: 'cargo-cache',
154
- address: config.cache,
155
- game,
156
- bump: canonicalCacheBump,
157
- describes: 'The canonical cargo cache retains valid Game identity and layout; counters may change.',
158
- },
55
+ ...walletCargoGuards(cargo, options.cargoId, game, decimals),
159
56
  {
160
57
  kind: 'token-account',
161
58
  address: source,
162
- mint: config.cargo.mint,
59
+ mint: cargo.mint,
163
60
  owner: options.owner,
164
61
  minimumBalance: options.amount,
165
62
  describes: 'The existing source remains an initialized original Token account with sufficient raw tokens.',
166
63
  },
167
64
  {
168
65
  kind: 'token-account',
169
- address: destination,
170
- mint: config.cargo.mint,
171
- owner: config.cache,
66
+ address: cargo.vault,
67
+ mint: cargo.mint,
68
+ owner: cargo.cache,
172
69
  minimumBalance: 0n,
173
70
  describes: 'The existing shared vault remains a valid original Token destination; balance changes are allowed.',
174
71
  },
@@ -196,13 +93,13 @@ export async function planDepositCargoToGame(ctx, starbase, options) {
196
93
  instruction: adaptDepositCargoToGameInstruction({
197
94
  authorization: options.authorization,
198
95
  owner: options.owner,
199
- systemAndStarbasePlayerSystem: starbase.system.address,
200
- systemAndStarbasePlayerStarbasePlayer: player,
201
- character,
96
+ systemAndStarbasePlayerSystem: cargo.system,
97
+ systemAndStarbasePlayerStarbasePlayer: cargo.player,
98
+ character: cargo.character,
202
99
  game,
203
- cargoCache: config.cache,
100
+ cargoCache: cargo.cache,
204
101
  source,
205
- destination,
102
+ destination: cargo.vault,
206
103
  amount: options.amount,
207
104
  }),
208
105
  signers: [...new Set([options.authorization.authority, options.owner])],
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/cargo/actions/deposit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../../src/cargo/actions/deposit.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Address } from '@solana/kit';
2
- import type { RawAccount } from '../../client/contracts.js';
2
+ import type { RawAccount, SageContext } from '../../client/contracts.js';
3
3
  import type { EntityRef } from '../../client/refs.js';
4
4
  import type { PlanPrecondition } from '../../planning/index.js';
5
5
  export interface StarbasePlayerIntent {
@@ -10,5 +10,54 @@ export interface StarbasePlayerIntent {
10
10
  readonly character: EntityRef<'character'>;
11
11
  }
12
12
  export declare function observeWalletAccount(account: RawAccount, role?: string): Promise<PlanPrecondition>;
13
- export { validateWalletCargoCache } from '../../internal/c4/wallet-cargo-cache.js';
13
+ /** Requires an exact raw u64 amount and a u16 cargo id. */
14
+ export declare function validateWalletCargoAmount(amount: unknown, cargoId: unknown): void;
15
+ /** Pre-read facts shared by wallet deposits and withdrawals: the authorization
16
+ * Profile's canonical Starbase Player, the fresh cargo configuration, and the
17
+ * canonical Game cargo cache and its shared vault for the cargo mint. */
18
+ export declare function resolveWalletCargo(ctx: SageContext, starbase: StarbasePlayerIntent, profile: Address, cargoId: number, game: Address): Promise<{
19
+ bump: import("@solana/kit").ProgramDerivedAddressBump;
20
+ cache: Address<string>;
21
+ character: Address;
22
+ config: Readonly<{
23
+ configHash: string;
24
+ rawAccount: RawAccount;
25
+ cargo: import("@staratlas/dev-sage").CargoType;
26
+ cache: import("../../client/contracts.js").Address;
27
+ sequenceId: number;
28
+ }>;
29
+ mint: Address;
30
+ player: Address;
31
+ system: import("../../client/contracts.js").Address;
32
+ vault: Address;
33
+ }>;
34
+ type WalletCargo = Awaited<ReturnType<typeof resolveWalletCargo>>;
35
+ /** Requires an account read for a wallet cargo transfer to exist. */
36
+ export declare function requireWalletAccount(account: RawAccount | undefined, address: Address, action: 'deposit' | 'withdrawal'): RawAccount;
37
+ /** Reads the Profile, Character, Starbase Player, System, cargo cache, mint
38
+ * and shared vault with `extra` accounts in the same batch, and requires the
39
+ * shared Starbase graph, cache, mint and vault facts. Returns the extra
40
+ * accounts as read, missing ones included. */
41
+ export declare function readWalletCargo(ctx: SageContext, cargo: WalletCargo, profile: Address, game: Address, action: 'deposit' | 'withdrawal', extra: readonly Address[]): Promise<{
42
+ cacheData: import("@staratlas/dev-sage").CargoDefinitionsCache;
43
+ characterRaw: RawAccount;
44
+ decimals: number;
45
+ extraAccounts: (RawAccount | undefined)[];
46
+ playerData: Readonly<import("../../starbases/index.js").StarbasePlayerAccountData>;
47
+ playerRaw: RawAccount;
48
+ profileRaw: RawAccount;
49
+ systemGuard: {
50
+ describes: string;
51
+ requireCss?: true;
52
+ kind: "starbase-system";
53
+ address: import("../../client/contracts.js").Address;
54
+ game: Address;
55
+ starbaseSequenceId: bigint;
56
+ };
57
+ vaultBalance: bigint;
58
+ }>;
59
+ /** The mint, cargo configuration and cargo cache guards shared by wallet
60
+ * cargo Plans. */
61
+ export declare function walletCargoGuards(cargo: WalletCargo, cargoId: number, game: Address, decimals: number): readonly PlanPrecondition[];
62
+ export {};
14
63
  //# sourceMappingURL=wallet-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-context.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,UAAU,EACnB,IAAI,SAAiB,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"wallet-context.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-context.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,UAAU,EACnB,IAAI,SAAiB,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED,2DAA2D;AAC3D,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,QAwB1E;AAED;;yEAEyE;AACzE,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;GA+Bd;AAED,KAAK,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AAElE,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,GAAG,YAAY,GAC/B,UAAU,CAQZ;AAED;;;8CAG8C;AAC9C,wBAAsB,eAAe,CACnC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,SAAS,GAAG,YAAY,EAChC,KAAK,EAAE,SAAS,OAAO,EAAE;;;;;;;;;;;;;;;;;GAkE1B;AAED;kBACkB;AAClB,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,GACf,SAAS,gBAAgB,EAAE,CAyB7B"}
@@ -1,5 +1,15 @@
1
1
  import { hashAccountState } from '../../internal/planning/account-state.js';
2
- import {} from '@solana/kit';
2
+ import { getAddressEncoder, getProgramDerivedAddress, } from '@solana/kit';
3
+ import { InvalidActionInputError } from '../../client/errors.js';
4
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
5
+ import { SAGE_PROGRAM_ADDRESS } from '../../internal/c4/runtime-bindings.js';
6
+ import { validateWalletCargoCache } from '../../internal/c4/wallet-cargo-cache.js';
7
+ import { deriveAssociatedTokenAddress, readTokenAccount, } from '../../internal/planning/original-token.js';
8
+ import { requireProfileStarbasePlayer } from '../../internal/planning/starbase-player-owner.js';
9
+ import { validateTokenMint } from '../../internal/planning/token-mint.js';
10
+ import { validateWalletStarbase } from '../../internal/planning/wallet-starbase.js';
11
+ import { readFreshGameCargoBytesConfiguration } from '../../registry/cargo.js';
12
+ import { failWalletCargo } from './wallet-token.js';
3
13
  export async function observeWalletAccount(account, role = 'prerequisite') {
4
14
  return {
5
15
  kind: 'account-state',
@@ -8,5 +18,118 @@ export async function observeWalletAccount(account, role = 'prerequisite') {
8
18
  describes: `${role} account ${account.address} retains its observed owner and data; native balance is not guarded.`,
9
19
  };
10
20
  }
11
- export { validateWalletCargoCache } from '../../internal/c4/wallet-cargo-cache.js';
21
+ /** Requires an exact raw u64 amount and a u16 cargo id. */
22
+ export function validateWalletCargoAmount(amount, cargoId) {
23
+ if (typeof amount !== 'bigint' ||
24
+ amount <= 0n ||
25
+ amount > 18446744073709551615n)
26
+ throw new InvalidActionInputError('amount', amount, 'a positive bigint in the unsigned u64 range', 'Supply an exact raw token amount as bigint.');
27
+ if (typeof cargoId !== 'number' ||
28
+ !Number.isSafeInteger(cargoId) ||
29
+ cargoId < 0 ||
30
+ cargoId > 65535)
31
+ throw new InvalidActionInputError('cargoId', cargoId, 'an unsigned u16 cargo ID', 'Choose an existing cargo definition ID.');
32
+ }
33
+ /** Pre-read facts shared by wallet deposits and withdrawals: the authorization
34
+ * Profile's canonical Starbase Player, the fresh cargo configuration, and the
35
+ * canonical Game cargo cache and its shared vault for the cargo mint. */
36
+ export async function resolveWalletCargo(ctx, starbase, profile, cargoId, game) {
37
+ if (starbase.kind !== 'starbasePlayer')
38
+ failWalletCargo('The loaded Starbase must be a Starbase Player registration.', starbase.address);
39
+ const character = await requireProfileStarbasePlayer(starbase, profile, game);
40
+ const config = await readFreshGameCargoBytesConfiguration(ctx, cargoId);
41
+ const [cache, bump] = await getProgramDerivedAddress({
42
+ programAddress: SAGE_PROGRAM_ADDRESS,
43
+ seeds: [
44
+ new TextEncoder().encode('CargoDefinitionsCache'),
45
+ getAddressEncoder().encode(game),
46
+ ],
47
+ });
48
+ if (config.cache !== cache)
49
+ failWalletCargo('The configured cargo cache does not match the canonical Game cargo-cache PDA.', config.cache);
50
+ return {
51
+ bump,
52
+ cache,
53
+ character,
54
+ config,
55
+ mint: config.cargo.mint,
56
+ player: starbase.address,
57
+ system: starbase.system.address,
58
+ vault: await deriveAssociatedTokenAddress(cache, config.cargo.mint),
59
+ };
60
+ }
61
+ /** Requires an account read for a wallet cargo transfer to exist. */
62
+ export function requireWalletAccount(account, address, action) {
63
+ return (account ??
64
+ failWalletCargo(`Required ${action} account ${address} is missing. Register the player or create the required accounts separately.`, address));
65
+ }
66
+ /** Reads the Profile, Character, Starbase Player, System, cargo cache, mint
67
+ * and shared vault with `extra` accounts in the same batch, and requires the
68
+ * shared Starbase graph, cache, mint and vault facts. Returns the extra
69
+ * accounts as read, missing ones included. */
70
+ export async function readWalletCargo(ctx, cargo, profile, game, action, extra) {
71
+ const addresses = [
72
+ profile,
73
+ cargo.character,
74
+ cargo.player,
75
+ cargo.system,
76
+ cargo.cache,
77
+ cargo.mint,
78
+ cargo.vault,
79
+ ];
80
+ const candidates = await readContextRawAccounts(ctx, [
81
+ ...addresses,
82
+ ...extra,
83
+ ]);
84
+ const [profileRaw, characterRaw, playerRaw, systemRaw, cacheRaw, mintRaw, vaultRaw,] = addresses.map((address, index) => requireWalletAccount(candidates[index], address, action));
85
+ const { playerData, systemGuard } = await validateWalletStarbase({
86
+ profile: profileRaw,
87
+ character: characterRaw,
88
+ player: playerRaw,
89
+ system: systemRaw,
90
+ }, {
91
+ game,
92
+ profile,
93
+ character: cargo.character,
94
+ system: cargo.system,
95
+ requireCss: action === 'deposit',
96
+ }, failWalletCargo);
97
+ return {
98
+ cacheData: validateWalletCargoCache(cacheRaw, game, cargo.bump),
99
+ characterRaw,
100
+ decimals: validateTokenMint(mintRaw),
101
+ extraAccounts: candidates.slice(addresses.length),
102
+ playerData,
103
+ playerRaw,
104
+ profileRaw,
105
+ systemGuard,
106
+ vaultBalance: readTokenAccount(vaultRaw, cargo.mint, cargo.cache, failWalletCargo),
107
+ };
108
+ }
109
+ /** The mint, cargo configuration and cargo cache guards shared by wallet
110
+ * cargo Plans. */
111
+ export function walletCargoGuards(cargo, cargoId, game, decimals) {
112
+ return [
113
+ {
114
+ kind: 'token-mint',
115
+ address: cargo.mint,
116
+ decimals,
117
+ describes: `Mint ${cargo.mint} remains a valid initialized original Token Mint with unchanged decimals; supply and authorities may change.`,
118
+ },
119
+ {
120
+ kind: 'game-cargo-bytes-config',
121
+ address: game,
122
+ cargoId,
123
+ configHash: cargo.config.configHash,
124
+ describes: 'The selected cargo’s full encoded configuration, including its stored name, and cache identity remain unchanged; unrelated Game changes are allowed.',
125
+ },
126
+ {
127
+ kind: 'cargo-cache',
128
+ address: cargo.cache,
129
+ game,
130
+ bump: cargo.bump,
131
+ describes: 'The canonical cargo cache retains valid Game identity and layout; counters may change.',
132
+ },
133
+ ];
134
+ }
12
135
  //# sourceMappingURL=wallet-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-context.js","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAgB,MAAM,aAAa,CAAC;AAY3C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAmB,EACnB,IAAI,GAAG,cAAc;IAErB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;QAC7D,SAAS,EAAE,GAAG,IAAI,YAAY,OAAO,CAAC,OAAO,sEAAsE;KACpH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"wallet-context.js","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-context.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,3 @@
1
- import { type Address } from '@solana/kit';
2
- import type { RawAccount } from '../../client/contracts.js';
3
- export declare const ORIGINAL_TOKEN_PROGRAM: Address;
1
+ import type { Address } from '@solana/kit';
4
2
  export declare function failWalletCargo(message: string, address: Address): never;
5
- export declare function deriveWalletTokenAddress(owner: Address, mint: Address): Promise<Address>;
6
- export { validateTokenMint as validateWalletMint } from '../../internal/planning/token-mint.js';
7
- export declare function validateWalletToken(account: RawAccount, mint: Address, owner: Address): bigint;
8
3
  //# sourceMappingURL=wallet-token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-token.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,sBAAsB,EACgB,OAAO,CAAC;AAI3D,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,CAMxE;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC,CAWlB;AA6BD,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAEhG,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,GACb,MAAM,CAuBR"}
1
+ {"version":3,"file":"wallet-token.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,CAMxE"}
@@ -1,50 +1,5 @@
1
- import { getAddressDecoder, getAddressEncoder, getProgramDerivedAddress, } from '@solana/kit';
2
1
  import { SageSdkError } from '../../client/errors.js';
3
- export const ORIGINAL_TOKEN_PROGRAM = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
4
- const ASSOCIATED_TOKEN_PROGRAM = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
5
2
  export function failWalletCargo(message, address) {
6
3
  throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${message} Refresh the accounts or select a supported original Token account before planning again.`, { address });
7
4
  }
8
- export async function deriveWalletTokenAddress(owner, mint) {
9
- const encode = getAddressEncoder();
10
- const [result] = await getProgramDerivedAddress({
11
- programAddress: ASSOCIATED_TOKEN_PROGRAM,
12
- seeds: [
13
- encode.encode(owner),
14
- encode.encode(ORIGINAL_TOKEN_PROGRAM),
15
- encode.encode(mint),
16
- ],
17
- });
18
- return result;
19
- }
20
- function view(account, size) {
21
- if (account.executable ||
22
- account.owner !== ORIGINAL_TOKEN_PROGRAM ||
23
- account.data.length !== size) {
24
- failWalletCargo(`Account ${account.address} must have the original Token program owner and exactly ${String(size)} bytes; Token-2022 and multisig layouts are unsupported.`, account.address);
25
- }
26
- return new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength);
27
- }
28
- function option(view, offset, account) {
29
- if (view.getUint32(offset, true) > 1) {
30
- failWalletCargo(`Token account ${account.address} has an invalid optional field.`, account.address);
31
- }
32
- }
33
- export { validateTokenMint as validateWalletMint } from '../../internal/planning/token-mint.js';
34
- export function validateWalletToken(account, mint, owner) {
35
- const bytes = view(account, 165);
36
- option(bytes, 72, account);
37
- option(bytes, 109, account);
38
- option(bytes, 129, account);
39
- if (bytes.getUint8(108) !== 1) {
40
- failWalletCargo(`Token account ${account.address} must be initialized and unfrozen.`, account.address);
41
- }
42
- const decode = getAddressDecoder();
43
- if (decode.decode(account.data.subarray(0, 32)) !== mint ||
44
- decode.decode(account.data.subarray(32, 64)) !== owner) {
45
- failWalletCargo(`Token account ${account.address} must contain cargo mint ${mint} and be owned internally by ${owner}; delegated spending is unsupported.`, account.address);
46
- }
47
- // A recorded delegate does not prevent the actual owner from transferring.
48
- return bytes.getBigUint64(64, true);
49
- }
50
5
  //# sourceMappingURL=wallet-token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-token.js","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet-token.js","sourceRoot":"","sources":["../../../src/cargo/actions/wallet-token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,OAAgB;IAC/D,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,GAAG,OAAO,2FAA2F,EACrG,EAAE,OAAO,EAAE,CACZ,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/withdrawal.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAkBzE,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAEL,KAAK,IAAI,EAGV,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B;;;;;;;;;GASG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAcD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CAmWf"}
1
+ {"version":3,"file":"withdrawal.d.ts","sourceRoot":"","sources":["../../../src/cargo/actions/withdrawal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kDAAkD,CAAC;AAQ1D,OAAO,EAEL,KAAK,IAAI,EAGV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAML,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,IAAI,CAAC,CA2Lf"}