@dexterai/x402 6.0.0-rc.4 → 6.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 (48) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +5 -1
  3. package/REFERENCE.md +33 -3
  4. package/dist/adapters/index.d.cts +3 -2
  5. package/dist/adapters/index.d.ts +3 -2
  6. package/dist/batch-settlement/index.cjs +1 -1
  7. package/dist/batch-settlement/index.d.cts +4 -3
  8. package/dist/batch-settlement/index.d.ts +4 -3
  9. package/dist/batch-settlement/index.js +1 -1
  10. package/dist/batch-settlement/seller/index.cjs +1 -1
  11. package/dist/batch-settlement/seller/index.d.cts +5 -4
  12. package/dist/batch-settlement/seller/index.d.ts +5 -4
  13. package/dist/batch-settlement/seller/index.js +1 -1
  14. package/dist/client/index.d.cts +5 -3
  15. package/dist/client/index.d.ts +5 -3
  16. package/dist/mcp/index.cjs +1 -0
  17. package/dist/mcp/index.d.cts +183 -0
  18. package/dist/mcp/index.d.ts +183 -0
  19. package/dist/mcp/index.js +1 -0
  20. package/dist/react/index.d.cts +2 -2
  21. package/dist/react/index.d.ts +2 -2
  22. package/dist/server/index.cjs +1 -1
  23. package/dist/server/index.d.cts +5 -4
  24. package/dist/server/index.d.ts +5 -4
  25. package/dist/server/index.js +1 -1
  26. package/dist/tab/adapters/solana/index.cjs +1 -1
  27. package/dist/tab/adapters/solana/index.d.cts +3 -2
  28. package/dist/tab/adapters/solana/index.d.ts +3 -2
  29. package/dist/tab/adapters/solana/index.js +1 -1
  30. package/dist/tab/index.cjs +4 -4
  31. package/dist/tab/index.d.cts +3 -2
  32. package/dist/tab/index.d.ts +3 -2
  33. package/dist/tab/index.js +1 -1
  34. package/dist/tab/seller/index.cjs +7 -7
  35. package/dist/tab/seller/index.js +1 -1
  36. package/dist/{types-CHQzNDR6.d.ts → types-BvK5UjA9.d.ts} +1 -1
  37. package/dist/{types-BvQpNtFw.d.cts → types-C08JT9MG.d.ts} +2 -236
  38. package/dist/{types-CkcNYx1Q.d.ts → types-C6IbRTpi.d.ts} +1 -1
  39. package/dist/{types-BvQpNtFw.d.ts → types-CRs5sEcb.d.cts} +2 -236
  40. package/dist/{types-CBQKKFxJ.d.cts → types-Cyyl3Cw_.d.cts} +1 -1
  41. package/dist/{types-DwVhPqOZ.d.ts → types-DGVtb7cl.d.cts} +4 -2
  42. package/dist/{types-BbvuPNXl.d.cts → types-DjDjuUc6.d.ts} +4 -2
  43. package/dist/types-DolSK-3d.d.cts +237 -0
  44. package/dist/types-DolSK-3d.d.ts +237 -0
  45. package/dist/{types-JpkrtFbZ.d.cts → types-RauRuMb7.d.cts} +1 -1
  46. package/docs/mcp.md +98 -0
  47. package/examples/mcp-paid-tool.ts +39 -0
  48. package/package.json +16 -10
@@ -0,0 +1,183 @@
1
+ import { S as SettleResponse, R as ResourceInfo, V as VerifyResponse } from '../types-DolSK-3d.cjs';
2
+
3
+ /** The tools/call params object. Supply your MCP client's transport separately. */
4
+ interface McpToolCall {
5
+ name: string;
6
+ arguments?: Record<string, unknown>;
7
+ _meta?: Record<string, unknown>;
8
+ [key: string]: unknown;
9
+ }
10
+ /** Complete MCP result, including resources, structured data and extensions. */
11
+ interface McpToolResult {
12
+ content: Array<{
13
+ type: string;
14
+ [key: string]: unknown;
15
+ }>;
16
+ structuredContent?: Record<string, unknown>;
17
+ isError?: boolean;
18
+ _meta?: Record<string, unknown>;
19
+ [key: string]: unknown;
20
+ }
21
+ interface McpPaymentAccept {
22
+ scheme: string;
23
+ network: string;
24
+ amount: string;
25
+ asset: string;
26
+ payTo: string;
27
+ maxTimeoutSeconds: number;
28
+ extra?: Record<string, unknown>;
29
+ }
30
+ interface McpPaymentRequired {
31
+ x402Version: 2;
32
+ resource: ResourceInfo;
33
+ accepts: McpPaymentAccept[];
34
+ error?: string;
35
+ extensions?: Record<string, unknown>;
36
+ }
37
+ interface McpPaymentPayload {
38
+ x402Version: 2;
39
+ resource?: ResourceInfo;
40
+ accepted: McpPaymentAccept;
41
+ payload: Record<string, unknown>;
42
+ extensions?: Record<string, unknown>;
43
+ }
44
+ type McpSettlementOutcome = {
45
+ status: 'settled';
46
+ receipt: SettleResponse & {
47
+ success: true;
48
+ };
49
+ } | {
50
+ status: 'failed';
51
+ receipt: SettleResponse & {
52
+ success: false;
53
+ };
54
+ } | {
55
+ status: 'unknown';
56
+ reason: string;
57
+ receipt?: SettleResponse;
58
+ };
59
+ /** Implement additional schemes with their own stable, semantic payment ID. */
60
+ interface McpPaymentProcessor {
61
+ supports(requirements: McpPaymentAccept): boolean;
62
+ /** Same on-chain authorization must produce the same ID, regardless of metadata. */
63
+ identify(payment: McpPaymentPayload): string;
64
+ verify(payment: McpPaymentPayload, requirements: McpPaymentAccept): Promise<VerifyResponse>;
65
+ /** Make one attempt. Reconcile uncertainty outside this adapter. */
66
+ settle(payment: McpPaymentPayload, requirements: McpPaymentAccept): Promise<McpSettlementOutcome>;
67
+ }
68
+ type McpPaymentPhase = 'admitted' | 'executing' | 'executed' | 'settling' | 'complete' | 'execution_failed' | 'execution_unknown' | 'settlement_failed' | 'settlement_unknown';
69
+ /** Persist privately: this record contains payment proof and service output. */
70
+ interface McpPaymentRecord {
71
+ paymentId: string;
72
+ revision: number;
73
+ phase: McpPaymentPhase;
74
+ binding: string;
75
+ proofFingerprint: string;
76
+ accessScope: string;
77
+ serviceScope: string;
78
+ resource: ResourceInfo;
79
+ request: McpToolCall;
80
+ payment: McpPaymentPayload;
81
+ payer?: string;
82
+ result?: McpToolResult;
83
+ receipt?: SettleResponse;
84
+ }
85
+ /**
86
+ * Application-owned durable storage. All tools accepting the same payments
87
+ * must share it. claim must insert once atomically across workers; CAS must
88
+ * durably commit before resolving. Retain records through payment validity
89
+ * and your result-retrieval period. Never expire in-flight records on a timer.
90
+ */
91
+ interface McpPaymentStore {
92
+ get(paymentId: string): Promise<McpPaymentRecord | undefined>;
93
+ claim(record: McpPaymentRecord): Promise<{
94
+ claimed: true;
95
+ } | {
96
+ claimed: false;
97
+ record: McpPaymentRecord;
98
+ }>;
99
+ compareAndSwap(paymentId: string, expectedRevision: number, next: McpPaymentRecord): Promise<boolean>;
100
+ }
101
+ interface PaidMcpToolOptions<Context> {
102
+ name: string;
103
+ /** Stable seller/service identity; never use a transient MCP session ID. */
104
+ serviceScope: string;
105
+ requirements: McpPaymentRequired | ((request: McpToolCall, context: Context) => Promise<McpPaymentRequired>);
106
+ payments: McpPaymentProcessor;
107
+ store: McpPaymentStore;
108
+ /** Authenticate every request, including cached result retrieval. */
109
+ authorize(request: McpToolCall, context: Context): Promise<string>;
110
+ /** Synchronous completion contract. Application owns side-effect recovery. */
111
+ execute(request: McpToolCall, context: {
112
+ application: Context;
113
+ paymentId: string;
114
+ payer?: string;
115
+ requirements: McpPaymentAccept;
116
+ }): Promise<McpToolResult>;
117
+ }
118
+ type McpToolTransport = (request: McpToolCall) => Promise<McpToolResult>;
119
+ interface McpPaidCallOutcome {
120
+ /** Retained in full, even when receipt parsing fails. */
121
+ result?: McpToolResult;
122
+ /** Malformed transport response retained for diagnosis after paid dispatch. */
123
+ rawResult?: unknown;
124
+ paymentStatus: 'seller_reported_settled' | 'seller_reported_failed' | 'unknown';
125
+ deliveryStatus: 'result_received' | 'tool_error' | 'unknown';
126
+ receipt?: SettleResponse;
127
+ /** Transport exception or invalid/missing receipt. No automatic retry occurs. */
128
+ error?: unknown;
129
+ }
130
+
131
+ /**
132
+ * Gate a completed tool result with the published x402 MCP payment exchange.
133
+ * Each verified payment is claimed in durable storage before execution. A
134
+ * restart or uncertain effect requires application reconciliation; this
135
+ * wrapper never re-executes an incomplete admitted operation automatically.
136
+ */
137
+ declare function createPaidMcpTool<Context>(options: PaidMcpToolOptions<Context>): (input: McpToolCall, application: Context) => Promise<McpToolResult>;
138
+
139
+ /**
140
+ * Reuse the SDK facilitator client with a single request per operation.
141
+ * Network allow-list is explicit. A negative facilitator response remains
142
+ * uncertain because that client also maps transport errors to success:false.
143
+ */
144
+ declare function createMcpFacilitatorProcessor(options: {
145
+ facilitatorUrl?: string;
146
+ networks: string[];
147
+ timeoutMs?: number;
148
+ }): McpPaymentProcessor;
149
+
150
+ /** One unpaid call. A tool may execute during this call; check its semantics. */
151
+ declare function probeMcpTool(transport: McpToolTransport, request: McpToolCall): Promise<{
152
+ result: McpToolResult;
153
+ paymentRequired: McpPaymentRequired | undefined;
154
+ }>;
155
+ /**
156
+ * Send one already-authorized payment. The caller owns selection, signing,
157
+ * budget enforcement and durable recovery. Exceptions after dispatch are
158
+ * uncertain outcomes, and the same helper never makes another paid request.
159
+ */
160
+ declare function callMcpToolWithPayment(options: {
161
+ transport: McpToolTransport;
162
+ request: McpToolCall;
163
+ paymentRequired: McpPaymentRequired;
164
+ payment: McpPaymentPayload;
165
+ /** Durably record the exact server identity, request and proof before resolving. */
166
+ beforeDispatch(request: McpToolCall): Promise<void>;
167
+ }): Promise<McpPaidCallOutcome>;
168
+
169
+ declare const MCP_PAYMENT_META = "x402/payment";
170
+ declare const MCP_PAYMENT_RESPONSE_META = "x402/payment-response";
171
+ declare const MCP_PAYMENT_STATE_META = "dexter/payment-state";
172
+ /** Attach an object-valued payment while retaining other request metadata. */
173
+ declare function attachMcpPayment(request: McpToolCall, payment: McpPaymentPayload): McpToolCall;
174
+ declare function isMcpPaymentAccept(value: unknown): value is McpPaymentAccept;
175
+ declare function isMcpPaymentRequired(value: unknown): value is McpPaymentRequired;
176
+ declare function isMcpPaymentPayload(value: unknown): value is McpPaymentPayload;
177
+ /** Published x402 MCP challenge: structured data and identical JSON text. */
178
+ declare function createMcpPaymentRequiredResult(required: McpPaymentRequired, error?: string): McpToolResult;
179
+ /** Prefer structuredContent; support the specification's first-text fallback. */
180
+ declare function getMcpPaymentRequired(result: McpToolResult): McpPaymentRequired | undefined;
181
+ declare function getMcpPaymentReceipt(result: McpToolResult): SettleResponse | undefined;
182
+
183
+ export { MCP_PAYMENT_META, MCP_PAYMENT_RESPONSE_META, MCP_PAYMENT_STATE_META, type McpPaidCallOutcome, type McpPaymentAccept, type McpPaymentPayload, type McpPaymentPhase, type McpPaymentProcessor, type McpPaymentRecord, type McpPaymentRequired, type McpPaymentStore, type McpSettlementOutcome, type McpToolCall, type McpToolResult, type McpToolTransport, type PaidMcpToolOptions, attachMcpPayment, callMcpToolWithPayment, createMcpFacilitatorProcessor, createMcpPaymentRequiredResult, createPaidMcpTool, getMcpPaymentReceipt, getMcpPaymentRequired, isMcpPaymentAccept, isMcpPaymentPayload, isMcpPaymentRequired, probeMcpTool };
@@ -0,0 +1,183 @@
1
+ import { S as SettleResponse, R as ResourceInfo, V as VerifyResponse } from '../types-DolSK-3d.js';
2
+
3
+ /** The tools/call params object. Supply your MCP client's transport separately. */
4
+ interface McpToolCall {
5
+ name: string;
6
+ arguments?: Record<string, unknown>;
7
+ _meta?: Record<string, unknown>;
8
+ [key: string]: unknown;
9
+ }
10
+ /** Complete MCP result, including resources, structured data and extensions. */
11
+ interface McpToolResult {
12
+ content: Array<{
13
+ type: string;
14
+ [key: string]: unknown;
15
+ }>;
16
+ structuredContent?: Record<string, unknown>;
17
+ isError?: boolean;
18
+ _meta?: Record<string, unknown>;
19
+ [key: string]: unknown;
20
+ }
21
+ interface McpPaymentAccept {
22
+ scheme: string;
23
+ network: string;
24
+ amount: string;
25
+ asset: string;
26
+ payTo: string;
27
+ maxTimeoutSeconds: number;
28
+ extra?: Record<string, unknown>;
29
+ }
30
+ interface McpPaymentRequired {
31
+ x402Version: 2;
32
+ resource: ResourceInfo;
33
+ accepts: McpPaymentAccept[];
34
+ error?: string;
35
+ extensions?: Record<string, unknown>;
36
+ }
37
+ interface McpPaymentPayload {
38
+ x402Version: 2;
39
+ resource?: ResourceInfo;
40
+ accepted: McpPaymentAccept;
41
+ payload: Record<string, unknown>;
42
+ extensions?: Record<string, unknown>;
43
+ }
44
+ type McpSettlementOutcome = {
45
+ status: 'settled';
46
+ receipt: SettleResponse & {
47
+ success: true;
48
+ };
49
+ } | {
50
+ status: 'failed';
51
+ receipt: SettleResponse & {
52
+ success: false;
53
+ };
54
+ } | {
55
+ status: 'unknown';
56
+ reason: string;
57
+ receipt?: SettleResponse;
58
+ };
59
+ /** Implement additional schemes with their own stable, semantic payment ID. */
60
+ interface McpPaymentProcessor {
61
+ supports(requirements: McpPaymentAccept): boolean;
62
+ /** Same on-chain authorization must produce the same ID, regardless of metadata. */
63
+ identify(payment: McpPaymentPayload): string;
64
+ verify(payment: McpPaymentPayload, requirements: McpPaymentAccept): Promise<VerifyResponse>;
65
+ /** Make one attempt. Reconcile uncertainty outside this adapter. */
66
+ settle(payment: McpPaymentPayload, requirements: McpPaymentAccept): Promise<McpSettlementOutcome>;
67
+ }
68
+ type McpPaymentPhase = 'admitted' | 'executing' | 'executed' | 'settling' | 'complete' | 'execution_failed' | 'execution_unknown' | 'settlement_failed' | 'settlement_unknown';
69
+ /** Persist privately: this record contains payment proof and service output. */
70
+ interface McpPaymentRecord {
71
+ paymentId: string;
72
+ revision: number;
73
+ phase: McpPaymentPhase;
74
+ binding: string;
75
+ proofFingerprint: string;
76
+ accessScope: string;
77
+ serviceScope: string;
78
+ resource: ResourceInfo;
79
+ request: McpToolCall;
80
+ payment: McpPaymentPayload;
81
+ payer?: string;
82
+ result?: McpToolResult;
83
+ receipt?: SettleResponse;
84
+ }
85
+ /**
86
+ * Application-owned durable storage. All tools accepting the same payments
87
+ * must share it. claim must insert once atomically across workers; CAS must
88
+ * durably commit before resolving. Retain records through payment validity
89
+ * and your result-retrieval period. Never expire in-flight records on a timer.
90
+ */
91
+ interface McpPaymentStore {
92
+ get(paymentId: string): Promise<McpPaymentRecord | undefined>;
93
+ claim(record: McpPaymentRecord): Promise<{
94
+ claimed: true;
95
+ } | {
96
+ claimed: false;
97
+ record: McpPaymentRecord;
98
+ }>;
99
+ compareAndSwap(paymentId: string, expectedRevision: number, next: McpPaymentRecord): Promise<boolean>;
100
+ }
101
+ interface PaidMcpToolOptions<Context> {
102
+ name: string;
103
+ /** Stable seller/service identity; never use a transient MCP session ID. */
104
+ serviceScope: string;
105
+ requirements: McpPaymentRequired | ((request: McpToolCall, context: Context) => Promise<McpPaymentRequired>);
106
+ payments: McpPaymentProcessor;
107
+ store: McpPaymentStore;
108
+ /** Authenticate every request, including cached result retrieval. */
109
+ authorize(request: McpToolCall, context: Context): Promise<string>;
110
+ /** Synchronous completion contract. Application owns side-effect recovery. */
111
+ execute(request: McpToolCall, context: {
112
+ application: Context;
113
+ paymentId: string;
114
+ payer?: string;
115
+ requirements: McpPaymentAccept;
116
+ }): Promise<McpToolResult>;
117
+ }
118
+ type McpToolTransport = (request: McpToolCall) => Promise<McpToolResult>;
119
+ interface McpPaidCallOutcome {
120
+ /** Retained in full, even when receipt parsing fails. */
121
+ result?: McpToolResult;
122
+ /** Malformed transport response retained for diagnosis after paid dispatch. */
123
+ rawResult?: unknown;
124
+ paymentStatus: 'seller_reported_settled' | 'seller_reported_failed' | 'unknown';
125
+ deliveryStatus: 'result_received' | 'tool_error' | 'unknown';
126
+ receipt?: SettleResponse;
127
+ /** Transport exception or invalid/missing receipt. No automatic retry occurs. */
128
+ error?: unknown;
129
+ }
130
+
131
+ /**
132
+ * Gate a completed tool result with the published x402 MCP payment exchange.
133
+ * Each verified payment is claimed in durable storage before execution. A
134
+ * restart or uncertain effect requires application reconciliation; this
135
+ * wrapper never re-executes an incomplete admitted operation automatically.
136
+ */
137
+ declare function createPaidMcpTool<Context>(options: PaidMcpToolOptions<Context>): (input: McpToolCall, application: Context) => Promise<McpToolResult>;
138
+
139
+ /**
140
+ * Reuse the SDK facilitator client with a single request per operation.
141
+ * Network allow-list is explicit. A negative facilitator response remains
142
+ * uncertain because that client also maps transport errors to success:false.
143
+ */
144
+ declare function createMcpFacilitatorProcessor(options: {
145
+ facilitatorUrl?: string;
146
+ networks: string[];
147
+ timeoutMs?: number;
148
+ }): McpPaymentProcessor;
149
+
150
+ /** One unpaid call. A tool may execute during this call; check its semantics. */
151
+ declare function probeMcpTool(transport: McpToolTransport, request: McpToolCall): Promise<{
152
+ result: McpToolResult;
153
+ paymentRequired: McpPaymentRequired | undefined;
154
+ }>;
155
+ /**
156
+ * Send one already-authorized payment. The caller owns selection, signing,
157
+ * budget enforcement and durable recovery. Exceptions after dispatch are
158
+ * uncertain outcomes, and the same helper never makes another paid request.
159
+ */
160
+ declare function callMcpToolWithPayment(options: {
161
+ transport: McpToolTransport;
162
+ request: McpToolCall;
163
+ paymentRequired: McpPaymentRequired;
164
+ payment: McpPaymentPayload;
165
+ /** Durably record the exact server identity, request and proof before resolving. */
166
+ beforeDispatch(request: McpToolCall): Promise<void>;
167
+ }): Promise<McpPaidCallOutcome>;
168
+
169
+ declare const MCP_PAYMENT_META = "x402/payment";
170
+ declare const MCP_PAYMENT_RESPONSE_META = "x402/payment-response";
171
+ declare const MCP_PAYMENT_STATE_META = "dexter/payment-state";
172
+ /** Attach an object-valued payment while retaining other request metadata. */
173
+ declare function attachMcpPayment(request: McpToolCall, payment: McpPaymentPayload): McpToolCall;
174
+ declare function isMcpPaymentAccept(value: unknown): value is McpPaymentAccept;
175
+ declare function isMcpPaymentRequired(value: unknown): value is McpPaymentRequired;
176
+ declare function isMcpPaymentPayload(value: unknown): value is McpPaymentPayload;
177
+ /** Published x402 MCP challenge: structured data and identical JSON text. */
178
+ declare function createMcpPaymentRequiredResult(required: McpPaymentRequired, error?: string): McpToolResult;
179
+ /** Prefer structuredContent; support the specification's first-text fallback. */
180
+ declare function getMcpPaymentRequired(result: McpToolResult): McpPaymentRequired | undefined;
181
+ declare function getMcpPaymentReceipt(result: McpToolResult): SettleResponse | undefined;
182
+
183
+ export { MCP_PAYMENT_META, MCP_PAYMENT_RESPONSE_META, MCP_PAYMENT_STATE_META, type McpPaidCallOutcome, type McpPaymentAccept, type McpPaymentPayload, type McpPaymentPhase, type McpPaymentProcessor, type McpPaymentRecord, type McpPaymentRequired, type McpPaymentStore, type McpSettlementOutcome, type McpToolCall, type McpToolResult, type McpToolTransport, type PaidMcpToolOptions, attachMcpPayment, callMcpToolWithPayment, createMcpFacilitatorProcessor, createMcpPaymentRequiredResult, createPaidMcpTool, getMcpPaymentReceipt, getMcpPaymentRequired, isMcpPaymentAccept, isMcpPaymentPayload, isMcpPaymentRequired, probeMcpTool };
@@ -0,0 +1 @@
1
+ import{createHash as Ee}from"crypto";import{VersionedTransaction as ge}from"@solana/web3.js";var H="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",ae="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",ie="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";var b="eip155:8453",B="eip155:84532",L="eip155:42161",W="eip155:137",U="eip155:10",q="eip155:43114",K="eip155:56",w="eip155:480",N="eip155:143",C="eip155:4663",O="eip155:1187947933",v="eip155:324705682",F="eip155:1";var ce="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",me="0x55d398326f99059fF775485246999027B3197955",pe="0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",le="0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",Te={[K]:pe,[b]:ce,[B]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[L]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[W]:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",[U]:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",[q]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[w]:"0x79A02482A880bCE3F13e09Da970dC34db4CD24d1",[N]:"0x754704Bc059F8C67012fEd69BC8A327a5aafb603",[C]:le,[O]:"0x85889c8c714505E0c94b30fcfcF64fE3Ac8FCb20",[v]:"0x2e08028E3C4c2356572E096d8EF835cD5C6030bD",[F]:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},Ae={[me]:{symbol:"USDT",decimals:18},[pe]:{symbol:"USDC",decimals:18}};var Re={[w]:{name:"USDC",version:"2"},[N]:{name:"USDC",version:"2"},[C]:{name:"Global Dollar",version:"1"},[O]:{name:"Bridged USDC (SKALE Bridge)",version:"2"},[v]:{name:"Bridged USDC (SKALE Bridge)",version:"2"}};var Se={[K]:56,[b]:8453,[B]:84532,[L]:42161,[W]:137,[U]:10,[q]:43114,[w]:480,[N]:143,[C]:4663,[O]:1187947933,[v]:324705682,[F]:1},be={[H]:"https://api.dexter.cash/api/solana/rpc",[ae]:"https://api.devnet.solana.com",[ie]:"https://api.testnet.solana.com"},de={[K]:"https://api.dexter.cash/api/evm/bsc/rpc",[b]:"https://api.dexter.cash/api/base/rpc",[B]:"https://sepolia.base.org",[L]:"https://api.dexter.cash/api/evm/arbitrum/rpc",[W]:"https://api.dexter.cash/api/evm/polygon/rpc",[U]:"https://api.dexter.cash/api/evm/optimism/rpc",[q]:"https://api.dexter.cash/api/evm/avalanche/rpc",[w]:"https://worldchain-mainnet.g.alchemy.com/public",[N]:"https://rpc.monad.xyz",[C]:"https://rpc.mainnet.chain.robinhood.com",[O]:"https://skale-base.skalenodes.com/v1/base",[v]:"https://base-sepolia-testnet.skalenodes.com/v1/jubilant-horrible-ancha",[F]:"https://eth.llamarpc.com"},j="https://x402.dexter.cash";function fe(e){if(typeof Buffer<"u")return Buffer.from(e,"utf-8").toString("base64");let t=new TextEncoder().encode(e),n="";for(let r=0;r<t.length;r++)n+=String.fromCharCode(t[r]);return btoa(n)}function ye(e){if(typeof Buffer<"u")return Buffer.from(e,"base64").toString("utf-8");let t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return new TextDecoder().decode(n)}function z(e){return fe(JSON.stringify(e))}function X(e){return JSON.parse(ye(e))}function he(e){if(e instanceof TypeError)return!0;if(e&&typeof e=="object"&&"status"in e){let t=e.status;return t>=500&&t<600}return!1}var D=class extends Error{status;body;constructor(t,n){super(`HTTP ${t}`),this.status=t,this.body=n}},$=class{facilitatorUrl;cachedSupported=null;cacheTime=0;CACHE_TTL_MS=6e4;timeoutMs;maxRetries;retryBaseMs;constructor(t=j,n){this.facilitatorUrl=t.replace(/\/$/,""),this.timeoutMs=n?.timeoutMs??1e4,this.maxRetries=n?.maxRetries??3,this.retryBaseMs=n?.retryBaseMs??500}async fetchWithTimeout(t,n){let r=new AbortController,s=setTimeout(()=>r.abort(),this.timeoutMs);try{return await fetch(t,{...n,signal:r.signal})}finally{clearTimeout(s)}}async fetchWithRetry(t,n){let r;for(let s=0;s<this.maxRetries;s++)try{let o=await this.fetchWithTimeout(t,n);if(!o.ok&&o.status>=500)throw new D(o.status,await o.text());return o}catch(o){if(r=o,s<this.maxRetries-1&&he(o)){let a=this.retryBaseMs*Math.pow(2,s);await new Promise(c=>setTimeout(c,a));continue}throw o}throw r}async getSupported(){let t=Date.now();if(this.cachedSupported&&t-this.cacheTime<this.CACHE_TTL_MS)return this.cachedSupported;let n=await this.fetchWithTimeout(`${this.facilitatorUrl}/supported`);if(!n.ok)throw new Error(`Facilitator /supported returned ${n.status}`);return this.cachedSupported=await n.json(),this.cacheTime=t,this.cachedSupported}async getFeePayer(t){let r=(await this.getSupported()).kinds.find(s=>s.x402Version===2&&(s.scheme==="exact"||s.scheme==="exact-approval")&&s.network===t);if(!r)throw new Error(`Facilitator does not support network "${t}" with a recognized scheme`);return r.extra?.feePayer}async getNetworkExtra(t){return(await this.getSupported()).kinds.find(s=>s.x402Version===2&&(s.scheme==="exact"||s.scheme==="exact-approval"||s.scheme==="batch-settlement")&&s.network===t)?.extra}async verifyPayment(t,n){try{let r=X(t),s=await this.fetchWithRetry(`${this.facilitatorUrl}/verify`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:n})});return s.ok?await s.json():{isValid:!1,invalidReason:`facilitator_error_${s.status}`}}catch(r){return{isValid:!1,invalidReason:r instanceof D?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_verify_error"}}}async settlePayment(t,n){try{let r=X(t),s=await this.fetchWithRetry(`${this.facilitatorUrl}/settle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:n})});return s.ok?{...await s.json(),network:n.network}:{success:!1,network:n.network,errorReason:`facilitator_error_${s.status}`}}catch(r){let s=r instanceof D?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_settle_error";return{success:!1,network:n.network,errorReason:s}}}};var x="x402/payment",_="x402/payment-response",P="dexter/payment-state";function G(e,t){if(!A(t))throw new Error("Invalid x402 v2 MCP payment payload");if(e._meta?.[x]!==void 0)throw new Error("Request already contains payment");return p({...e,_meta:{...e._meta,[x]:t}})}function l(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e){return JSON.parse(JSON.stringify(e))}function T(e){let t=p(e);function n(r){return Array.isArray(r)?r.map(n):l(r)?Object.fromEntries(Object.keys(r).sort().map(s=>[s,n(r[s])])):r}return JSON.stringify(n(t))}function Z(e){return l(e)&&["scheme","network","asset","payTo"].every(t=>typeof e[t]=="string"&&e[t].length>0)&&typeof e.amount=="string"&&/^(0|[1-9][0-9]*)$/.test(e.amount)&&typeof e.maxTimeoutSeconds=="number"&&Number.isSafeInteger(e.maxTimeoutSeconds)&&e.maxTimeoutSeconds>0&&(e.extra===void 0||l(e.extra))}function E(e){return l(e)&&e.x402Version===2&&l(e.resource)&&typeof e.resource.url=="string"&&e.resource.url.length>0&&Array.isArray(e.accepts)&&e.accepts.length>0&&e.accepts.every(Z)&&(e.extensions===void 0||l(e.extensions))}function A(e){return l(e)&&e.x402Version===2&&(e.resource===void 0||l(e.resource)&&typeof e.resource.url=="string")&&Z(e.accepted)&&l(e.payload)&&(e.extensions===void 0||l(e.extensions))}function g(e,t){if(!E(e))throw new Error("Invalid x402 v2 MCP payment requirements");let n=p({...e,...t===void 0?{}:{error:t}});return{isError:!0,structuredContent:n,content:[{type:"text",text:JSON.stringify(n)}]}}function I(e){if(e.isError!==!0)return;if(E(e.structuredContent))return p(e.structuredContent);let t=e.content?.[0];if(!(t?.type!=="text"||typeof t.text!="string"))try{let n=JSON.parse(t.text);return E(n)?n:void 0}catch{return}}function Q(e){let t=e._meta?.[_];if(!(!l(t)||typeof t.success!="boolean"||typeof t.network!="string")&&!(t.success&&(typeof t.transaction!="string"||t.transaction.length===0)))return p(t)}function V(e,t){return(t.resource===void 0||t.resource.url===e.resource.url)&&e.accepts.some(n=>T(n)===T(t.accepted))}function R(e){return e.errorReason==="settlement_pending"||e.errorCode==="settlement_pending"}function S(e){return Ee("sha256").update(T(e)).digest("hex")}function ue(e){let{network:t,scheme:n,asset:r}=e.accepted;if(n!=="exact")throw new Error("Default MCP processor supports exact payments");if(["transaction","authorization","permit2Authorization"].filter(o=>e.payload[o]!==void 0).length!==1)throw new Error("Payment must contain exactly one supported proof family");if(t.startsWith("solana:")&&typeof e.payload.transaction=="string"){let o=Buffer.from(e.payload.transaction,"base64"),a=ge.deserialize(o);return S({network:t,message:Buffer.from(a.message.serialize()).toString("base64")})}if(t.startsWith("eip155:")){let o=e.accepted.extra?.assetTransferMethod??"eip3009";if(o!=="eip3009"&&o!=="permit2")throw new Error("Unsupported asset transfer method");let a=e.payload.authorization;if(o==="eip3009"&&l(a)&&typeof a.from=="string"&&/^0x[0-9a-f]{40}$/i.test(a.from)&&typeof a.nonce=="string"&&/^0x[0-9a-f]{64}$/i.test(a.nonce))return S({network:t,kind:"eip3009",asset:r.toLowerCase(),from:a.from.toLowerCase(),nonce:a.nonce.toLowerCase()});let c=e.payload.permit2Authorization;if(o==="permit2"&&l(c)&&typeof c.from=="string"&&/^0x[0-9a-f]{40}$/i.test(c.from)&&typeof c.nonce=="string"&&/^[0-9]+$/.test(c.nonce))return S({network:t,kind:"permit2",from:c.from.toLowerCase(),nonce:BigInt(c.nonce).toString()})}throw new Error("Unsupported exact payment proof")}function xe(e){if(!e.networks.length)throw new Error("Configure at least one MCP payment network");let t=new Set(e.networks),n=new $(e.facilitatorUrl,{maxRetries:1,timeoutMs:e.timeoutMs}),r=o=>o.scheme==="exact"&&(o.extra?.paymentFlow===void 0||o.extra.paymentFlow==="authorization")&&t.has(o.network)&&(/^solana:/.test(o.network)&&(o.extra?.assetTransferMethod===void 0||o.extra.assetTransferMethod==="default")||/^eip155:/.test(o.network)&&["eip3009","permit2"].includes(String(o.extra?.assetTransferMethod??"eip3009")));function s(o,a){if(!r(a)||T(o.accepted)!==T(a))throw new Error("Unsupported or mismatched facilitator payment requirements");ue(o)}return{supports:r,identify:ue,async verify(o,a){try{s(o,a)}catch{return{isValid:!1,invalidReason:"unsupported_payment_proof"}}return n.verifyPayment(z(o),a)},async settle(o,a){s(o,a);let c=await n.settlePayment(z(o),a);return!R(c)&&c.success===!0&&typeof c.transaction=="string"&&c.transaction.length>0&&c.network===a.network?{status:"settled",receipt:{...c,success:!0}}:{status:"unknown",reason:c.errorReason??c.errorCode??"settlement_not_confirmed",receipt:c}}}}function M(e,t){return{isError:!0,content:[{type:"text",text:e}],...t?{_meta:{[P]:t}}:{}}}function J(e){let t=M("This payment already has an admitted operation. Retrieve or reconcile that operation before paying again.",{paymentId:e.paymentId,phase:e.phase,recoveryRequired:!0});return e.receipt&&(t._meta[_]=p(e.receipt)),t}function _e(e){if(!e.name||!e.serviceScope)throw new Error("Paid MCP tool requires name and serviceScope");return async(t,n)=>{let r=p(t);if(r.name!==e.name)return M("Unknown paid tool");let s;try{if(s=await e.authorize(p(r),n),!s)return M("Access denied")}catch{return M("Access denied")}let o=r._meta?.[x],a;async function c(){let i=typeof e.requirements=="function"?await e.requirements(p(r),n):e.requirements;if(!E(i))throw new Error("Invalid MCP payment requirements");let m=p(i);if(m.accepts.some(f=>!e.payments.supports(f)||f.extra?.paymentFlow!==void 0&&f.extra.paymentFlow!=="authorization"))throw new Error("MCP requirements advertise a payment scheme or network unsupported by this processor");return m}if(o===void 0)return g(await c());if(!A(o))return g(await c(),'Payment must be an x402 v2 object in params._meta["x402/payment"]');let u=p(o),y;try{y=e.payments.identify(u)}catch{return g(await c(),"Unsupported payment proof")}if(!y)throw new Error("Payment processor returned an empty payment ID");let ee=S({serviceScope:e.serviceScope,name:r.name,arguments:r.arguments??{},accepted:u.accepted}),te=S(u),Y=i=>i.accessScope!==s||i.serviceScope!==e.serviceScope||i.binding!==ee||i.proofFingerprint!==te||u.resource!==void 0&&u.resource.url!==i.resource.url?M("Payment is already bound to another request or caller"):(i.phase==="complete"||i.phase==="execution_failed")&&i.result?i.phase==="execution_failed"&&I(i.result)?J(i):p(i.result):J(i),re=await e.store.get(y);if(re)return Y(re);if(a=await c(),!V(a,u)||!e.payments.supports(u.accepted))return g(a,"Payment terms do not match this tool");let k;try{k=await e.payments.verify(u,u.accepted)}catch{return g(a,"Payment verification unavailable")}if(k.isValid!==!0)return g(a,"Payment verification failed");let d={paymentId:y,revision:0,phase:"admitted",binding:ee,proofFingerprint:te,accessScope:s,serviceScope:e.serviceScope,resource:a.resource,request:r,payment:u,payer:k.payer},ne=await e.store.claim(p(d));if(!ne.claimed)return Y(ne.record);async function h(i){let m=p({...d,...i,revision:d.revision+1});if(!await e.store.compareAndSwap(y,d.revision,m))throw new Error("MCP payment record changed concurrently");d=m}try{await h({phase:"executing"});let i;try{if(i=p(await e.execute(p(r),{application:n,paymentId:y,payer:k.payer,requirements:p(u.accepted)})),!Array.isArray(i.content)||i.resultType!==void 0&&i.resultType!=="complete"||i.task!==void 0)throw new Error("Paid MCP tool must return a completed tool result");i._meta&&(delete i._meta[_],delete i._meta[P])}catch{return await h({phase:"execution_unknown"}),J(d)}if(i.isError===!0)return await h({phase:"execution_failed",result:i}),Y(d);await h({phase:"executed",result:i}),await h({phase:"settling"});let m;try{m=await e.payments.settle(u,u.accepted)}catch{m={status:"unknown",reason:"Settlement response unavailable"}}if(m.receipt&&R(m.receipt)&&(m={status:"unknown",reason:"settlement_pending",receipt:m.receipt}),m.status!=="settled"){await h({phase:m.status==="failed"?"settlement_failed":"settlement_unknown",...m.receipt?{receipt:m.receipt}:{}});let oe=M(m.status==="failed"?"Settlement failed; reconcile the admitted operation before paying again":"Settlement outcome unknown; reconcile the admitted operation before paying again");return oe._meta={[P]:{paymentId:y,phase:d.phase,recoveryRequired:!0},...m.receipt?{[_]:m.receipt}:{}},oe}let f=m.receipt;if(f.success!==!0||!f.transaction||f.network!==u.accepted.network)return await h({phase:"settlement_unknown"}),J(d);let se={...i,_meta:{...i._meta,[_]:p(f)}};return await h({phase:"complete",result:se,receipt:f}),se}catch{return M("Operation outcome requires reconciliation before another payment.",{paymentId:y,phase:"unknown",recoveryRequired:!0})}}}async function Pe(e,t){if(t._meta?.[x]!==void 0)throw new Error("Probe already contains payment");let n=await e(p(t));return{result:n,paymentRequired:I(n)}}async function Me(e){let t=p(e.paymentRequired),n=p(e.payment);if(!E(t)||!A(n)||!V(t,n))throw new Error("Payment does not match the approved MCP requirements");let r=G(e.request,n);await e.beforeDispatch(p(r));let s;try{s=await e.transport(r)}catch(u){return{paymentStatus:"unknown",deliveryStatus:"unknown",error:u}}if(!l(s)||!Array.isArray(s.content)||s.content.some(u=>!l(u)||typeof u.type!="string")||s.isError!==void 0&&typeof s.isError!="boolean")return{rawResult:s,paymentStatus:"unknown",deliveryStatus:"unknown",error:new Error("Invalid MCP result after paid dispatch")};let o=s.isError===!0?"tool_error":"result_received",a;try{a=Q(s)}catch(u){return{result:s,paymentStatus:"unknown",deliveryStatus:o,error:u}}if(!a||a.network!==n.accepted.network)return{result:s,paymentStatus:"unknown",deliveryStatus:o,error:new Error("Missing or invalid payment receipt")};let c=s._meta?.[P];return R(a)||l(c)&&["unknown","settling","settlement_unknown"].includes(String(c.phase))?{result:s,receipt:a,paymentStatus:"unknown",deliveryStatus:o}:{result:s,receipt:a,deliveryStatus:o,paymentStatus:a.success?"seller_reported_settled":"seller_reported_failed"}}export{x as MCP_PAYMENT_META,_ as MCP_PAYMENT_RESPONSE_META,P as MCP_PAYMENT_STATE_META,G as attachMcpPayment,Me as callMcpToolWithPayment,xe as createMcpFacilitatorProcessor,g as createMcpPaymentRequiredResult,_e as createPaidMcpTool,Q as getMcpPaymentReceipt,I as getMcpPaymentRequired,Z as isMcpPaymentAccept,A as isMcpPaymentPayload,E as isMcpPaymentRequired,Pe as probeMcpTool};
@@ -1,9 +1,9 @@
1
1
  import { X as X402Client } from '../x402-client-B8zdDeat.cjs';
2
2
  export { f as fireImpressionBeacon, b as getSponsoredRecommendations } from '../x402-client-B8zdDeat.cjs';
3
- import { W as WalletSet, B as BalanceInfo } from '../types-BvQpNtFw.cjs';
4
- export { h as AccessPassClientConfig, j as AccessPassInfo, k as AccessPassTier, X as X402Error } from '../types-BvQpNtFw.cjs';
3
+ import { W as WalletSet, B as BalanceInfo } from '../types-CRs5sEcb.cjs';
5
4
  import { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
5
  export { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
+ export { A as AccessPassClientConfig, a as AccessPassInfo, b as AccessPassTier, X as X402Error } from '../types-DolSK-3d.cjs';
7
7
 
8
8
  /**
9
9
  * React Hook for x402 v2 Payments
@@ -1,9 +1,9 @@
1
1
  import { X as X402Client } from '../x402-client-B8zdDeat.js';
2
2
  export { f as fireImpressionBeacon, b as getSponsoredRecommendations } from '../x402-client-B8zdDeat.js';
3
- import { W as WalletSet, B as BalanceInfo } from '../types-BvQpNtFw.js';
4
- export { h as AccessPassClientConfig, j as AccessPassInfo, k as AccessPassTier, X as X402Error } from '../types-BvQpNtFw.js';
3
+ import { W as WalletSet, B as BalanceInfo } from '../types-C08JT9MG.js';
5
4
  import { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
5
  export { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
+ export { A as AccessPassClientConfig, a as AccessPassInfo, b as AccessPassTier, X as X402Error } from '../types-DolSK-3d.js';
7
7
 
8
8
  /**
9
9
  * React Hook for x402 v2 Payments
@@ -1 +1 @@
1
- "use strict";var ae=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Xe=Object.prototype.hasOwnProperty;var Ge=(e,t)=>{for(var o in t)ae(e,o,{get:t[o],enumerable:!0})},ze=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of je(t))!Xe.call(e,n)&&n!==o&&ae(e,n,{get:()=>t[n],enumerable:!(r=Ve(t,n))||r.enumerable});return e};var Je=e=>ze(ae({},"__esModule",{value:!0}),e);var mt={};Ge(mt,{BASE_MAINNET_NETWORK:()=>k,DEXTER_FACILITATOR_URL:()=>D,FacilitatorClient:()=>M,SOLANA_MAINNET_NETWORK:()=>N,SPONSORED_ACCESS_EXTENSION_KEY:()=>We,USDC_BASE:()=>te,USDC_MINT:()=>B,bazaarExtension:()=>Ke,createX402Server:()=>oe,declareDiscoveryExtension:()=>$e,resolveDefaultAsset:()=>ce,x402Middleware:()=>Le});module.exports=Je(mt);var N="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",fe="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",ye="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";var k="eip155:8453",G="eip155:84532",z="eip155:42161",J="eip155:137",Y="eip155:10",Q="eip155:43114",Z="eip155:56",q="eip155:480",K="eip155:143",$="eip155:4663",W="eip155:1187947933",F="eip155:324705682",ee="eip155:1";var B="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";var te="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",Ye="0x55d398326f99059fF775485246999027B3197955",he="0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",Qe="0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",ge={[Z]:he,[k]:te,[G]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[z]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[J]:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",[Y]:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",[Q]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[q]:"0x79A02482A880bCE3F13e09Da970dC34db4CD24d1",[K]:"0x754704Bc059F8C67012fEd69BC8A327a5aafb603",[$]:Qe,[W]:"0x85889c8c714505E0c94b30fcfcF64fE3Ac8FCb20",[F]:"0x2e08028E3C4c2356572E096d8EF835cD5C6030bD",[ee]:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},Ee={[Ye]:{symbol:"USDT",decimals:18},[he]:{symbol:"USDC",decimals:18}};var yt={[q]:{name:"USDC",version:"2"},[K]:{name:"USDC",version:"2"},[$]:{name:"Global Dollar",version:"1"},[W]:{name:"Bridged USDC (SKALE Bridge)",version:"2"},[F]:{name:"Bridged USDC (SKALE Bridge)",version:"2"}};var ht={[Z]:56,[k]:8453,[G]:84532,[z]:42161,[J]:137,[Y]:10,[Q]:43114,[q]:480,[K]:143,[$]:4663,[W]:1187947933,[F]:324705682,[ee]:1},gt={[N]:"https://api.dexter.cash/api/solana/rpc",[fe]:"https://api.devnet.solana.com",[ye]:"https://api.testnet.solana.com"},Ze={[Z]:"https://api.dexter.cash/api/evm/bsc/rpc",[k]:"https://api.dexter.cash/api/base/rpc",[G]:"https://sepolia.base.org",[z]:"https://api.dexter.cash/api/evm/arbitrum/rpc",[J]:"https://api.dexter.cash/api/evm/polygon/rpc",[Y]:"https://api.dexter.cash/api/evm/optimism/rpc",[Q]:"https://api.dexter.cash/api/evm/avalanche/rpc",[q]:"https://worldchain-mainnet.g.alchemy.com/public",[K]:"https://rpc.monad.xyz",[$]:"https://rpc.mainnet.chain.robinhood.com",[W]:"https://skale-base.skalenodes.com/v1/base",[F]:"https://base-sepolia-testnet.skalenodes.com/v1/jubilant-horrible-ancha",[ee]:"https://eth.llamarpc.com"},D="https://x402.dexter.cash",xe=N;var Se="dexter-tab-hosted-pay-before-delivery/v1",Re="pay_before_delivery_seller_2xx",Ae="x-tab-voucher",Te="base64(188-byte sessionRegisterMessage)";function Pe(e,t){if(!Number.isFinite(e))throw new Error(`toAtomicUnits: amount must be finite, got ${e}`);if(e<0)throw new Error(`toAtomicUnits: amount must be non-negative, got ${e}`);if(!Number.isInteger(t)||t<0)throw new Error(`toAtomicUnits: decimals must be a non-negative integer, got ${t}`);let o=et(Math.abs(e)),[r,n=""]=o.split("."),a=n.slice(0,t).padEnd(t,"0");return BigInt(r+a).toString()}function et(e){let t=e.toString();if(!/[eE]/.test(t))return t;let[o,r]=t.split(/[eE]/),n=parseInt(r,10),a=o.startsWith("-"),p=a?o.slice(1):o,[m,f=""]=p.split("."),d=m+f,g=m.length+n,s;return g<=0?s="0."+"0".repeat(-g)+d:g>=d.length?s=d+"0".repeat(g-d.length):s=d.slice(0,g)+"."+d.slice(g),(a?"-":"")+s}function re(e){return e.startsWith("solana:")||e==="solana"}function tt(e){if(typeof Buffer<"u")return Buffer.from(e,"utf-8").toString("base64");let t=new TextEncoder().encode(e),o="";for(let r=0;r<t.length;r++)o+=String.fromCharCode(t[r]);return btoa(o)}function rt(e){if(typeof Buffer<"u")return Buffer.from(e,"base64").toString("utf-8");let t=atob(e),o=new Uint8Array(t.length);for(let r=0;r<t.length;r++)o[r]=t.charCodeAt(r);return new TextDecoder().decode(o)}function ne(e){return tt(JSON.stringify(e))}function V(e){return JSON.parse(rt(e))}function nt(e){if(e instanceof TypeError)return!0;if(e&&typeof e=="object"&&"status"in e){let t=e.status;return t>=500&&t<600}return!1}var j=class extends Error{status;body;constructor(t,o){super(`HTTP ${t}`),this.status=t,this.body=o}},M=class{facilitatorUrl;cachedSupported=null;cacheTime=0;CACHE_TTL_MS=6e4;timeoutMs;maxRetries;retryBaseMs;constructor(t=D,o){this.facilitatorUrl=t.replace(/\/$/,""),this.timeoutMs=o?.timeoutMs??1e4,this.maxRetries=o?.maxRetries??3,this.retryBaseMs=o?.retryBaseMs??500}async fetchWithTimeout(t,o){let r=new AbortController,n=setTimeout(()=>r.abort(),this.timeoutMs);try{return await fetch(t,{...o,signal:r.signal})}finally{clearTimeout(n)}}async fetchWithRetry(t,o){let r;for(let n=0;n<this.maxRetries;n++)try{let a=await this.fetchWithTimeout(t,o);if(!a.ok&&a.status>=500)throw new j(a.status,await a.text());return a}catch(a){if(r=a,n<this.maxRetries-1&&nt(a)){let p=this.retryBaseMs*Math.pow(2,n);await new Promise(m=>setTimeout(m,p));continue}throw a}throw r}async getSupported(){let t=Date.now();if(this.cachedSupported&&t-this.cacheTime<this.CACHE_TTL_MS)return this.cachedSupported;let o=await this.fetchWithTimeout(`${this.facilitatorUrl}/supported`);if(!o.ok)throw new Error(`Facilitator /supported returned ${o.status}`);return this.cachedSupported=await o.json(),this.cacheTime=t,this.cachedSupported}async getFeePayer(t){let r=(await this.getSupported()).kinds.find(n=>n.x402Version===2&&(n.scheme==="exact"||n.scheme==="exact-approval")&&n.network===t);if(!r)throw new Error(`Facilitator does not support network "${t}" with a recognized scheme`);return r.extra?.feePayer}async getNetworkExtra(t){return(await this.getSupported()).kinds.find(n=>n.x402Version===2&&(n.scheme==="exact"||n.scheme==="exact-approval"||n.scheme==="batch-settlement")&&n.network===t)?.extra}async verifyPayment(t,o){try{let r=V(t),n=await this.fetchWithRetry(`${this.facilitatorUrl}/verify`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:o})});return n.ok?await n.json():{isValid:!1,invalidReason:`facilitator_error_${n.status}`}}catch(r){return{isValid:!1,invalidReason:r instanceof j?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_verify_error"}}}async settlePayment(t,o){try{let r=V(t),n=await this.fetchWithRetry(`${this.facilitatorUrl}/settle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:o})});return n.ok?{...await n.json(),network:o.network}:{success:!1,network:o.network,errorReason:`facilitator_error_${n.status}`}}catch(r){let n=r instanceof j?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_settle_error";return{success:!1,network:o.network,errorReason:n}}}};function ce(e){if(re(e))return{address:B,decimals:6};let t=ge[e];if(t){let o=Ee[t]?.decimals??6;return{address:t,decimals:o}}return{address:B,decimals:6}}function _e(e){try{let t=V(e);return t?.accepted?.amount??t?.accepted?.maxAmountRequired}catch{return}}function oe(e){let{payTo:t,facilitatorUrl:o=D,network:r=N,defaultTimeoutSeconds:n=60}=e,a=e.asset??ce(r),p=e.scheme??"exact";if(p==="tab"&&!re(r))throw new Error(`scheme 'tab' is SVM-only; got network "${r}"`);let m=new M(o),f=null,d=new Map,g=3e4,s=Date.now();function y(i){let l=(i.maxTimeoutSeconds||n)*1e3;if(d.set(i.payTo,{accept:i,expiresAt:Date.now()+l}),Date.now()-s>g){let h=Date.now();for(let[x,v]of d)v.expiresAt<h&&d.delete(x);s=h}}function S(i){let l=d.get(i);if(l){if(l.expiresAt<Date.now()){d.delete(i);return}return l.accept}}async function E(i){return typeof t=="string"?t:t(i||{})}async function _(){if(f||(f=await m.getNetworkExtra(r)),re(r)&&!f?.feePayer)throw new Error(`Facilitator does not provide feePayer for network "${r}"`);return{...f?.feePayer?{feePayer:f.feePayer}:{},decimals:f?.decimals??a.decimals,name:f?.name,version:f?.version,...p==="batch-settlement"&&f?.receiverAuthorizer?{receiverAuthorizer:f.receiverAuthorizer}:{},...p==="tab"?{voucherHeader:Ae,registrationEncoding:Te,termsVersion:Se,acceptanceRule:Re}:{}}}async function O(i,l){let{amountAtomic:h,timeoutSeconds:x=n}=l,v=await _(),I={scheme:p,network:r,amount:h,maxAmountRequired:h,asset:a.address,payTo:i,maxTimeoutSeconds:x,extra:v};return y(I),I}async function w(i){let l=await E({amountAtomic:i.amountAtomic,resourceUrl:i.resourceUrl});return O(l,i)}async function b(i){let{resourceUrl:l,description:h,mimeType:x="application/json"}=i,v={url:l,description:h,mimeType:x},I=await w(i);return{x402Version:2,resource:v,accepts:[I],error:"Payment required"}}function R(i){return ne(i)}function c(i){return{status:402,headers:{"PAYMENT-REQUIRED":R(i)},body:{}}}async function u(i,l){if(!l){let h=await E({paymentHeader:i});l=S(h),l||(l=await O(h,{amountAtomic:_e(i)??"0",resourceUrl:""}))}return m.verifyPayment(i,l)}async function A(i,l){if(!l){let h=await E({paymentHeader:i});l=S(h),l||(l=await O(h,{amountAtomic:_e(i)??"0",resourceUrl:""}))}return m.settlePayment(i,l)}return{buildRequirements:b,encodeRequirements:R,create402Response:c,verifyPayment:u,settlePayment:A,getPaymentAccept:w,network:r,assetDecimals:a.decimals,facilitator:m}}var ot=new WeakMap;function be(e){return ot.get(e)}var ke=require("os"),Be=require("path"),Me=require("@x402/evm/batch-settlement/server");var se=require("@x402/core/server"),ve=require("@x402/core/http"),Ce=require("@x402/evm/batch-settlement/server");function we(e){let t=e.verbose?console.log.bind(console,"[batch-settlement:seller]"):()=>{},o=new se.HTTPFacilitatorClient({url:e.facilitatorUrl}),r=new Ce.BatchSettlementEvmScheme(e.payTo,{storage:e.channelStore}),n=new se.x402ResourceServer(o).register(e.network,r),a=new ve.x402HTTPResourceServer(n,{[e.route]:{accepts:{scheme:"batch-settlement",payTo:e.payTo,price:e.price,network:e.network},description:"batch-settlement protected route",mimeType:"application/json"}}),p=null;function m(){if(p)return p;let s=a.initialize();return s.catch(y=>{p===s&&(p=null),e.verbose?t("resource server initialize() failed:",y):console.error("[batch-settlement:seller] resource server initialize() failed:",y)}),p=s,s}let f=m();function d(s,y){if(s.headersSent)return;for(let[E,_]of Object.entries(y.headers))s.setHeader(E,_);s.status(y.status);let{body:S}=y;S==null?s.end():typeof S=="string"?s.send(S):s.json(S)}return{scheme:r,facilitator:o,handler:async(s,y,S)=>{try{await m();let E=s.get("host")??"",_=`${s.baseUrl??""}${s.path}`||"/",O={getHeader:A=>s.headers[A.toLowerCase()],getMethod:()=>s.method,getPath:()=>_,getUrl:()=>`${s.protocol}://${E}${s.originalUrl}`,getAcceptHeader:()=>s.headers.accept??"",getUserAgent:()=>s.headers["user-agent"]??"",getBody:()=>s.body??{},getQueryParams:()=>s.query,getQueryParam:A=>{let i=s.query[A];if(typeof i=="string"||Array.isArray(i))return i}},w=s.headers["payment-signature"]??s.headers["x-payment"],b={adapter:O,path:_,method:s.method,paymentHeader:w},R=await a.processHTTPRequest(b);if(t("processHTTPRequest ->",R.type),R.type==="no-payment-required"){S();return}if(R.type==="payment-error"){d(y,R.response);return}let c={request:b,responseBody:Buffer.alloc(0)},u=await a.processSettlement(R.paymentPayload,R.paymentRequirements,R.declaredExtensions,c);if(t("processSettlement ->",u.success?"success":`failure:${u.errorReason}`),!u.success){d(y,u.response);return}for(let[A,i]of Object.entries(u.headers))y.headersSent||y.setHeader(A,i);S()}catch(E){t("handler error:",E),y.headersSent||y.status(500).json({error:"Payment processing error"})}},ready:f}}var pe=require("viem"),Ne=6;async function le(e){let{manager:t,store:o,channelId:r}=e,n=await o.get(r),a=BigInt(n?.chargedCumulativeAmount??"0"),p=BigInt(n?.balance??"0"),m=p>a?p-a:0n,{claims:f,settle:d}=await t.claimAndSettle(),g=await t.refund([r]),s=g.find(y=>y.channel===r)??g[0];return{claimTx:f[0]?.transaction??"",settleTx:d?.transaction??"",refundTx:s?.transaction??"",settledAmount:(0,pe.formatUnits)(a,Ne),refundedAmount:(0,pe.formatUnits)(m,Ne)}}async function De(e){let t=await e.store.list(),o=[];for(let r of t)try{let n=await le({manager:e.manager,store:e.store,channelId:r.channelId});o.push({channelId:r.channelId,...n})}catch(n){o.push({channelId:r.channelId,error:n instanceof Error?n.message:String(n)})}return o}function Oe(e){let t=!1,o=async()=>{try{await e.claimAndSettle()}catch(n){e.onError?.(n)}},r=setInterval(()=>{t||o()},e.claimIntervalMs);return typeof r.unref=="function"&&r.unref(),{async stop(){t||(t=!0,clearInterval(r),await o())}}}var st="https://x402.dexter.cash",it="GET /",Ie=new Set(["eip155:8453","eip155:42161","eip155:137"]);function at(e){return e===!1?null:e===void 0||e===!0?3e5:(e.claimIntervalSecs??300)*1e3}function de(e){if(!Ie.has(e.network))throw new Error(`batch-settlement is not supported on network "${e.network}" \u2014 supported: ${[...Ie].join(", ")}`);let t=e.facilitatorUrl??st,o=e.channelStore??new Me.FileChannelStorage({directory:(0,Be.join)((0,ke.homedir)(),".dexter-x402","seller-channels")}),r=we({payTo:e.payTo,network:e.network,price:e.price,route:e.route??it,facilitatorUrl:t,channelStore:o,verbose:e.verbose}),n=r.scheme.createChannelManager(r.facilitator,e.network),a=async()=>{await n.claimAndSettle()},p=at(e.autoSettle),m=null;p!==null&&(m=Oe({claimAndSettle:a,claimIntervalMs:p,onError:s=>console.error("[batch-settlement:seller] auto-loop claim pass failed",s)}));let f=o,d=(s,y,S)=>{r.handler(s,y,S)},g=d;return g.middleware=()=>d,g.closeChannel=s=>le({manager:n,store:f,channelId:s}),g.closeAll=()=>De({manager:n,store:f}),g.stop=async()=>{m&&await m.stop()},g}async function Ue(e,t,o){let r={};for(let n of e)if(n.enrichPaymentRequiredResponse&&n.key in t)try{let a=await n.enrichPaymentRequiredResponse(t[n.key],o);a!==void 0&&(r[n.key]=a)}catch(a){console.warn(`[x402:extensions] extension "${n.key}" failed:`,a)}return Object.keys(r).length>0?r:void 0}function ct(e,t){if(typeof e=="string"||typeof e=="function")return e;if(t in e)return e[t];let r=`${t.split(":")[0]}:*`;if(r in e)return e[r];if("*"in e)return e["*"];throw new Error(`No payTo configured for network "${t}"`)}function Le(e){if(e.scheme==="batch-settlement"){let c=Array.isArray(e.network)?e.network[0]:e.network;if(!c)throw new Error('x402Middleware: scheme "batch-settlement" requires a network');let u=typeof e.payTo=="string"?e.payTo:void 0;if(!u)throw new Error('x402Middleware: scheme "batch-settlement" requires a string payTo address');return de({payTo:u,network:c,price:e.amount,facilitatorUrl:e.facilitatorUrl,route:e.batchSettlement?.route,channelStore:e.batchSettlement?.channelStore,autoSettle:e.batchSettlement?.autoSettle,verbose:e.verbose})}let{payTo:t,amount:o,asset:r,description:n,resourceUrl:a,mimeType:p,timeoutSeconds:m,verbose:f=!1,getResourceUrl:d,getAmount:g,getDescription:s,extensions:y,declarations:S}=e,E=f?console.log.bind(console,"[x402:middleware]"):()=>{},_=typeof t=="function"?t._x402Defaults:void 0,O=e.facilitatorUrl??_?.facilitatorUrl,w=e.network?Array.isArray(e.network)?e.network:[e.network]:_?.network?[_.network]:[xe],b=new Map;for(let c of w){let u=ct(t,c);if(typeof u=="function"){let A=be(u);if(A&&c!==A)throw new Error(`stripePayTo is configured for "${A}" but middleware includes network "${c}". Stripe only supports Base deposit addresses. Use a static payTo for other chains.`)}b.set(c,oe({payTo:u,network:c,asset:r,facilitatorUrl:O,defaultTimeoutSeconds:m,scheme:e.scheme}))}let R=b.get(w[0]);return async(c,u,A)=>{try{let i=c.headers["payment-signature"];if(!i){E("No payment signature, returning 402");let U=d?.(c)??a??`${c.protocol}://${c.get("host")}${c.originalUrl}`,P=g?.(c)??o,L=s?.(c)??n,ue=parseFloat(P),C=[],T=null;for(let[,H]of b)try{let ie={amountAtomic:Pe(ue,H.assetDecimals),resourceUrl:U,description:L,mimeType:p,timeoutSeconds:m},me=await H.buildRequirements(ie);C.push(...me.accepts),T||(T=me)}catch(ie){E("Failed to build requirements for a network:",ie)}if(!T||C.length===0){u.status(500).json({error:"Failed to build payment requirements"});return}if(T={...T,accepts:C},y&&y.length>0){let H=await Ue(y,S??{},{response:T,request:{method:c.method,path:(c.baseUrl??"")+(c.route?.path??c.path),params:c.params}});H&&(T={...T,extensions:H})}let Fe=R.encodeRequirements(T);u.setHeader("PAYMENT-REQUIRED",Fe),u.status(402).json({error:"Payment required",accepts:T.accepts,resource:T.resource,...T.extensions?{extensions:T.extensions}:{}});return}E("Payment signature received, verifying...");let l=R;try{let P=JSON.parse(Buffer.from(i,"base64").toString())?.accepted?.network;P&&b.has(P)&&(l=b.get(P))}catch{}let h=await l.verifyPayment(i);if(!h.isValid){if(E("Payment verification failed:",h.invalidReason),e.onVerifyFailed)try{await e.onVerifyFailed({reason:h.invalidReason,resourceUrl:`${c.protocol}://${c.get("host")}${c.originalUrl}`})}catch{}u.status(402).json({error:"Payment verification failed",reason:h.invalidReason});return}E("Payment verified, settling...");let x=await l.settlePayment(i);if(!x.success){E("Payment settlement failed:",x.errorReason),u.status(402).json({error:"Payment settlement failed",reason:x.errorReason});return}E("Payment settled:",x.transaction);let v=x.network||w[0];if(e.onSettlement)try{await e.onSettlement({transaction:x.transaction,network:v,payer:h.payer??"",resourceUrl:`${c.protocol}://${c.get("host")}${c.originalUrl}`})}catch{}c.x402={transaction:x.transaction,payer:h.payer??"",network:v};let I={success:!0,transaction:x.transaction,network:v,payer:h.payer??""};if(x.extensions&&(I.extensions=x.extensions),u.setHeader("PAYMENT-RESPONSE",ne(I)),e.sponsoredAccess&&x.extensions?.["sponsored-access"]){let U=x.extensions["sponsored-access"],P=U?.info?.recommendations??U?.recommendations;if(P&&P.length>0){if(E("Injecting sponsored-access recommendations into response"),typeof e.sponsoredAccess=="object"&&e.sponsoredAccess.onMatch)try{e.sponsoredAccess.onMatch(P,{transaction:x.transaction,network:v,payer:h.payer??""})}catch{}let L=u.json.bind(u);u.json=function(C){return typeof e.sponsoredAccess=="object"&&e.sponsoredAccess.inject?L(e.sponsoredAccess.inject(C,P)):C&&typeof C=="object"&&!Array.isArray(C)?L({_x402_sponsored:P,...C}):L(C)}}}A()}catch(i){E("Middleware error:",i),u.status(500).json({error:"Payment processing error"})}}}var pt=/^\/[a-zA-Z0-9_/:.\-~%]+$/;function He(e){if(!e||!pt.test(e))return!1;let t;try{t=decodeURIComponent(e)}catch{return!1}return!(t.includes("..")||t.includes("://"))}function X(e){return e.method==="POST"||e.method==="PUT"||e.method==="PATCH"}var lt=["GET","HEAD","DELETE"],dt=["POST","PUT","PATCH"];function qe(e,t){let o=t.pathParams!==void 0&&Object.keys(t.pathParams).length>0,r={type:"http",method:e.method};X(e)?(r.bodyType=e.bodyType,r.body=e.input??{}):e.input!==void 0&&(r.queryParams=e.input),o&&(r.pathParams=t.pathParams);let n=e.output?.example!==void 0?{type:"json",example:e.output.example}:void 0,a=X(e)?dt:lt,p={type:{type:"string",const:"http"},method:{type:"string",enum:a}};X(e)?(p.bodyType={type:"string",enum:["json","form-data","text"]},p.body={type:"object",...e.inputSchema??{}}):e.inputSchema&&(p.queryParams={type:"object",...e.inputSchema}),e.pathParamsSchema&&(p.pathParams={type:"object",...e.pathParamsSchema});let m={input:{type:"object",properties:p,required:X(e)?["type","method","bodyType","body"]:["type","method"],additionalProperties:!1}};n&&(m.output={type:"object",properties:{type:{type:"string"},example:{type:"object",...e.output?.schema??{}}},required:["type"]});let f={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:m,required:["input"]},d={info:{input:r,...n?{output:n}:{}},schema:f};return He(t.routeTemplate)&&(d.routeTemplate=t.routeTemplate),d}var ut=["GET","HEAD","DELETE","POST","PUT","PATCH"];function Ke(){return{key:"bazaar",enrichPaymentRequiredResponse:(e,t)=>{if(e==null)return;let o=e,r=(o.method??t.request.method).toUpperCase();if(!ut.includes(r))return;let n={...o,method:r};return qe(n,{pathParams:t.request.params,routeTemplate:t.request.path})}}}function $e(e){return{bazaar:e}}var We="sponsored-access";0&&(module.exports={BASE_MAINNET_NETWORK,DEXTER_FACILITATOR_URL,FacilitatorClient,SOLANA_MAINNET_NETWORK,SPONSORED_ACCESS_EXTENSION_KEY,USDC_BASE,USDC_MINT,bazaarExtension,createX402Server,declareDiscoveryExtension,resolveDefaultAsset,x402Middleware});
1
+ "use strict";var ae=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var je=Object.getOwnPropertyNames;var Xe=Object.prototype.hasOwnProperty;var Ge=(e,t)=>{for(var o in t)ae(e,o,{get:t[o],enumerable:!0})},ze=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of je(t))!Xe.call(e,n)&&n!==o&&ae(e,n,{get:()=>t[n],enumerable:!(r=Ve(t,n))||r.enumerable});return e};var Je=e=>ze(ae({},"__esModule",{value:!0}),e);var ut={};Ge(ut,{BASE_MAINNET_NETWORK:()=>k,DEXTER_FACILITATOR_URL:()=>D,FacilitatorClient:()=>M,SOLANA_MAINNET_NETWORK:()=>N,SPONSORED_ACCESS_EXTENSION_KEY:()=>We,USDC_BASE:()=>te,USDC_MINT:()=>B,bazaarExtension:()=>Ke,createX402Server:()=>oe,declareDiscoveryExtension:()=>$e,resolveDefaultAsset:()=>ce,x402Middleware:()=>Le});module.exports=Je(ut);var N="solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",fe="solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",ye="solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z";var k="eip155:8453",G="eip155:84532",z="eip155:42161",J="eip155:137",Y="eip155:10",Q="eip155:43114",Z="eip155:56",q="eip155:480",K="eip155:143",$="eip155:4663",W="eip155:1187947933",F="eip155:324705682",ee="eip155:1";var B="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";var te="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",Ye="0x55d398326f99059fF775485246999027B3197955",he="0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",Qe="0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",ge={[Z]:he,[k]:te,[G]:"0x036CbD53842c5426634e7929541eC2318f3dCF7e",[z]:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",[J]:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",[Y]:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",[Q]:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",[q]:"0x79A02482A880bCE3F13e09Da970dC34db4CD24d1",[K]:"0x754704Bc059F8C67012fEd69BC8A327a5aafb603",[$]:Qe,[W]:"0x85889c8c714505E0c94b30fcfcF64fE3Ac8FCb20",[F]:"0x2e08028E3C4c2356572E096d8EF835cD5C6030bD",[ee]:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},Ee={[Ye]:{symbol:"USDT",decimals:18},[he]:{symbol:"USDC",decimals:18}};var yt={[q]:{name:"USDC",version:"2"},[K]:{name:"USDC",version:"2"},[$]:{name:"Global Dollar",version:"1"},[W]:{name:"Bridged USDC (SKALE Bridge)",version:"2"},[F]:{name:"Bridged USDC (SKALE Bridge)",version:"2"}};var ht={[Z]:56,[k]:8453,[G]:84532,[z]:42161,[J]:137,[Y]:10,[Q]:43114,[q]:480,[K]:143,[$]:4663,[W]:1187947933,[F]:324705682,[ee]:1},gt={[N]:"https://api.dexter.cash/api/solana/rpc",[fe]:"https://api.devnet.solana.com",[ye]:"https://api.testnet.solana.com"},Ze={[Z]:"https://api.dexter.cash/api/evm/bsc/rpc",[k]:"https://api.dexter.cash/api/base/rpc",[G]:"https://sepolia.base.org",[z]:"https://api.dexter.cash/api/evm/arbitrum/rpc",[J]:"https://api.dexter.cash/api/evm/polygon/rpc",[Y]:"https://api.dexter.cash/api/evm/optimism/rpc",[Q]:"https://api.dexter.cash/api/evm/avalanche/rpc",[q]:"https://worldchain-mainnet.g.alchemy.com/public",[K]:"https://rpc.monad.xyz",[$]:"https://rpc.mainnet.chain.robinhood.com",[W]:"https://skale-base.skalenodes.com/v1/base",[F]:"https://base-sepolia-testnet.skalenodes.com/v1/jubilant-horrible-ancha",[ee]:"https://eth.llamarpc.com"},D="https://x402.dexter.cash",xe=N;var Se="dexter-tab-hosted-pay-before-delivery/v1",Re="pay_before_delivery_seller_2xx",Ae="x-tab-voucher",Te="base64(188-byte sessionRegisterMessage)";function Pe(e,t){if(!Number.isFinite(e))throw new Error(`toAtomicUnits: amount must be finite, got ${e}`);if(e<0)throw new Error(`toAtomicUnits: amount must be non-negative, got ${e}`);if(!Number.isInteger(t)||t<0)throw new Error(`toAtomicUnits: decimals must be a non-negative integer, got ${t}`);let o=et(Math.abs(e)),[r,n=""]=o.split("."),a=n.slice(0,t).padEnd(t,"0");return BigInt(r+a).toString()}function et(e){let t=e.toString();if(!/[eE]/.test(t))return t;let[o,r]=t.split(/[eE]/),n=parseInt(r,10),a=o.startsWith("-"),p=a?o.slice(1):o,[u,f=""]=p.split("."),d=u+f,g=u.length+n,s;return g<=0?s="0."+"0".repeat(-g)+d:g>=d.length?s=d+"0".repeat(g-d.length):s=d.slice(0,g)+"."+d.slice(g),(a?"-":"")+s}function re(e){return e.startsWith("solana:")||e==="solana"}function tt(e){if(typeof Buffer<"u")return Buffer.from(e,"utf-8").toString("base64");let t=new TextEncoder().encode(e),o="";for(let r=0;r<t.length;r++)o+=String.fromCharCode(t[r]);return btoa(o)}function rt(e){if(typeof Buffer<"u")return Buffer.from(e,"base64").toString("utf-8");let t=atob(e),o=new Uint8Array(t.length);for(let r=0;r<t.length;r++)o[r]=t.charCodeAt(r);return new TextDecoder().decode(o)}function ne(e){return tt(JSON.stringify(e))}function V(e){return JSON.parse(rt(e))}function nt(e){if(e instanceof TypeError)return!0;if(e&&typeof e=="object"&&"status"in e){let t=e.status;return t>=500&&t<600}return!1}var j=class extends Error{status;body;constructor(t,o){super(`HTTP ${t}`),this.status=t,this.body=o}},M=class{facilitatorUrl;cachedSupported=null;cacheTime=0;CACHE_TTL_MS=6e4;timeoutMs;maxRetries;retryBaseMs;constructor(t=D,o){this.facilitatorUrl=t.replace(/\/$/,""),this.timeoutMs=o?.timeoutMs??1e4,this.maxRetries=o?.maxRetries??3,this.retryBaseMs=o?.retryBaseMs??500}async fetchWithTimeout(t,o){let r=new AbortController,n=setTimeout(()=>r.abort(),this.timeoutMs);try{return await fetch(t,{...o,signal:r.signal})}finally{clearTimeout(n)}}async fetchWithRetry(t,o){let r;for(let n=0;n<this.maxRetries;n++)try{let a=await this.fetchWithTimeout(t,o);if(!a.ok&&a.status>=500)throw new j(a.status,await a.text());return a}catch(a){if(r=a,n<this.maxRetries-1&&nt(a)){let p=this.retryBaseMs*Math.pow(2,n);await new Promise(u=>setTimeout(u,p));continue}throw a}throw r}async getSupported(){let t=Date.now();if(this.cachedSupported&&t-this.cacheTime<this.CACHE_TTL_MS)return this.cachedSupported;let o=await this.fetchWithTimeout(`${this.facilitatorUrl}/supported`);if(!o.ok)throw new Error(`Facilitator /supported returned ${o.status}`);return this.cachedSupported=await o.json(),this.cacheTime=t,this.cachedSupported}async getFeePayer(t){let r=(await this.getSupported()).kinds.find(n=>n.x402Version===2&&(n.scheme==="exact"||n.scheme==="exact-approval")&&n.network===t);if(!r)throw new Error(`Facilitator does not support network "${t}" with a recognized scheme`);return r.extra?.feePayer}async getNetworkExtra(t){return(await this.getSupported()).kinds.find(n=>n.x402Version===2&&(n.scheme==="exact"||n.scheme==="exact-approval"||n.scheme==="batch-settlement")&&n.network===t)?.extra}async verifyPayment(t,o){try{let r=V(t),n=await this.fetchWithRetry(`${this.facilitatorUrl}/verify`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:o})});return n.ok?await n.json():{isValid:!1,invalidReason:`facilitator_error_${n.status}`}}catch(r){return{isValid:!1,invalidReason:r instanceof j?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_verify_error"}}}async settlePayment(t,o){try{let r=V(t),n=await this.fetchWithRetry(`${this.facilitatorUrl}/settle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({x402Version:2,paymentPayload:r,paymentRequirements:o})});return n.ok?{...await n.json(),network:o.network}:{success:!1,network:o.network,errorReason:`facilitator_error_${n.status}`}}catch(r){let n=r instanceof j?`facilitator_error_${r.status}`:r instanceof Error&&r.name==="AbortError"?"facilitator_timeout":r instanceof Error?r.message:"unexpected_settle_error";return{success:!1,network:o.network,errorReason:n}}}};function ce(e){if(re(e))return{address:B,decimals:6};let t=ge[e];if(t){let o=Ee[t]?.decimals??6;return{address:t,decimals:o}}return{address:B,decimals:6}}function _e(e){try{let t=V(e);return t?.accepted?.amount??t?.accepted?.maxAmountRequired}catch{return}}function oe(e){let{payTo:t,facilitatorUrl:o=D,network:r=N,defaultTimeoutSeconds:n=60}=e,a=e.asset??ce(r),p=e.scheme??"exact";if(p==="tab"&&!re(r))throw new Error(`scheme 'tab' is SVM-only; got network "${r}"`);let u=new M(o),f=null,d=new Map,g=3e4,s=Date.now();function y(i){let l=(i.maxTimeoutSeconds||n)*1e3;if(d.set(i.payTo,{accept:i,expiresAt:Date.now()+l}),Date.now()-s>g){let h=Date.now();for(let[x,v]of d)v.expiresAt<h&&d.delete(x);s=h}}function S(i){let l=d.get(i);if(l){if(l.expiresAt<Date.now()){d.delete(i);return}return l.accept}}async function E(i){return typeof t=="string"?t:t(i||{})}async function _(){if(f||(f=await u.getNetworkExtra(r)),re(r)&&!f?.feePayer)throw new Error(`Facilitator does not provide feePayer for network "${r}"`);return{...f?.feePayer?{feePayer:f.feePayer}:{},decimals:f?.decimals??a.decimals,name:f?.name,version:f?.version,...p==="batch-settlement"&&f?.receiverAuthorizer?{receiverAuthorizer:f.receiverAuthorizer}:{},...p==="tab"?{voucherHeader:Ae,registrationEncoding:Te,termsVersion:Se,acceptanceRule:Re}:{}}}async function O(i,l){let{amountAtomic:h,timeoutSeconds:x=n}=l,v=await _(),I={scheme:p,network:r,amount:h,maxAmountRequired:h,asset:a.address,payTo:i,maxTimeoutSeconds:x,extra:v};return y(I),I}async function w(i){let l=await E({amountAtomic:i.amountAtomic,resourceUrl:i.resourceUrl});return O(l,i)}async function b(i){let{resourceUrl:l,description:h,mimeType:x="application/json"}=i,v={url:l,description:h,mimeType:x},I=await w(i);return{x402Version:2,resource:v,accepts:[I],error:"Payment required"}}function R(i){return ne(i)}function c(i){return{status:402,headers:{"PAYMENT-REQUIRED":R(i)},body:{}}}async function m(i,l){if(!l){let h=await E({paymentHeader:i});l=S(h),l||(l=await O(h,{amountAtomic:_e(i)??"0",resourceUrl:""}))}return u.verifyPayment(i,l)}async function A(i,l){if(!l){let h=await E({paymentHeader:i});l=S(h),l||(l=await O(h,{amountAtomic:_e(i)??"0",resourceUrl:""}))}return u.settlePayment(i,l)}return{buildRequirements:b,encodeRequirements:R,create402Response:c,verifyPayment:m,settlePayment:A,getPaymentAccept:w,network:r,assetDecimals:a.decimals,facilitator:u}}var ot=new WeakMap;function be(e){return ot.get(e)}var ke=require("os"),Be=require("path"),Me=require("@x402/evm/batch-settlement/server/file-storage");var se=require("@x402/core/server"),ve=require("@x402/core/http"),Ce=require("@x402/evm/batch-settlement/server");function we(e){let t=e.verbose?console.log.bind(console,"[batch-settlement:seller]"):()=>{},o=new se.HTTPFacilitatorClient({url:e.facilitatorUrl}),r=new Ce.BatchSettlementEvmScheme(e.payTo,{storage:e.channelStore}),n=new se.x402ResourceServer(o).register(e.network,r),a=new ve.x402HTTPResourceServer(n,{[e.route]:{accepts:{scheme:"batch-settlement",payTo:e.payTo,price:e.price,network:e.network},description:"batch-settlement protected route",mimeType:"application/json"}}),p=null;function u(){if(p)return p;let s=a.initialize();return s.catch(y=>{p===s&&(p=null),e.verbose?t("resource server initialize() failed:",y):console.error("[batch-settlement:seller] resource server initialize() failed:",y)}),p=s,s}let f=u();function d(s,y){if(s.headersSent)return;for(let[E,_]of Object.entries(y.headers))s.setHeader(E,_);s.status(y.status);let{body:S}=y;S==null?s.end():typeof S=="string"?s.send(S):s.json(S)}return{scheme:r,facilitator:o,handler:async(s,y,S)=>{try{await u();let E=s.get("host")??"",_=`${s.baseUrl??""}${s.path}`||"/",O={getHeader:A=>s.headers[A.toLowerCase()],getMethod:()=>s.method,getPath:()=>_,getUrl:()=>`${s.protocol}://${E}${s.originalUrl}`,getAcceptHeader:()=>s.headers.accept??"",getUserAgent:()=>s.headers["user-agent"]??"",getBody:()=>s.body??{},getQueryParams:()=>s.query,getQueryParam:A=>{let i=s.query[A];if(typeof i=="string"||Array.isArray(i))return i}},w=s.headers["payment-signature"]??s.headers["x-payment"],b={adapter:O,path:_,method:s.method,paymentHeader:w},R=await a.processHTTPRequest(b);if(t("processHTTPRequest ->",R.type),R.type==="no-payment-required"){S();return}if(R.type==="payment-error"){d(y,R.response);return}let c={request:b,responseBody:Buffer.alloc(0)},m=await a.processSettlement(R.paymentPayload,R.paymentRequirements,R.declaredExtensions,c);if(t("processSettlement ->",m.success?"success":`failure:${m.errorReason}`),!m.success){d(y,m.response);return}for(let[A,i]of Object.entries(m.headers))y.headersSent||y.setHeader(A,i);S()}catch(E){t("handler error:",E),y.headersSent||y.status(500).json({error:"Payment processing error"})}},ready:f}}var pe=require("viem"),Ne=6;async function le(e){let{manager:t,store:o,channelId:r}=e,n=await o.get(r),a=BigInt(n?.chargedCumulativeAmount??"0"),p=BigInt(n?.balance??"0"),u=p>a?p-a:0n,{claims:f,settle:d}=await t.claimAndSettle(),g=await t.refund([r]),s=g.find(y=>y.channel===r)??g[0];return{claimTx:f[0]?.transaction??"",settleTx:d?.transaction??"",refundTx:s?.transaction??"",settledAmount:(0,pe.formatUnits)(a,Ne),refundedAmount:(0,pe.formatUnits)(u,Ne)}}async function De(e){let t=await e.store.list(),o=[];for(let r of t)try{let n=await le({manager:e.manager,store:e.store,channelId:r.channelId});o.push({channelId:r.channelId,...n})}catch(n){o.push({channelId:r.channelId,error:n instanceof Error?n.message:String(n)})}return o}function Oe(e){let t=!1,o=async()=>{try{await e.claimAndSettle()}catch(n){e.onError?.(n)}},r=setInterval(()=>{t||o()},e.claimIntervalMs);return typeof r.unref=="function"&&r.unref(),{async stop(){t||(t=!0,clearInterval(r),await o())}}}var st="https://x402.dexter.cash",it="GET /",Ie=new Set(["eip155:8453","eip155:42161","eip155:137"]);function at(e){return e===!1?null:e===void 0||e===!0?3e5:(e.claimIntervalSecs??300)*1e3}function de(e){if(!Ie.has(e.network))throw new Error(`batch-settlement is not supported on network "${e.network}" \u2014 supported: ${[...Ie].join(", ")}`);let t=e.facilitatorUrl??st,o=e.channelStore??new Me.FileChannelStorage({directory:(0,Be.join)((0,ke.homedir)(),".dexter-x402","seller-channels")}),r=we({payTo:e.payTo,network:e.network,price:e.price,route:e.route??it,facilitatorUrl:t,channelStore:o,verbose:e.verbose}),n=r.scheme.createChannelManager(r.facilitator,e.network),a=async()=>{await n.claimAndSettle()},p=at(e.autoSettle),u=null;p!==null&&(u=Oe({claimAndSettle:a,claimIntervalMs:p,onError:s=>console.error("[batch-settlement:seller] auto-loop claim pass failed",s)}));let f=o,d=(s,y,S)=>{r.handler(s,y,S)},g=d;return g.middleware=()=>d,g.closeChannel=s=>le({manager:n,store:f,channelId:s}),g.closeAll=()=>De({manager:n,store:f}),g.stop=async()=>{u&&await u.stop()},g}async function Ue(e,t,o){let r={};for(let n of e)if(n.enrichPaymentRequiredResponse&&n.key in t)try{let a=await n.enrichPaymentRequiredResponse(t[n.key],o);a!==void 0&&(r[n.key]=a)}catch(a){console.warn(`[x402:extensions] extension "${n.key}" failed:`,a)}return Object.keys(r).length>0?r:void 0}function ct(e,t){if(typeof e=="string"||typeof e=="function")return e;if(t in e)return e[t];let r=`${t.split(":")[0]}:*`;if(r in e)return e[r];if("*"in e)return e["*"];throw new Error(`No payTo configured for network "${t}"`)}function Le(e){if(e.scheme==="batch-settlement"){let c=Array.isArray(e.network)?e.network[0]:e.network;if(!c)throw new Error('x402Middleware: scheme "batch-settlement" requires a network');let m=typeof e.payTo=="string"?e.payTo:void 0;if(!m)throw new Error('x402Middleware: scheme "batch-settlement" requires a string payTo address');return de({payTo:m,network:c,price:e.amount,facilitatorUrl:e.facilitatorUrl,route:e.batchSettlement?.route,channelStore:e.batchSettlement?.channelStore,autoSettle:e.batchSettlement?.autoSettle,verbose:e.verbose})}let{payTo:t,amount:o,asset:r,description:n,resourceUrl:a,mimeType:p,timeoutSeconds:u,verbose:f=!1,getResourceUrl:d,getAmount:g,getDescription:s,extensions:y,declarations:S}=e,E=f?console.log.bind(console,"[x402:middleware]"):()=>{},_=typeof t=="function"?t._x402Defaults:void 0,O=e.facilitatorUrl??_?.facilitatorUrl,w=e.network?Array.isArray(e.network)?e.network:[e.network]:_?.network?[_.network]:[xe],b=new Map;for(let c of w){let m=ct(t,c);if(typeof m=="function"){let A=be(m);if(A&&c!==A)throw new Error(`stripePayTo is configured for "${A}" but middleware includes network "${c}". Stripe only supports Base deposit addresses. Use a static payTo for other chains.`)}b.set(c,oe({payTo:m,network:c,asset:r,facilitatorUrl:O,defaultTimeoutSeconds:u,scheme:e.scheme}))}let R=b.get(w[0]);return async(c,m,A)=>{try{let i=c.headers["payment-signature"];if(!i){E("No payment signature, returning 402");let U=d?.(c)??a??`${c.protocol}://${c.get("host")}${c.originalUrl}`,P=g?.(c)??o,L=s?.(c)??n,me=parseFloat(P),C=[],T=null;for(let[,H]of b)try{let ie={amountAtomic:Pe(me,H.assetDecimals),resourceUrl:U,description:L,mimeType:p,timeoutSeconds:u},ue=await H.buildRequirements(ie);C.push(...ue.accepts),T||(T=ue)}catch(ie){E("Failed to build requirements for a network:",ie)}if(!T||C.length===0){m.status(500).json({error:"Failed to build payment requirements"});return}if(T={...T,accepts:C},y&&y.length>0){let H=await Ue(y,S??{},{response:T,request:{method:c.method,path:(c.baseUrl??"")+(c.route?.path??c.path),params:c.params}});H&&(T={...T,extensions:H})}let Fe=R.encodeRequirements(T);m.setHeader("PAYMENT-REQUIRED",Fe),m.status(402).json({error:"Payment required",accepts:T.accepts,resource:T.resource,...T.extensions?{extensions:T.extensions}:{}});return}E("Payment signature received, verifying...");let l=R;try{let P=JSON.parse(Buffer.from(i,"base64").toString())?.accepted?.network;P&&b.has(P)&&(l=b.get(P))}catch{}let h=await l.verifyPayment(i);if(!h.isValid){if(E("Payment verification failed:",h.invalidReason),e.onVerifyFailed)try{await e.onVerifyFailed({reason:h.invalidReason,resourceUrl:`${c.protocol}://${c.get("host")}${c.originalUrl}`})}catch{}m.status(402).json({error:"Payment verification failed",reason:h.invalidReason});return}E("Payment verified, settling...");let x=await l.settlePayment(i);if(!x.success){E("Payment settlement failed:",x.errorReason),m.status(402).json({error:"Payment settlement failed",reason:x.errorReason});return}E("Payment settled:",x.transaction);let v=x.network||w[0];if(e.onSettlement)try{await e.onSettlement({transaction:x.transaction,network:v,payer:h.payer??"",resourceUrl:`${c.protocol}://${c.get("host")}${c.originalUrl}`})}catch{}c.x402={transaction:x.transaction,payer:h.payer??"",network:v};let I={success:!0,transaction:x.transaction,network:v,payer:h.payer??""};if(x.extensions&&(I.extensions=x.extensions),m.setHeader("PAYMENT-RESPONSE",ne(I)),e.sponsoredAccess&&x.extensions?.["sponsored-access"]){let U=x.extensions["sponsored-access"],P=U?.info?.recommendations??U?.recommendations;if(P&&P.length>0){if(E("Injecting sponsored-access recommendations into response"),typeof e.sponsoredAccess=="object"&&e.sponsoredAccess.onMatch)try{e.sponsoredAccess.onMatch(P,{transaction:x.transaction,network:v,payer:h.payer??""})}catch{}let L=m.json.bind(m);m.json=function(C){return typeof e.sponsoredAccess=="object"&&e.sponsoredAccess.inject?L(e.sponsoredAccess.inject(C,P)):C&&typeof C=="object"&&!Array.isArray(C)?L({_x402_sponsored:P,...C}):L(C)}}}A()}catch(i){E("Middleware error:",i),m.status(500).json({error:"Payment processing error"})}}}var pt=/^\/[a-zA-Z0-9_/:.\-~%]+$/;function He(e){if(!e||!pt.test(e))return!1;let t;try{t=decodeURIComponent(e)}catch{return!1}return!(t.includes("..")||t.includes("://"))}function X(e){return e.method==="POST"||e.method==="PUT"||e.method==="PATCH"}var lt=["GET","HEAD","DELETE"],dt=["POST","PUT","PATCH"];function qe(e,t){let o=t.pathParams!==void 0&&Object.keys(t.pathParams).length>0,r={type:"http",method:e.method};X(e)?(r.bodyType=e.bodyType,r.body=e.input??{}):e.input!==void 0&&(r.queryParams=e.input),o&&(r.pathParams=t.pathParams);let n=e.output?.example!==void 0?{type:"json",example:e.output.example}:void 0,a=X(e)?dt:lt,p={type:{type:"string",const:"http"},method:{type:"string",enum:a}};X(e)?(p.bodyType={type:"string",enum:["json","form-data","text"]},p.body={type:"object",...e.inputSchema??{}}):e.inputSchema&&(p.queryParams={type:"object",...e.inputSchema}),e.pathParamsSchema&&(p.pathParams={type:"object",...e.pathParamsSchema});let u={input:{type:"object",properties:p,required:X(e)?["type","method","bodyType","body"]:["type","method"],additionalProperties:!1}};n&&(u.output={type:"object",properties:{type:{type:"string"},example:{type:"object",...e.output?.schema??{}}},required:["type"]});let f={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:u,required:["input"]},d={info:{input:r,...n?{output:n}:{}},schema:f};return He(t.routeTemplate)&&(d.routeTemplate=t.routeTemplate),d}var mt=["GET","HEAD","DELETE","POST","PUT","PATCH"];function Ke(){return{key:"bazaar",enrichPaymentRequiredResponse:(e,t)=>{if(e==null)return;let o=e,r=(o.method??t.request.method).toUpperCase();if(!mt.includes(r))return;let n={...o,method:r};return qe(n,{pathParams:t.request.params,routeTemplate:t.request.path})}}}function $e(e){return{bazaar:e}}var We="sponsored-access";0&&(module.exports={BASE_MAINNET_NETWORK,DEXTER_FACILITATOR_URL,FacilitatorClient,SOLANA_MAINNET_NETWORK,SPONSORED_ACCESS_EXTENSION_KEY,USDC_BASE,USDC_MINT,bazaarExtension,createX402Server,declareDiscoveryExtension,resolveDefaultAsset,x402Middleware});
@@ -1,13 +1,14 @@
1
- import { P as PaymentAccept, V as VerifyResponse, l as SettleResponse, m as PaymentRequired, n as PayToProvider } from '../types-BvQpNtFw.cjs';
2
- export { o as AccessPassClaims, h as AccessPassClientConfig, j as AccessPassInfo, k as AccessPassTier, p as PayToContext, q as PayToProviderDefaults } from '../types-BvQpNtFw.cjs';
1
+ import { P as PaymentAccept, V as VerifyResponse, S as SettleResponse, c as PaymentRequired, d as PayToProvider } from '../types-DolSK-3d.cjs';
2
+ export { e as AccessPassClaims, A as AccessPassClientConfig, a as AccessPassInfo, b as AccessPassTier, f as PayToContext, g as PayToProviderDefaults } from '../types-DolSK-3d.cjs';
3
3
  import * as _x402_evm_batch_settlement_server from '@x402/evm/batch-settlement/server';
4
4
  import { Request, RequestHandler } from 'express';
5
5
  import { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
6
  export { SPONSORED_ACCESS_EXTENSION_KEY, SponsoredAccessClientConsent, SponsoredAccessPaymentRequiredInfo, SponsoredAccessSettlementInfo, SponsoredRecommendation } from '@dexterai/x402-ads-types';
7
- import { a as BatchSettlementSeller } from '../types-JpkrtFbZ.cjs';
7
+ import { a as BatchSettlementSeller } from '../types-RauRuMb7.cjs';
8
8
  export { o as BASE_MAINNET_NETWORK, D as DEXTER_FACILITATOR_URL, p as SOLANA_MAINNET_NETWORK, q as USDC_BASE, n as USDC_MINT } from '../constants-BLvApMMl.cjs';
9
- import '../types-BbvuPNXl.cjs';
9
+ import '../types-DGVtb7cl.cjs';
10
10
  import '@x402/evm/batch-settlement/client';
11
+ import '../types-CRs5sEcb.cjs';
11
12
 
12
13
  /**
13
14
  * Facilitator Client
@@ -1,13 +1,14 @@
1
- import { P as PaymentAccept, V as VerifyResponse, l as SettleResponse, m as PaymentRequired, n as PayToProvider } from '../types-BvQpNtFw.js';
2
- export { o as AccessPassClaims, h as AccessPassClientConfig, j as AccessPassInfo, k as AccessPassTier, p as PayToContext, q as PayToProviderDefaults } from '../types-BvQpNtFw.js';
1
+ import { P as PaymentAccept, V as VerifyResponse, S as SettleResponse, c as PaymentRequired, d as PayToProvider } from '../types-DolSK-3d.js';
2
+ export { e as AccessPassClaims, A as AccessPassClientConfig, a as AccessPassInfo, b as AccessPassTier, f as PayToContext, g as PayToProviderDefaults } from '../types-DolSK-3d.js';
3
3
  import * as _x402_evm_batch_settlement_server from '@x402/evm/batch-settlement/server';
4
4
  import { Request, RequestHandler } from 'express';
5
5
  import { SponsoredRecommendation } from '@dexterai/x402-ads-types';
6
6
  export { SPONSORED_ACCESS_EXTENSION_KEY, SponsoredAccessClientConsent, SponsoredAccessPaymentRequiredInfo, SponsoredAccessSettlementInfo, SponsoredRecommendation } from '@dexterai/x402-ads-types';
7
- import { a as BatchSettlementSeller } from '../types-CkcNYx1Q.js';
7
+ import { a as BatchSettlementSeller } from '../types-C6IbRTpi.js';
8
8
  export { o as BASE_MAINNET_NETWORK, D as DEXTER_FACILITATOR_URL, p as SOLANA_MAINNET_NETWORK, q as USDC_BASE, n as USDC_MINT } from '../constants-BLvApMMl.js';
9
- import '../types-DwVhPqOZ.js';
9
+ import '../types-DjDjuUc6.js';
10
10
  import '@x402/evm/batch-settlement/client';
11
+ import '../types-C08JT9MG.js';
11
12
 
12
13
  /**
13
14
  * Facilitator Client