@aephia/atlas-kit 0.0.0

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 (279) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +124 -0
  3. package/dist/bindings.d.ts +11 -0
  4. package/dist/bindings.d.ts.map +1 -0
  5. package/dist/bindings.js +11 -0
  6. package/dist/bindings.js.map +1 -0
  7. package/dist/cargo/actions/index.d.ts +122 -0
  8. package/dist/cargo/actions/index.d.ts.map +1 -0
  9. package/dist/cargo/actions/index.js +526 -0
  10. package/dist/cargo/actions/index.js.map +1 -0
  11. package/dist/cargo/index.d.ts +77 -0
  12. package/dist/cargo/index.d.ts.map +1 -0
  13. package/dist/cargo/index.js +102 -0
  14. package/dist/cargo/index.js.map +1 -0
  15. package/dist/claim-stakes/index.d.ts +64 -0
  16. package/dist/claim-stakes/index.d.ts.map +1 -0
  17. package/dist/claim-stakes/index.js +97 -0
  18. package/dist/claim-stakes/index.js.map +1 -0
  19. package/dist/client/context.d.ts +21 -0
  20. package/dist/client/context.d.ts.map +1 -0
  21. package/dist/client/context.js +1374 -0
  22. package/dist/client/context.js.map +1 -0
  23. package/dist/client/contracts.d.ts +671 -0
  24. package/dist/client/contracts.d.ts.map +1 -0
  25. package/dist/client/contracts.js +2 -0
  26. package/dist/client/contracts.js.map +1 -0
  27. package/dist/client/deployments.d.ts +3 -0
  28. package/dist/client/deployments.d.ts.map +1 -0
  29. package/dist/client/deployments.js +2 -0
  30. package/dist/client/deployments.js.map +1 -0
  31. package/dist/client/errors.d.ts +227 -0
  32. package/dist/client/errors.d.ts.map +1 -0
  33. package/dist/client/errors.js +288 -0
  34. package/dist/client/errors.js.map +1 -0
  35. package/dist/client/index.d.ts +7 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/client/index.js +5 -0
  38. package/dist/client/index.js.map +1 -0
  39. package/dist/client/lifecycle.d.ts +4 -0
  40. package/dist/client/lifecycle.d.ts.map +1 -0
  41. package/dist/client/lifecycle.js +10 -0
  42. package/dist/client/lifecycle.js.map +1 -0
  43. package/dist/client/provider-errors.d.ts +9 -0
  44. package/dist/client/provider-errors.d.ts.map +1 -0
  45. package/dist/client/provider-errors.js +12 -0
  46. package/dist/client/provider-errors.js.map +1 -0
  47. package/dist/client/reconciliation.d.ts +10 -0
  48. package/dist/client/reconciliation.d.ts.map +1 -0
  49. package/dist/client/reconciliation.js +9 -0
  50. package/dist/client/reconciliation.js.map +1 -0
  51. package/dist/client/refs.d.ts +23 -0
  52. package/dist/client/refs.d.ts.map +1 -0
  53. package/dist/client/refs.js +12 -0
  54. package/dist/client/refs.js.map +1 -0
  55. package/dist/combat/index.d.ts +256 -0
  56. package/dist/combat/index.d.ts.map +1 -0
  57. package/dist/combat/index.js +222 -0
  58. package/dist/combat/index.js.map +1 -0
  59. package/dist/crafting/index.d.ts +308 -0
  60. package/dist/crafting/index.d.ts.map +1 -0
  61. package/dist/crafting/index.js +400 -0
  62. package/dist/crafting/index.js.map +1 -0
  63. package/dist/factions/index.d.ts +292 -0
  64. package/dist/factions/index.d.ts.map +1 -0
  65. package/dist/factions/index.js +334 -0
  66. package/dist/factions/index.js.map +1 -0
  67. package/dist/fleets/actions/index.d.ts +200 -0
  68. package/dist/fleets/actions/index.d.ts.map +1 -0
  69. package/dist/fleets/actions/index.js +854 -0
  70. package/dist/fleets/actions/index.js.map +1 -0
  71. package/dist/fleets/index.d.ts +100 -0
  72. package/dist/fleets/index.d.ts.map +1 -0
  73. package/dist/fleets/index.js +124 -0
  74. package/dist/fleets/index.js.map +1 -0
  75. package/dist/identity/index.d.ts +225 -0
  76. package/dist/identity/index.d.ts.map +1 -0
  77. package/dist/identity/index.js +341 -0
  78. package/dist/identity/index.js.map +1 -0
  79. package/dist/index.d.ts +401 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +519 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/internal/c4/adapter.d.ts +6 -0
  84. package/dist/internal/c4/adapter.d.ts.map +1 -0
  85. package/dist/internal/c4/adapter.js +2 -0
  86. package/dist/internal/c4/adapter.js.map +1 -0
  87. package/dist/internal/c4/bindings.d.ts +4 -0
  88. package/dist/internal/c4/bindings.d.ts.map +1 -0
  89. package/dist/internal/c4/bindings.js +4 -0
  90. package/dist/internal/c4/bindings.js.map +1 -0
  91. package/dist/internal/c4/character-modifier.d.ts +5 -0
  92. package/dist/internal/c4/character-modifier.d.ts.map +1 -0
  93. package/dist/internal/c4/character-modifier.js +100 -0
  94. package/dist/internal/c4/character-modifier.js.map +1 -0
  95. package/dist/internal/c4/claim-stake.d.ts +140 -0
  96. package/dist/internal/c4/claim-stake.d.ts.map +1 -0
  97. package/dist/internal/c4/claim-stake.js +205 -0
  98. package/dist/internal/c4/claim-stake.js.map +1 -0
  99. package/dist/internal/c4/combat.d.ts +98 -0
  100. package/dist/internal/c4/combat.d.ts.map +1 -0
  101. package/dist/internal/c4/combat.js +232 -0
  102. package/dist/internal/c4/combat.js.map +1 -0
  103. package/dist/internal/c4/crafting.d.ts +170 -0
  104. package/dist/internal/c4/crafting.d.ts.map +1 -0
  105. package/dist/internal/c4/crafting.js +387 -0
  106. package/dist/internal/c4/crafting.js.map +1 -0
  107. package/dist/internal/c4/factions.d.ts +248 -0
  108. package/dist/internal/c4/factions.d.ts.map +1 -0
  109. package/dist/internal/c4/factions.js +589 -0
  110. package/dist/internal/c4/factions.js.map +1 -0
  111. package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
  112. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
  113. package/dist/internal/c4/fleet-crew-binding.js +51 -0
  114. package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
  115. package/dist/internal/c4/fleet.d.ts +310 -0
  116. package/dist/internal/c4/fleet.d.ts.map +1 -0
  117. package/dist/internal/c4/fleet.js +393 -0
  118. package/dist/internal/c4/fleet.js.map +1 -0
  119. package/dist/internal/c4/game.d.ts +192 -0
  120. package/dist/internal/c4/game.d.ts.map +1 -0
  121. package/dist/internal/c4/game.js +396 -0
  122. package/dist/internal/c4/game.js.map +1 -0
  123. package/dist/internal/c4/identity.d.ts +193 -0
  124. package/dist/internal/c4/identity.d.ts.map +1 -0
  125. package/dist/internal/c4/identity.js +180 -0
  126. package/dist/internal/c4/identity.js.map +1 -0
  127. package/dist/internal/c4/loot-layout.d.ts +20 -0
  128. package/dist/internal/c4/loot-layout.d.ts.map +1 -0
  129. package/dist/internal/c4/loot-layout.js +29 -0
  130. package/dist/internal/c4/loot-layout.js.map +1 -0
  131. package/dist/internal/c4/loyalty.d.ts +102 -0
  132. package/dist/internal/c4/loyalty.d.ts.map +1 -0
  133. package/dist/internal/c4/loyalty.js +318 -0
  134. package/dist/internal/c4/loyalty.js.map +1 -0
  135. package/dist/internal/c4/market.d.ts +112 -0
  136. package/dist/internal/c4/market.d.ts.map +1 -0
  137. package/dist/internal/c4/market.js +247 -0
  138. package/dist/internal/c4/market.js.map +1 -0
  139. package/dist/internal/c4/pda.d.ts +6 -0
  140. package/dist/internal/c4/pda.d.ts.map +1 -0
  141. package/dist/internal/c4/pda.js +45 -0
  142. package/dist/internal/c4/pda.js.map +1 -0
  143. package/dist/internal/c4/profile-faction.d.ts +14 -0
  144. package/dist/internal/c4/profile-faction.d.ts.map +1 -0
  145. package/dist/internal/c4/profile-faction.js +69 -0
  146. package/dist/internal/c4/profile-faction.js.map +1 -0
  147. package/dist/internal/c4/rewards.d.ts +135 -0
  148. package/dist/internal/c4/rewards.d.ts.map +1 -0
  149. package/dist/internal/c4/rewards.js +305 -0
  150. package/dist/internal/c4/rewards.js.map +1 -0
  151. package/dist/internal/c4/scanning.d.ts +85 -0
  152. package/dist/internal/c4/scanning.d.ts.map +1 -0
  153. package/dist/internal/c4/scanning.js +180 -0
  154. package/dist/internal/c4/scanning.js.map +1 -0
  155. package/dist/internal/c4/starbase.d.ts +186 -0
  156. package/dist/internal/c4/starbase.d.ts.map +1 -0
  157. package/dist/internal/c4/starbase.js +259 -0
  158. package/dist/internal/c4/starbase.js.map +1 -0
  159. package/dist/internal/c4/world.d.ts +294 -0
  160. package/dist/internal/c4/world.d.ts.map +1 -0
  161. package/dist/internal/c4/world.js +417 -0
  162. package/dist/internal/c4/world.js.map +1 -0
  163. package/dist/internal/cargo.d.ts +65 -0
  164. package/dist/internal/cargo.d.ts.map +1 -0
  165. package/dist/internal/cargo.js +46 -0
  166. package/dist/internal/cargo.js.map +1 -0
  167. package/dist/internal/claim-stake.d.ts +31 -0
  168. package/dist/internal/claim-stake.d.ts.map +1 -0
  169. package/dist/internal/claim-stake.js +20 -0
  170. package/dist/internal/claim-stake.js.map +1 -0
  171. package/dist/internal/fleet.d.ts +165 -0
  172. package/dist/internal/fleet.d.ts.map +1 -0
  173. package/dist/internal/fleet.js +179 -0
  174. package/dist/internal/fleet.js.map +1 -0
  175. package/dist/internal/game-context.d.ts +4 -0
  176. package/dist/internal/game-context.d.ts.map +1 -0
  177. package/dist/internal/game-context.js +9 -0
  178. package/dist/internal/game-context.js.map +1 -0
  179. package/dist/internal/immutable-tree.d.ts +5 -0
  180. package/dist/internal/immutable-tree.d.ts.map +1 -0
  181. package/dist/internal/immutable-tree.js +47 -0
  182. package/dist/internal/immutable-tree.js.map +1 -0
  183. package/dist/internal/json.d.ts +7 -0
  184. package/dist/internal/json.d.ts.map +1 -0
  185. package/dist/internal/json.js +33 -0
  186. package/dist/internal/json.js.map +1 -0
  187. package/dist/internal/planning/authorization-adapter.d.ts +63 -0
  188. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
  189. package/dist/internal/planning/authorization-adapter.js +222 -0
  190. package/dist/internal/planning/authorization-adapter.js.map +1 -0
  191. package/dist/internal/read-meta.d.ts +84 -0
  192. package/dist/internal/read-meta.d.ts.map +1 -0
  193. package/dist/internal/read-meta.js +28 -0
  194. package/dist/internal/read-meta.js.map +1 -0
  195. package/dist/internal/resolved-snapshot.d.ts +3 -0
  196. package/dist/internal/resolved-snapshot.d.ts.map +1 -0
  197. package/dist/internal/resolved-snapshot.js +11 -0
  198. package/dist/internal/resolved-snapshot.js.map +1 -0
  199. package/dist/internal/zink/provider.d.ts +9 -0
  200. package/dist/internal/zink/provider.d.ts.map +1 -0
  201. package/dist/internal/zink/provider.js +213 -0
  202. package/dist/internal/zink/provider.js.map +1 -0
  203. package/dist/loyalty/index.d.ts +195 -0
  204. package/dist/loyalty/index.d.ts.map +1 -0
  205. package/dist/loyalty/index.js +289 -0
  206. package/dist/loyalty/index.js.map +1 -0
  207. package/dist/markets/index.d.ts +195 -0
  208. package/dist/markets/index.d.ts.map +1 -0
  209. package/dist/markets/index.js +232 -0
  210. package/dist/markets/index.js.map +1 -0
  211. package/dist/mining/index.d.ts +156 -0
  212. package/dist/mining/index.d.ts.map +1 -0
  213. package/dist/mining/index.js +236 -0
  214. package/dist/mining/index.js.map +1 -0
  215. package/dist/planning/assembly.d.ts +42 -0
  216. package/dist/planning/assembly.d.ts.map +1 -0
  217. package/dist/planning/assembly.js +141 -0
  218. package/dist/planning/assembly.js.map +1 -0
  219. package/dist/planning/composition.d.ts +4 -0
  220. package/dist/planning/composition.d.ts.map +1 -0
  221. package/dist/planning/composition.js +76 -0
  222. package/dist/planning/composition.js.map +1 -0
  223. package/dist/planning/execution.d.ts +93 -0
  224. package/dist/planning/execution.d.ts.map +1 -0
  225. package/dist/planning/execution.js +549 -0
  226. package/dist/planning/execution.js.map +1 -0
  227. package/dist/planning/index.d.ts +219 -0
  228. package/dist/planning/index.d.ts.map +1 -0
  229. package/dist/planning/index.js +375 -0
  230. package/dist/planning/index.js.map +1 -0
  231. package/dist/planning/plan-instances.d.ts +3 -0
  232. package/dist/planning/plan-instances.d.ts.map +1 -0
  233. package/dist/planning/plan-instances.js +8 -0
  234. package/dist/planning/plan-instances.js.map +1 -0
  235. package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
  236. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
  237. package/dist/planning/plan-sequence-checkpoint.js +449 -0
  238. package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
  239. package/dist/planning/plan-sequence-execution.d.ts +72 -0
  240. package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
  241. package/dist/planning/plan-sequence-execution.js +410 -0
  242. package/dist/planning/plan-sequence-execution.js.map +1 -0
  243. package/dist/planning/plan-sequence.d.ts +244 -0
  244. package/dist/planning/plan-sequence.d.ts.map +1 -0
  245. package/dist/planning/plan-sequence.js +264 -0
  246. package/dist/planning/plan-sequence.js.map +1 -0
  247. package/dist/planning/simulation.d.ts +50 -0
  248. package/dist/planning/simulation.d.ts.map +1 -0
  249. package/dist/planning/simulation.js +69 -0
  250. package/dist/planning/simulation.js.map +1 -0
  251. package/dist/registry/combat.d.ts +5 -0
  252. package/dist/registry/combat.d.ts.map +1 -0
  253. package/dist/registry/combat.js +7 -0
  254. package/dist/registry/combat.js.map +1 -0
  255. package/dist/registry/index.d.ts +138 -0
  256. package/dist/registry/index.d.ts.map +1 -0
  257. package/dist/registry/index.js +397 -0
  258. package/dist/registry/index.js.map +1 -0
  259. package/dist/rewards/index.d.ts +202 -0
  260. package/dist/rewards/index.d.ts.map +1 -0
  261. package/dist/rewards/index.js +290 -0
  262. package/dist/rewards/index.js.map +1 -0
  263. package/dist/scanning/index.d.ts +185 -0
  264. package/dist/scanning/index.d.ts.map +1 -0
  265. package/dist/scanning/index.js +207 -0
  266. package/dist/scanning/index.js.map +1 -0
  267. package/dist/starbases/actions/index.d.ts +60 -0
  268. package/dist/starbases/actions/index.d.ts.map +1 -0
  269. package/dist/starbases/actions/index.js +245 -0
  270. package/dist/starbases/actions/index.js.map +1 -0
  271. package/dist/starbases/index.d.ts +165 -0
  272. package/dist/starbases/index.d.ts.map +1 -0
  273. package/dist/starbases/index.js +213 -0
  274. package/dist/starbases/index.js.map +1 -0
  275. package/dist/world/index.d.ts +180 -0
  276. package/dist/world/index.d.ts.map +1 -0
  277. package/dist/world/index.js +265 -0
  278. package/dist/world/index.js.map +1 -0
  279. package/package.json +140 -0
@@ -0,0 +1,244 @@
1
+ import type { Signature } from '@solana/kit';
2
+ import type { ClusterIdentity } from '../client/contracts.js';
3
+ import { type SageSdkErrorCode } from '../client/errors.js';
4
+ import type { Plan } from './index.js';
5
+ declare const PLAN_SEQUENCE_FINGERPRINT_BRAND: unique symbol;
6
+ /** Stable SHA-256 identity for one cluster-bound ordered Plan sequence.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * declare const fingerprint: PlanSequenceFingerprint;
11
+ * console.log(fingerprint.length); // 64
12
+ * ```
13
+ */
14
+ export type PlanSequenceFingerprint = string & {
15
+ readonly [PLAN_SEQUENCE_FINGERPRINT_BRAND]: true;
16
+ };
17
+ /** Public confirmation evidence available to later lazy step preparation.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * declare const confirmed: ConfirmedStep;
22
+ * console.log(confirmed.stepId, confirmed.signature);
23
+ * ```
24
+ */
25
+ export type ConfirmedStep = Readonly<{
26
+ stepId: string;
27
+ index: number;
28
+ signature: Signature;
29
+ slot: bigint;
30
+ commitment: 'confirmed' | 'finalized';
31
+ }>;
32
+ /** Stable sequence progress supplied to one capability-owned step callback.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * declare const context: PlanSequenceStepContext;
37
+ * console.log(context.sequenceId, context.stepId, context.confirmed.length);
38
+ * ```
39
+ */
40
+ export type PlanSequenceStepContext = Readonly<{
41
+ sequenceId: string;
42
+ stepId: string;
43
+ index: number;
44
+ confirmed: readonly ConfirmedStep[];
45
+ }>;
46
+ /** Exact result of freshly preparing one sequence step.
47
+ *
48
+ * A waiting timestamp is a canonical UTC ISO-8601 string. It is advisory; the
49
+ * planning core neither interprets it nor polls automatically.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * declare const readiness: PlanSequenceReadiness;
54
+ * if (readiness.status === 'ready') console.log(readiness.plan.describe());
55
+ * ```
56
+ */
57
+ export type PlanSequenceReadiness = Readonly<{
58
+ status: 'ready';
59
+ plan: Plan;
60
+ }> | Readonly<{
61
+ status: 'waiting';
62
+ reason: string;
63
+ notBefore?: string;
64
+ }>;
65
+ /** One stable lazy step in a Plan sequence.
66
+ *
67
+ * The callback may close over capability context. It creates no Plan until the
68
+ * caller reaches this step and invokes it with current progress.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * declare const plan: Plan;
73
+ * const step: PlanSequenceStep = {
74
+ * id: 'undock',
75
+ * prepare: async () => ({ status: 'ready', plan }),
76
+ * };
77
+ * ```
78
+ */
79
+ export interface PlanSequenceStep {
80
+ readonly id: string;
81
+ prepare(context: PlanSequenceStepContext): Promise<PlanSequenceReadiness>;
82
+ }
83
+ /** Exact caller-owned input accepted by `createPlanSequence`.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * declare const step: PlanSequenceStep;
88
+ * const input: CreatePlanSequenceInput = {
89
+ * cluster: 'zink-ptr',
90
+ * sequenceId: 'fleet-round-trip',
91
+ * revision: 0,
92
+ * steps: [step],
93
+ * };
94
+ * ```
95
+ */
96
+ export interface CreatePlanSequenceInput {
97
+ readonly cluster: ClusterIdentity;
98
+ readonly sequenceId: string;
99
+ readonly revision: number;
100
+ readonly steps: readonly PlanSequenceStep[];
101
+ }
102
+ /** Inert, immutable itinerary with cluster-bound resume identity.
103
+ *
104
+ * `describe()` names stable step identities only. Each actual Plan remains
105
+ * lazy and must be presented separately when fresh authorization is requested.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * declare const sequence: PlanSequence;
110
+ * console.log(sequence.fingerprint, sequence.describe());
111
+ * ```
112
+ */
113
+ export interface PlanSequence {
114
+ readonly cluster: ClusterIdentity;
115
+ readonly sequenceId: string;
116
+ readonly revision: number;
117
+ readonly steps: readonly PlanSequenceStep[];
118
+ readonly fingerprint: PlanSequenceFingerprint;
119
+ describe(): readonly string[];
120
+ }
121
+ /** @internal Distinguishes a capability callback rejection from malformed readiness data. */
122
+ export declare class PlanSequencePreparationBoundaryError extends Error {
123
+ constructor();
124
+ }
125
+ /** Every public sequence coordination status.
126
+ *
127
+ * `completed` is the only successful terminal status.
128
+ *
129
+ * @example
130
+ * ```ts
131
+ * const status: PlanSequenceStatus = 'waiting';
132
+ * ```
133
+ */
134
+ export type PlanSequenceStatus = 'waiting' | 'paused' | 'failed' | 'unknown' | 'completed';
135
+ /** Finite lifecycle phase safe to expose in a sequence result.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * const phase: PlanSequencePhase = 'preparing';
140
+ * ```
141
+ */
142
+ export type PlanSequencePhase = 'preparing' | 'prepared' | 'signing' | 'signed' | 'invoking' | 'submitted' | 'confirmed';
143
+ /** Sequence-owned failure codes that never carry raw callback diagnostics.
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const code: PlanSequenceErrorCode = 'SEQUENCE_PREPARATION_FAILED';
148
+ * ```
149
+ */
150
+ export type PlanSequenceErrorCode = 'SEQUENCE_IDENTITY_MISMATCH' | 'SEQUENCE_CHECKPOINT_INVALID' | 'SEQUENCE_CONFIRMATION_UNVERIFIABLE' | 'SEQUENCE_ATTEMPT_UNRESOLVED' | 'SEQUENCE_PREPARATION_FAILED' | 'SEQUENCE_PERSISTENCE_FAILED' | 'SEQUENCE_PRESENTATION_FAILED';
151
+ /** Finite error code carried by a failed or unknown sequence result.
152
+ *
153
+ * Existing planning and execution errors retain their public SDK code; errors
154
+ * crossing callback or persistence boundaries use a sequence-owned code.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * const code: PlanSequenceResultCode = 'INVALID_ACTION_INPUT';
159
+ * ```
160
+ */
161
+ export type PlanSequenceResultCode = PlanSequenceErrorCode | SageSdkErrorCode;
162
+ /** Finite safe result envelope for future checkpoint-backed coordination.
163
+ *
164
+ * The checkpoint codec supplies the generic checkpoint value. Raw errors,
165
+ * signers, transactions, blockhashes, and callback values are never fields.
166
+ * A boundary pause is `preparing` before the first step or `confirmed` after a
167
+ * completed step. If saving an observable signed attempt fails before
168
+ * submission, the result remains a signature-bearing `failed` outcome.
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * declare const result: PlanSequenceResult<{ readonly v: 1 }>;
173
+ * if (result.status === 'failed') console.log(result.code, result.message);
174
+ * ```
175
+ */
176
+ export type PlanSequenceResult<Checkpoint = unknown> = Readonly<{
177
+ status: 'waiting';
178
+ stepId: string;
179
+ index: number;
180
+ phase: 'preparing';
181
+ reason: string;
182
+ notBefore?: string;
183
+ checkpoint: Checkpoint;
184
+ }> | Readonly<{
185
+ status: 'paused';
186
+ stepId: string;
187
+ index: number;
188
+ phase: 'preparing' | 'confirmed';
189
+ checkpoint: Checkpoint;
190
+ }> | Readonly<{
191
+ status: 'failed';
192
+ stepId: string;
193
+ index: number;
194
+ phase: 'preparing' | 'prepared' | 'signing';
195
+ code: PlanSequenceResultCode;
196
+ message: string;
197
+ checkpoint: Checkpoint;
198
+ }> | Readonly<{
199
+ status: 'failed';
200
+ stepId: string;
201
+ index: number;
202
+ phase: 'signed';
203
+ signature: Signature;
204
+ code: 'SEQUENCE_PERSISTENCE_FAILED';
205
+ message: string;
206
+ checkpoint: Checkpoint;
207
+ }> | Readonly<{
208
+ status: 'unknown';
209
+ stepId: string;
210
+ index: number;
211
+ phase: 'signed' | 'invoking' | 'submitted';
212
+ signature?: Signature;
213
+ code: PlanSequenceResultCode;
214
+ message: string;
215
+ checkpoint: Checkpoint;
216
+ }> | Readonly<{
217
+ status: 'completed';
218
+ stepId: string;
219
+ index: number;
220
+ phase: 'confirmed';
221
+ signature?: Signature;
222
+ checkpoint: Checkpoint;
223
+ }>;
224
+ /** Creates an inert Plan sequence and its canonical cluster-bound fingerprint.
225
+ *
226
+ * Construction invokes no step callback and performs no context, wallet,
227
+ * signer, or network work. The only asynchronous operation is WebCrypto
228
+ * SHA-256 over the accepted canonical identity bytes.
229
+ *
230
+ * @example
231
+ * ```ts
232
+ * declare const step: PlanSequenceStep;
233
+ * const sequence = await createPlanSequence({
234
+ * cluster: 'zink-ptr',
235
+ * sequenceId: 'fleet-round-trip',
236
+ * revision: 0,
237
+ * steps: [step],
238
+ * });
239
+ * console.log(sequence.fingerprint);
240
+ * ```
241
+ */
242
+ export declare function createPlanSequence(input: CreatePlanSequenceInput): Promise<PlanSequence>;
243
+ export {};
244
+ //# sourceMappingURL=plan-sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-sequence.d.ts","sourceRoot":"","sources":["../../src/planning/plan-sequence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,OAAO,CAAC,MAAM,+BAA+B,EAAE,OAAO,MAAM,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG;IAC7C,QAAQ,CAAC,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;CAClD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;CACvC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;CACrC,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,MAAM,qBAAqB,GAC7B,QAAQ,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,GACzC,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEP;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC;IAC9C,QAAQ,IAAI,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,6FAA6F;AAC7F,qBAAa,oCAAqC,SAAQ,KAAK;;CAK9D;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAC5B,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,UAAU,GACV,SAAS,GACT,QAAQ,GACR,UAAU,GACV,WAAW,GACX,WAAW,CAAC;AAEhB;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAC7B,4BAA4B,GAC5B,6BAA6B,GAC7B,oCAAoC,GACpC,6BAA6B,GAC7B,6BAA6B,GAC7B,6BAA6B,GAC7B,8BAA8B,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAE9E;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,kBAAkB,CAAC,UAAU,GAAG,OAAO,IAC/C,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,6BAA6B,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,GACF,QAAQ,CAAC;IACP,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,CAAC;AA4RP;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC,CAmDvB"}
@@ -0,0 +1,264 @@
1
+ import { InvalidActionInputError, } from '../client/errors.js';
2
+ import { isPlanInstance } from './plan-instances.js';
3
+ const FINGERPRINT_DOMAIN = 'aephia-atlas-kit/plan-sequence-fingerprint/1';
4
+ const IDENTIFIER_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
5
+ const CUSTOM_CLUSTER_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,62})$/u;
6
+ const ISO_TIMESTAMP_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/u;
7
+ /** @internal Distinguishes a capability callback rejection from malformed readiness data. */
8
+ export class PlanSequencePreparationBoundaryError extends Error {
9
+ constructor() {
10
+ super('PlanSequence preparation callback rejected.');
11
+ this.name = 'PlanSequencePreparationBoundaryError';
12
+ }
13
+ }
14
+ function summarize(value) {
15
+ if (typeof value === 'number' || typeof value === 'string')
16
+ return value;
17
+ if (value === null)
18
+ return 'null';
19
+ return typeof value;
20
+ }
21
+ function invalid(field, value, acceptedRange) {
22
+ throw new InvalidActionInputError(field, summarize(value), acceptedRange, 'Correct this PlanSequence field and create the sequence again before retrying.');
23
+ }
24
+ function readDataRecord(value, field, acceptedRange = 'a plain object with data properties') {
25
+ try {
26
+ if (value === null ||
27
+ typeof value !== 'object' ||
28
+ Array.isArray(value) ||
29
+ (Object.getPrototypeOf(value) !== Object.prototype &&
30
+ Object.getPrototypeOf(value) !== null)) {
31
+ return invalid(field, value, acceptedRange);
32
+ }
33
+ const copy = {};
34
+ for (const key of Reflect.ownKeys(value)) {
35
+ if (typeof key !== 'string') {
36
+ return invalid(field, 'symbol-keyed property', acceptedRange);
37
+ }
38
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
39
+ if (descriptor === undefined || !('value' in descriptor)) {
40
+ return invalid(`${field}.${key}`, 'accessor property', 'a data property');
41
+ }
42
+ copy[key] = descriptor.value;
43
+ }
44
+ return copy;
45
+ }
46
+ catch (error) {
47
+ if (error instanceof InvalidActionInputError)
48
+ throw error;
49
+ return invalid(field, 'unreadable object', acceptedRange);
50
+ }
51
+ }
52
+ function assertKeys(value, field, required, optional = []) {
53
+ const accepted = new Set([...required, ...optional]);
54
+ const missing = required.find((key) => !Object.hasOwn(value, key));
55
+ const unexpected = Object.keys(value).find((key) => !accepted.has(key));
56
+ if (missing !== undefined || unexpected !== undefined) {
57
+ invalid(field, missing === undefined ? `unexpected ${unexpected}` : `missing ${missing}`, `exactly the fields ${[...required, ...optional].join(', ')}`);
58
+ }
59
+ }
60
+ function readDenseArray(value, field) {
61
+ try {
62
+ if (!Array.isArray(value)) {
63
+ return invalid(field, value, 'a dense ordered array');
64
+ }
65
+ const values = [];
66
+ for (let index = 0; index < value.length; index += 1) {
67
+ const descriptor = Object.getOwnPropertyDescriptor(value, index);
68
+ if (descriptor === undefined || !('value' in descriptor)) {
69
+ invalid(`${field}[${String(index)}]`, descriptor === undefined ? undefined : 'accessor property', 'a present data element');
70
+ }
71
+ values[index] = descriptor.value;
72
+ }
73
+ return values;
74
+ }
75
+ catch (error) {
76
+ if (error instanceof InvalidActionInputError)
77
+ throw error;
78
+ return invalid(field, 'unreadable array', 'a dense ordered array');
79
+ }
80
+ }
81
+ function readIdentifier(value, field) {
82
+ if (typeof value !== 'string') {
83
+ return invalid(field, value, '1 to 128 ASCII characters matching [A-Za-z0-9][A-Za-z0-9._:-]*');
84
+ }
85
+ const normalized = value.normalize('NFC');
86
+ if (!IDENTIFIER_PATTERN.test(normalized)) {
87
+ return invalid(field, value, '1 to 128 ASCII characters matching [A-Za-z0-9][A-Za-z0-9._:-]*');
88
+ }
89
+ return normalized;
90
+ }
91
+ function normalizeCluster(cluster) {
92
+ if (cluster === 'zink-ptr') {
93
+ return { identity: cluster, token: cluster };
94
+ }
95
+ const value = readDataRecord(cluster, 'planSequence.cluster');
96
+ assertKeys(value, 'planSequence.cluster', ['name']);
97
+ if (typeof value.name !== 'string') {
98
+ return invalid('planSequence.cluster.name', value.name, '1 to 63 lowercase ASCII letters, digits, or hyphens, starting with a letter or digit');
99
+ }
100
+ const name = value.name.normalize('NFC');
101
+ if (!CUSTOM_CLUSTER_PATTERN.test(name)) {
102
+ return invalid('planSequence.cluster.name', value.name, '1 to 63 lowercase ASCII letters, digits, or hyphens, starting with a letter or digit');
103
+ }
104
+ return {
105
+ identity: Object.freeze({ name }),
106
+ token: `custom:${name}`,
107
+ };
108
+ }
109
+ function readRevision(value) {
110
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0
111
+ ? value
112
+ : invalid('planSequence.revision', value, 'a non-negative safe integer');
113
+ }
114
+ function readTimestamp(value, field) {
115
+ if (typeof value !== 'string' ||
116
+ !ISO_TIMESTAMP_PATTERN.test(value) ||
117
+ Number.isNaN(Date.parse(value)) ||
118
+ new Date(value).toISOString() !== value) {
119
+ return invalid(field, value, 'a canonical UTC ISO-8601 timestamp such as 2026-08-28T12:00:00.000Z');
120
+ }
121
+ return value;
122
+ }
123
+ function normalizeReadiness(value, field) {
124
+ const readiness = readDataRecord(value, field);
125
+ if (readiness.status === 'ready') {
126
+ assertKeys(readiness, field, ['status', 'plan']);
127
+ if (!isPlanInstance(readiness.plan)) {
128
+ return invalid(`${field}.plan`, readiness.plan, 'a Plan created by createPlan, planFromJSON, or combinePlans');
129
+ }
130
+ return Object.freeze({ status: 'ready', plan: readiness.plan });
131
+ }
132
+ if (readiness.status === 'waiting') {
133
+ assertKeys(readiness, field, ['status', 'reason'], ['notBefore']);
134
+ if (typeof readiness.reason !== 'string') {
135
+ return invalid(`${field}.reason`, readiness.reason, 'a string');
136
+ }
137
+ return Object.freeze({
138
+ status: 'waiting',
139
+ reason: readiness.reason,
140
+ ...(readiness.notBefore === undefined
141
+ ? {}
142
+ : {
143
+ notBefore: readTimestamp(readiness.notBefore, `${field}.notBefore`),
144
+ }),
145
+ });
146
+ }
147
+ return invalid(`${field}.status`, readiness.status, 'exactly ready or waiting');
148
+ }
149
+ function normalizeStep(value, index) {
150
+ const field = `planSequence.steps[${String(index)}]`;
151
+ const step = readDataRecord(value, field);
152
+ assertKeys(step, field, ['id', 'prepare']);
153
+ const id = readIdentifier(step.id, `${field}.id`);
154
+ if (typeof step.prepare !== 'function') {
155
+ return invalid(`${field}.prepare`, step.prepare, 'an async preparation callback');
156
+ }
157
+ const prepare = step.prepare;
158
+ return Object.freeze({
159
+ id,
160
+ prepare: async (context) => {
161
+ let readiness;
162
+ try {
163
+ readiness = await prepare(context);
164
+ }
165
+ catch {
166
+ throw new PlanSequencePreparationBoundaryError();
167
+ }
168
+ return normalizeReadiness(readiness, `${field}.prepare result`);
169
+ },
170
+ });
171
+ }
172
+ function lengthPrefixedBytes(value) {
173
+ const encoder = new TextEncoder();
174
+ const valueBytes = encoder.encode(value);
175
+ const prefixBytes = encoder.encode(`${String(valueBytes.length)}:`);
176
+ const bytes = new Uint8Array(prefixBytes.length + valueBytes.length);
177
+ bytes.set(prefixBytes);
178
+ bytes.set(valueBytes, prefixBytes.length);
179
+ return bytes;
180
+ }
181
+ function canonicalFingerprintBytes(fields) {
182
+ const encoded = fields.map(lengthPrefixedBytes);
183
+ const byteLength = encoded.reduce((total, field) => total + field.length, 0);
184
+ const bytes = new Uint8Array(byteLength);
185
+ let offset = 0;
186
+ for (const field of encoded) {
187
+ bytes.set(field, offset);
188
+ offset += field.length;
189
+ }
190
+ return bytes;
191
+ }
192
+ async function fingerprint(fields) {
193
+ const digest = await globalThis.crypto.subtle.digest('SHA-256', canonicalFingerprintBytes(fields));
194
+ return [...new Uint8Array(digest)]
195
+ .map((byte) => byte.toString(16).padStart(2, '0'))
196
+ .join('');
197
+ }
198
+ function itinerary(sequenceId, steps) {
199
+ return Object.freeze([
200
+ `Plan sequence ${sequenceId} is a non-atomic journey.`,
201
+ ...steps.map((step, index) => `Step ${String(index + 1)} (${step.id}) is one transaction; its Plan is freshly prepared only when this step is reached.`),
202
+ 'Every transaction requires fresh authorization.',
203
+ ]);
204
+ }
205
+ /** Creates an inert Plan sequence and its canonical cluster-bound fingerprint.
206
+ *
207
+ * Construction invokes no step callback and performs no context, wallet,
208
+ * signer, or network work. The only asynchronous operation is WebCrypto
209
+ * SHA-256 over the accepted canonical identity bytes.
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * declare const step: PlanSequenceStep;
214
+ * const sequence = await createPlanSequence({
215
+ * cluster: 'zink-ptr',
216
+ * sequenceId: 'fleet-round-trip',
217
+ * revision: 0,
218
+ * steps: [step],
219
+ * });
220
+ * console.log(sequence.fingerprint);
221
+ * ```
222
+ */
223
+ export async function createPlanSequence(input) {
224
+ const value = readDataRecord(input, 'planSequence');
225
+ assertKeys(value, 'planSequence', [
226
+ 'cluster',
227
+ 'sequenceId',
228
+ 'revision',
229
+ 'steps',
230
+ ]);
231
+ const cluster = normalizeCluster(value.cluster);
232
+ const sequenceId = readIdentifier(value.sequenceId, 'planSequence.sequenceId');
233
+ const revision = readRevision(value.revision);
234
+ const stepValues = readDenseArray(value.steps, 'planSequence.steps');
235
+ if (stepValues.length === 0) {
236
+ invalid('planSequence.steps', stepValues.length, 'one or more ordered steps');
237
+ }
238
+ const steps = Object.freeze(stepValues.map(normalizeStep));
239
+ const seenStepIds = new Set();
240
+ for (const [index, step] of steps.entries()) {
241
+ if (seenStepIds.has(step.id)) {
242
+ invalid(`planSequence.steps[${String(index)}].id`, step.id, 'a step id unique within this sequence');
243
+ }
244
+ seenStepIds.add(step.id);
245
+ }
246
+ const descriptions = itinerary(sequenceId, steps);
247
+ const planSequence = {
248
+ cluster: cluster.identity,
249
+ sequenceId,
250
+ revision,
251
+ steps,
252
+ fingerprint: await fingerprint([
253
+ FINGERPRINT_DOMAIN,
254
+ cluster.token,
255
+ sequenceId,
256
+ String(revision),
257
+ String(steps.length),
258
+ ...steps.map((step) => step.id),
259
+ ]),
260
+ describe: () => descriptions,
261
+ };
262
+ return Object.freeze(planSequence);
263
+ }
264
+ //# sourceMappingURL=plan-sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-sequence.js","sourceRoot":"","sources":["../../src/planning/plan-sequence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { type Address } from '@solana/kit';
2
+ import type { SageContext } from '../client/contracts.js';
3
+ import type { Plan } from './index.js';
4
+ import { type AssemblyPolicy } from './assembly.js';
5
+ /** Return data emitted by the last program to set it during simulation.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * declare const returnData: SimulationReturnData;
10
+ * console.log(returnData.programAddress, returnData.data);
11
+ * ```
12
+ */
13
+ export interface SimulationReturnData {
14
+ readonly programAddress: Address;
15
+ readonly data: string;
16
+ }
17
+ /** Node-provenance result from simulating one unsigned Plan.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * declare const result: SimulationResult;
22
+ * console.log(result.slot, result.replacementBlockhash.blockhash);
23
+ * ```
24
+ */
25
+ export interface SimulationResult {
26
+ readonly slot: bigint;
27
+ readonly unitsConsumed: bigint | undefined;
28
+ readonly logs: readonly string[];
29
+ readonly returnData?: SimulationReturnData;
30
+ readonly replacementBlockhash: Readonly<{
31
+ blockhash: string;
32
+ lastValidBlockHeight: bigint;
33
+ }>;
34
+ }
35
+ /** Simulates one Plan without receiving or invoking a signer.
36
+ *
37
+ * The same assembly policy used for execution produces the unsigned transaction.
38
+ * The node replaces its recent blockhash and verifies no signatures.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * declare const ctx: SageContext;
43
+ * declare const plan: Plan;
44
+ * declare const feePayer: Address;
45
+ * const result = await simulatePlan(ctx, plan, { feePayer });
46
+ * console.log(result.logs, result.unitsConsumed);
47
+ * ```
48
+ */
49
+ export declare function simulatePlan(context: SageContext, plan: Plan, policy: AssemblyPolicy): Promise<SimulationResult>;
50
+ //# sourceMappingURL=simulation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation.d.ts","sourceRoot":"","sources":["../../src/planning/simulation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAEL,KAAK,cAAc,EAIpB,MAAM,eAAe,CAAC;AAEvB;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,oBAAoB,EAAE,QAAQ,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;CACJ;AAsBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA+C3B"}
@@ -0,0 +1,69 @@
1
+ import { getBase64EncodedWireTransaction, } from '@solana/kit';
2
+ import { SageSdkError } from '../client/errors.js';
3
+ import { assembleValidatedPlan, requireWriteRpc, validateAssemblyPolicy, validatePlan, } from './assembly.js';
4
+ class SimulationFailedError extends SageSdkError {
5
+ transactionError;
6
+ logs;
7
+ unitsConsumed;
8
+ constructor(transactionError, logs, unitsConsumed) {
9
+ super('SIMULATION_FAILED', 'The unsigned Plan simulation failed on chain. Inspect the transaction error and program logs, correct the Plan inputs, and create a new Plan before retrying.');
10
+ this.transactionError = transactionError;
11
+ this.logs = logs;
12
+ if (unitsConsumed !== undefined)
13
+ this.unitsConsumed = unitsConsumed;
14
+ }
15
+ }
16
+ /** Simulates one Plan without receiving or invoking a signer.
17
+ *
18
+ * The same assembly policy used for execution produces the unsigned transaction.
19
+ * The node replaces its recent blockhash and verifies no signatures.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * declare const ctx: SageContext;
24
+ * declare const plan: Plan;
25
+ * declare const feePayer: Address;
26
+ * const result = await simulatePlan(ctx, plan, { feePayer });
27
+ * console.log(result.logs, result.unitsConsumed);
28
+ * ```
29
+ */
30
+ export async function simulatePlan(context, plan, policy) {
31
+ validatePlan(plan);
32
+ const validatedPolicy = validateAssemblyPolicy(policy);
33
+ const writeRpc = requireWriteRpc(context);
34
+ const transaction = await assembleValidatedPlan(writeRpc, plan, validatedPolicy);
35
+ const response = await writeRpc
36
+ .simulateTransaction(getBase64EncodedWireTransaction(transaction), {
37
+ commitment: validatedPolicy.commitment,
38
+ encoding: 'base64',
39
+ replaceRecentBlockhash: true,
40
+ sigVerify: false,
41
+ })
42
+ .send();
43
+ const logs = Object.freeze([...(response.value.logs ?? [])]);
44
+ const unitsConsumed = response.value.unitsConsumed === undefined
45
+ ? undefined
46
+ : BigInt(response.value.unitsConsumed);
47
+ if (response.value.err !== null) {
48
+ throw new SimulationFailedError(response.value.err, logs, unitsConsumed);
49
+ }
50
+ const returnData = response.value.returnData;
51
+ return Object.freeze({
52
+ logs,
53
+ replacementBlockhash: Object.freeze({
54
+ blockhash: response.value.replacementBlockhash.blockhash,
55
+ lastValidBlockHeight: BigInt(response.value.replacementBlockhash.lastValidBlockHeight),
56
+ }),
57
+ ...(returnData === null
58
+ ? {}
59
+ : {
60
+ returnData: Object.freeze({
61
+ data: returnData.data[0],
62
+ programAddress: returnData.programId,
63
+ }),
64
+ }),
65
+ slot: BigInt(response.context.slot),
66
+ unitsConsumed,
67
+ });
68
+ }
69
+ //# sourceMappingURL=simulation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../src/planning/simulation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,GAGhC,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,qBAAqB,EAErB,eAAe,EACf,sBAAsB,EACtB,YAAY,GACb,MAAM,eAAe,CAAC;AAkCvB,MAAM,qBAAsB,SAAQ,YAAY;IACrC,gBAAgB,CAAmB;IACnC,IAAI,CAAoB;IACxB,aAAa,CAAU;IAEhC,YACE,gBAAkC,EAClC,IAAuB,EACvB,aAAiC;QAEjC,KAAK,CACH,mBAAmB,EACnB,+JAA+J,CAChK,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,aAAa,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACtE,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAoB,EACpB,IAAU,EACV,MAAsB;IAEtB,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAC7C,QAAQ,EACR,IAAI,EACJ,eAAe,CAChB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,QAAQ;SAC5B,mBAAmB,CAAC,+BAA+B,CAAC,WAAW,CAAC,EAAE;QACjE,UAAU,EAAE,eAAe,CAAC,UAAU;QACtC,QAAQ,EAAE,QAAQ;QAClB,sBAAsB,EAAE,IAAI;QAC5B,SAAS,EAAE,KAAK;KACjB,CAAC;SACD,IAAI,EAAE,CAAC;IACV,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,aAAa,GACjB,QAAQ,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE3C,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAAS;YACxD,oBAAoB,EAAE,MAAM,CAC1B,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,CACzD;SACF,CAAC;QACF,GAAG,CAAC,UAAU,KAAK,IAAI;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;oBACxB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBACxB,cAAc,EAAE,UAAU,CAAC,SAAS;iBACrC,CAAC;aACH,CAAC;QACN,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACnC,aAAa;KACd,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ReadOptions, SageContext, SnapshotEnvelope } from '../client/contracts.js';
2
+ import { type GameCombatConfigurationData } from '../internal/c4/game.js';
3
+ /** Reads the registry-owned Game combat section through the shared data plane. */
4
+ export declare function readGameCombatConfiguration(context: SageContext, options?: ReadOptions): Promise<SnapshotEnvelope<GameCombatConfigurationData>>;
5
+ //# sourceMappingURL=combat.d.ts.map