@aephia/atlas-kit 0.6.0-next.133 → 0.6.0-next.134

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 (62) hide show
  1. package/dist/cargo/actions/deposit.d.ts +3 -0
  2. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  3. package/dist/cargo/actions/deposit.js +39 -14
  4. package/dist/cargo/actions/deposit.js.map +1 -1
  5. package/dist/cargo/actions/index.d.ts +11 -5
  6. package/dist/cargo/actions/index.d.ts.map +1 -1
  7. package/dist/cargo/actions/index.js +68 -14
  8. package/dist/cargo/actions/index.js.map +1 -1
  9. package/dist/fleets/actions/add-ship.d.ts +12 -4
  10. package/dist/fleets/actions/add-ship.d.ts.map +1 -1
  11. package/dist/fleets/actions/add-ship.js +15 -7
  12. package/dist/fleets/actions/add-ship.js.map +1 -1
  13. package/dist/internal/c4/cargo-instructions.d.ts +24 -0
  14. package/dist/internal/c4/cargo-instructions.d.ts.map +1 -0
  15. package/dist/internal/c4/cargo-instructions.js +30 -0
  16. package/dist/internal/c4/cargo-instructions.js.map +1 -0
  17. package/dist/internal/c4/discriminators.d.ts +2 -0
  18. package/dist/internal/c4/discriminators.d.ts.map +1 -1
  19. package/dist/internal/c4/discriminators.js +5 -1
  20. package/dist/internal/c4/discriminators.js.map +1 -1
  21. package/dist/internal/c4/fleet-ship-assembly.d.ts +19 -3
  22. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -1
  23. package/dist/internal/c4/fleet-ship-assembly.js +57 -7
  24. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -1
  25. package/dist/internal/planning/cargo-storage.d.ts +71 -0
  26. package/dist/internal/planning/cargo-storage.d.ts.map +1 -0
  27. package/dist/internal/planning/cargo-storage.js +274 -0
  28. package/dist/internal/planning/cargo-storage.js.map +1 -0
  29. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -1
  30. package/dist/internal/planning/fleet-ship-assembly.js +58 -29
  31. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -1
  32. package/dist/internal/planning/own-starbase-facts.d.ts +7 -3
  33. package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -1
  34. package/dist/internal/planning/own-starbase-facts.js +8 -5
  35. package/dist/internal/planning/own-starbase-facts.js.map +1 -1
  36. package/dist/internal/planning/plan-guards.d.ts.map +1 -1
  37. package/dist/internal/planning/plan-guards.js +2 -0
  38. package/dist/internal/planning/plan-guards.js.map +1 -1
  39. package/dist/internal/planning/profile-storage-funding-guard.d.ts +21 -0
  40. package/dist/internal/planning/profile-storage-funding-guard.d.ts.map +1 -0
  41. package/dist/internal/planning/profile-storage-funding-guard.js +98 -0
  42. package/dist/internal/planning/profile-storage-funding-guard.js.map +1 -0
  43. package/dist/internal/planning/profile-storage-funding.d.ts +46 -0
  44. package/dist/internal/planning/profile-storage-funding.d.ts.map +1 -0
  45. package/dist/internal/planning/profile-storage-funding.js +62 -0
  46. package/dist/internal/planning/profile-storage-funding.js.map +1 -0
  47. package/dist/planning/execution.d.ts.map +1 -1
  48. package/dist/planning/execution.js +58 -6
  49. package/dist/planning/execution.js.map +1 -1
  50. package/dist/planning/index.d.ts +22 -1
  51. package/dist/planning/index.d.ts.map +1 -1
  52. package/dist/planning/index.js +2 -2
  53. package/dist/planning/index.js.map +1 -1
  54. package/dist/planning/plan-construction.js +1 -1
  55. package/dist/planning/plan-validation.d.ts.map +1 -1
  56. package/dist/planning/plan-validation.js +4 -0
  57. package/dist/planning/plan-validation.js.map +1 -1
  58. package/dist/registry/cargo.d.ts +2 -2
  59. package/dist/registry/cargo.d.ts.map +1 -1
  60. package/dist/registry/cargo.js +1 -2
  61. package/dist/registry/cargo.js.map +1 -1
  62. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { SYSTEM_PROGRAM } from '../system-program.js';
2
2
  import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
3
- import { fleetShipAssemblySize, isBasicFleetAssemblyShip, } from '../c4/fleet-ship-assembly.js';
3
+ import { MAX_COMMANDERS_AND_TITANS_PER_FLEET, MAX_TITANS_PER_FLEET, fleetCapacityPoints, fleetShipAssemblySize, prospectiveShipCounts, shipSizeName, shipSizeRank, starbasePlayerEscrowGrowth, } from '../c4/fleet-ship-assembly.js';
4
4
  import { decodeGameShipAssemblyCatalog, hashShipAssemblyConfiguration, } from '../../registry/ships.js';
5
5
  import { isOffCurveAddress } from '@solana/kit';
6
6
  import { SageSdkError } from '../../client/errors.js';
@@ -46,12 +46,14 @@ export async function validateFleetShipAssembly(input, resolved, accounts, expec
46
46
  fail(address, `${name} ${address} is executable. Refresh valid account state before assembling ships.`);
47
47
  return raw;
48
48
  };
49
- const { profileRaw, profile, character, faction, starbase, player } = await readOwnStarbaseFacts(intent, resolved, required, {
49
+ // The program assembles at any Starbase where the Character has a current
50
+ // StarbasePlayer of the Fleet's faction, whoever owns the Starbase.
51
+ const { profileRaw, profile, character, faction, system, player } = await readOwnStarbaseFacts(intent, resolved, required, {
50
52
  replan: 'replan ship assembly',
51
53
  before: 'before assembling ships',
52
- });
53
- if (starbase.level !== 'css')
54
- fail(resolved.system, 'Ship assembly currently supports own-faction CSS Starbases only. Dock at an own-faction CSS Starbase and replan; other access routes need separate support.');
54
+ }, { anyStarbase: true });
55
+ if (player.sequenceId !== system.sequenceId)
56
+ fail(resolved.starbasePlayer, `The StarbasePlayer belongs to Starbase generation ${String(player.sequenceId)}, but the Starbase is at generation ${String(system.sequenceId)}; the program treats it as destroyed. Register a current StarbasePlayer at this Starbase and replan ship assembly.`);
55
57
  const fleetRaw = required(resolved.fleet, 'Fleet');
56
58
  const fleet = fleetAccountDefinition.decode(fleetRaw);
57
59
  if ((await deriveFleetAddress(fleet)) !== intent.address ||
@@ -61,7 +63,7 @@ export async function validateFleetShipAssembly(input, resolved, accounts, expec
61
63
  fleet.npcFactionId !== 0)
62
64
  fail(resolved.fleet, 'The Fleet has a noncanonical address or different Game, Profile, faction or NPC affiliation. Select a canonical owned player Fleet and replan ship assembly.');
63
65
  if (fleet.state.kind !== 'docked' || fleet.state.system !== intent.system)
64
- fail(resolved.fleet, 'Ship assembly requires the Fleet to remain Docked at the selected System. Dock at an own-faction CSS Starbase and replan.');
66
+ fail(resolved.fleet, 'Ship assembly requires the Fleet to remain Docked at the selected System. Dock at a Starbase where the Character has a current StarbasePlayer and replan.');
65
67
  // A Fleet with a sub-profile is rented (or a rental was invalidated), and
66
68
  // the program never adds ships to it.
67
69
  if (fleet.subProfile !== SYSTEM_PROGRAM)
@@ -75,39 +77,65 @@ export async function validateFleetShipAssembly(input, resolved, accounts, expec
75
77
  const gameRaw = required(resolved.game, 'Game');
76
78
  const definitions = catalog ?? decodeGameShipAssemblyCatalog(gameRaw);
77
79
  if (fleet.shipDefinitionsSeqId !== definitions.sequenceId)
78
- fail(resolved.fleet, 'This SDK route supports current ship-definition sequences only. Refresh the Fleet definitions through a supported game client, then replan; stale-sequence refresh behavior remains chain-authoritative.');
80
+ fail(resolved.fleet, 'The Fleet was built under older ship definitions. The program resynchronizes it inside the assembly, which can change its stats, and this SDK plans current Fleets only. Run any action that updates the Fleet, or the permissionless Fleet sync, then replan.');
79
81
  const selected = definitions.rows.find((row) => row.id === intent.shipId);
80
- if (!isBasicFleetAssemblyShip(selected))
81
- fail(resolved.game, 'The selected ship ID is unresolved or is not a requirements-free XXS configuration. Select a defined requirements-free XXS configuration; research, component and other size routes need separate support.');
82
- // Every validated stored maxShipSize enum permits XXS, the smallest pinned size.
83
- let quantity = 0n;
84
- for (const entry of fleet.fleetShips) {
85
- if (entry.quantity === 0n)
86
- continue;
87
- if (!isBasicFleetAssemblyShip(definitions.rows.find((row) => row.id === entry.shipId)))
88
- fail(resolved.fleet, 'The Fleet already contains a positive unresolved or unsupported ship configuration. Use a Fleet containing only resolved requirements-free XXS ships; mixed-size capacity needs separate support.');
89
- quantity += entry.quantity;
90
- }
82
+ if (!selected)
83
+ fail(resolved.game, `Ship configuration ${String(intent.shipId)} is not in the current Game ship definitions. Select a defined configuration and replan.`);
84
+ // Components move from the StarbasePlayer into the Fleet's components pod;
85
+ // that route and its storage are not planned yet.
86
+ if (selected.componentRequirements.size > 0)
87
+ fail(resolved.game, `Ship configuration ${String(intent.shipId)} needs ship components, which this SDK does not plan yet. Select a configuration without component requirements, or use the game client.`);
88
+ const size = shipSizeName(selected.sizeClass);
89
+ const maxSize = character.modifiers.values.maxShipSize;
90
+ if (selected.sizeClass > shipSizeRank(maxSize))
91
+ fail(resolved.character, `Ship configuration ${String(intent.shipId)} is ${size}, above the Character's maximum ship size ${maxSize}. Unlock research that raises the maximum ship size, then replan.`);
92
+ const tags = character.modifiers.values.researchTags;
93
+ const missing = selected.researchRequirements.filter((tag) => !tags.includes(tag));
94
+ if (missing.length > 0)
95
+ fail(resolved.character, `Ship configuration ${String(intent.shipId)} requires every research tag in [${selected.researchRequirements.join(', ')}]; the Character lacks [${missing.join(', ')}]. Unlock the research nodes that grant them, then replan.`);
91
96
  const current = fleet.fleetShips.find((entry) => entry.shipId === intent.shipId)
92
97
  ?.quantity ?? 0n;
93
98
  if (current + intent.amount > 18446744073709551615n)
94
99
  fail(resolved.fleet, 'The resulting Fleet ship quantity exceeds the stored u64 limit. Select a smaller valid quantity and replan.');
95
- if (quantity + intent.amount > BigInt(character.modifiers.values.fleetSize))
96
- fail(resolved.character, 'The requested ships exceed the Character stored Fleet-size capacity. Reduce the amount or refresh changed Character modifiers, then replan.');
97
- if (quantity + intent.amount > BigInt(definitions.maxFleetSize))
98
- fail(resolved.game, 'The requested ships exceed the Game ship-assembly capacity. Reduce the resulting Fleet composition to fit the current Game limit, then replan; a larger Character allowance does not override it.');
99
- const entitlement = player.shipsInEscrow.find((entry) => entry.shipId === intent.shipId)
100
- ?.quantityRaw ?? 0n;
100
+ // The program checks the Fleet's stored ship counts plus the added ships,
101
+ // never the requirements of ships already aboard.
102
+ const classes = prospectiveShipCounts(fleet.shipCounts, selected.sizeClass, Number(intent.amount));
103
+ const points = fleetCapacityPoints(classes);
104
+ if (points > character.modifiers.values.fleetSize)
105
+ fail(resolved.character, `The resulting Fleet uses ${String(points)} Fleet points, above the Character's Fleet size ${String(character.modifiers.values.fleetSize)}. Reduce the amount or unlock Fleet-size research, then replan.`);
106
+ if (points > definitions.maxFleetSize)
107
+ fail(resolved.game, `The resulting Fleet uses ${String(points)} Fleet points, above the Game's ${String(definitions.maxFleetSize)}-point Fleet limit. Reduce the resulting Fleet composition, then replan; a larger Character allowance does not override it.`);
108
+ const [commanders, titans] = [classes[6], classes[7]];
109
+ if (titans > MAX_TITANS_PER_FLEET)
110
+ fail(resolved.fleet, `The resulting Fleet would hold ${String(titans)} Titans; a Fleet holds at most ${String(MAX_TITANS_PER_FLEET)}. Add the Titan to another Fleet and replan.`);
111
+ if (commanders + titans > MAX_COMMANDERS_AND_TITANS_PER_FLEET)
112
+ fail(resolved.fleet, `The resulting Fleet would hold ${String(commanders + titans)} Commander and Titan ships; a Fleet holds at most ${String(MAX_COMMANDERS_AND_TITANS_PER_FLEET)} together. Add the ship to another Fleet and replan.`);
113
+ // Escrowed hulls of any configuration of the same ship count: the program
114
+ // re-tags them to the selected configuration.
115
+ const siblings = new Set(definitions.rows
116
+ .filter((row) => row.mint === selected.mint)
117
+ .map((row) => row.id));
118
+ const entitlement = player.shipsInEscrow
119
+ .filter((entry) => siblings.has(entry.shipId))
120
+ .reduce((total, entry) => total + entry.quantityRaw, 0n);
101
121
  if (entitlement < intent.amount)
102
- fail(resolved.starbasePlayer, 'The StarbasePlayer has insufficient entitlement for this exact ship configuration. Explicitly import that configuration or reduce the amount, then replan.');
122
+ fail(resolved.starbasePlayer, `The StarbasePlayer holds ${String(entitlement)} escrowed hulls of this ship across its configurations, fewer than the ${String(intent.amount)} requested. Explicitly import more of this ship or reduce the amount, then replan.`);
103
123
  const configHash = await hashShipAssemblyConfiguration(definitions, selected);
104
124
  if (expected && expected.configHash !== configHash)
105
125
  fail(resolved.game, 'The selected ship configuration has changed. Replan and inspect its current configuration before signing.');
106
126
  const rent = readRent(required(resolved.rent, 'Rent sysvar'));
107
127
  const now = readClock(required(resolved.clock, 'Clock sysvar'));
108
128
  const fleetRent = rent(fleetShipAssemblySize(fleetRaw, intent.shipId, intent.amount));
109
- const balance = fleetRaw.lamports;
110
- const profileDebit = balance < fleetRent ? fleetRent - balance : 0n;
129
+ const shortfall = (raw, minimum) => raw.lamports < minimum ? minimum - raw.lamports : 0n;
130
+ // The program funds the Fleet, StarbasePlayer and Character as one group.
131
+ // Re-tagging adds an escrow entry when the configuration has none, and its
132
+ // cost is counted in full. A StarbasePlayer already below its rent minimum
133
+ // is left out, as a combined ship import funds that shortfall first.
134
+ const playerRaw = required(resolved.starbasePlayer, 'StarbasePlayer');
135
+ const profileDebit = shortfall(fleetRaw, fleetRent) +
136
+ rent(playerRaw.data.length +
137
+ starbasePlayerEscrowGrowth(playerRaw, intent.shipId)) -
138
+ rent(playerRaw.data.length);
111
139
  if (expected !== undefined && profileDebit > expected.maximumProfileDebit)
112
140
  fail(resolved.profile, 'Ship assembly now requires a larger Profile debit than this Plan approved. Replan and inspect the updated rent shortfall before signing.');
113
141
  const profileReserve = rent(profileRaw.data.length);
@@ -119,9 +147,10 @@ export async function validateFleetShipAssembly(input, resolved, accounts, expec
119
147
  if (profileKeyExpired(key, now))
120
148
  fail(resolved.profile, 'The selected Profile key has expired. Renew it or select a current direct key and replan ship assembly.');
121
149
  const auth = grantsPermission(key, PROFILE_SCOPE, 0n);
122
- const manages = grantsPermission(key, SAGE_SCOPE, 18n);
150
+ const manages = grantsPermission(key, SAGE_SCOPE, 18n) ||
151
+ grantsPermission(key, intent.address, 18n);
123
152
  if (!auth && !manages)
124
- fail(resolved.profile, 'The selected key cannot manage Fleets. Use a direct Profile AUTH key or a SAGE manageFleet key and replan.');
153
+ fail(resolved.profile, 'The selected key cannot manage Fleets. Use a direct Profile AUTH key or a manageFleet key scoped to SAGE or this Fleet, and replan.');
125
154
  if (profileDebit > 0n && !auth && !hasPermissionBit(key, 63n))
126
155
  fail(resolved.profile, 'The selected manageFleet key cannot fund the Fleet from the Profile vault. Explicitly prefund the target or choose an authorized vault-funding key, then replan; drainSolVault grants vault withdrawal authority.');
127
156
  return { profileDebit, profileReserve, fleetRent, configHash };
@@ -1 +1 @@
1
- {"version":3,"file":"fleet-ship-assembly.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-ship-assembly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fleet-ship-assembly.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-ship-assembly.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,9 @@ export interface OwnStarbaseAction {
10
10
  /** Decodes and relates the Profile, Character, faction membership, Star System
11
11
  * and StarbasePlayer that Fleet creation and ship assembly both require: one
12
12
  * canonical Character and membership for the Profile, a canonical Starbase
13
- * System owned by that faction, and the StarbasePlayer joining them.
14
- * `required` reads each account with the planner's own wording. */
13
+ * System, and the StarbasePlayer joining them. Unless `anyStarbase` is set, the
14
+ * Starbase must belong to the Profile's faction. `required` reads each account
15
+ * with the planner's own wording. */
15
16
  export declare function readOwnStarbaseFacts(intent: {
16
17
  readonly game: Address;
17
18
  readonly profile: Address;
@@ -22,11 +23,14 @@ export declare function readOwnStarbaseFacts(intent: {
22
23
  readonly profileFaction: Address;
23
24
  readonly system: Address;
24
25
  readonly starbasePlayer: Address;
25
- }, required: (address: Address, name: string) => RawAccount, action: OwnStarbaseAction): Promise<{
26
+ }, required: (address: Address, name: string) => RawAccount, action: OwnStarbaseAction, options?: {
27
+ readonly anyStarbase?: true;
28
+ }): Promise<{
26
29
  profileRaw: RawAccount;
27
30
  profile: Readonly<import("../c4/identity.js").ProfileAccountData>;
28
31
  character: Readonly<import("../c4/character.js").CharacterAccountData>;
29
32
  faction: Readonly<import("../c4/profile-faction.js").ProfileFactionAccountData>;
33
+ system: Readonly<import("../c4/world.js").StarSystemAccountData>;
30
34
  starbase: import("../c4/world.js").WorldStarbaseData;
31
35
  player: Readonly<import("../c4/starbase.js").StarbasePlayerAccountData>;
32
36
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"own-starbase-facts.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAW5D,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAMD;;;;mEAImE;AACnE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IACN,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,EACD,QAAQ,EAAE;IACR,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,EACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,UAAU,EACxD,MAAM,EAAE,iBAAiB;;;;;;;GAiE1B"}
1
+ {"version":3,"file":"own-starbase-facts.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAW5D,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAMD;;;;;qCAKqC;AACrC,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IACN,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,EACD,QAAQ,EAAE;IACR,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,EACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,UAAU,EACxD,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;CAAO;;;;;;;;GAmE9C"}
@@ -10,9 +10,10 @@ function fail(address, message) {
10
10
  /** Decodes and relates the Profile, Character, faction membership, Star System
11
11
  * and StarbasePlayer that Fleet creation and ship assembly both require: one
12
12
  * canonical Character and membership for the Profile, a canonical Starbase
13
- * System owned by that faction, and the StarbasePlayer joining them.
14
- * `required` reads each account with the planner's own wording. */
15
- export async function readOwnStarbaseFacts(intent, resolved, required, action) {
13
+ * System, and the StarbasePlayer joining them. Unless `anyStarbase` is set, the
14
+ * Starbase must belong to the Profile's faction. `required` reads each account
15
+ * with the planner's own wording. */
16
+ export async function readOwnStarbaseFacts(intent, resolved, required, action, options = {}) {
16
17
  const profileRaw = required(resolved.profile, 'Profile');
17
18
  const profile = profileAccountDefinition.decode(profileRaw);
18
19
  const character = characterAccountDefinition.decode(required(resolved.character, 'Character'));
@@ -34,14 +35,16 @@ export async function readOwnStarbaseFacts(intent, resolved, required, action) {
34
35
  player.system !== intent.system ||
35
36
  player.faction !== faction.faction)
36
37
  fail(resolved.starbasePlayer, 'The StarbasePlayer has a different Profile, Character, System or faction relationship. Refresh the canonical StarbasePlayer and replan.');
37
- if (faction.faction === 'unaligned' ||
38
- system.starbase.owner !== faction.faction)
38
+ if (!options.anyStarbase &&
39
+ (faction.faction === 'unaligned' ||
40
+ system.starbase.owner !== faction.faction))
39
41
  fail(resolved.system, 'This planner supports an existing own-faction StarbasePlayer only. Select an own-faction Starbase; other diplomacy or access routes require separate supported planning.');
40
42
  return {
41
43
  profileRaw,
42
44
  profile,
43
45
  character,
44
46
  faction,
47
+ system,
45
48
  starbase: system.starbase,
46
49
  player,
47
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"own-starbase-facts.js","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAUxB,SAAS,IAAI,CAAC,OAAgB,EAAE,OAAe;IAC7C,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;mEAImE;AACnE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAIC,EACD,QAMC,EACD,QAAwD,EACxD,MAAyB;IAEzB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,0BAA0B,CAAC,MAAM,CACjD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAC1C,CAAC;IACF,MAAM,OAAO,GAAG,+BAA+B,CAAC,MAAM,CACpD,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACpD,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAC/C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CACnD,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACpD,CAAC;IACF,IACE,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAC9B,SAAS,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO;QAE1C,IAAI,CACF,QAAQ,CAAC,SAAS,EAClB,6FAA6F,MAAM,CAAC,MAAM,GAAG,CAC9G,CAAC;IACJ,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACpC,IAAI,CACF,QAAQ,CAAC,cAAc,EACvB,2FAA2F,MAAM,CAAC,MAAM,GAAG,CAC5G,CAAC;IACJ,IACE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAC3B,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM;QACf,CAAC,MAAM,CAAC,QAAQ;QAEhB,IAAI,CACF,QAAQ,CAAC,MAAM,EACf,mHAAmH,CACpH,CAAC;IACJ,IACE,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO;QACvC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QACvC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC/B,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;QAElC,IAAI,CACF,QAAQ,CAAC,cAAc,EACvB,yIAAyI,CAC1I,CAAC;IACJ,IACE,OAAO,CAAC,OAAO,KAAK,WAAW;QAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO;QAEzC,IAAI,CACF,QAAQ,CAAC,MAAM,EACf,0KAA0K,CAC3K,CAAC;IACJ,OAAO;QACL,UAAU;QACV,OAAO;QACP,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"own-starbase-facts.js","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-guards.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/plan-guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAmVhE,mEAAmE;AACnE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,UAAQ,GACX,gBAAgB,CAkBlB"}
1
+ {"version":3,"file":"plan-guards.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/plan-guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAqVhE,mEAAmE;AACnE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,UAAQ,GACX,gBAAgB,CAkBlB"}
@@ -1,6 +1,7 @@
1
1
  import { normalizeArrivalGuard } from './arrival-guards.js';
2
2
  import { FLEET_DOCK_FUNDING_SCHEMA } from './fleet-dock-funding-guard.js';
3
3
  import { LOCAL_MARKET_ORDER_SCHEMA } from './local-market-order.js';
4
+ import { PROFILE_STORAGE_FUNDING_SCHEMA } from './profile-storage-funding-guard.js';
4
5
  import { MAX_U64, invalid, normalizeSchemaGuard, readRecord, } from './plan-fields.js';
5
6
  import { isRuntimeGuard, normalizeRuntimeGuard } from './runtime-guards.js';
6
7
  import { scanCompletionDiscriminators } from './scan-completion-guard.js';
@@ -159,6 +160,7 @@ const GUARD_SCHEMAS = {
159
160
  'account-state': schema(address('address'), ['dataHash', 'hash'], DESCRIBES),
160
161
  'fleet-dock-funding': FLEET_DOCK_FUNDING_SCHEMA,
161
162
  'local-market-order': LOCAL_MARKET_ORDER_SCHEMA,
163
+ 'profile-storage-funding': PROFILE_STORAGE_FUNDING_SCHEMA,
162
164
  };
163
165
  /** Validates one Plan guard; `wire` decodes its Plan JSON form. */
164
166
  export function normalizePrecondition(value, field, wire = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"plan-guards.js","sourceRoot":"","sources":["../../../src/internal/planning/plan-guards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-guards.js","sourceRoot":"","sources":["../../../src/internal/planning/plan-guards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Instruction } from '@solana/kit';
2
+ import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
3
+ import { type GuardSchema } from './plan-fields.js';
4
+ /** Bytes one new cargo line (u16 cargo id, u64 amount) adds to a cargo pod. */
5
+ export declare const CARGO_LINE_BYTES = 10;
6
+ /** Cargo instructions whose storage the Profile funds. */
7
+ export type CargoStorageInstruction = 'deposit' | 'starbase-transfer' | 'within-fleet-transfer';
8
+ /** Which Profile-funded cargo instruction this is, if any. */
9
+ export declare function cargoStorageInstruction(instruction: Instruction): CargoStorageInstruction | undefined;
10
+ /** Persisted Profile storage funding of one action that resizes up to two
11
+ * accounts the program normalizes to their rent minimum from the Profile. */
12
+ export type ProfileStorageFundingGuard = Extract<PlanPrecondition, {
13
+ readonly kind: 'profile-storage-funding';
14
+ }>;
15
+ export declare const PROFILE_STORAGE_FUNDING_SCHEMA: GuardSchema;
16
+ /** Binds every Profile-funded cargo instruction to exactly one storage
17
+ * funding guard for its Profile, signing key and resized accounts, so a saved
18
+ * Plan cannot drop or retarget its funding check. Each guard must also name a
19
+ * complete account pair. */
20
+ export declare function validateProfileStorageFundingGuards(steps: readonly PlanStep[], guards: readonly PlanPrecondition[]): void;
21
+ //# sourceMappingURL=profile-storage-funding-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-storage-funding-guard.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/profile-storage-funding-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAO1E,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,0DAA0D;AAC1D,MAAM,MAAM,uBAAuB,GACjC,SAAS,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAQ5D,8DAA8D;AAC9D,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,GACvB,uBAAuB,GAAG,SAAS,CAKrC;AAED;6EAC6E;AAC7E,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAC9C,gBAAgB,EAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAC7C,CAAC;AAaF,eAAO,MAAM,8BAA8B,EAAE,WAyB5C,CAAC;AAEF;;;4BAG4B;AAC5B,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CAyDN"}
@@ -0,0 +1,98 @@
1
+ import { SageSdkError } from '../../client/errors.js';
2
+ import { DEPOSIT_CARGO_TO_GAME_DISCRIMINATOR, TRANSFER_CARGO_TO_FLEET_DISCRIMINATOR, TRANSFER_CARGO_WITHIN_FLEET_DISCRIMINATOR, } from '../c4/discriminators.js';
3
+ import { SAGE_PROGRAM_ADDRESS } from '../c4/runtime-bindings.js';
4
+ import { MAX_U64, } from './plan-fields.js';
5
+ /** Bytes one new cargo line (u16 cargo id, u64 amount) adds to a cargo pod. */
6
+ export const CARGO_LINE_BYTES = 10;
7
+ const CARGO_INSTRUCTIONS = [
8
+ ['deposit', DEPOSIT_CARGO_TO_GAME_DISCRIMINATOR],
9
+ ['starbase-transfer', TRANSFER_CARGO_TO_FLEET_DISCRIMINATOR],
10
+ ['within-fleet-transfer', TRANSFER_CARGO_WITHIN_FLEET_DISCRIMINATOR],
11
+ ];
12
+ /** Which Profile-funded cargo instruction this is, if any. */
13
+ export function cargoStorageInstruction(instruction) {
14
+ if (instruction.programAddress !== SAGE_PROGRAM_ADDRESS)
15
+ return undefined;
16
+ return CARGO_INSTRUCTIONS.find(([, discriminator]) => discriminator.every((byte, index) => instruction.data?.[index] === byte))?.[0];
17
+ }
18
+ const LENGTH = {
19
+ min: 0,
20
+ max: Number.MAX_SAFE_INTEGER,
21
+ accepted: 'an observed account data length in bytes',
22
+ };
23
+ const GROWTH = {
24
+ min: -65_535,
25
+ max: 65_535,
26
+ accepted: 'a signed account growth in bytes',
27
+ };
28
+ export const PROFILE_STORAGE_FUNDING_SCHEMA = {
29
+ fields: [
30
+ ['address', 'address'],
31
+ ['profile', 'address'],
32
+ ['authority', 'address'],
33
+ ['keyIndex', { min: 0, max: 65535, accepted: 'a u16 Profile key index' }],
34
+ [
35
+ 'settlement',
36
+ { values: ['each', 'pair'], accepted: 'each or pair settlement' },
37
+ ],
38
+ ['length', LENGTH],
39
+ ['growth', GROWTH],
40
+ ['paired', 'address', true],
41
+ ['pairedLength', LENGTH, true],
42
+ ['pairedGrowth', GROWTH, true],
43
+ [
44
+ 'maximumProfileDebit',
45
+ {
46
+ min: 0n,
47
+ max: MAX_U64,
48
+ accepted: 'a nonnegative u64 funding ceiling',
49
+ },
50
+ ],
51
+ ['describes', 'string'],
52
+ ],
53
+ };
54
+ /** Binds every Profile-funded cargo instruction to exactly one storage
55
+ * funding guard for its Profile, signing key and resized accounts, so a saved
56
+ * Plan cannot drop or retarget its funding check. Each guard must also name a
57
+ * complete account pair. */
58
+ export function validateProfileStorageFundingGuards(steps, guards) {
59
+ const funding = guards.filter((guard) => guard.kind === 'profile-storage-funding');
60
+ for (const guard of funding) {
61
+ const fields = [guard.paired, guard.pairedLength, guard.pairedGrowth];
62
+ const paired = fields.every((field) => field !== undefined);
63
+ if ((!paired && fields.some((field) => field !== undefined)) ||
64
+ (guard.settlement === 'pair' && !paired) ||
65
+ guard.paired === guard.address)
66
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A Profile storage funding guard names an incomplete or inconsistent account pair. Recreate the Plan with its capability planner.', { address: guard.address });
67
+ }
68
+ const remaining = [...funding];
69
+ let instructions = 0;
70
+ for (const { instruction } of steps) {
71
+ const kind = cargoStorageInstruction(instruction);
72
+ if (!kind)
73
+ continue;
74
+ instructions += 1;
75
+ const metas = instruction.accounts ?? [];
76
+ // A recognized cargo instruction has at least its 8-byte discriminator and
77
+ // encodes its u16 key index last.
78
+ const data = instruction.data;
79
+ const keyIndex = data[data.length - 2] | (data[data.length - 1] << 8);
80
+ const [address, paired, settlement] = kind === 'deposit'
81
+ ? [metas[5]?.address, undefined, 'each']
82
+ : kind === 'starbase-transfer'
83
+ ? [metas[4]?.address, metas[8]?.address, 'pair']
84
+ : [metas[4]?.address, undefined, 'each'];
85
+ const index = remaining.findIndex((guard) => guard.authority === metas[0]?.address &&
86
+ guard.profile === metas[1]?.address &&
87
+ guard.keyIndex === keyIndex &&
88
+ guard.address === address &&
89
+ guard.paired === paired &&
90
+ guard.settlement === settlement);
91
+ if (index < 0)
92
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A cargo instruction has no matching Profile storage funding guard for its Profile, key and resized accounts. Recreate the Plan with its cargo planner.');
93
+ remaining.splice(index, 1);
94
+ }
95
+ if (remaining.length > 0 || instructions !== funding.length)
96
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A Profile storage funding guard has no matching cargo instruction. Recreate the Plan with its cargo planner.');
97
+ }
98
+ //# sourceMappingURL=profile-storage-funding-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-storage-funding-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/profile-storage-funding-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Address } from '@solana/kit';
2
+ import type { RawAccount } from '../../client/contracts.js';
3
+ import type { ProfileStorageFundingGuard } from './profile-storage-funding-guard.js';
4
+ /** One resized account: its observed data length and the action's byte change. */
5
+ export interface StorageResize {
6
+ readonly raw: RawAccount;
7
+ readonly growthBytes: number;
8
+ }
9
+ /** The one or two accounts an action resizes. */
10
+ export type StorageResizes = readonly [StorageResize] | readonly [StorageResize, StorageResize];
11
+ /** How the program settles the accounts: each normalized on its own, or one
12
+ * net shortfall for the pair, where one account's surplus funds the other. */
13
+ export type StorageSettlement = 'each' | 'pair';
14
+ export interface ProfileStorageFunding {
15
+ readonly profileDebit: bigint;
16
+ readonly profileReserve: bigint;
17
+ }
18
+ /** Checks that the signing key and the Profile can fund one action's storage
19
+ * debit. A zero debit withdraws nothing, so it needs neither `drainSolVault`
20
+ * nor Profile excess lamports. */
21
+ export declare function checkProfileStorageFunding(input: {
22
+ readonly profileRaw: RawAccount;
23
+ readonly rentRaw: RawAccount;
24
+ readonly authority: Address;
25
+ readonly keyIndex: number;
26
+ readonly profileDebit: bigint;
27
+ readonly action: string;
28
+ readonly maximumProfileDebit?: bigint;
29
+ }): ProfileStorageFunding & {
30
+ readonly direct: boolean;
31
+ };
32
+ /** Builds the guard and the summary sentence for one action's storage funding. */
33
+ export declare function profileStorageFundingGuard(input: {
34
+ readonly profile: Address;
35
+ readonly authority: Address;
36
+ readonly keyIndex: number;
37
+ readonly resizes: StorageResizes;
38
+ readonly settlement: StorageSettlement;
39
+ readonly funding: ProfileStorageFunding & {
40
+ readonly direct: boolean;
41
+ };
42
+ }): {
43
+ readonly guard: ProfileStorageFundingGuard;
44
+ readonly disclosure: string;
45
+ };
46
+ //# sourceMappingURL=profile-storage-funding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-storage-funding.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/profile-storage-funding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAS5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAMrF,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,GACxB,SAAS,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAErE;8EAC8E;AAC9E,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAMD;;kCAEkC;AAClC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC,GAAG,qBAAqB,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAkCvD;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CACxE,GAAG;IACF,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CA6BA"}
@@ -0,0 +1,62 @@
1
+ import { SageSdkError } from '../../client/errors.js';
2
+ import { profileAccountDefinition } from '../c4/identity.js';
3
+ import { PROFILE_SCOPE } from '../c4/profile-permissions.js';
4
+ import { directProfileKey, grantsPermission, hasPermissionBit, } from './profile-key.js';
5
+ import { readRent } from './rent.js';
6
+ // Profile drainSolVault permission bit, any scope.
7
+ const DRAIN_SOL_VAULT = 63n;
8
+ function fail(address, message) {
9
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
10
+ }
11
+ /** Checks that the signing key and the Profile can fund one action's storage
12
+ * debit. A zero debit withdraws nothing, so it needs neither `drainSolVault`
13
+ * nor Profile excess lamports. */
14
+ export function checkProfileStorageFunding(input) {
15
+ const { profileRaw, action, profileDebit } = input;
16
+ const rent = readRent(input.rentRaw);
17
+ if (input.maximumProfileDebit !== undefined &&
18
+ profileDebit > input.maximumProfileDebit)
19
+ fail(profileRaw.address, `The ${action} now needs ${profileDebit} Profile lamports for account storage, above the ${input.maximumProfileDebit} this Plan approved. An earlier action in the same Plan may use storage it was planned against: execute the actions as separate Plans, or refresh the accounts and replan, then review the storage funding before signing.`);
20
+ const profileReserve = rent(profileRaw.data.length);
21
+ const key = directProfileKey(profileAccountDefinition.decode(profileRaw).keys, input.keyIndex, input.authority);
22
+ if (profileDebit > 0n) {
23
+ if (key &&
24
+ !grantsPermission(key, PROFILE_SCOPE, 0n) &&
25
+ !hasPermissionBit(key, DRAIN_SOL_VAULT))
26
+ fail(profileRaw.address, `The ${action} needs ${profileDebit} Profile lamports for account storage, which the program withdraws from the Profile vault with the signing key; this key lacks drainSolVault. Use a direct Profile AUTH key or a key that also holds drainSolVault, then replan.`);
27
+ if (profileRaw.lamports < profileReserve + profileDebit)
28
+ fail(profileRaw.address, `The ${action} needs ${profileDebit} Profile lamports for account storage above the Profile's own ${profileReserve}-lamport rent reserve; the Profile holds ${profileRaw.lamports}. Add ${profileReserve + profileDebit - profileRaw.lamports} lamports to the Profile, then replan.`);
29
+ }
30
+ return { profileDebit, profileReserve, direct: key !== undefined };
31
+ }
32
+ /** Builds the guard and the summary sentence for one action's storage funding. */
33
+ export function profileStorageFundingGuard(input) {
34
+ const [first, second] = input.resizes;
35
+ const { profileDebit } = input.funding;
36
+ const disclosure = profileDebit > 0n
37
+ ? `The program funds ${profileDebit} lamports of account storage from Profile ${input.profile}'s vault with the signing key (a locked rent deposit, separate from transaction fees).${input.funding.direct ? '' : ' The selected key is not a direct Profile key, so its drainSolVault permission is checked by the program, not locally.'}`
38
+ : `This action needs no Profile storage funding at the observed account sizes and balances.`;
39
+ return {
40
+ disclosure,
41
+ guard: {
42
+ kind: 'profile-storage-funding',
43
+ address: first.raw.address,
44
+ profile: input.profile,
45
+ authority: input.authority,
46
+ keyIndex: input.keyIndex,
47
+ settlement: input.settlement,
48
+ length: first.raw.data.length,
49
+ growth: first.growthBytes,
50
+ ...(second
51
+ ? {
52
+ paired: second.raw.address,
53
+ pairedLength: second.raw.data.length,
54
+ pairedGrowth: second.growthBytes,
55
+ }
56
+ : {}),
57
+ maximumProfileDebit: profileDebit,
58
+ describes: `Account storage funding from the Profile vault stays at most ${profileDebit} lamports, and the signing key and Profile balance can fund it.`,
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=profile-storage-funding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-storage-funding.js","sourceRoot":"","sources":["../../../src/internal/planning/profile-storage-funding.ts"],"names":[],"mappings":"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"}