@aifinpay/agent 1.8.2 → 2.0.0-rc.12

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 (97) hide show
  1. package/PAYMENT_RECEIPTS.md +110 -0
  2. package/README.md +93 -35
  3. package/dist/agent.d.ts +6 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +50 -12
  6. package/dist/agent.js.map +1 -1
  7. package/dist/agentHistory.d.ts +15 -0
  8. package/dist/agentHistory.d.ts.map +1 -0
  9. package/dist/agentHistory.js +47 -0
  10. package/dist/agentHistory.js.map +1 -0
  11. package/dist/agentPassport.d.ts +95 -0
  12. package/dist/agentPassport.d.ts.map +1 -0
  13. package/dist/agentPassport.js +177 -0
  14. package/dist/agentPassport.js.map +1 -0
  15. package/dist/aifp1.d.ts +135 -8
  16. package/dist/aifp1.d.ts.map +1 -1
  17. package/dist/aifp1.js +317 -50
  18. package/dist/aifp1.js.map +1 -1
  19. package/dist/apiUrl.d.ts +3 -0
  20. package/dist/apiUrl.d.ts.map +1 -0
  21. package/dist/apiUrl.js +8 -0
  22. package/dist/apiUrl.js.map +1 -0
  23. package/dist/chains.d.ts +4 -0
  24. package/dist/chains.d.ts.map +1 -0
  25. package/dist/chains.js +24 -0
  26. package/dist/chains.js.map +1 -0
  27. package/dist/deploymentResolver.d.ts +87 -0
  28. package/dist/deploymentResolver.d.ts.map +1 -0
  29. package/dist/deploymentResolver.js +145 -0
  30. package/dist/deploymentResolver.js.map +1 -0
  31. package/dist/facilitators/aifinpay.d.ts +4 -5
  32. package/dist/facilitators/aifinpay.d.ts.map +1 -1
  33. package/dist/facilitators/aifinpay.js +49 -19
  34. package/dist/facilitators/aifinpay.js.map +1 -1
  35. package/dist/facilitators/base.d.ts +12 -1
  36. package/dist/facilitators/base.d.ts.map +1 -1
  37. package/dist/facilitators/detect.d.ts +3 -3
  38. package/dist/facilitators/detect.d.ts.map +1 -1
  39. package/dist/facilitators/detect.js +3 -22
  40. package/dist/facilitators/detect.js.map +1 -1
  41. package/dist/facilitators/standard-x402.d.ts +4 -8
  42. package/dist/facilitators/standard-x402.d.ts.map +1 -1
  43. package/dist/facilitators/standard-x402.js +218 -92
  44. package/dist/facilitators/standard-x402.js.map +1 -1
  45. package/dist/index.d.ts +26 -18
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +23 -31
  48. package/dist/index.js.map +1 -1
  49. package/dist/localIdentity.d.ts +17 -0
  50. package/dist/localIdentity.d.ts.map +1 -0
  51. package/dist/localIdentity.js +81 -0
  52. package/dist/localIdentity.js.map +1 -0
  53. package/dist/settlement.d.ts +198 -0
  54. package/dist/settlement.d.ts.map +1 -0
  55. package/dist/settlement.js +429 -0
  56. package/dist/settlement.js.map +1 -0
  57. package/dist/settlementHttp.d.ts +10 -0
  58. package/dist/settlementHttp.d.ts.map +1 -0
  59. package/dist/settlementHttp.js +70 -0
  60. package/dist/settlementHttp.js.map +1 -0
  61. package/dist/settlementV14.d.ts +136 -0
  62. package/dist/settlementV14.d.ts.map +1 -0
  63. package/dist/settlementV14.js +170 -0
  64. package/dist/settlementV14.js.map +1 -0
  65. package/dist/solanaDeploymentResolver.d.ts +90 -0
  66. package/dist/solanaDeploymentResolver.d.ts.map +1 -0
  67. package/dist/solanaDeploymentResolver.js +143 -0
  68. package/dist/solanaDeploymentResolver.js.map +1 -0
  69. package/dist/solanaV14Deployments.generated.d.ts +35 -0
  70. package/dist/solanaV14Deployments.generated.d.ts.map +1 -0
  71. package/dist/solanaV14Deployments.generated.js +61 -0
  72. package/dist/solanaV14Deployments.generated.js.map +1 -0
  73. package/dist/splitterRoutes.d.ts +120 -0
  74. package/dist/splitterRoutes.d.ts.map +1 -0
  75. package/dist/splitterRoutes.generated.d.ts +22 -0
  76. package/dist/splitterRoutes.generated.d.ts.map +1 -0
  77. package/dist/splitterRoutes.generated.js +459 -0
  78. package/dist/splitterRoutes.generated.js.map +1 -0
  79. package/dist/splitterRoutes.js +73 -0
  80. package/dist/splitterRoutes.js.map +1 -0
  81. package/dist/unifiedAgent.d.ts +96 -18
  82. package/dist/unifiedAgent.d.ts.map +1 -1
  83. package/dist/unifiedAgent.js +100 -325
  84. package/dist/unifiedAgent.js.map +1 -1
  85. package/dist/v14Deployments.generated.d.ts +53 -0
  86. package/dist/v14Deployments.generated.d.ts.map +1 -0
  87. package/dist/v14Deployments.generated.js +89 -0
  88. package/dist/v14Deployments.generated.js.map +1 -0
  89. package/dist/wallet.d.ts +28 -0
  90. package/dist/wallet.d.ts.map +1 -0
  91. package/dist/wallet.js +97 -0
  92. package/dist/wallet.js.map +1 -0
  93. package/package.json +42 -9
  94. package/dist/cli.d.ts +0 -3
  95. package/dist/cli.d.ts.map +0 -1
  96. package/dist/cli.js +0 -127
  97. package/dist/cli.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4EAA4E;AAC5E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBtF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,uDAAuD;AACvD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAUpB,OAAO,EACL,UAAU,EACV,eAAe,EACf,aAAa,EACb,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,oEAAoE;AACpE,uEAAuE;AACvE,0EAA0E;AAC1E,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAC;AAQzB,2EAA2E;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC,+EAA+E;AAC/E,6EAA6E;AAC7E,8BAA8B;AAC9B,OAAO,EAEL,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,4EAA4E;AAC5E,OAAO,EACL,kBAAkB,EAClB,gCAAgC,EAChC,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,EACnB,iCAAiC,EACjC,iCAAiC,EACjC,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAa5B,4EAA4E;AAC5E,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kCAAkC,EAClC,yBAAyB,EACzB,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,cAAc,oBAAoB,CAAC;AAenC,6EAA6E;AAC7E,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEhD,4EAA4E;AAC5E,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AAOvC,4EAA4E;AAC5E,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gCAAgC,EAChC,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAgBtF,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,4EAA4E;AAC5E,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAC;AAapB,OAAO,EACL,UAAU,EACV,eAAe,EACf,aAAa,EACb,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,6EAA6E;AAC7E,OAAO,EACL,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAC;AAQzB,4EAA4E;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EACL,aAAa,EACb,8BAA8B,EAC9B,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAEL,iBAAiB,EACjB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,17 @@
1
+ type LocalWalletIdentity = {
2
+ source: "SEED_HASH" | "agents.json";
3
+ seedHash: string;
4
+ secretB58?: never;
5
+ } | {
6
+ source: "AIFINPAY_AGENT_SECRET" | "legacy-keystore";
7
+ secretB58: string;
8
+ seedHash?: never;
9
+ };
10
+ /**
11
+ * Internal load-only adapter for the same identity files used by MCP.
12
+ * Keep source precedence and encryption format aligned with mcp/src/identity.ts.
13
+ * No file is created, changed or logged; returned key material stays local.
14
+ */
15
+ export declare function loadLocalWalletIdentity(): LocalWalletIdentity;
16
+ export {};
17
+ //# sourceMappingURL=localIdentity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localIdentity.d.ts","sourceRoot":"","sources":["../src/localIdentity.ts"],"names":[],"mappings":"AAMA,KAAK,mBAAmB,GACpB;IAAE,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5E;IAAE,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAqBjG;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,mBAAmB,CAkD7D"}
@@ -0,0 +1,81 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join, resolve } from "node:path";
4
+ import { createDecipheriv, scryptSync } from "node:crypto";
5
+ import { AiFinPayError } from "./errors.js";
6
+ function seed(value) {
7
+ if (typeof value !== "string" || !/^(0x)?[0-9a-fA-F]{64}$/.test(value)) {
8
+ throw new AiFinPayError("SEED_HASH must contain a 32-byte hex seed (64 hex characters); no mnemonic or double hashing");
9
+ }
10
+ return value.replace(/^0x/, "");
11
+ }
12
+ function object(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
15
+ function readJson(path) {
16
+ try {
17
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
18
+ if (object(parsed))
19
+ return parsed;
20
+ }
21
+ catch { /* File contents and parse errors may contain private material. */ }
22
+ throw new AiFinPayError(`Cannot read wallet JSON at ${path}; refusing to generate a replacement wallet`);
23
+ }
24
+ /**
25
+ * Internal load-only adapter for the same identity files used by MCP.
26
+ * Keep source precedence and encryption format aligned with mcp/src/identity.ts.
27
+ * No file is created, changed or logged; returned key material stays local.
28
+ */
29
+ export function loadLocalWalletIdentity() {
30
+ const env = process.env;
31
+ if (env.SEED_HASH !== undefined)
32
+ return { source: "SEED_HASH", seedHash: seed(env.SEED_HASH) };
33
+ const projectPath = resolve(env.AIFINPAY_AGENTS_FILE || "./aifinpay/agents.json");
34
+ if (existsSync(projectPath)) {
35
+ const document = readJson(projectPath);
36
+ const agents = document.agents;
37
+ if (!Array.isArray(agents) || agents.length === 0) {
38
+ throw new AiFinPayError("agents.json requires a non-empty agents array");
39
+ }
40
+ const matches = env.AIFINPAY_AGENT_ID
41
+ ? agents.filter((agent) => object(agent) && agent.id === env.AIFINPAY_AGENT_ID)
42
+ : agents;
43
+ if (matches.length !== 1) {
44
+ throw new AiFinPayError("Select exactly one agents.json record with AIFINPAY_AGENT_ID; refusing an ambiguous wallet");
45
+ }
46
+ return { source: "agents.json", seedHash: seed(object(matches[0]) ? matches[0].seed_hash : undefined) };
47
+ }
48
+ if (env.AIFINPAY_AGENTS_FILE)
49
+ throw new AiFinPayError("Configured AIFINPAY_AGENTS_FILE does not exist");
50
+ if (env.AIFINPAY_AGENT_SECRET) {
51
+ return { source: "AIFINPAY_AGENT_SECRET", secretB58: env.AIFINPAY_AGENT_SECRET };
52
+ }
53
+ const legacyPath = join(env.AIFINPAY_HOME || join(homedir(), ".aifinpay"), "agent.json");
54
+ if (!existsSync(legacyPath)) {
55
+ throw new AiFinPayError("No persistent wallet configured; configure SEED_HASH, aifinpay/agents.json, AIFINPAY_AGENT_SECRET or an existing MCP keystore before loading an agent");
56
+ }
57
+ const legacy = readJson(legacyPath);
58
+ if (legacy.enc) {
59
+ if (legacy.enc !== "scrypt-aes-256-gcm" || !env.AIFINPAY_WALLET_PASSPHRASE) {
60
+ throw new AiFinPayError("Encrypted keystore requires AIFINPAY_WALLET_PASSPHRASE and the supported encryption format");
61
+ }
62
+ try {
63
+ if (![legacy.salt, legacy.iv, legacy.tag, legacy.ct].every((value) => typeof value === "string")) {
64
+ throw new Error("Invalid encrypted fields");
65
+ }
66
+ const key = scryptSync(env.AIFINPAY_WALLET_PASSPHRASE, Buffer.from(legacy.salt, "base64"), 32, { N: 1 << 15, r: 8, p: 1, maxmem: 64 * 1024 * 1024 });
67
+ const decipher = createDecipheriv("aes-256-gcm", key, Buffer.from(legacy.iv, "base64"));
68
+ decipher.setAuthTag(Buffer.from(legacy.tag, "base64"));
69
+ return { source: "legacy-keystore", secretB58: Buffer.concat([
70
+ decipher.update(Buffer.from(legacy.ct, "base64")), decipher.final(),
71
+ ]).toString("utf8") };
72
+ }
73
+ catch {
74
+ throw new AiFinPayError("Cannot decrypt keystore; refusing to generate a replacement wallet");
75
+ }
76
+ }
77
+ if (typeof legacy.secretB58 !== "string" || !legacy.secretB58)
78
+ throw new AiFinPayError("Invalid legacy keystore");
79
+ return { source: "legacy-keystore", secretB58: legacy.secretB58 };
80
+ }
81
+ //# sourceMappingURL=localIdentity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localIdentity.js","sourceRoot":"","sources":["../src/localIdentity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ import { type Address, type Hex, type PublicClient, type WalletClient } from "viem";
2
+ export type SettlementRouteClass = "AIFP-1" | "AIFP-2";
3
+ export type SettlementEvmNetwork = "polygon" | "avalanche" | "arbitrum" | "bnb" | "base" | "unichain" | "optimism" | "botchain" | "xrplevm" | "amoy";
4
+ export interface SettlementRoute {
5
+ route_class: SettlementRouteClass;
6
+ profile: {
7
+ route_class: SettlementRouteClass;
8
+ settlement_semantics: "gross-inclusive";
9
+ treasury_bps: number;
10
+ creator_bps: number;
11
+ fee_on_top: false;
12
+ required_splitter_version: "1.3";
13
+ };
14
+ network: SettlementEvmNetwork;
15
+ chain_id: number;
16
+ name: string;
17
+ native_asset: string;
18
+ stable_assets: Record<string, {
19
+ address: Address;
20
+ decimals: number;
21
+ issuer: string;
22
+ }>;
23
+ explorer: string;
24
+ live: boolean;
25
+ testnet?: boolean;
26
+ splitter?: Address;
27
+ splitter_version?: "1.3";
28
+ runtime_code_hash?: Hex;
29
+ disabled_reason?: string;
30
+ }
31
+ /**
32
+ * Independent release trust anchor. This value must come from a reviewed SDK
33
+ * release/config artifact, not from the same backend response as the invoice.
34
+ */
35
+ export interface TrustedSettlementRoutePin {
36
+ route_class: SettlementRouteClass;
37
+ chain: SettlementEvmNetwork;
38
+ chain_id: number;
39
+ splitter_version: "1.3";
40
+ splitter: Address;
41
+ runtime_code_hash: Hex;
42
+ /** Must be explicitly true for Amoy signing; omitted means mainnet only. */
43
+ testnet?: boolean;
44
+ /** Independently reviewed asset identities; required for stable settlement. */
45
+ stable_assets?: Readonly<Record<string, {
46
+ address: Address;
47
+ decimals: number;
48
+ }>>;
49
+ }
50
+ export type TrustedSettlementRouteRegistry = Partial<Record<SettlementRouteClass, Partial<Record<SettlementEvmNetwork, TrustedSettlementRoutePin>>>>;
51
+ export interface SettlementInvoiceInput {
52
+ route_class: SettlementRouteClass;
53
+ chain: SettlementEvmNetwork;
54
+ asset: string;
55
+ gross_amount: string | bigint;
56
+ merchant_wallet?: Address;
57
+ provider_wallet?: Address;
58
+ order_id: string;
59
+ valid_until?: number;
60
+ }
61
+ interface SettlementBreakdown {
62
+ gross_amount: string;
63
+ merchant_amount: string;
64
+ protocol_fee_amount: string;
65
+ creator_amount: string;
66
+ protocol_fee_bps: number;
67
+ creator_bps: number;
68
+ }
69
+ interface SettlementInvoiceBase {
70
+ route_class: SettlementRouteClass;
71
+ chain: SettlementEvmNetwork;
72
+ chain_id: number;
73
+ splitter_version: "1.3";
74
+ splitter: Address;
75
+ runtime_code_hash: Hex;
76
+ settlement_semantics: "gross-inclusive";
77
+ fee_on_top: false;
78
+ asset: string;
79
+ payment_id: Hex;
80
+ order_id: string;
81
+ valid_until: number;
82
+ merchant_wallet: Address;
83
+ breakdown: SettlementBreakdown;
84
+ authorization: string;
85
+ }
86
+ export interface NativeSettlementInvoice extends SettlementInvoiceBase {
87
+ transaction: {
88
+ kind: "evm_contract_call";
89
+ function: "payNative((bytes32,address,uint256,address,uint256,string))";
90
+ args: {
91
+ paymentId: Hex;
92
+ merchant: Address;
93
+ grossAmount: string;
94
+ ipCreator: Address;
95
+ validUntil: number;
96
+ orderId: string;
97
+ };
98
+ value: string;
99
+ };
100
+ token?: never;
101
+ }
102
+ export interface StableSettlementInvoice extends SettlementInvoiceBase {
103
+ token: {
104
+ address: Address;
105
+ decimals: number;
106
+ issuer: string;
107
+ };
108
+ transaction: {
109
+ kind: "evm_erc20_then_contract_call";
110
+ approve: {
111
+ token: Address;
112
+ function: "approve(address,uint256)";
113
+ spender: Address;
114
+ amount: string;
115
+ };
116
+ settle: {
117
+ function: "payStable((bytes32,address,uint256,address,address,uint256,string))";
118
+ args: {
119
+ paymentId: Hex;
120
+ token: Address;
121
+ grossAmount: string;
122
+ merchant: Address;
123
+ ipCreator: Address;
124
+ validUntil: number;
125
+ orderId: string;
126
+ };
127
+ value: "0";
128
+ };
129
+ };
130
+ }
131
+ export type SettlementInvoice = NativeSettlementInvoice | StableSettlementInvoice;
132
+ export interface SettlementExecution {
133
+ route_class: SettlementRouteClass;
134
+ chain: SettlementEvmNetwork;
135
+ payment_id: Hex;
136
+ approval_txs: Hex[];
137
+ settlement_tx: Hex;
138
+ block_number: bigint;
139
+ }
140
+ export declare class SettlementProtocolError extends Error {
141
+ readonly code: string;
142
+ constructor(message: string, code?: string);
143
+ }
144
+ /** Broadcast succeeded but confirmation is unknown. Keep this hash and check
145
+ * it before retrying; a timeout is not evidence that no money moved. */
146
+ export declare class SettlementConfirmationPendingError extends SettlementProtocolError {
147
+ readonly txHash: Hex;
148
+ readonly stage: "approval" | "settlement";
149
+ constructor(txHash: Hex, stage: "approval" | "settlement");
150
+ }
151
+ /** Strictly validate an invoice before any wallet signs. */
152
+ export declare function validateSettlementInvoice(invoice: SettlementInvoice): void;
153
+ /** Verify that a backend invoice matches an independently trusted release pin. */
154
+ export declare function validateTrustedSettlementRoutePin(invoice: SettlementInvoice, pin: TrustedSettlementRoutePin): void;
155
+ export interface SettlementClientOptions {
156
+ baseUrl?: string;
157
+ /** Supply the caller's guarded transport, e.g. MCP's safe fetch. */
158
+ fetchImpl?: typeof fetch;
159
+ /** Covers the response body as well as the HTTP request. Default 15 seconds. */
160
+ timeoutMs?: number;
161
+ }
162
+ export declare class SettlementClient {
163
+ readonly baseUrl: string;
164
+ private readonly fetchImpl;
165
+ private readonly timeoutMs;
166
+ constructor(options?: string | SettlementClientOptions);
167
+ private request;
168
+ routes(routeClass?: SettlementRouteClass): Promise<SettlementRoute[]>;
169
+ invoice(input: SettlementInvoiceInput): Promise<SettlementInvoice>;
170
+ }
171
+ /** Verify trusted deployment evidence against chain immediately before signing. */
172
+ export declare function verifySettlementRouteOnChain(invoice: SettlementInvoice, publicClient: PublicClient, trustedPin: TrustedSettlementRoutePin): Promise<void>;
173
+ /** Execute a v1.3 invoice only after matching an independent trusted route pin. */
174
+ export declare function executeSettlementInvoice(invoice: SettlementInvoice, walletClient: WalletClient, publicClient: PublicClient, trustedPin: TrustedSettlementRoutePin): Promise<SettlementExecution>;
175
+ export declare const SETTLEMENT_CHAIN_IDS: Readonly<{
176
+ polygon: number;
177
+ base: number;
178
+ arbitrum: number;
179
+ optimism: number;
180
+ avalanche: number;
181
+ unichain: number;
182
+ botchain: number;
183
+ xrplevm: number;
184
+ bnb: number;
185
+ amoy: number;
186
+ }>;
187
+ export declare const SETTLEMENT_EXPECTED_BPS: Readonly<{
188
+ "AIFP-1": {
189
+ treasury: number;
190
+ creator: number;
191
+ };
192
+ "AIFP-2": {
193
+ treasury: number;
194
+ creator: number;
195
+ };
196
+ }>;
197
+ export {};
198
+ //# sourceMappingURL=settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"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"}