@aifinpay/agent 2.0.0-rc.8 → 2.0.3

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/PAYMENT_RECEIPTS.md +114 -0
  3. package/README.md +85 -28
  4. package/dist/agent.d.ts +8 -1
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +50 -17
  7. package/dist/agent.js.map +1 -1
  8. package/dist/agentHistory.d.ts +55 -0
  9. package/dist/agentHistory.d.ts.map +1 -0
  10. package/dist/agentHistory.js +145 -0
  11. package/dist/agentHistory.js.map +1 -0
  12. package/dist/agentPassport.d.ts +71 -7
  13. package/dist/agentPassport.d.ts.map +1 -1
  14. package/dist/agentPassport.js +135 -27
  15. package/dist/agentPassport.js.map +1 -1
  16. package/dist/aifp1.d.ts +94 -5
  17. package/dist/aifp1.d.ts.map +1 -1
  18. package/dist/aifp1.js +370 -114
  19. package/dist/aifp1.js.map +1 -1
  20. package/dist/apiUrl.d.ts +3 -0
  21. package/dist/apiUrl.d.ts.map +1 -0
  22. package/dist/apiUrl.js +8 -0
  23. package/dist/apiUrl.js.map +1 -0
  24. package/dist/chains.d.ts +7 -0
  25. package/dist/chains.d.ts.map +1 -1
  26. package/dist/chains.js +19 -1
  27. package/dist/chains.js.map +1 -1
  28. package/dist/crossChain.d.ts +1 -0
  29. package/dist/crossChain.d.ts.map +1 -1
  30. package/dist/crossChain.js +87 -5
  31. package/dist/crossChain.js.map +1 -1
  32. package/dist/crypto.d.ts.map +1 -1
  33. package/dist/crypto.js.map +1 -1
  34. package/dist/deploymentResolver.d.ts +95 -0
  35. package/dist/deploymentResolver.d.ts.map +1 -0
  36. package/dist/deploymentResolver.js +169 -0
  37. package/dist/deploymentResolver.js.map +1 -0
  38. package/dist/errors.d.ts +17 -0
  39. package/dist/errors.d.ts.map +1 -1
  40. package/dist/errors.js +14 -0
  41. package/dist/errors.js.map +1 -1
  42. package/dist/facilitators/aifinpay.d.ts +4 -5
  43. package/dist/facilitators/aifinpay.d.ts.map +1 -1
  44. package/dist/facilitators/aifinpay.js +50 -21
  45. package/dist/facilitators/aifinpay.js.map +1 -1
  46. package/dist/facilitators/base.d.ts +12 -1
  47. package/dist/facilitators/base.d.ts.map +1 -1
  48. package/dist/facilitators/coinbase.d.ts.map +1 -1
  49. package/dist/facilitators/coinbase.js +3 -7
  50. package/dist/facilitators/coinbase.js.map +1 -1
  51. package/dist/facilitators/detect.d.ts.map +1 -1
  52. package/dist/facilitators/detect.js +2 -7
  53. package/dist/facilitators/detect.js.map +1 -1
  54. package/dist/facilitators/standard-x402.d.ts.map +1 -1
  55. package/dist/facilitators/standard-x402.js +40 -30
  56. package/dist/facilitators/standard-x402.js.map +1 -1
  57. package/dist/generated/solanaV14Deployments.generated.d.ts +25 -0
  58. package/dist/generated/solanaV14Deployments.generated.d.ts.map +1 -0
  59. package/dist/generated/solanaV14Deployments.generated.js +39 -0
  60. package/dist/generated/solanaV14Deployments.generated.js.map +1 -0
  61. package/dist/generated/splitterRoutes.generated.d.ts +24 -0
  62. package/dist/generated/splitterRoutes.generated.d.ts.map +1 -0
  63. package/dist/generated/splitterRoutes.generated.js +453 -0
  64. package/dist/generated/splitterRoutes.generated.js.map +1 -0
  65. package/dist/generated/v14Deployments.generated.d.ts +49 -0
  66. package/dist/generated/v14Deployments.generated.d.ts.map +1 -0
  67. package/dist/generated/v14Deployments.generated.js +415 -0
  68. package/dist/generated/v14Deployments.generated.js.map +1 -0
  69. package/dist/index.d.ts +27 -13
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +16 -7
  72. package/dist/index.js.map +1 -1
  73. package/dist/localIdentity.d.ts +17 -0
  74. package/dist/localIdentity.d.ts.map +1 -0
  75. package/dist/localIdentity.js +95 -0
  76. package/dist/localIdentity.js.map +1 -0
  77. package/dist/settlement.d.ts +35 -5
  78. package/dist/settlement.d.ts.map +1 -1
  79. package/dist/settlement.js +232 -76
  80. package/dist/settlement.js.map +1 -1
  81. package/dist/settlementHttp.d.ts +10 -0
  82. package/dist/settlementHttp.d.ts.map +1 -0
  83. package/dist/settlementHttp.js +78 -0
  84. package/dist/settlementHttp.js.map +1 -0
  85. package/dist/settlementV14.d.ts +10 -9
  86. package/dist/settlementV14.d.ts.map +1 -1
  87. package/dist/settlementV14.js +43 -55
  88. package/dist/settlementV14.js.map +1 -1
  89. package/dist/solanaDeploymentResolver.d.ts +98 -0
  90. package/dist/solanaDeploymentResolver.d.ts.map +1 -0
  91. package/dist/solanaDeploymentResolver.js +162 -0
  92. package/dist/solanaDeploymentResolver.js.map +1 -0
  93. package/dist/solanaV14Deployments.generated.d.ts +25 -0
  94. package/dist/solanaV14Deployments.generated.d.ts.map +1 -0
  95. package/dist/solanaV14Deployments.generated.js +39 -0
  96. package/dist/solanaV14Deployments.generated.js.map +1 -0
  97. package/dist/spendLedger.d.ts.map +1 -1
  98. package/dist/spendLedger.js +1 -3
  99. package/dist/spendLedger.js.map +1 -1
  100. package/dist/splitterRoutes.d.ts +11 -4
  101. package/dist/splitterRoutes.d.ts.map +1 -1
  102. package/dist/splitterRoutes.generated.d.ts +11 -9
  103. package/dist/splitterRoutes.generated.d.ts.map +1 -1
  104. package/dist/splitterRoutes.generated.js +72 -18
  105. package/dist/splitterRoutes.generated.js.map +1 -1
  106. package/dist/splitterRoutes.js +7 -5
  107. package/dist/splitterRoutes.js.map +1 -1
  108. package/dist/unifiedAgent.d.ts +97 -29
  109. package/dist/unifiedAgent.d.ts.map +1 -1
  110. package/dist/unifiedAgent.js +232 -349
  111. package/dist/unifiedAgent.js.map +1 -1
  112. package/dist/v14Deployments.generated.d.ts +49 -0
  113. package/dist/v14Deployments.generated.d.ts.map +1 -0
  114. package/dist/v14Deployments.generated.js +413 -0
  115. package/dist/v14Deployments.generated.js.map +1 -0
  116. package/dist/wallet.d.ts.map +1 -1
  117. package/dist/wallet.js +2 -2
  118. package/dist/wallet.js.map +1 -1
  119. package/package.json +27 -6
  120. package/dist/cli.d.ts +0 -3
  121. package/dist/cli.d.ts.map +0 -1
  122. package/dist/cli.js +0 -127
  123. package/dist/cli.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ /** Bounded transport for payment API requests, including response body reads. */
2
+ export class SettlementHttpError extends Error {
3
+ code;
4
+ constructor(message, code) {
5
+ super(message);
6
+ this.code = code;
7
+ this.name = "SettlementHttpError";
8
+ }
9
+ }
10
+ export async function settlementHttp(fetchImpl, url, init = {}, timeoutMs = 15_000) {
11
+ if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0 || timeoutMs > 2_147_483_647) {
12
+ throw new SettlementHttpError("invalid payment API timeout", "invalid_timeout");
13
+ }
14
+ const controller = new AbortController();
15
+ let timer;
16
+ const deadline = new Promise((_resolve, reject) => {
17
+ timer = setTimeout(() => {
18
+ const error = new SettlementHttpError("settlement API timed out", "request_timeout");
19
+ controller.abort(error);
20
+ reject(error);
21
+ }, timeoutMs);
22
+ });
23
+ const operation = async () => {
24
+ const response = await fetchImpl(url, {
25
+ ...init,
26
+ redirect: "error",
27
+ signal: controller.signal,
28
+ });
29
+ if (response.redirected ||
30
+ (response.url && response.url !== url) ||
31
+ (response.status >= 300 && response.status < 400)) {
32
+ void response.body?.cancel().catch(() => { });
33
+ throw new SettlementHttpError("settlement API redirect refused", "redirect_refused");
34
+ }
35
+ const reader = response.body?.getReader();
36
+ const chunks = [];
37
+ let size = 0;
38
+ if (reader) {
39
+ const cancel = () => {
40
+ void reader.cancel().catch(() => { });
41
+ };
42
+ controller.signal.addEventListener("abort", cancel, { once: true });
43
+ try {
44
+ if (controller.signal.aborted)
45
+ throw controller.signal.reason;
46
+ for (;;) {
47
+ const { done, value } = await reader.read();
48
+ if (done)
49
+ break;
50
+ size += value.byteLength;
51
+ if (size > 1_048_576 || controller.signal.aborted) {
52
+ void reader.cancel().catch(() => { });
53
+ throw new SettlementHttpError("payment API response exceeded its limit", "response_limit");
54
+ }
55
+ chunks.push(value);
56
+ }
57
+ }
58
+ finally {
59
+ controller.signal.removeEventListener("abort", cancel);
60
+ reader.releaseLock();
61
+ }
62
+ }
63
+ const body = new Uint8Array(size);
64
+ let offset = 0;
65
+ for (const chunk of chunks) {
66
+ body.set(chunk, offset);
67
+ offset += chunk.byteLength;
68
+ }
69
+ return { response, text: new TextDecoder().decode(body) };
70
+ };
71
+ try {
72
+ return await Promise.race([operation(), deadline]);
73
+ }
74
+ finally {
75
+ clearTimeout(timer);
76
+ }
77
+ }
78
+ //# sourceMappingURL=settlementHttp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlementHttp.js","sourceRoot":"","sources":["../src/settlementHttp.ts"],"names":[],"mappings":"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"}
@@ -82,7 +82,8 @@ export interface V14ValidateOptions {
82
82
  allowRoutes?: readonly string[];
83
83
  }
84
84
  /**
85
- * Every check §8 requires, before anything is broadcast.
85
+ * Read-only structural checks. Success does not authenticate the signer,
86
+ * deployment, fees or treasury and does not authorize settlement.
86
87
  *
87
88
  * Throws on the first failure with a code, because these are not equivalent:
88
89
  * an expired quote should be re-requested, a foreign payer is a caller bug, and
@@ -113,20 +114,20 @@ export declare function checkV14Submittable(publicClient: PublicClient, call: V1
113
114
  code: string;
114
115
  }>;
115
116
  /**
116
- * Validate, check submittability, then send.
117
- *
118
- * The order matters and is not stylistic: every check that can be made without
119
- * the chain runs before the one that costs a round trip, and all of them run
120
- * before anything is broadcast. Once `writeContract` is called the agent has
121
- * spent gas whatever happens next.
117
+ * v1.4 signing is quarantined. Its current signed Quote omits mutable profile
118
+ * fees and treasury. RPC preflight cannot bind those values at execution time.
119
+ * Keep the exported API for callers to handle the refusal, but provide no
120
+ * bypass: re-enabling requires a contract-bound economics commitment, reviewed
121
+ * deployment/signer/token pins, approval handling and mined-success recovery.
122
+ * Validation and nonce inspection above remain read-only diagnostics.
122
123
  */
123
- export declare function executeV14Settlement(call: V14SettlementCall, ctx: {
124
+ export declare function executeV14Settlement(_call: V14SettlementCall, _ctx: {
124
125
  publicClient: PublicClient;
125
126
  walletClient: WalletClient;
126
127
  account: Address;
127
128
  orderId?: string;
128
129
  minSecondsRemaining?: number;
129
- /** Skip the on-chain pre-flight. Only for a caller that has just done it. */
130
+ /** @deprecated Cannot bypass the v1.4 settlement quarantine. */
130
131
  skipPreflight?: boolean;
131
132
  }): Promise<{
132
133
  hash: Hex;
@@ -1 +1 @@
1
- {"version":3,"file":"settlementV14.d.ts","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlementV14.d.ts","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * Responsibilities". Each check below cites the clause it implements, because
14
14
  * a check nobody can trace back to a requirement is a check somebody deletes.
15
15
  */
16
- import { keccak256, stringToHex, parseAbi, } from "viem";
16
+ import { keccak256, stringToHex, parseAbi } from "viem";
17
17
  export class V14SettlementError extends Error {
18
18
  code;
19
19
  constructor(code, message) {
@@ -46,14 +46,17 @@ export function knownRouteIds() {
46
46
  const ZERO = "0x0000000000000000000000000000000000000000";
47
47
  const lc = (s) => String(s || "").toLowerCase();
48
48
  /**
49
- * Every check §8 requires, before anything is broadcast.
49
+ * Read-only structural checks. Success does not authenticate the signer,
50
+ * deployment, fees or treasury and does not authorize settlement.
50
51
  *
51
52
  * Throws on the first failure with a code, because these are not equivalent:
52
53
  * an expired quote should be re-requested, a foreign payer is a caller bug, and
53
54
  * an unknown route means this SDK is older than the deployment.
54
55
  */
55
56
  export function validateV14SettlementCall(call, opts = {}) {
56
- const fail = (code, msg) => { throw new V14SettlementError(code, msg); };
57
+ const fail = (code, msg) => {
58
+ throw new V14SettlementError(code, msg);
59
+ };
57
60
  if (!call || typeof call !== "object")
58
61
  fail("V14_MALFORMED", "no settlement call");
59
62
  if (call.splitter_version !== "1.4") {
@@ -134,70 +137,55 @@ const NONCE_ABI = parseAbi([
134
137
  export async function checkV14Submittable(publicClient, call) {
135
138
  const q = call.args.quote;
136
139
  const [spent, expected, paused] = await Promise.all([
137
- publicClient.readContract({ address: call.contract, abi: NONCE_ABI, functionName: "consumedNonce", args: [q.payer, BigInt(q.nonce)] }),
138
- publicClient.readContract({ address: call.contract, abi: NONCE_ABI, functionName: "payerNonce", args: [q.payer] }),
140
+ publicClient.readContract({
141
+ address: call.contract,
142
+ abi: NONCE_ABI,
143
+ functionName: "consumedNonce",
144
+ args: [q.payer, BigInt(q.nonce)],
145
+ }),
146
+ publicClient.readContract({
147
+ address: call.contract,
148
+ abi: NONCE_ABI,
149
+ functionName: "payerNonce",
150
+ args: [q.payer],
151
+ }),
139
152
  publicClient.readContract({ address: call.contract, abi: NONCE_ABI, functionName: "paused" }),
140
153
  ]);
141
154
  if (paused) {
142
- return { submittable: false, code: "V14_PAUSED",
143
- reason: "the splitter is paused — every settlement reverts until it is unpaused" };
155
+ return {
156
+ submittable: false,
157
+ code: "V14_PAUSED",
158
+ reason: "the splitter is paused — every settlement reverts until it is unpaused",
159
+ };
144
160
  }
145
161
  if (spent) {
146
- return { submittable: false, code: "V14_ALREADY_SETTLED",
147
- reason: `nonce ${q.nonce} has already been spent by ${q.payer} — this quote is settled, do not pay twice` };
162
+ return {
163
+ submittable: false,
164
+ code: "V14_ALREADY_SETTLED",
165
+ reason: `nonce ${q.nonce} has already been spent by ${q.payer} — this quote is settled, do not pay twice`,
166
+ };
148
167
  }
149
168
  if (BigInt(expected) !== BigInt(q.nonce)) {
150
- return { submittable: false, code: "V14_STALE_NONCE",
169
+ return {
170
+ submittable: false,
171
+ code: "V14_STALE_NONCE",
151
172
  reason: `this quote was signed at nonce ${q.nonce} but the contract now expects ${expected} — ` +
152
- `another payment from this wallet settled first; request a fresh quote` };
173
+ `another payment from this wallet settled first; request a fresh quote`,
174
+ };
153
175
  }
154
176
  return { submittable: true };
155
177
  }
156
- const SETTLE_ABI = parseAbi([
157
- "function settleNative((address payer,address merchant,address token,uint256 grossAmount,address ipCreator,uint256 validUntil,bytes32 orderIdHash,uint256 nonce,bytes32 routeId) quote, bytes signature) payable",
158
- "function settleStable((address payer,address merchant,address token,uint256 grossAmount,address ipCreator,uint256 validUntil,bytes32 orderIdHash,uint256 nonce,bytes32 routeId) quote, bytes signature)",
159
- ]);
160
- const asTuple = (q) => ({
161
- payer: q.payer, merchant: q.merchant, token: q.token,
162
- grossAmount: BigInt(q.grossAmount), ipCreator: q.ipCreator,
163
- validUntil: BigInt(q.validUntil), orderIdHash: q.orderIdHash,
164
- nonce: BigInt(q.nonce), routeId: q.routeId,
165
- });
166
178
  /**
167
- * Validate, check submittability, then send.
168
- *
169
- * The order matters and is not stylistic: every check that can be made without
170
- * the chain runs before the one that costs a round trip, and all of them run
171
- * before anything is broadcast. Once `writeContract` is called the agent has
172
- * spent gas whatever happens next.
179
+ * v1.4 signing is quarantined. Its current signed Quote omits mutable profile
180
+ * fees and treasury. RPC preflight cannot bind those values at execution time.
181
+ * Keep the exported API for callers to handle the refusal, but provide no
182
+ * bypass: re-enabling requires a contract-bound economics commitment, reviewed
183
+ * deployment/signer/token pins, approval handling and mined-success recovery.
184
+ * Validation and nonce inspection above remain read-only diagnostics.
173
185
  */
174
- export async function executeV14Settlement(call, ctx) {
175
- const { route } = validateV14SettlementCall(call, {
176
- orderId: ctx.orderId, payer: ctx.account, minSecondsRemaining: ctx.minSecondsRemaining,
177
- });
178
- if (!ctx.skipPreflight) {
179
- const pre = await checkV14Submittable(ctx.publicClient, call);
180
- if (!pre.submittable)
181
- throw new V14SettlementError(pre.code, pre.reason);
182
- }
183
- const q = call.args.quote;
184
- const native = lc(q.token) === ZERO;
185
- if (!native) {
186
- // §9.1 — settleStable needs an allowance first. Refused rather than
187
- // silently attempted: approving on the agent's behalf is a decision the
188
- // agent's own policy layer makes, not this function.
189
- throw new V14SettlementError("V14_STABLE_NOT_SUPPORTED", "stablecoin settlement requires approve(splitter, grossAmount) first and is not yet wired here — " +
190
- "quote in native for now");
191
- }
192
- const hash = await ctx.walletClient.writeContract({
193
- address: call.contract,
194
- abi: SETTLE_ABI,
195
- functionName: "settleNative",
196
- args: [asTuple(q), call.args.signature],
197
- value: BigInt(q.grossAmount),
198
- account: ctx.account,
199
- chain: null,
200
- });
201
- return { hash, route };
186
+ export async function executeV14Settlement(_call, _ctx) {
187
+ throw new V14SettlementError("V14_SETTLEMENT_DISABLED", "v1.4 settlement is disabled: signed quotes do not bind mutable fees and treasury. " +
188
+ "Use a separately reviewed v1.3 route or wait for the contract and SDK upgrade; " +
189
+ "do not manually submit this quote or automatically fall back to another contract.");
202
190
  }
203
191
  //# sourceMappingURL=settlementV14.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settlementV14.js","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settlementV14.js","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * AIFINP-224 — SDK Environment & Protocol Version resolver (Solana).
3
+ *
4
+ * The Solana sibling of deploymentResolver.ts (AIFINP-223). Same idea — one
5
+ * place that answers "which deployment does the SDK use?" given an environment,
6
+ * a network and a requested version — shaped for Solana, where a deployment is
7
+ * a base58 program id + IDL rather than an EVM address record.
8
+ *
9
+ * Two axes, mirroring the EVM resolver:
10
+ * environment — "dev" | "prod". Development supports devnet only; production
11
+ * uses mainnet-beta. Both read their v1.4 artifacts from solana-contract's
12
+ * dev branch (bundled in solanaV14Deployments.generated.ts).
13
+ * version — "v1.4" | "auto" (and "v1.2" is accepted at the type level for
14
+ * parity with EVM). An explicit "v1.4" never silently downgrades.
15
+ *
16
+ * FALLBACK DIFFERS FROM EVM — READ THIS. The EVM resolver falls back v1.4 -> v1.2.
17
+ * Solana has NO v1.2-equivalent splitter: the old program was closed and removed
18
+ * from mainnet, and the SDK never bundled it (it reads the Solana program id at
19
+ * runtime from the bridge's pay_solana challenge). So there is nothing to fall
20
+ * back to. Therefore:
21
+ * - "auto" resolves v1.4 where deployed, and otherwise throws
22
+ * NoSolanaDeploymentError (no invented downgrade).
23
+ * - an explicit "v1.2" always throws SolanaV12UnavailableError, because no
24
+ * Solana v1.2 deployment exists.
25
+ * This is an open product question for Paul: whether the EVM v1.2/v1.4 fallback
26
+ * model should map onto Solana at all. Until a real Solana fallback exists, this
27
+ * resolver refuses to pretend one does.
28
+ *
29
+ * Program ids live in solanaV14Deployments.generated.ts, never inline here —
30
+ * this module is selection logic only.
31
+ */
32
+ import { DeploymentResolverError, type SdkEnvironment } from "./deploymentResolver.js";
33
+ import { type SolanaV14Deployment } from "./generated/solanaV14Deployments.generated.js";
34
+ /** Selectable protocol versions on the request side. "v1.2" exists for parity
35
+ * with the EVM selector but has no Solana deployment behind it. */
36
+ export type SolanaProtocolVersion = "v1.2" | "v1.4";
37
+ /** What a caller may ask for. "auto" (the default) resolves v1.4, or throws if
38
+ * it is not deployed for the environment+network — Solana has no fallback. */
39
+ export type SolanaRequestedVersion = SolanaProtocolVersion | "auto";
40
+ export interface ResolveSolanaDeploymentOptions {
41
+ environment: SdkEnvironment;
42
+ /** Cluster name: "devnet", or "mainnet"/"mainnet-beta". Case-insensitive. */
43
+ network: string;
44
+ /** Defaults to "auto". */
45
+ version?: SolanaRequestedVersion;
46
+ }
47
+ /** The resolved Solana deployment. Only v1.4 is ever returned; the field is
48
+ * kept for symmetry with the EVM resolver's discriminated union. */
49
+ export interface ResolvedSolanaDeployment {
50
+ version: "v1.4";
51
+ environment: SdkEnvironment;
52
+ network: "devnet" | "mainnet";
53
+ programId: string;
54
+ deployment: SolanaV14Deployment;
55
+ }
56
+ /** The development environment was asked for a cluster other than devnet. */
57
+ export declare class UnsupportedSolanaDevNetworkError extends DeploymentResolverError {
58
+ readonly network: string;
59
+ constructor(network: string);
60
+ }
61
+ /** Explicit "v1.4" requested but not deployed for this environment+network.
62
+ * Thrown rather than downgrading. */
63
+ export declare class SolanaVersionUnavailableError extends DeploymentResolverError {
64
+ readonly requested: SolanaProtocolVersion;
65
+ constructor(requested: SolanaProtocolVersion, environment: SdkEnvironment, network: string);
66
+ }
67
+ /** Explicit "v1.2" requested — no Solana v1.2 splitter exists at all. Distinct
68
+ * from SolanaVersionUnavailableError so callers can tell "not on this network"
69
+ * from "does not exist on Solana". */
70
+ export declare class SolanaV12UnavailableError extends DeploymentResolverError {
71
+ constructor();
72
+ }
73
+ /** The program exists, but settlement is quarantined until verification and
74
+ * governance gates are complete. */
75
+ export declare class SolanaDeploymentDisabledError extends DeploymentResolverError {
76
+ readonly environment: SdkEnvironment;
77
+ readonly network: string;
78
+ readonly reason: string;
79
+ constructor(environment: SdkEnvironment, network: string, reason: string);
80
+ }
81
+ /** No Solana v1.4 deployment exists for this environment+network, and Solana
82
+ * has no fallback version. */
83
+ export declare class NoSolanaDeploymentError extends DeploymentResolverError {
84
+ constructor(environment: SdkEnvironment, network: string);
85
+ }
86
+ /** Is a Solana v1.4 deployment available for this environment+network? */
87
+ export declare function isSolanaV14Available(environment: SdkEnvironment, network: string): boolean;
88
+ /**
89
+ * Resolve the Solana deployment the SDK should use. The single source of truth
90
+ * for Solana environment + protocol-version selection.
91
+ *
92
+ * @throws UnsupportedSolanaDevNetworkError dev asked for a non-devnet cluster
93
+ * @throws SolanaV12UnavailableError explicit v1.2 (none exists on Solana)
94
+ * @throws SolanaVersionUnavailableError explicit v1.4 not deployed here
95
+ * @throws NoSolanaDeploymentError auto, but no v1.4 for this env+network
96
+ */
97
+ export declare function resolveSolanaDeployment(options: ResolveSolanaDeploymentOptions): ResolvedSolanaDeployment;
98
+ //# sourceMappingURL=solanaDeploymentResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaDeploymentResolver.d.ts","sourceRoot":"","sources":["../src/solanaDeploymentResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,+CAA+C,CAAC;AAEvD;oEACoE;AACpE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD;+EAC+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,cAAc,CAAC;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;qEACqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAID,6EAA6E;AAC7E,qBAAa,gCAAiC,SAAQ,uBAAuB;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBACb,OAAO,EAAE,MAAM;CAS5B;AAED;sCACsC;AACtC,qBAAa,6BAA8B,SAAQ,uBAAuB;IACxE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;gBAC9B,SAAS,EAAE,qBAAqB,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAS3F;AAED;;uCAEuC;AACvC,qBAAa,yBAA0B,SAAQ,uBAAuB;;CASrE;AAED;qCACqC;AACrC,qBAAa,6BAA8B,SAAQ,uBAAuB;IACxE,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAOzE;AAED;+BAC+B;AAC/B,qBAAa,uBAAwB,SAAQ,uBAAuB;gBACtD,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM;CAIzD;AAmBD,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1F;AAID;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,wBAAwB,CA+CzG"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * AIFINP-224 — SDK Environment & Protocol Version resolver (Solana).
3
+ *
4
+ * The Solana sibling of deploymentResolver.ts (AIFINP-223). Same idea — one
5
+ * place that answers "which deployment does the SDK use?" given an environment,
6
+ * a network and a requested version — shaped for Solana, where a deployment is
7
+ * a base58 program id + IDL rather than an EVM address record.
8
+ *
9
+ * Two axes, mirroring the EVM resolver:
10
+ * environment — "dev" | "prod". Development supports devnet only; production
11
+ * uses mainnet-beta. Both read their v1.4 artifacts from solana-contract's
12
+ * dev branch (bundled in solanaV14Deployments.generated.ts).
13
+ * version — "v1.4" | "auto" (and "v1.2" is accepted at the type level for
14
+ * parity with EVM). An explicit "v1.4" never silently downgrades.
15
+ *
16
+ * FALLBACK DIFFERS FROM EVM — READ THIS. The EVM resolver falls back v1.4 -> v1.2.
17
+ * Solana has NO v1.2-equivalent splitter: the old program was closed and removed
18
+ * from mainnet, and the SDK never bundled it (it reads the Solana program id at
19
+ * runtime from the bridge's pay_solana challenge). So there is nothing to fall
20
+ * back to. Therefore:
21
+ * - "auto" resolves v1.4 where deployed, and otherwise throws
22
+ * NoSolanaDeploymentError (no invented downgrade).
23
+ * - an explicit "v1.2" always throws SolanaV12UnavailableError, because no
24
+ * Solana v1.2 deployment exists.
25
+ * This is an open product question for Paul: whether the EVM v1.2/v1.4 fallback
26
+ * model should map onto Solana at all. Until a real Solana fallback exists, this
27
+ * resolver refuses to pretend one does.
28
+ *
29
+ * Program ids live in solanaV14Deployments.generated.ts, never inline here —
30
+ * this module is selection logic only.
31
+ */
32
+ import { DeploymentResolverError } from "./deploymentResolver.js";
33
+ import { SOLANA_DEV_NETWORKS, SOLANA_V14_DEPLOYMENTS, } from "./generated/solanaV14Deployments.generated.js";
34
+ // ── Errors (parallel to the EVM resolver, Solana-worded) ─────────────────────
35
+ /** The development environment was asked for a cluster other than devnet. */
36
+ export class UnsupportedSolanaDevNetworkError extends DeploymentResolverError {
37
+ network;
38
+ constructor(network) {
39
+ super(`Development environment supports ${SOLANA_DEV_NETWORKS.join(", ")} only; ` +
40
+ `"${network}" is not a supported Solana development cluster. Use ` +
41
+ `environment "prod" for mainnet.`);
42
+ this.name = "UnsupportedSolanaDevNetworkError";
43
+ this.network = network;
44
+ }
45
+ }
46
+ /** Explicit "v1.4" requested but not deployed for this environment+network.
47
+ * Thrown rather than downgrading. */
48
+ export class SolanaVersionUnavailableError extends DeploymentResolverError {
49
+ requested;
50
+ constructor(requested, environment, network) {
51
+ super(`Solana ${requested} is not deployed for ${environment}/${network}. It ` +
52
+ `was requested explicitly, so the SDK will not substitute another ` +
53
+ `version.`);
54
+ this.name = "SolanaVersionUnavailableError";
55
+ this.requested = requested;
56
+ }
57
+ }
58
+ /** Explicit "v1.2" requested — no Solana v1.2 splitter exists at all. Distinct
59
+ * from SolanaVersionUnavailableError so callers can tell "not on this network"
60
+ * from "does not exist on Solana". */
61
+ export class SolanaV12UnavailableError extends DeploymentResolverError {
62
+ constructor() {
63
+ super(`Solana has no v1.2 deployment. The previous Solana program was closed ` +
64
+ `and there is no v1.2-equivalent to fall back to; only v1.4 is available. ` +
65
+ `Use version "v1.4" or "auto".`);
66
+ this.name = "SolanaV12UnavailableError";
67
+ }
68
+ }
69
+ /** The program exists, but settlement is quarantined until verification and
70
+ * governance gates are complete. */
71
+ export class SolanaDeploymentDisabledError extends DeploymentResolverError {
72
+ environment;
73
+ network;
74
+ reason;
75
+ constructor(environment, network, reason) {
76
+ super(`Solana v1.4 settlement is disabled for ${environment}/${network}: ${reason}`);
77
+ this.name = "SolanaDeploymentDisabledError";
78
+ this.environment = environment;
79
+ this.network = network;
80
+ this.reason = reason;
81
+ }
82
+ }
83
+ /** No Solana v1.4 deployment exists for this environment+network, and Solana
84
+ * has no fallback version. */
85
+ export class NoSolanaDeploymentError extends DeploymentResolverError {
86
+ constructor(environment, network) {
87
+ super(`No Solana v1.4 deployment is known for ${environment}/${network}, and ` + `Solana has no fallback version.`);
88
+ this.name = "NoSolanaDeploymentError";
89
+ }
90
+ }
91
+ // ── Lookups ──────────────────────────────────────────────────────────────────
92
+ /** Normalise a cluster name: lower-cased, and "mainnet-beta" -> "mainnet". */
93
+ function normalizeNetwork(network) {
94
+ const n = network.trim().toLowerCase();
95
+ return n === "mainnet-beta" ? "mainnet" : n;
96
+ }
97
+ /** The v1.4 deployment for this environment+network, or undefined. A record is
98
+ * only valid for the environment it was deployed under: devnet is dev-only and
99
+ * must never resolve under "prod", and vice versa. */
100
+ function findSolanaV14(environment, network) {
101
+ const entry = SOLANA_V14_DEPLOYMENTS[network];
102
+ if (!entry)
103
+ return undefined;
104
+ return entry.environment === environment ? entry : undefined;
105
+ }
106
+ /** Is a Solana v1.4 deployment available for this environment+network? */
107
+ export function isSolanaV14Available(environment, network) {
108
+ return findSolanaV14(environment, normalizeNetwork(network))?.settlementEnabled === true;
109
+ }
110
+ // ── The resolver ─────────────────────────────────────────────────────────────
111
+ /**
112
+ * Resolve the Solana deployment the SDK should use. The single source of truth
113
+ * for Solana environment + protocol-version selection.
114
+ *
115
+ * @throws UnsupportedSolanaDevNetworkError dev asked for a non-devnet cluster
116
+ * @throws SolanaV12UnavailableError explicit v1.2 (none exists on Solana)
117
+ * @throws SolanaVersionUnavailableError explicit v1.4 not deployed here
118
+ * @throws NoSolanaDeploymentError auto, but no v1.4 for this env+network
119
+ */
120
+ export function resolveSolanaDeployment(options) {
121
+ const { environment } = options;
122
+ if (environment !== "dev" && environment !== "prod") {
123
+ throw new DeploymentResolverError(`Unknown environment "${String(environment)}"; use "dev" or "prod".`);
124
+ }
125
+ const network = normalizeNetwork(options.network);
126
+ const requested = options.version ?? "auto";
127
+ // Development is restricted to devnet, whatever version is asked for. Reject
128
+ // any other development cluster rather than silently resolving mainnet.
129
+ if (environment === "dev" && !SOLANA_DEV_NETWORKS.includes(network)) {
130
+ throw new UnsupportedSolanaDevNetworkError(options.network);
131
+ }
132
+ const v14 = findSolanaV14(environment, network);
133
+ const asV14 = (d) => ({
134
+ version: "v1.4",
135
+ environment,
136
+ network: d.network,
137
+ programId: d.programId,
138
+ deployment: d,
139
+ });
140
+ const enabledV14 = () => {
141
+ if (!v14)
142
+ throw new NoSolanaDeploymentError(environment, options.network);
143
+ if (!v14.settlementEnabled) {
144
+ throw new SolanaDeploymentDisabledError(environment, network, v14.disabledReason ?? "deployment has not passed the settlement gate");
145
+ }
146
+ return v14;
147
+ };
148
+ switch (requested) {
149
+ case "v1.4":
150
+ if (!v14)
151
+ throw new SolanaVersionUnavailableError("v1.4", environment, options.network);
152
+ return asV14(enabledV14());
153
+ case "v1.2":
154
+ // No Solana v1.2 deployment exists — there is nothing to return.
155
+ throw new SolanaV12UnavailableError();
156
+ case "auto":
157
+ return asV14(enabledV14());
158
+ default:
159
+ throw new DeploymentResolverError(`Unknown version "${String(requested)}"; use "v1.2", "v1.4" or "auto".`);
160
+ }
161
+ }
162
+ //# sourceMappingURL=solanaDeploymentResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaDeploymentResolver.js","sourceRoot":"","sources":["../src/solanaDeploymentResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { SdkEnvironment } from "./deploymentResolver.js";
2
+ export type SolanaNetwork = "devnet" | "mainnet";
3
+ export interface SolanaV14Deployment {
4
+ network: SolanaNetwork;
5
+ environment: SdkEnvironment;
6
+ splitterVersion: "1.4";
7
+ status: "enabled" | "disabled" | "invalid" | "retired";
8
+ settlementEnabled: boolean;
9
+ disabledReason?: string;
10
+ programId: string;
11
+ idl: {
12
+ name: string;
13
+ version: string;
14
+ artifact: string;
15
+ };
16
+ }
17
+ export declare const SOLANA_V14_DEPLOYMENTS_SOURCE: {
18
+ readonly repo: "AiFinPay/solana-contract";
19
+ readonly commit: "e5df8f5436cf646ab495381eee04e0d1a10b4e2f";
20
+ readonly path: "deployments/splitter_v14/";
21
+ readonly branch: "dev";
22
+ };
23
+ export declare const SOLANA_V14_DEPLOYMENTS: Record<string, SolanaV14Deployment>;
24
+ export declare const SOLANA_DEV_NETWORKS: readonly ["devnet"];
25
+ //# sourceMappingURL=solanaV14Deployments.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaV14Deployments.generated.d.ts","sourceRoot":"","sources":["../src/solanaV14Deployments.generated.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,cAAc,CAAC;IAC5B,eAAe,EAAE,KAAK,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACvD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D;AAED,eAAO,MAAM,6BAA6B;;;;;CAKhC,CAAC;AAEX,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA6BtE,CAAC;AAEF,eAAO,MAAM,mBAAmB,qBAAsB,CAAC"}