agentwallet-sdk 5.2.0 → 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.
- package/README.md +256 -4
- package/dist/bridge/__tests__/solana.test.js +1 -1
- package/dist/bridge/__tests__/solana.test.js.map +1 -1
- package/dist/escrow/MutualStakeEscrow.d.ts.map +1 -1
- package/dist/escrow/MutualStakeEscrow.js +3 -5
- package/dist/escrow/MutualStakeEscrow.js.map +1 -1
- package/dist/index.d.ts +48 -252
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/policy/SpendingPolicy.test.js.map +1 -1
- package/dist/swap/SwapModule.js +1 -1
- package/dist/swap/SwapModule.js.map +1 -1
- package/dist/tokens/__tests__/decimals.test.d.ts +2 -0
- package/dist/tokens/__tests__/decimals.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/decimals.test.js +107 -0
- package/dist/tokens/__tests__/decimals.test.js.map +1 -0
- package/dist/tokens/__tests__/registry.test.d.ts +2 -0
- package/dist/tokens/__tests__/registry.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/registry.test.js +191 -0
- package/dist/tokens/__tests__/registry.test.js.map +1 -0
- package/dist/tokens/__tests__/transfers.test.d.ts +2 -0
- package/dist/tokens/__tests__/transfers.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/transfers.test.js +103 -0
- package/dist/tokens/__tests__/transfers.test.js.map +1 -0
- package/dist/tokens/decimals.d.ts +65 -0
- package/dist/tokens/decimals.d.ts.map +1 -0
- package/dist/tokens/decimals.js +112 -0
- package/dist/tokens/decimals.js.map +1 -0
- package/dist/tokens/index.d.ts +14 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +14 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/registry.d.ts +82 -0
- package/dist/tokens/registry.d.ts.map +1 -0
- package/dist/tokens/registry.js +293 -0
- package/dist/tokens/registry.js.map +1 -0
- package/dist/tokens/solana.d.ts +108 -0
- package/dist/tokens/solana.d.ts.map +1 -0
- package/dist/tokens/solana.js +306 -0
- package/dist/tokens/solana.js.map +1 -0
- package/dist/tokens/transfers.d.ts +95 -0
- package/dist/tokens/transfers.d.ts.map +1 -0
- package/dist/tokens/transfers.js +196 -0
- package/dist/tokens/transfers.js.map +1 -0
- package/dist/x402/chains/abstract/index.d.ts.map +1 -1
- package/dist/x402/chains/abstract/index.js.map +1 -1
- package/dist/x402/chains/stellar/index.d.ts.map +1 -1
- package/dist/x402/chains/stellar/index.js +2 -0
- package/dist/x402/chains/stellar/index.js.map +1 -1
- package/dist/x402/client.d.ts +7 -1
- package/dist/x402/client.d.ts.map +1 -1
- package/dist/x402/client.js +24 -13
- package/dist/x402/client.js.map +1 -1
- package/dist/x402/index.d.ts +1 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +2 -0
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/middleware.d.ts.map +1 -1
- package/dist/x402/middleware.js +0 -3
- package/dist/x402/middleware.js.map +1 -1
- package/dist/x402/multi-asset.d.ts +54 -0
- package/dist/x402/multi-asset.d.ts.map +1 -0
- package/dist/x402/multi-asset.js +123 -0
- package/dist/x402/multi-asset.js.map +1 -0
- package/package.json +7 -3
- package/dist/plugins/elizaos.d.ts +0 -52
- package/dist/plugins/elizaos.d.ts.map +0 -1
- package/dist/plugins/elizaos.js +0 -89
- package/dist/plugins/elizaos.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
|
@@ -98,8 +98,10 @@ export class StellarX402Adapter {
|
|
|
98
98
|
* Returns the XDR-encoded transaction envelope for signing and submission.
|
|
99
99
|
*/
|
|
100
100
|
async buildPaymentTransaction(request) {
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
102
|
let StellarSdk;
|
|
102
103
|
try {
|
|
104
|
+
// @ts-expect-error — @stellar/stellar-sdk is an optional peer dependency
|
|
103
105
|
StellarSdk = await import('@stellar/stellar-sdk');
|
|
104
106
|
}
|
|
105
107
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/x402/chains/stellar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE;QACN,UAAU,EAAE,6BAA6B;QACzC,iBAAiB,EAAE,gDAAgD;QACnE,OAAO,EAAE,gBAAgB;KAC1B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,qCAAqC;QACjD,iBAAiB,EAAE,mCAAmC;QACtD,OAAO,EAAE,iBAAiB;KAC3B;CACO,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,0DAA0D;KACnE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,0DAA0D;KACnE;CACO,CAAC;AAuCX,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YAAY,SAA+B,EAAE;QAC3C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAA+B;QAM/C,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,OAAO,CAAC,uBAAuB,CAAC,IAAI,OAAO,CAAC,uBAAuB,CAAC;YACjF,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAClE,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC;SACzE,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,uBAAuB,CAAC,OAA8B;QAC1D,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/x402/chains/stellar/index.ts"],"names":[],"mappings":"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"}
|
package/dist/x402/client.d.ts
CHANGED
|
@@ -26,11 +26,17 @@ export declare class X402Client {
|
|
|
26
26
|
parse402Response(response: Response): Promise<X402PaymentRequired | null>;
|
|
27
27
|
/**
|
|
28
28
|
* Select the best compatible payment option from offered requirements.
|
|
29
|
-
* Prefers: Base network,
|
|
29
|
+
* Prefers: Base network, stablecoins, exact scheme.
|
|
30
|
+
*
|
|
31
|
+
* v6 change: resolves assets via TokenRegistry in addition to USDC_ADDRESSES.
|
|
32
|
+
* Now accepts any ERC-20 whose address is in the TokenRegistry for the network.
|
|
30
33
|
*/
|
|
31
34
|
selectPaymentOption(accepts: X402PaymentRequirements[]): X402PaymentRequirements | null;
|
|
32
35
|
/**
|
|
33
36
|
* Execute the payment via AgentWallet's agentTransferToken.
|
|
37
|
+
*
|
|
38
|
+
* v6 change: resolves asset address via TokenRegistry before executing.
|
|
39
|
+
* The 402 response may specify an asset by symbol ("USDC") or by address.
|
|
34
40
|
*/
|
|
35
41
|
private executePayment;
|
|
36
42
|
/** Get the budget tracker for direct inspection */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EAEvB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;;;;;;;GASG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,iBAAiB,CAAc;gBAE3B,MAAM,EAAE,GAAG,EAAE,MAAM,GAAE,gBAAqB;IAYtD;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmFrE;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA2B/E;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,EAAE,GAAG,uBAAuB,GAAG,IAAI;IA2BvF;;;;;OAKG;YACW,cAAc;IAwC5B,mDAAmD;IACnD,IAAI,aAAa,IAAI,iBAAiB,CAErC;IAED,0BAA0B;IAC1B,iBAAiB,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,EAAE;IAItF,8BAA8B;IAC9B,oBAAoB;;;;;CAGrB;AAID,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,mBAAmB,EAAE,uBAAuB;gBAD5D,OAAO,EAAE,MAAM,EACC,mBAAmB,EAAE,uBAAuB;CAK/D;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAE9B,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,MAAM;aACX,mBAAmB,EAAE,uBAAuB;gBAF5C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,mBAAmB,EAAE,uBAAuB;CAK/D"}
|
package/dist/x402/client.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { USDC_ADDRESSES, DEFAULT_SUPPORTED_NETWORKS } from './types.js';
|
|
1
|
+
import { DEFAULT_SUPPORTED_NETWORKS } from './types.js';
|
|
3
2
|
import { X402BudgetTracker } from './budget.js';
|
|
4
3
|
import { agentTransferToken, checkBudget } from '../index.js';
|
|
5
|
-
|
|
6
|
-
const ERC20_TRANSFER_ABI = parseAbi([
|
|
7
|
-
'function transfer(address to, uint256 amount) returns (bool)',
|
|
8
|
-
]);
|
|
4
|
+
import { resolveAssetAddress } from './multi-asset.js';
|
|
9
5
|
/**
|
|
10
6
|
* [MAX-ADDED] x402 Payment Client for AgentWallet.
|
|
11
7
|
*
|
|
@@ -131,16 +127,23 @@ export class X402Client {
|
|
|
131
127
|
}
|
|
132
128
|
/**
|
|
133
129
|
* Select the best compatible payment option from offered requirements.
|
|
134
|
-
* Prefers: Base network,
|
|
130
|
+
* Prefers: Base network, stablecoins, exact scheme.
|
|
131
|
+
*
|
|
132
|
+
* v6 change: resolves assets via TokenRegistry in addition to USDC_ADDRESSES.
|
|
133
|
+
* Now accepts any ERC-20 whose address is in the TokenRegistry for the network.
|
|
135
134
|
*/
|
|
136
135
|
selectPaymentOption(accepts) {
|
|
137
|
-
// Filter to supported networks and
|
|
136
|
+
// Filter to supported networks and resolvable assets
|
|
138
137
|
const compatible = accepts.filter(req => {
|
|
139
138
|
if (!this.supportedNetworks.has(req.network))
|
|
140
139
|
return false;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
140
|
+
// Config override: explicit supportedAssets list
|
|
141
|
+
if (this.config.supportedAssets?.[req.network]) {
|
|
142
|
+
return this.config.supportedAssets[req.network].some(a => a.toLowerCase() === req.asset.toLowerCase());
|
|
143
|
+
}
|
|
144
|
+
// v6: resolve via TokenRegistry — accept any known ERC-20 on this network
|
|
145
|
+
const resolved = resolveAssetAddress(req.asset, req.network);
|
|
146
|
+
return resolved != null;
|
|
144
147
|
});
|
|
145
148
|
if (compatible.length === 0)
|
|
146
149
|
return null;
|
|
@@ -152,10 +155,18 @@ export class X402Client {
|
|
|
152
155
|
}
|
|
153
156
|
/**
|
|
154
157
|
* Execute the payment via AgentWallet's agentTransferToken.
|
|
158
|
+
*
|
|
159
|
+
* v6 change: resolves asset address via TokenRegistry before executing.
|
|
160
|
+
* The 402 response may specify an asset by symbol ("USDC") or by address.
|
|
155
161
|
*/
|
|
156
162
|
async executePayment(req) {
|
|
163
|
+
// Resolve the actual contract address for the requested asset
|
|
164
|
+
const resolvedAddress = resolveAssetAddress(req.asset, req.network);
|
|
165
|
+
if (!resolvedAddress) {
|
|
166
|
+
throw new X402PaymentError(`Cannot resolve asset "${req.asset}" on network "${req.network}" to a contract address`, req);
|
|
167
|
+
}
|
|
157
168
|
// First check on-chain budget
|
|
158
|
-
const onChainBudget = await checkBudget(this.wallet,
|
|
169
|
+
const onChainBudget = await checkBudget(this.wallet, resolvedAddress);
|
|
159
170
|
const amount = BigInt(req.amount);
|
|
160
171
|
if (amount > onChainBudget.perTxLimit) {
|
|
161
172
|
throw new X402PaymentError(`Amount ${amount} exceeds on-chain per-tx limit ${onChainBudget.perTxLimit}`, req);
|
|
@@ -165,7 +176,7 @@ export class X402Client {
|
|
|
165
176
|
}
|
|
166
177
|
// Execute the ERC20 transfer via AgentWallet
|
|
167
178
|
const txHash = await agentTransferToken(this.wallet, {
|
|
168
|
-
token:
|
|
179
|
+
token: resolvedAddress,
|
|
169
180
|
to: req.payTo,
|
|
170
181
|
amount,
|
|
171
182
|
});
|
package/dist/x402/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/x402/client.ts"],"names":[],"mappings":"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"}
|
package/dist/x402/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { X402BudgetTracker } from './budget.js';
|
|
|
3
3
|
export { createX402Client, createX402Fetch, wrapWithX402 } from './middleware.js';
|
|
4
4
|
export type { X402PaymentRequired, X402PaymentRequirements, X402PaymentPayload, X402SettlementResponse, X402ResourceInfo, X402ServiceBudget, X402TransactionLog, X402ClientConfig, } from './types.js';
|
|
5
5
|
export { USDC_ADDRESSES, DEFAULT_SUPPORTED_NETWORKS } from './types.js';
|
|
6
|
+
export { resolveAssetAddress, resolveAssetDecimals, buildSupportedAssets, isStablecoin, parseNetworkChainId, } from './multi-asset.js';
|
|
6
7
|
export { AbstractDelegatedFacilitatorAdapter, ABSTRACT_CHAIN_IDS, ABSTRACT_USDC, ABSTRACT_APPROVED_FACILITATORS, ABSTRACT_SUPPORTED_CHAINS, } from './chains/abstract/index.js';
|
|
7
8
|
export type { AbstractDelegatedPaymentConfig, DelegatedPaymentPermit, AbstractPaymentResult, } from './chains/abstract/index.js';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/x402/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAGxE,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAGxE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,8BAA8B,EAC9B,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
|
package/dist/x402/index.js
CHANGED
|
@@ -3,6 +3,8 @@ export { X402Client, X402PaymentError, X402BudgetExceededError } from './client.
|
|
|
3
3
|
export { X402BudgetTracker } from './budget.js';
|
|
4
4
|
export { createX402Client, createX402Fetch, wrapWithX402 } from './middleware.js';
|
|
5
5
|
export { USDC_ADDRESSES, DEFAULT_SUPPORTED_NETWORKS } from './types.js';
|
|
6
|
+
// v6: Multi-asset resolution utilities
|
|
7
|
+
export { resolveAssetAddress, resolveAssetDecimals, buildSupportedAssets, isStablecoin, parseNetworkChainId, } from './multi-asset.js';
|
|
6
8
|
// ─── Chain-Specific Adapters ──────────────────────────────────────────────────
|
|
7
9
|
export { AbstractDelegatedFacilitatorAdapter, ABSTRACT_CHAIN_IDS, ABSTRACT_USDC, ABSTRACT_APPROVED_FACILITATORS, ABSTRACT_SUPPORTED_CHAINS, } from './chains/abstract/index.js';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
package/dist/x402/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAWlF,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExE,iFAAiF;AACjF,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x402/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAWlF,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExE,uCAAuC;AACvC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iFAAiF;AACjF,OAAO,EACL,mCAAmC,EACnC,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/x402/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAEnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,GAAG,EACX,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,UAAU,CAAC,KAAK,CAMzB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,MAAM,EAAE,GAAG,EACX,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,UAAU,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/x402/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAEnF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,GAAG,EACX,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,UAAU,CAAC,KAAK,CAMzB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,EAChC,MAAM,EAAE,GAAG,EACX,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,UAAU,CAAC,KAAK,CAqBzB"}
|
package/dist/x402/middleware.js
CHANGED
|
@@ -41,9 +41,6 @@ export function createX402Fetch(wallet, config) {
|
|
|
41
41
|
* @param config - Optional x402 client configuration
|
|
42
42
|
*/
|
|
43
43
|
export function wrapWithX402(fetchFn, wallet, config) {
|
|
44
|
-
const client = new X402Client(wallet, config);
|
|
45
|
-
// Override the global fetch used by X402Client
|
|
46
|
-
const originalGlobalFetch = globalThis.fetch;
|
|
47
44
|
const wrappedClient = new X402Client(wallet, config);
|
|
48
45
|
return async (input, init) => {
|
|
49
46
|
const url = input instanceof Request ? input.url : input.toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/x402/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,MAAyB;IACrE,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAW,EACX,MAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,KAA6B,EAAE,IAAkB,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgC,EAChC,MAAW,EACX,MAAyB;IAEzB,MAAM,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/x402/middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,MAAyB;IACrE,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAW,EACX,MAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,KAA6B,EAAE,IAAkB,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgC,EAChC,MAAW,EACX,MAAyB;IAEzB,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErD,OAAO,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE;QACjE,MAAM,GAAG,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE5C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,sCAAsC;QACtC,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe;YAAE,OAAO,QAAQ,CAAC;QAEtC,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE/B,kEAAkE;QAClE,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module x402/multi-asset
|
|
3
|
+
* Multi-asset support utilities for the x402 payment client.
|
|
4
|
+
*
|
|
5
|
+
* Resolves asset names/symbols → token addresses via the global TokenRegistry.
|
|
6
|
+
* This extends x402 beyond USDC-only to support any token the 402 response requests.
|
|
7
|
+
*
|
|
8
|
+
* All address lookups use the TokenRegistry from src/tokens/registry.ts.
|
|
9
|
+
* Fallback: USDC_ADDRESSES from x402/types.ts.
|
|
10
|
+
*/
|
|
11
|
+
import type { Address } from 'viem';
|
|
12
|
+
/**
|
|
13
|
+
* Network string format used in x402: "chainName:chainId" (e.g. "base:8453").
|
|
14
|
+
* Returns the chainId portion as a number.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseNetworkChainId(network: string): number | null;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve an asset address in the context of a 402 response.
|
|
19
|
+
* The asset field may be:
|
|
20
|
+
* 1. A token symbol ("USDC", "WETH", etc.) → look up in registry by symbol
|
|
21
|
+
* 2. A hex contract address → look up in registry by address (must be registered)
|
|
22
|
+
*
|
|
23
|
+
* Only returns an address if the asset is known in the TokenRegistry.
|
|
24
|
+
* Unknown addresses are NOT accepted — they must be explicitly added or
|
|
25
|
+
* whitelisted via supportedAssets config.
|
|
26
|
+
*
|
|
27
|
+
* @param asset - Asset identifier from the 402 response
|
|
28
|
+
* @param network - Network string from the 402 response (e.g. "base:8453")
|
|
29
|
+
* @returns Resolved contract address, or null if not found in registry
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveAssetAddress(asset: string, network: string): Address | null;
|
|
32
|
+
/**
|
|
33
|
+
* Get token decimals for a given asset+network pair.
|
|
34
|
+
* Used to correctly format amounts in x402 payments.
|
|
35
|
+
*
|
|
36
|
+
* @param asset - Asset address (hex) or symbol
|
|
37
|
+
* @param network - Network string (e.g. "base:8453")
|
|
38
|
+
* @returns Decimals, defaults to 6 for USDC-like stable, 18 for everything else
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveAssetDecimals(asset: string, network: string): number;
|
|
41
|
+
/**
|
|
42
|
+
* Build a set of accepted payment assets for an x402 client, using the
|
|
43
|
+
* global registry to auto-populate known tokens per network.
|
|
44
|
+
*
|
|
45
|
+
* @param networks - List of network strings (e.g. ["base:8453", "arbitrum:42161"])
|
|
46
|
+
* @param symbols - Token symbols to include (e.g. ["USDC", "USDT", "WETH"])
|
|
47
|
+
* @returns Map from network string → array of token addresses
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildSupportedAssets(networks: string[], symbols?: string[]): Record<string, Address[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Check if a given asset address is a known stablecoin (6 decimals) on the network.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isStablecoin(asset: string, network: string): boolean;
|
|
54
|
+
//# sourceMappingURL=multi-asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-asset.d.ts","sourceRoot":"","sources":["../../src/x402/multi-asset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAkBlF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAmB3E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,MAAM,EAAoC,GAClD,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CA6B3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGpE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module x402/multi-asset
|
|
3
|
+
* Multi-asset support utilities for the x402 payment client.
|
|
4
|
+
*
|
|
5
|
+
* Resolves asset names/symbols → token addresses via the global TokenRegistry.
|
|
6
|
+
* This extends x402 beyond USDC-only to support any token the 402 response requests.
|
|
7
|
+
*
|
|
8
|
+
* All address lookups use the TokenRegistry from src/tokens/registry.ts.
|
|
9
|
+
* Fallback: USDC_ADDRESSES from x402/types.ts.
|
|
10
|
+
*/
|
|
11
|
+
import { getGlobalRegistry } from '../tokens/registry.js';
|
|
12
|
+
import { USDC_ADDRESSES } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Network string format used in x402: "chainName:chainId" (e.g. "base:8453").
|
|
15
|
+
* Returns the chainId portion as a number.
|
|
16
|
+
*/
|
|
17
|
+
export function parseNetworkChainId(network) {
|
|
18
|
+
const parts = network.split(':');
|
|
19
|
+
if (parts.length < 2)
|
|
20
|
+
return null;
|
|
21
|
+
const id = parseInt(parts[parts.length - 1], 10);
|
|
22
|
+
return isNaN(id) ? null : id;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Resolve an asset address in the context of a 402 response.
|
|
26
|
+
* The asset field may be:
|
|
27
|
+
* 1. A token symbol ("USDC", "WETH", etc.) → look up in registry by symbol
|
|
28
|
+
* 2. A hex contract address → look up in registry by address (must be registered)
|
|
29
|
+
*
|
|
30
|
+
* Only returns an address if the asset is known in the TokenRegistry.
|
|
31
|
+
* Unknown addresses are NOT accepted — they must be explicitly added or
|
|
32
|
+
* whitelisted via supportedAssets config.
|
|
33
|
+
*
|
|
34
|
+
* @param asset - Asset identifier from the 402 response
|
|
35
|
+
* @param network - Network string from the 402 response (e.g. "base:8453")
|
|
36
|
+
* @returns Resolved contract address, or null if not found in registry
|
|
37
|
+
*/
|
|
38
|
+
export function resolveAssetAddress(asset, network) {
|
|
39
|
+
const chainId = parseNetworkChainId(network);
|
|
40
|
+
if (chainId == null)
|
|
41
|
+
return null;
|
|
42
|
+
const registry = getGlobalRegistry();
|
|
43
|
+
// If it looks like an EVM address, check registry by address
|
|
44
|
+
if (/^0x[0-9a-fA-F]{40}$/.test(asset)) {
|
|
45
|
+
const entry = registry.getTokenByAddress(asset, chainId);
|
|
46
|
+
if (entry)
|
|
47
|
+
return entry.address;
|
|
48
|
+
return null; // unknown address — reject for safety
|
|
49
|
+
}
|
|
50
|
+
// Try registry lookup by symbol (e.g. "USDC", "WETH")
|
|
51
|
+
const entry = registry.getToken(asset.toUpperCase(), chainId);
|
|
52
|
+
if (entry)
|
|
53
|
+
return entry.address;
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get token decimals for a given asset+network pair.
|
|
58
|
+
* Used to correctly format amounts in x402 payments.
|
|
59
|
+
*
|
|
60
|
+
* @param asset - Asset address (hex) or symbol
|
|
61
|
+
* @param network - Network string (e.g. "base:8453")
|
|
62
|
+
* @returns Decimals, defaults to 6 for USDC-like stable, 18 for everything else
|
|
63
|
+
*/
|
|
64
|
+
export function resolveAssetDecimals(asset, network) {
|
|
65
|
+
const chainId = parseNetworkChainId(network);
|
|
66
|
+
if (chainId == null)
|
|
67
|
+
return 6;
|
|
68
|
+
const registry = getGlobalRegistry();
|
|
69
|
+
// Try by address first
|
|
70
|
+
if (/^0x[0-9a-fA-F]{40}$/.test(asset)) {
|
|
71
|
+
const entry = registry.getTokenByAddress(asset, chainId);
|
|
72
|
+
if (entry)
|
|
73
|
+
return entry.decimals;
|
|
74
|
+
// Unknown token — default to 18
|
|
75
|
+
return 18;
|
|
76
|
+
}
|
|
77
|
+
// Try by symbol
|
|
78
|
+
const entry = registry.getToken(asset.toUpperCase(), chainId);
|
|
79
|
+
if (entry)
|
|
80
|
+
return entry.decimals;
|
|
81
|
+
return 18;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Build a set of accepted payment assets for an x402 client, using the
|
|
85
|
+
* global registry to auto-populate known tokens per network.
|
|
86
|
+
*
|
|
87
|
+
* @param networks - List of network strings (e.g. ["base:8453", "arbitrum:42161"])
|
|
88
|
+
* @param symbols - Token symbols to include (e.g. ["USDC", "USDT", "WETH"])
|
|
89
|
+
* @returns Map from network string → array of token addresses
|
|
90
|
+
*/
|
|
91
|
+
export function buildSupportedAssets(networks, symbols = ['USDC', 'USDT', 'DAI', 'WETH']) {
|
|
92
|
+
const result = {};
|
|
93
|
+
const registry = getGlobalRegistry();
|
|
94
|
+
for (const network of networks) {
|
|
95
|
+
const chainId = parseNetworkChainId(network);
|
|
96
|
+
if (chainId == null)
|
|
97
|
+
continue;
|
|
98
|
+
const addrs = [];
|
|
99
|
+
for (const symbol of symbols) {
|
|
100
|
+
const entry = registry.getToken(symbol, chainId);
|
|
101
|
+
if (entry && !entry.isNative) {
|
|
102
|
+
addrs.push(entry.address);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Always include USDC from the existing USDC_ADDRESSES table as fallback
|
|
106
|
+
const usdcFallback = USDC_ADDRESSES[network];
|
|
107
|
+
if (usdcFallback && !addrs.some(a => a.toLowerCase() === usdcFallback.toLowerCase())) {
|
|
108
|
+
addrs.push(usdcFallback);
|
|
109
|
+
}
|
|
110
|
+
if (addrs.length > 0) {
|
|
111
|
+
result[network] = addrs;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Check if a given asset address is a known stablecoin (6 decimals) on the network.
|
|
118
|
+
*/
|
|
119
|
+
export function isStablecoin(asset, network) {
|
|
120
|
+
const decimals = resolveAssetDecimals(asset, network);
|
|
121
|
+
return decimals === 6;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=multi-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-asset.js","sourceRoot":"","sources":["../../src/x402/multi-asset.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentwallet-sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Non-custodial AI agent wallet SDK.
|
|
3
|
+
"version": "6.0.0",
|
|
4
|
+
"description": "Non-custodial AI agent wallet SDK. Full multi-chain, multi-token support with TokenRegistry, ERC-20/native transfers, Solana SPL, multi-asset x402 payments, ERC-8004 identity & reputation, mutual stake escrow, CCTP bridging, 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": [
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"clean": "rm -rf dist",
|
|
14
14
|
"test": "vitest run",
|
|
15
15
|
"deploy": "wrangler deploy",
|
|
16
|
-
"preview": "wrangler dev"
|
|
16
|
+
"preview": "wrangler dev",
|
|
17
|
+
"lint": "eslint src/"
|
|
17
18
|
},
|
|
18
19
|
"keywords": [
|
|
19
20
|
"agent-wallet",
|
|
@@ -55,6 +56,9 @@
|
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@elizaos/core": "^1.5.4",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^8.57.1",
|
|
60
|
+
"@typescript-eslint/parser": "^8.57.1",
|
|
61
|
+
"eslint": "^10.1.0",
|
|
58
62
|
"typescript": "5.3.3",
|
|
59
63
|
"vitest": "4.0.18",
|
|
60
64
|
"wrangler": "^4.72.0"
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @elizaos/plugin-agentwallet
|
|
3
|
-
*
|
|
4
|
-
* ElizaOS plugin for agentwallet-sdk — non-custodial AI agent wallet with
|
|
5
|
-
* x402 payment support, CCTP V2 cross-chain transfers, and on-chain spend limits.
|
|
6
|
-
*
|
|
7
|
-
* Your agent holds its own private key. No custodian. No KYC.
|
|
8
|
-
*/
|
|
9
|
-
import type { Plugin } from '@elizaos/core';
|
|
10
|
-
import { createWallet } from '../index.js';
|
|
11
|
-
type AgentWallet = ReturnType<typeof createWallet>;
|
|
12
|
-
export interface AgentWalletPluginConfig {
|
|
13
|
-
/** Agent private key — stays in your environment, never transmitted */
|
|
14
|
-
privateKey: `0x${string}`;
|
|
15
|
-
/** Deployed AgentAccountV2 contract address */
|
|
16
|
-
accountAddress: `0x${string}`;
|
|
17
|
-
/** Chain to connect to (default: 'base') */
|
|
18
|
-
chain?: 'base' | 'base-sepolia' | 'ethereum' | 'arbitrum' | 'polygon' | 'etherlink';
|
|
19
|
-
/** Optional custom RPC URL */
|
|
20
|
-
rpcUrl?: string;
|
|
21
|
-
/** Optional daily x402 spend limit in USDC base units (default: 50 USDC = 50_000_000n) */
|
|
22
|
-
x402DailyLimit?: bigint;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get or create the agent wallet singleton.
|
|
26
|
-
*/
|
|
27
|
-
export declare function getAgentWallet(config: AgentWalletPluginConfig): AgentWallet;
|
|
28
|
-
/**
|
|
29
|
-
* Create an x402-enabled fetch function for the agent to pay APIs automatically.
|
|
30
|
-
*/
|
|
31
|
-
export declare function createAgentFetch(config: AgentWalletPluginConfig): typeof fetch;
|
|
32
|
-
/**
|
|
33
|
-
* ElizaOS Plugin definition for agentwallet-sdk.
|
|
34
|
-
*
|
|
35
|
-
* Usage in your Eliza character config:
|
|
36
|
-
*
|
|
37
|
-
* ```json
|
|
38
|
-
* {
|
|
39
|
-
* "plugins": ["@elizaos/plugin-agentwallet"],
|
|
40
|
-
* "settings": {
|
|
41
|
-
* "AGENT_PRIVATE_KEY": "0x...",
|
|
42
|
-
* "AGENT_ACCOUNT_ADDRESS": "0x...",
|
|
43
|
-
* "AGENT_CHAIN": "base",
|
|
44
|
-
* "X402_DAILY_LIMIT": "50000000"
|
|
45
|
-
* }
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
declare const AgentWalletPlugin: Plugin;
|
|
50
|
-
export default AgentWalletPlugin;
|
|
51
|
-
export { AgentWalletPlugin };
|
|
52
|
-
//# sourceMappingURL=elizaos.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elizaos.d.ts","sourceRoot":"","sources":["../../src/plugins/elizaos.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,YAAY,EAGb,MAAM,aAAa,CAAC;AAGrB,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAInD,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACpF,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,CAuB3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,gBAK/D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,iBAAiB,EAAE,MAiCxB,CAAC;AAEF,eAAe,iBAAiB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/plugins/elizaos.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { createWallet, createX402Fetch, } from '../index.js';
|
|
2
|
-
import { createWalletClient, http } from 'viem';
|
|
3
|
-
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
|
-
let walletInstance = null;
|
|
5
|
-
/**
|
|
6
|
-
* Get or create the agent wallet singleton.
|
|
7
|
-
*/
|
|
8
|
-
export function getAgentWallet(config) {
|
|
9
|
-
if (!walletInstance) {
|
|
10
|
-
const account = privateKeyToAccount(config.privateKey);
|
|
11
|
-
const rpcUrls = {
|
|
12
|
-
base: 'https://mainnet.base.org',
|
|
13
|
-
'base-sepolia': 'https://sepolia.base.org',
|
|
14
|
-
ethereum: 'https://eth.llamarpc.com',
|
|
15
|
-
arbitrum: 'https://arb1.arbitrum.io/rpc',
|
|
16
|
-
polygon: 'https://polygon-rpc.com',
|
|
17
|
-
etherlink: 'https://node.mainnet.etherlink.com',
|
|
18
|
-
};
|
|
19
|
-
const chain = config.chain ?? 'base';
|
|
20
|
-
const walletClient = createWalletClient({
|
|
21
|
-
account,
|
|
22
|
-
transport: http(config.rpcUrl ?? rpcUrls[chain] ?? rpcUrls.base),
|
|
23
|
-
});
|
|
24
|
-
walletInstance = createWallet({
|
|
25
|
-
accountAddress: config.accountAddress,
|
|
26
|
-
chain,
|
|
27
|
-
walletClient,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return walletInstance;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create an x402-enabled fetch function for the agent to pay APIs automatically.
|
|
34
|
-
*/
|
|
35
|
-
export function createAgentFetch(config) {
|
|
36
|
-
const wallet = getAgentWallet(config);
|
|
37
|
-
return createX402Fetch(wallet, {
|
|
38
|
-
globalDailyLimit: config.x402DailyLimit ?? 50000000n, // 50 USDC default
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* ElizaOS Plugin definition for agentwallet-sdk.
|
|
43
|
-
*
|
|
44
|
-
* Usage in your Eliza character config:
|
|
45
|
-
*
|
|
46
|
-
* ```json
|
|
47
|
-
* {
|
|
48
|
-
* "plugins": ["@elizaos/plugin-agentwallet"],
|
|
49
|
-
* "settings": {
|
|
50
|
-
* "AGENT_PRIVATE_KEY": "0x...",
|
|
51
|
-
* "AGENT_ACCOUNT_ADDRESS": "0x...",
|
|
52
|
-
* "AGENT_CHAIN": "base",
|
|
53
|
-
* "X402_DAILY_LIMIT": "50000000"
|
|
54
|
-
* }
|
|
55
|
-
* }
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
const AgentWalletPlugin = {
|
|
59
|
-
name: '@elizaos/plugin-agentwallet',
|
|
60
|
-
description: 'Non-custodial agent wallet for ElizaOS — x402 payments, CCTP cross-chain, on-chain spend limits. Agent holds its own keys.',
|
|
61
|
-
actions: [],
|
|
62
|
-
providers: [
|
|
63
|
-
{
|
|
64
|
-
name: 'agentWallet',
|
|
65
|
-
description: 'Provides agent wallet and x402 fetch capability to the runtime',
|
|
66
|
-
async get(runtime) {
|
|
67
|
-
const privateKey = runtime.getSetting('AGENT_PRIVATE_KEY');
|
|
68
|
-
const accountAddress = runtime.getSetting('AGENT_ACCOUNT_ADDRESS');
|
|
69
|
-
const chain = (runtime.getSetting('AGENT_CHAIN') ?? 'base');
|
|
70
|
-
const dailyLimitStr = runtime.getSetting('X402_DAILY_LIMIT');
|
|
71
|
-
const x402DailyLimit = dailyLimitStr ? BigInt(dailyLimitStr) : 50000000n;
|
|
72
|
-
if (!privateKey || !accountAddress) {
|
|
73
|
-
return 'AgentWallet not configured: AGENT_PRIVATE_KEY and AGENT_ACCOUNT_ADDRESS required.';
|
|
74
|
-
}
|
|
75
|
-
const config = { privateKey, accountAddress, chain, x402DailyLimit };
|
|
76
|
-
const wallet = getAgentWallet(config);
|
|
77
|
-
const x402Fetch = createAgentFetch(config);
|
|
78
|
-
// Expose on runtime for actions to use
|
|
79
|
-
runtime.agentWallet = wallet;
|
|
80
|
-
runtime.x402Fetch = x402Fetch;
|
|
81
|
-
return `AgentWallet ready — non-custodial, keys stay local. Chain: ${chain}. x402 daily limit: ${x402DailyLimit / 1000000n} USDC.`;
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
evaluators: [],
|
|
86
|
-
};
|
|
87
|
-
export default AgentWalletPlugin;
|
|
88
|
-
export { AgentWalletPlugin };
|
|
89
|
-
//# sourceMappingURL=elizaos.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"elizaos.js","sourceRoot":"","sources":["../../src/plugins/elizaos.ts"],"names":[],"mappings":"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"}
|