agentwallet-sdk 6.0.5 → 6.2.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 (40) hide show
  1. package/README.md +201 -1
  2. package/dist/bridge/solana.d.ts.map +1 -1
  3. package/dist/bridge/types.d.ts.map +1 -1
  4. package/dist/identity/index.d.ts +2 -0
  5. package/dist/identity/index.d.ts.map +1 -1
  6. package/dist/identity/index.js +2 -0
  7. package/dist/identity/index.js.map +1 -1
  8. package/dist/identity/uaid.d.ts +193 -0
  9. package/dist/identity/uaid.d.ts.map +1 -0
  10. package/dist/identity/uaid.js +296 -0
  11. package/dist/identity/uaid.js.map +1 -0
  12. package/dist/index.d.ts +4994 -13961
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +6 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/policy/UptoBillingPolicy.d.ts +88 -0
  17. package/dist/policy/UptoBillingPolicy.d.ts.map +1 -0
  18. package/dist/policy/UptoBillingPolicy.js +183 -0
  19. package/dist/policy/UptoBillingPolicy.js.map +1 -0
  20. package/dist/policy/UptoBillingPolicy.test.d.ts +2 -0
  21. package/dist/policy/UptoBillingPolicy.test.d.ts.map +1 -0
  22. package/dist/policy/UptoBillingPolicy.test.js +102 -0
  23. package/dist/policy/UptoBillingPolicy.test.js.map +1 -0
  24. package/dist/router/PaymentRouter.d.ts +79 -0
  25. package/dist/router/PaymentRouter.d.ts.map +1 -0
  26. package/dist/router/PaymentRouter.js +144 -0
  27. package/dist/router/PaymentRouter.js.map +1 -0
  28. package/dist/router/index.d.ts +3 -0
  29. package/dist/router/index.d.ts.map +1 -0
  30. package/dist/router/index.js +2 -0
  31. package/dist/router/index.js.map +1 -0
  32. package/dist/swap/SwapModule.d.ts +2 -2
  33. package/dist/swap/SwapModule.d.ts.map +1 -1
  34. package/dist/swap/types.d.ts.map +1 -1
  35. package/dist/tokens/solana.d.ts.map +1 -1
  36. package/package.json +2 -2
  37. package/dist/x402/chains/stellar/index.d.ts +0 -149
  38. package/dist/x402/chains/stellar/index.d.ts.map +0 -1
  39. package/dist/x402/chains/stellar/index.js +0 -199
  40. package/dist/x402/chains/stellar/index.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { UptoBillingPolicy } from './UptoBillingPolicy.js';
3
+ describe('UptoBillingPolicy', () => {
4
+ it('tracks max authorization and exposes reservation ledger delta', () => {
5
+ const policy = new UptoBillingPolicy();
6
+ const auth = policy.authorize({
7
+ authorizationId: 'auth-1',
8
+ service: 'api.example.com',
9
+ resource: 'GET /inference',
10
+ network: 'base:8453',
11
+ asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
12
+ payTo: '0xabc',
13
+ maxAmount: 1000000n,
14
+ });
15
+ expect(auth.maxAmount).toBe(1000000n);
16
+ expect(auth.remainingAmount).toBe(1000000n);
17
+ expect(policy.getReservedAmount('auth-1')).toBe(1000000n);
18
+ const deltas = policy.getWalletLedgerDeltas('auth-1');
19
+ expect(deltas).toHaveLength(1);
20
+ expect(deltas[0].type).toBe('authorization');
21
+ expect(deltas[0].reservedDelta).toBe(1000000n);
22
+ expect(deltas[0].netWalletDelta).toBe(0n);
23
+ });
24
+ it('records actual settlement and wallet delta', () => {
25
+ const policy = new UptoBillingPolicy();
26
+ policy.authorize({
27
+ authorizationId: 'auth-2',
28
+ service: 'api.example.com',
29
+ network: 'base:8453',
30
+ asset: 'usdc',
31
+ payTo: '0xabc',
32
+ maxAmount: 1000000n,
33
+ });
34
+ const snapshot = policy.recordSettlement('auth-2', 420000n, {
35
+ txHash: '0xsettle',
36
+ });
37
+ expect(snapshot.authorization.settledAmount).toBe(420000n);
38
+ expect(snapshot.authorization.remainingAmount).toBe(580000n);
39
+ expect(snapshot.authorization.status).toBe('partially_settled');
40
+ expect(policy.getNetWalletDelta('auth-2')).toBe(-420000n);
41
+ const settlementDelta = snapshot.ledgerDeltas[1];
42
+ expect(settlementDelta.type).toBe('settlement');
43
+ expect(settlementDelta.reservedDelta).toBe(-420000n);
44
+ expect(settlementDelta.settledDelta).toBe(420000n);
45
+ expect(settlementDelta.netWalletDelta).toBe(-420000n);
46
+ });
47
+ it('releases unused authorization capacity on finalize', () => {
48
+ const policy = new UptoBillingPolicy();
49
+ policy.authorize({
50
+ authorizationId: 'auth-3',
51
+ service: 'api.example.com',
52
+ network: 'base:8453',
53
+ asset: 'usdc',
54
+ payTo: '0xabc',
55
+ maxAmount: 1000000n,
56
+ });
57
+ policy.recordSettlement('auth-3', 250000n, { finalize: true });
58
+ const auth = policy.getAuthorization('auth-3');
59
+ const deltas = policy.getWalletLedgerDeltas('auth-3');
60
+ expect(auth?.settledAmount).toBe(250000n);
61
+ expect(auth?.releasedAmount).toBe(750000n);
62
+ expect(auth?.remainingAmount).toBe(0n);
63
+ expect(auth?.status).toBe('settled');
64
+ expect(policy.getReservedAmount('auth-3')).toBe(0n);
65
+ expect(deltas.map((delta) => delta.type)).toEqual([
66
+ 'authorization',
67
+ 'settlement',
68
+ 'release',
69
+ ]);
70
+ });
71
+ it('rejects settlement above the authorized amount', () => {
72
+ const policy = new UptoBillingPolicy();
73
+ policy.authorize({
74
+ authorizationId: 'auth-4',
75
+ service: 'api.example.com',
76
+ network: 'base:8453',
77
+ asset: 'usdc',
78
+ payTo: '0xabc',
79
+ maxAmount: 100n,
80
+ });
81
+ expect(() => policy.recordSettlement('auth-4', 101n)).toThrow(/exceeds remaining authorized amount/i);
82
+ });
83
+ it('supports multiple settlements up to the authorized cap', () => {
84
+ const policy = new UptoBillingPolicy();
85
+ policy.authorize({
86
+ authorizationId: 'auth-5',
87
+ service: 'api.example.com',
88
+ network: 'base:8453',
89
+ asset: 'usdc',
90
+ payTo: '0xabc',
91
+ maxAmount: 1000n,
92
+ });
93
+ policy.recordSettlement('auth-5', 250n);
94
+ policy.recordSettlement('auth-5', 750n);
95
+ const auth = policy.getAuthorization('auth-5');
96
+ expect(auth?.settledAmount).toBe(1000n);
97
+ expect(auth?.remainingAmount).toBe(0n);
98
+ expect(auth?.status).toBe('settled');
99
+ expect(policy.getNetWalletDelta('auth-5')).toBe(-1000n);
100
+ });
101
+ });
102
+ //# sourceMappingURL=UptoBillingPolicy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UptoBillingPolicy.test.js","sourceRoot":"","sources":["../../src/policy/UptoBillingPolicy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * PaymentRouter — Three-rail payment architecture.
3
+ *
4
+ * Routes payments across three rails:
5
+ * 1. **x402** (crypto-native) — on-chain USDC payments via the x402 protocol. Optimal for
6
+ * micropayments, autonomous agents, and scenarios requiring on-chain audit trails.
7
+ * 2. **MPP** (Managed Payment Protocol / Stripe) — fiat-based payments with dispute resolution.
8
+ * Optimal for larger amounts, supervised agents, and high-frequency session batching.
9
+ * 3. **Google AP2** (Agent Payment Protocol) — Google's managed agent payment rail combining
10
+ * identity verification and payment in a single flow. Roadmap; activates when Google
11
+ * publishes the full AP2 spec. Settlement on Base.
12
+ *
13
+ * Routing criteria:
14
+ * - Transaction amount (micropayments → x402, high-frequency → MPP)
15
+ * - Session context (ongoing session → MPP for batching efficiency)
16
+ * - Agent autonomy level (autonomous → x402, supervised → MPP)
17
+ * - Chain/ecosystem preference (Google ecosystem → AP2, Solana → x402-solana)
18
+ * - Rail availability (live vs. roadmap)
19
+ *
20
+ * @module router/PaymentRouter
21
+ */
22
+ export type PaymentRail = 'x402' | 'mpp' | 'x402-solana' | 'google-ap2';
23
+ export type RailStatus = 'live' | 'roadmap' | 'disabled';
24
+ export interface RailConfig {
25
+ rail: PaymentRail;
26
+ status: RailStatus;
27
+ /** Maximum per-transaction amount in USDC micro-units (6 decimals) */
28
+ maxAmount?: number;
29
+ /** Minimum per-transaction amount in USDC micro-units */
30
+ minAmount?: number;
31
+ }
32
+ export interface PaymentContext {
33
+ /** Amount in USDC micro-units (6 decimals). e.g. 1_000_000 = $1.00 */
34
+ amount: number;
35
+ /** Recipient address or merchant domain */
36
+ recipient: string;
37
+ /** Whether this payment is part of an active session with repeated transactions */
38
+ isSessionContext?: boolean;
39
+ /** Number of transactions in the current session (if applicable) */
40
+ sessionTxCount?: number;
41
+ /** Whether the agent is operating autonomously (no human in loop) */
42
+ autonomous?: boolean;
43
+ /** Preferred chain, if any */
44
+ preferredChain?: 'base' | 'solana' | 'google-ap2';
45
+ }
46
+ export interface RoutingDecision {
47
+ rail: PaymentRail;
48
+ reason: string;
49
+ /** Estimated cost overhead (basis points) */
50
+ estimatedOverheadBps: number;
51
+ /** Whether this rail is currently live */
52
+ isLive: boolean;
53
+ }
54
+ export declare class PaymentRouter {
55
+ private rails;
56
+ /** Amount threshold (micro-units) below which x402 is preferred. Default: $1.00 */
57
+ private microPaymentThreshold;
58
+ /** Session tx count above which MPP is preferred for batching. Default: 5 */
59
+ private highFrequencyThreshold;
60
+ constructor(options?: {
61
+ rails?: RailConfig[];
62
+ microPaymentThreshold?: number;
63
+ highFrequencyThreshold?: number;
64
+ });
65
+ /**
66
+ * Select the optimal payment rail for a given context.
67
+ */
68
+ route(context: PaymentContext): RoutingDecision;
69
+ /**
70
+ * Get all available (live) rails.
71
+ */
72
+ getLiveRails(): RailConfig[];
73
+ /**
74
+ * Check if a specific rail is available.
75
+ */
76
+ isRailLive(rail: PaymentRail): boolean;
77
+ private getRail;
78
+ }
79
+ //# sourceMappingURL=PaymentRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentRouter.d.ts","sourceRoot":"","sources":["../../src/router/PaymentRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,YAAY,CAAC;AAExE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC;CACjB;AA+BD,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAe;IAC5B,mFAAmF;IACnF,OAAO,CAAC,qBAAqB,CAAS;IACtC,6EAA6E;IAC7E,OAAO,CAAC,sBAAsB,CAAS;gBAE3B,OAAO,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC;IAMD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe;IA8E/C;;OAEG;IACH,YAAY,IAAI,UAAU,EAAE;IAI5B;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAItC,OAAO,CAAC,OAAO;CAGhB"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * PaymentRouter — Three-rail payment architecture.
3
+ *
4
+ * Routes payments across three rails:
5
+ * 1. **x402** (crypto-native) — on-chain USDC payments via the x402 protocol. Optimal for
6
+ * micropayments, autonomous agents, and scenarios requiring on-chain audit trails.
7
+ * 2. **MPP** (Managed Payment Protocol / Stripe) — fiat-based payments with dispute resolution.
8
+ * Optimal for larger amounts, supervised agents, and high-frequency session batching.
9
+ * 3. **Google AP2** (Agent Payment Protocol) — Google's managed agent payment rail combining
10
+ * identity verification and payment in a single flow. Roadmap; activates when Google
11
+ * publishes the full AP2 spec. Settlement on Base.
12
+ *
13
+ * Routing criteria:
14
+ * - Transaction amount (micropayments → x402, high-frequency → MPP)
15
+ * - Session context (ongoing session → MPP for batching efficiency)
16
+ * - Agent autonomy level (autonomous → x402, supervised → MPP)
17
+ * - Chain/ecosystem preference (Google ecosystem → AP2, Solana → x402-solana)
18
+ * - Rail availability (live vs. roadmap)
19
+ *
20
+ * @module router/PaymentRouter
21
+ */
22
+ // ─── Default Rail Configuration ───────────────────────────────────────────────
23
+ const DEFAULT_RAILS = [
24
+ {
25
+ rail: 'x402',
26
+ status: 'live',
27
+ minAmount: 1000, // $0.001 minimum
28
+ maxAmount: 100000000, // $100 max per tx (soft limit)
29
+ },
30
+ {
31
+ rail: 'mpp',
32
+ status: 'live',
33
+ minAmount: 100000, // $0.10 minimum (Stripe floor)
34
+ maxAmount: 10000000000, // $10,000 max
35
+ },
36
+ {
37
+ rail: 'x402-solana',
38
+ status: 'roadmap',
39
+ },
40
+ {
41
+ rail: 'google-ap2',
42
+ status: 'roadmap',
43
+ minAmount: 1000, // $0.001 minimum (aligned with x402)
44
+ maxAmount: 50000000, // $50 max per tx (conservative until spec finalized)
45
+ },
46
+ ];
47
+ // ─── Router ───────────────────────────────────────────────────────────────────
48
+ export class PaymentRouter {
49
+ constructor(options) {
50
+ this.rails = options?.rails ?? DEFAULT_RAILS;
51
+ this.microPaymentThreshold = options?.microPaymentThreshold ?? 1000000; // $1.00
52
+ this.highFrequencyThreshold = options?.highFrequencyThreshold ?? 5;
53
+ }
54
+ /**
55
+ * Select the optimal payment rail for a given context.
56
+ */
57
+ route(context) {
58
+ const { amount, isSessionContext, sessionTxCount, autonomous, preferredChain } = context;
59
+ // If Google AP2 rail is live and context indicates Google ecosystem preference
60
+ // Google AP2 (Agent Payment Protocol) — Google's native agent payment rail
61
+ // Currently roadmap; will activate when Google publishes the full AP2 spec
62
+ const googleRail = this.getRail('google-ap2');
63
+ if (googleRail?.status === 'live' && preferredChain === 'base') {
64
+ // Google AP2 routes through Base for on-chain settlement
65
+ // When live, AP2 provides Google-managed identity + payment in a single flow
66
+ return {
67
+ rail: 'google-ap2',
68
+ reason: 'Google AP2 rail — managed identity + payment bundle',
69
+ estimatedOverheadBps: 100, // Estimated Google platform fee
70
+ isLive: true,
71
+ };
72
+ }
73
+ // If Solana is explicitly preferred and x402-solana is available
74
+ if (preferredChain === 'solana') {
75
+ const solanaRail = this.getRail('x402-solana');
76
+ if (solanaRail?.status === 'live') {
77
+ return {
78
+ rail: 'x402-solana',
79
+ reason: 'Preferred chain: Solana x402',
80
+ estimatedOverheadBps: 0,
81
+ isLive: true,
82
+ };
83
+ }
84
+ // Solana not yet live — fall through to other rails
85
+ }
86
+ // Rule 1: High-frequency session context → MPP (batching efficiency)
87
+ if (isSessionContext && (sessionTxCount ?? 0) >= this.highFrequencyThreshold) {
88
+ const mppRail = this.getRail('mpp');
89
+ if (mppRail?.status === 'live') {
90
+ return {
91
+ rail: 'mpp',
92
+ reason: `High-frequency session (${sessionTxCount} txns) — MPP batching is more efficient`,
93
+ estimatedOverheadBps: 290, // Stripe's ~2.9%
94
+ isLive: true,
95
+ };
96
+ }
97
+ }
98
+ // Rule 2: Micropayments + autonomous → x402 (lower overhead, no session needed)
99
+ if (amount < this.microPaymentThreshold && autonomous !== false) {
100
+ const x402Rail = this.getRail('x402');
101
+ if (x402Rail?.status === 'live') {
102
+ return {
103
+ rail: 'x402',
104
+ reason: `Micropayment ($${(amount / 1000000).toFixed(2)}) + autonomous — x402 optimal`,
105
+ estimatedOverheadBps: 0, // x402 has no protocol fee
106
+ isLive: true,
107
+ };
108
+ }
109
+ }
110
+ // Rule 3: Larger amounts or supervised → MPP (better dispute resolution, fiat rails)
111
+ const mppRail = this.getRail('mpp');
112
+ if (mppRail?.status === 'live' && amount >= (mppRail.minAmount ?? 0)) {
113
+ return {
114
+ rail: 'mpp',
115
+ reason: `Amount $${(amount / 1000000).toFixed(2)} — MPP provides fiat rails and dispute resolution`,
116
+ estimatedOverheadBps: 290,
117
+ isLive: true,
118
+ };
119
+ }
120
+ // Default: x402 on Base
121
+ return {
122
+ rail: 'x402',
123
+ reason: 'Default rail — Base x402',
124
+ estimatedOverheadBps: 0,
125
+ isLive: this.getRail('x402')?.status === 'live',
126
+ };
127
+ }
128
+ /**
129
+ * Get all available (live) rails.
130
+ */
131
+ getLiveRails() {
132
+ return this.rails.filter((r) => r.status === 'live');
133
+ }
134
+ /**
135
+ * Check if a specific rail is available.
136
+ */
137
+ isRailLive(rail) {
138
+ return this.getRail(rail)?.status === 'live';
139
+ }
140
+ getRail(rail) {
141
+ return this.rails.find((r) => r.rail === rail);
142
+ }
143
+ }
144
+ //# sourceMappingURL=PaymentRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentRouter.js","sourceRoot":"","sources":["../../src/router/PaymentRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { PaymentRouter } from './PaymentRouter';
2
+ export type { PaymentRail, RailStatus, RailConfig, PaymentContext, RoutingDecision, } from './PaymentRouter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { PaymentRouter } from './PaymentRouter';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -39,8 +39,8 @@ export declare function attachSwap(wallet: {
39
39
  chain?: SwapChain;
40
40
  }): {
41
41
  swapModule: SwapModule;
42
- swap: (tokenIn: `0x${string}`, tokenOut: `0x${string}`, amountIn: bigint, options?: SwapOptions) => Promise<SwapResult>;
43
- getQuote: (tokenIn: `0x${string}`, tokenOut: `0x${string}`, amountIn: bigint, options?: Pick<SwapOptions, "slippageBps" | "feeTiers">) => Promise<SwapQuote>;
42
+ swap: (tokenIn: Address, tokenOut: Address, amountIn: bigint, options?: SwapOptions) => Promise<SwapResult>;
43
+ getQuote: (tokenIn: Address, tokenOut: Address, amountIn: bigint, options?: Pick<SwapOptions, "slippageBps" | "feeTiers">) => Promise<SwapQuote>;
44
44
  address: Address;
45
45
  publicClient: PublicClient;
46
46
  walletClient: WalletClient;
@@ -1 +1 @@
1
- {"version":3,"file":"SwapModule.d.ts","sourceRoot":"","sources":["../../src/swap/SwapModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAMf,MAAM,YAAY,CAAC;AAIpB,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAGxC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,OAAO,EACvB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE;IAoBtD,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,UAAU,CAAM,GAC1D,OAAO,CAAC,SAAS,CAAC;IAyCf,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YAqBnF,WAAW;IAanB,IAAI,CACR,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IAuCtB,SAAS,IAAI,gBAAgB;IAI7B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGrC;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,EACpF,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE;;;;aADvC,OAAO;kBAAgB,YAAY;kBAAgB,YAAY;EAUnF"}
1
+ {"version":3,"file":"SwapModule.d.ts","sourceRoot":"","sources":["../../src/swap/SwapModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AAEd,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAMf,MAAM,YAAY,CAAC;AAIpB,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;gBAGxC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,OAAO,EACvB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE;IAoBtD,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,UAAU,CAAM,GAC1D,OAAO,CAAC,SAAS,CAAC;IAyCf,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YAqBnF,WAAW;IAanB,IAAI,CACR,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC;IAuCtB,SAAS,IAAI,gBAAgB;IAI7B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGrC;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAE,EACpF,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE;;oBAtD/C,OAAO,YACN,OAAO,YACP,MAAM,YACP,WAAW,KACnB,OAAO,CAAC,UAAU,CAAC;wBApFX,OAAO,YACN,OAAO,YACP,MAAM,YACP,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,UAAU,CAAC,KACrD,OAAO,CAAC,SAAS,CAAC;aAiIF,OAAO;kBAAgB,YAAY;kBAAgB,YAAY;EAUnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AAEtD,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;CAClB;AAID,8CAA8C;AAC9C,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,cAAc;;;;;CAK1B,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAiB3F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,8CAAwD,CAAC;AAC5F,qCAAqC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/swap/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,kCAAkC;AAClC,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AAEtD,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,EAAE,SAAS,CAAC;CAClB;AAID,8CAA8C;AAC9C,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,0CAA0C;AAC1C,eAAO,MAAM,eAAe;;;;;CAK3B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,cAAc;;;;;CAK1B,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAiB3F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAG,4CAAqD,CAAC;AAC5F,qCAAqC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/tokens/solana.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,eAAO,MAAM,aAAa;;;;;;;;;;;CA8BhB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,aAAa,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAWnE,CAAC;AA4DF,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAG5C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;gBAEjB,MAAM,GAAE,kBAAuB;YAK7B,aAAa;YAOb,UAAU;IAwBxB,gDAAgD;IAC1C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC;;;OAGG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBhE;;;;OAIG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAqC5B;;;;OAIG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6B3E;;;;;;;OAOG;IACG,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IA6D1B;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAmBjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/tokens/solana.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,eAAO,MAAM,aAAa;kBAEV,IAAI;;;;;;;;;;CA4BV,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,aAAa,CAAC;AAE3D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAWnE,CAAC;AA4DF,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAG5C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAa;gBAEjB,MAAM,GAAE,kBAAuB;YAK7B,aAAa;YAOb,UAAU;IAwBxB,gDAAgD;IAC1C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC;;;OAGG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBhE;;;;OAIG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAqC5B;;;;OAIG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6B3E;;;;;;;OAOG;IACG,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;IA6D1B;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAmBjG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentwallet-sdk",
3
- "version": "6.0.5",
4
- "description": "Non-custodial AI agent wallet SDK. ERC-8004 identity & reputation registries, mutual stake escrow, x402 payments, 17-chain CCTP bridging, ERC-6551 TBA, SpendingPolicy guardrails, Uniswap V3 swap. The agent holds the keys.",
3
+ "version": "6.2.0",
4
+ "description": "Non-custodial AI agent wallet SDK. ERC-8004 identity & reputation registries, mutual stake escrow, x402 payments, x402 upto billing policy accounting, 17-chain CCTP bridging, ERC-6551 TBA, SpendingPolicy guardrails, Uniswap V3 swap. The agent holds the keys.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
@@ -1,149 +0,0 @@
1
- /**
2
- * Stellar x402 Payment Adapter
3
- *
4
- * Implements x402 payment protocol on Stellar network.
5
- * Stellar x402 support went live March 11, 2026.
6
- *
7
- * Chain identifiers:
8
- * - Stellar Mainnet: "stellar:pubnet"
9
- * - Stellar Testnet: "stellar:testnet"
10
- *
11
- * Key differences from EVM chains:
12
- * - Uses Ed25519 keypairs (not secp256k1)
13
- * - Transaction format: Stellar XDR (not EVM tx)
14
- * - Settlement: ~5 seconds (1 ledger close)
15
- * - Fees: ~0.00001 XLM per operation (effectively free at scale)
16
- * - USDC: Circle-issued USDC on Stellar
17
- */
18
- export declare const STELLAR_NETWORK: {
19
- readonly pubnet: {
20
- readonly horizonUrl: "https://horizon.stellar.org";
21
- readonly networkPassphrase: "Public Global Stellar Network ; September 2015";
22
- readonly chainId: "stellar:pubnet";
23
- };
24
- readonly testnet: {
25
- readonly horizonUrl: "https://horizon-testnet.stellar.org";
26
- readonly networkPassphrase: "Test SDF Network ; September 2015";
27
- readonly chainId: "stellar:testnet";
28
- };
29
- };
30
- /**
31
- * Circle USDC on Stellar (Mainnet)
32
- * Asset code: USDC
33
- * Issuer: GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
34
- */
35
- export declare const STELLAR_USDC: {
36
- readonly pubnet: {
37
- readonly code: "USDC";
38
- readonly issuer: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN";
39
- };
40
- readonly testnet: {
41
- readonly code: "USDC";
42
- readonly issuer: "GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5";
43
- };
44
- };
45
- export type StellarNetwork = 'pubnet' | 'testnet';
46
- export interface StellarPaymentConfig {
47
- /** Which Stellar network to use */
48
- network?: StellarNetwork;
49
- /** x402 resource identifier (for memo) */
50
- resource?: string;
51
- /** Custom Horizon URL (overrides default) */
52
- horizonUrl?: string;
53
- }
54
- export interface StellarPaymentRequest {
55
- /** Destination Stellar account (G... address) */
56
- destination: string;
57
- /** Amount in USDC (decimal string, e.g. "0.50") */
58
- amount: string;
59
- /** Source Stellar account public key */
60
- sourcePublicKey: string;
61
- /** x402 resource path for memo */
62
- resource?: string;
63
- /** Network to use */
64
- network?: StellarNetwork;
65
- }
66
- export interface StellarPaymentResult {
67
- /** Stellar transaction hash */
68
- hash: string;
69
- /** Ledger number the transaction landed in */
70
- ledger: number;
71
- /** Successful */
72
- successful: boolean;
73
- /** Network used */
74
- network: StellarNetwork;
75
- }
76
- /**
77
- * StellarX402Adapter
78
- *
79
- * Handles x402 payment flow for Stellar network.
80
- *
81
- * Usage (with stellar-sdk):
82
- * ```typescript
83
- * import { StellarX402Adapter } from 'agentwallet-sdk/x402/stellar';
84
- * import { Keypair, Networks } from '@stellar/stellar-sdk';
85
- *
86
- * const adapter = new StellarX402Adapter({ network: 'pubnet' });
87
- * const result = await adapter.pay({
88
- * destination: 'GDESTWVX3VMLQCXPHPVLS3FMNMG2X7L5IGGQT7BQMIZXZZ4V7KBQVS',
89
- * amount: '0.50',
90
- * sourcePublicKey: keypair.publicKey(),
91
- * resource: '/api/data-endpoint',
92
- * }, keypair.secret());
93
- * ```
94
- *
95
- * Note: stellar-sdk must be installed separately:
96
- * npm install @stellar/stellar-sdk
97
- */
98
- export declare class StellarX402Adapter {
99
- private network;
100
- private horizonUrl;
101
- constructor(config?: StellarPaymentConfig);
102
- /**
103
- * Parse an x402 402 response and extract Stellar payment details.
104
- * The 402 response should include X-Payment-Chains: stellar:pubnet
105
- * and X-Payment-Amount, X-Payment-Destination headers.
106
- */
107
- parseX402Response(headers: Record<string, string>): {
108
- supported: boolean;
109
- destination?: string;
110
- amount?: string;
111
- resource?: string;
112
- };
113
- /**
114
- * Build a Stellar USDC payment transaction.
115
- *
116
- * Requires @stellar/stellar-sdk to be installed:
117
- * npm install @stellar/stellar-sdk
118
- *
119
- * Returns the XDR-encoded transaction envelope for signing and submission.
120
- */
121
- buildPaymentTransaction(request: StellarPaymentRequest): Promise<string>;
122
- /**
123
- * Submit a signed Stellar transaction to Horizon.
124
- */
125
- submitTransaction(signedXdr: string): Promise<StellarPaymentResult>;
126
- private _loadAccount;
127
- /** Chain ID for this adapter (e.g. "stellar:pubnet") */
128
- get chainId(): string;
129
- }
130
- /**
131
- * Full x402 payment flow for Stellar.
132
- * 1. Detects 402 response from API
133
- * 2. Parses Stellar payment details from headers
134
- * 3. Builds, signs, and submits Stellar USDC payment
135
- * 4. Retries the original request with payment proof
136
- *
137
- * Requires stellar-sdk: npm install @stellar/stellar-sdk
138
- */
139
- export declare function stellarX402Pay(params: {
140
- /** The 402 response headers */
141
- responseHeaders: Record<string, string>;
142
- /** Source account public key */
143
- sourcePublicKey: string;
144
- /** Signer function that takes XDR and returns signed XDR */
145
- sign: (xdr: string) => Promise<string>;
146
- /** Network to use */
147
- network?: StellarNetwork;
148
- }): Promise<StellarPaymentResult>;
149
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/x402/chains/stellar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;CAWlB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAIX,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB;IACnB,OAAO,EAAE,cAAc,CAAC;CACzB;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,GAAE,oBAAyB;IAK7C;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAClD,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAgBD;;;;;;;OAOG;IACG,uBAAuB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C9E;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;YA6B3D,YAAY;IAe1B,wDAAwD;IACxD,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAID;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,qBAAqB;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqBhC"}