@bankofai/x402 0.3.0 → 0.3.2-beta.1
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 +4 -4
- package/dist/client/policies.d.ts +13 -3
- package/dist/client/policies.d.ts.map +1 -1
- package/dist/client/policies.js +28 -4
- package/dist/client/policies.js.map +1 -1
- package/dist/client/x402Client.d.ts +7 -1
- package/dist/client/x402Client.d.ts.map +1 -1
- package/dist/client/x402Client.js +11 -1
- package/dist/client/x402Client.js.map +1 -1
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/signers/evmSigner.d.ts +8 -4
- package/dist/signers/evmSigner.d.ts.map +1 -1
- package/dist/signers/evmSigner.js +41 -34
- package/dist/signers/evmSigner.js.map +1 -1
- package/dist/signers/signer.d.ts +13 -12
- package/dist/signers/signer.d.ts.map +1 -1
- package/dist/signers/signer.js +65 -60
- package/dist/signers/signer.js.map +1 -1
- package/dist/wallet/agentWalletAdapter.d.ts +31 -0
- package/dist/wallet/agentWalletAdapter.d.ts.map +1 -0
- package/dist/wallet/agentWalletAdapter.js +46 -0
- package/dist/wallet/agentWalletAdapter.js.map +1 -0
- package/dist/wallet/evmPrivateKeyWallet.d.ts +14 -0
- package/dist/wallet/evmPrivateKeyWallet.d.ts.map +1 -0
- package/dist/wallet/evmPrivateKeyWallet.js +37 -0
- package/dist/wallet/evmPrivateKeyWallet.js.map +1 -0
- package/dist/wallet/index.d.ts +8 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +7 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/tronPrivateKeyWallet.d.ts +15 -0
- package/dist/wallet/tronPrivateKeyWallet.d.ts.map +1 -0
- package/dist/wallet/tronPrivateKeyWallet.js +49 -0
- package/dist/wallet/tronPrivateKeyWallet.js.map +1 -0
- package/dist/wallet/types.d.ts +22 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +2 -0
- package/dist/wallet/types.js.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -356,10 +356,10 @@ await signer.ensureAllowance(tokenAddress, amount, network, 'auto');
|
|
|
356
356
|
|
|
357
357
|
## Links
|
|
358
358
|
|
|
359
|
-
- **Repository**: https://github.com/
|
|
360
|
-
- **Issues**: https://github.com/
|
|
361
|
-
- **Contributing**: https://github.com/
|
|
362
|
-
- **Documentation**: https://github.com/
|
|
359
|
+
- **Repository**: https://github.com/BofAI/x402
|
|
360
|
+
- **Issues**: https://github.com/BofAI/x402/issues
|
|
361
|
+
- **Contributing**: https://github.com/BofAI/CONTRIBUTING.md
|
|
362
|
+
- **Documentation**: https://github.com/BofAI/x402#readme
|
|
363
363
|
- **TRON Documentation**: https://developers.tron.network/
|
|
364
364
|
- **TIP-712 Specification**: https://github.com/tronprotocol/tips/blob/master/tip-712.md
|
|
365
365
|
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Policies are applied in order after mechanism filtering and before token selection.
|
|
5
5
|
*/
|
|
6
6
|
import type { PaymentRequirements } from '../types/index.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { PaymentPolicy } from './x402Client.js';
|
|
8
|
+
import type { X402Client } from './x402Client.js';
|
|
8
9
|
/**
|
|
9
10
|
* Policy that filters out requirements with insufficient balance.
|
|
10
11
|
*
|
|
@@ -12,12 +13,21 @@ import type { ClientSigner, PaymentPolicy } from './x402Client.js';
|
|
|
12
13
|
* this policy checks the user's on-chain balance for each option
|
|
13
14
|
* and removes requirements the user cannot afford.
|
|
14
15
|
*
|
|
16
|
+
* Signers are auto-resolved from registered mechanisms via the
|
|
17
|
+
* X402Client instance passed at construction time.
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* x402.registerPolicy(SufficientBalancePolicy);
|
|
21
|
+
*
|
|
22
|
+
* Requirements whose network has no matching signer are kept as-is
|
|
23
|
+
* (not filtered out), so downstream mechanism matching can still work.
|
|
24
|
+
*
|
|
15
25
|
* If all requirements are unaffordable, returns an empty array so the
|
|
16
26
|
* caller can raise an appropriate error.
|
|
17
27
|
*/
|
|
18
28
|
export declare class SufficientBalancePolicy implements PaymentPolicy {
|
|
19
|
-
private
|
|
20
|
-
constructor(
|
|
29
|
+
private client;
|
|
30
|
+
constructor(client: X402Client);
|
|
21
31
|
apply(requirements: PaymentRequirements[]): Promise<PaymentRequirements[]>;
|
|
22
32
|
}
|
|
23
33
|
//# sourceMappingURL=policies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAIxB,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CA8CjF"}
|
package/dist/client/policies.js
CHANGED
|
@@ -15,18 +15,42 @@ function getDecimals(req) {
|
|
|
15
15
|
* this policy checks the user's on-chain balance for each option
|
|
16
16
|
* and removes requirements the user cannot afford.
|
|
17
17
|
*
|
|
18
|
+
* Signers are auto-resolved from registered mechanisms via the
|
|
19
|
+
* X402Client instance passed at construction time.
|
|
20
|
+
*
|
|
21
|
+
* Usage:
|
|
22
|
+
* x402.registerPolicy(SufficientBalancePolicy);
|
|
23
|
+
*
|
|
24
|
+
* Requirements whose network has no matching signer are kept as-is
|
|
25
|
+
* (not filtered out), so downstream mechanism matching can still work.
|
|
26
|
+
*
|
|
18
27
|
* If all requirements are unaffordable, returns an empty array so the
|
|
19
28
|
* caller can raise an appropriate error.
|
|
20
29
|
*/
|
|
21
30
|
export class SufficientBalancePolicy {
|
|
22
|
-
|
|
23
|
-
constructor(
|
|
24
|
-
this.
|
|
31
|
+
client;
|
|
32
|
+
constructor(client) {
|
|
33
|
+
this.client = client;
|
|
25
34
|
}
|
|
26
35
|
async apply(requirements) {
|
|
27
36
|
const affordable = [];
|
|
28
37
|
for (const req of requirements) {
|
|
29
|
-
const
|
|
38
|
+
const signer = this.client.resolveSigner(req.scheme, req.network);
|
|
39
|
+
if (!signer) {
|
|
40
|
+
// No signer for this network — keep the requirement so mechanism
|
|
41
|
+
// matching can still select it (balance check is best-effort).
|
|
42
|
+
affordable.push(req);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
let balance;
|
|
46
|
+
try {
|
|
47
|
+
balance = await signer.checkBalance(req.asset, req.network);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Signer cannot query this network; keep the requirement.
|
|
51
|
+
affordable.push(req);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
30
54
|
let needed = BigInt(req.amount);
|
|
31
55
|
if (req.extra?.fee?.feeAmount) {
|
|
32
56
|
needed += BigInt(req.extra.fee.feeAmount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,SAAS,WAAW,CAAC,GAAwB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,uBAAuB;IAC1B,MAAM,CAAa;IAE3B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAmC;QAC7C,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,iEAAiE;gBACjE,+DAA+D;gBAC/D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;gBAC1D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,EAAE,IAAI,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,cAAc,OAAO,OAAO,CACpF,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,UAAU,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,QAAQ,aAAa,OAAO,YAAY,CACxF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -72,7 +72,13 @@ export declare class X402Client {
|
|
|
72
72
|
* @param policy - Function that filters/reorders payment requirements
|
|
73
73
|
* @returns this for method chaining
|
|
74
74
|
*/
|
|
75
|
-
registerPolicy(policy: PaymentPolicy
|
|
75
|
+
registerPolicy(policy: PaymentPolicy | {
|
|
76
|
+
new (client: X402Client): PaymentPolicy;
|
|
77
|
+
}): X402Client;
|
|
78
|
+
/**
|
|
79
|
+
* Resolve a signer from registered mechanisms for the given scheme+network.
|
|
80
|
+
*/
|
|
81
|
+
resolveSigner(scheme: string, network: string): ClientSigner | null;
|
|
76
82
|
/**
|
|
77
83
|
* Register payment mechanism for network pattern
|
|
78
84
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,IAAI,MAAM,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,IAAI,YAAY,CAAC;IAE3B,6BAA6B;IAC7B,oBAAoB,CAClB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAC3D,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,UAAU,IAAI,MAAM,CAAC;IAErB,uBAAuB;IACvB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,gCAAgC;IAChC,aAAa,CACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,0BAA0B;IAC1B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9D,4BAA4B;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhF,kCAAkC;IAClC,eAAe,CACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GACrC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,6CAA6C;AAC7C,MAAM,MAAM,2BAA2B,GAAG,CACxC,YAAY,EAAE,mBAAmB,EAAE,KAChC,mBAAmB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACpG;AAED,wDAAwD;AACxD,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,sBAAsB,CAAA;KAAE;IAIhE;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,9 +27,19 @@ export class X402Client {
|
|
|
27
27
|
* @returns this for method chaining
|
|
28
28
|
*/
|
|
29
29
|
registerPolicy(policy) {
|
|
30
|
-
|
|
30
|
+
const instance = typeof policy === 'function'
|
|
31
|
+
? new policy(this)
|
|
32
|
+
: policy;
|
|
33
|
+
this.policies.push(instance);
|
|
31
34
|
return this;
|
|
32
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a signer from registered mechanisms for the given scheme+network.
|
|
38
|
+
*/
|
|
39
|
+
resolveSigner(scheme, network) {
|
|
40
|
+
const mechanism = this.findMechanism(scheme, network);
|
|
41
|
+
return mechanism?.getSigner?.() ?? null;
|
|
42
|
+
}
|
|
33
43
|
/**
|
|
34
44
|
* Register payment mechanism for network pattern
|
|
35
45
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAgFvD;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACb,UAAU,GAAqB,EAAE,CAAC;IAClC,QAAQ,GAAoB,EAAE,CAAC;IAC/B,aAAa,CAA0B;IAE/C,YAAY,OAAoD;QAC9D,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -16,6 +16,15 @@ export declare const NETWORKS: {
|
|
|
16
16
|
};
|
|
17
17
|
/** PaymentPermit contract addresses */
|
|
18
18
|
export declare const PAYMENT_PERMIT_ADDRESSES: Record<string, string>;
|
|
19
|
+
/** Default RPC URLs for EVM networks */
|
|
20
|
+
export declare const EVM_RPC_URLS: Record<string, string>;
|
|
21
|
+
/** Default TronGrid hosts for TRON networks */
|
|
22
|
+
export declare const TRON_RPC_URLS: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a network identifier to an RPC URL.
|
|
25
|
+
* Returns the URL from the built-in map, or undefined if not configured.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveRpcUrl(network: string): string | undefined;
|
|
19
28
|
/** Zero address for TRON */
|
|
20
29
|
export declare const TRON_ZERO_ADDRESS = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
|
|
21
30
|
/** Zero address for EVM */
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,uCAAuC;AACvC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW5C,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,uCAAuC,CAAC;AAEtE,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAE7E;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAelD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,uCAAuC;AACvC,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAW5C,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAI/C,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,uCAAuC,CAAC;AAEtE,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAE7E;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAelD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
package/dist/config.js
CHANGED
|
@@ -33,6 +33,25 @@ export const PAYMENT_PERMIT_ADDRESSES = {
|
|
|
33
33
|
'eip155:97': '0x1825bB32db3443dEc2cc7508b2D818fc13EaD878',
|
|
34
34
|
'eip155:56': '0x1825bB32db3443dEc2cc7508b2D818fc13EaD878',
|
|
35
35
|
};
|
|
36
|
+
/** Default RPC URLs for EVM networks */
|
|
37
|
+
export const EVM_RPC_URLS = {
|
|
38
|
+
'eip155:97': 'https://data-seed-prebsc-1-s1.binance.org:8545/',
|
|
39
|
+
'eip155:56': 'https://bsc-dataseed.binance.org/',
|
|
40
|
+
// 'eip155:1': 'https://eth.llamarpc.com',
|
|
41
|
+
};
|
|
42
|
+
/** Default TronGrid hosts for TRON networks */
|
|
43
|
+
export const TRON_RPC_URLS = {
|
|
44
|
+
'tron:mainnet': 'https://api.trongrid.io',
|
|
45
|
+
'tron:shasta': 'https://api.shasta.trongrid.io',
|
|
46
|
+
'tron:nile': 'https://nile.trongrid.io',
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Resolve a network identifier to an RPC URL.
|
|
50
|
+
* Returns the URL from the built-in map, or undefined if not configured.
|
|
51
|
+
*/
|
|
52
|
+
export function resolveRpcUrl(network) {
|
|
53
|
+
return EVM_RPC_URLS[network] ?? TRON_RPC_URLS[network];
|
|
54
|
+
}
|
|
36
55
|
/** Zero address for TRON */
|
|
37
56
|
export const TRON_ZERO_ADDRESS = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb';
|
|
38
57
|
/** Zero address for EVM */
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,uCAAuC;AACvC,MAAM,CAAC,MAAM,SAAS,GAA2B;IAC/C,gBAAgB;IAChB,cAAc,EAAE,SAAS,EAAE,aAAa;IACxC,aAAa,EAAE,UAAU,EAAE,aAAa;IACxC,WAAW,EAAE,UAAU,EAAE,aAAa;IAEtC,eAAe;IACf,UAAU,EAAE,CAAC,EAAE,mBAAmB;IAClC,iBAAiB,EAAE,QAAQ,EAAE,UAAU;IACvC,WAAW,EAAE,EAAE,EAAE,cAAc;IAC/B,WAAW,EAAE,EAAE,EAAE,cAAc;CAChC,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,WAAW;CAChB,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,cAAc,EAAE,oCAAoC;IACpD,aAAa,EAAE,oCAAoC;IACnD,WAAW,EAAE,oCAAoC;IACjD,WAAW,EAAE,4CAA4C;IACzD,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;AAEtE,2BAA2B;AAC3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAE7E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,0DAA0D;IAC1D,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACd,MAAM,IAAI,uBAAuB,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,uBAAuB,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,gDAAgD;IAChD,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC3D,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,YAAY,CAAC,OAAO,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACnD,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACrD,MAAM,IAAI,uBAAuB,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './address.js';
|
|
|
14
14
|
export * from './http/client.js';
|
|
15
15
|
export * from './mechanisms/index.js';
|
|
16
16
|
export * from './mechanisms/exactEvm.js';
|
|
17
|
+
export * from './wallet/index.js';
|
|
17
18
|
export * from './signers/signer.js';
|
|
18
19
|
export * from './signers/evmSigner.js';
|
|
19
20
|
export type { TronWeb, TypedDataDomain, TypedDataField, TronNetwork, TRON_CHAIN_IDS } from './signers/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAG7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAG7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,8 @@ export * from './http/client.js';
|
|
|
18
18
|
export * from './mechanisms/index.js';
|
|
19
19
|
// EVM ExactPermit Mechanism
|
|
20
20
|
export * from './mechanisms/exactEvm.js';
|
|
21
|
+
// Wallet
|
|
22
|
+
export * from './wallet/index.js';
|
|
21
23
|
// TRON Signer
|
|
22
24
|
export * from './signers/signer.js';
|
|
23
25
|
// EVM Signer
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc;AACd,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,4BAA4B;AAC5B,cAAc,0BAA0B,CAAC;AAEzC,cAAc;AACd,cAAc,qBAAqB,CAAC;AACpC,aAAa;AACb,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO;AACP,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc;AACd,cAAc,kBAAkB,CAAC;AAEjC,aAAa;AACb,cAAc,uBAAuB,CAAC;AAEtC,4BAA4B;AAC5B,cAAc,0BAA0B,CAAC;AAEzC,SAAS;AACT,cAAc,mBAAmB,CAAC;AAElC,cAAc;AACd,cAAc,qBAAqB,CAAC;AACpC,aAAa;AACb,cAAc,wBAAwB,CAAC"}
|
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { type Hex } from 'viem';
|
|
5
5
|
import type { ClientSigner } from '../client/x402Client.js';
|
|
6
|
+
import type { Wallet } from '../wallet/types.js';
|
|
6
7
|
export declare class EvmClientSigner implements ClientSigner {
|
|
7
|
-
private
|
|
8
|
+
private wallet;
|
|
9
|
+
private _address;
|
|
8
10
|
private publicClients;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
constructor(wallet: Wallet);
|
|
12
|
+
/** Create signer from a Wallet instance. */
|
|
13
|
+
static fromWallet(wallet: Wallet): EvmClientSigner;
|
|
14
|
+
/** Create signer from private key (convenience factory). */
|
|
15
|
+
static fromPrivateKey(privateKey: string): EvmClientSigner;
|
|
12
16
|
getAddress(): string;
|
|
13
17
|
getEvmAddress(): Hex;
|
|
14
18
|
signMessage(message: Uint8Array): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evmSigner.d.ts","sourceRoot":"","sources":["../../src/signers/evmSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAOL,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"evmSigner.d.ts","sourceRoot":"","sources":["../../src/signers/evmSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAOL,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAGd,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AASjD,qBAAa,eAAgB,YAAW,YAAY;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAwC;gBAEjD,MAAM,EAAE,MAAM;IAK1B,4CAA4C;IAC5C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAIlD,4DAA4D;IAC5D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAI1D,UAAU,IAAI,MAAM;IAIpB,aAAa,IAAI,GAAG;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD,aAAa,CACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC;IAoBZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB7D,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAqBZ,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,GAC7C,OAAO,CAAC,OAAO,CAAC;IAuDnB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,qBAAqB;CAY9B"}
|
|
@@ -4,37 +4,37 @@
|
|
|
4
4
|
import { createWalletClient, createPublicClient, http, parseAbi, } from 'viem';
|
|
5
5
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
6
6
|
import { mainnet, sepolia, bsc, bscTestnet } from 'viem/chains';
|
|
7
|
-
import { getPaymentPermitAddress, InsufficientAllowanceError, UnsupportedNetworkError, } from '../index.js';
|
|
7
|
+
import { getPaymentPermitAddress, resolveRpcUrl, InsufficientAllowanceError, UnsupportedNetworkError, } from '../index.js';
|
|
8
|
+
import { EvmPrivateKeyWallet } from '../wallet/evmPrivateKeyWallet.js';
|
|
8
9
|
const ERC20_ABI = parseAbi([
|
|
9
10
|
'function allowance(address owner, address spender) view returns (uint256)',
|
|
10
11
|
'function approve(address spender, uint256 amount) returns (bool)',
|
|
11
12
|
'function balanceOf(address account) view returns (uint256)',
|
|
12
13
|
]);
|
|
13
14
|
export class EvmClientSigner {
|
|
14
|
-
|
|
15
|
+
wallet;
|
|
16
|
+
_address;
|
|
15
17
|
publicClients = new Map();
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
constructor(wallet) {
|
|
19
|
+
this.wallet = wallet;
|
|
20
|
+
this._address = wallet.getAddress();
|
|
21
|
+
}
|
|
22
|
+
/** Create signer from a Wallet instance. */
|
|
23
|
+
static fromWallet(wallet) {
|
|
24
|
+
return new EvmClientSigner(wallet);
|
|
25
|
+
}
|
|
26
|
+
/** Create signer from private key (convenience factory). */
|
|
27
|
+
static fromPrivateKey(privateKey) {
|
|
28
|
+
return new EvmClientSigner(new EvmPrivateKeyWallet(privateKey));
|
|
27
29
|
}
|
|
28
30
|
getAddress() {
|
|
29
|
-
return this.
|
|
31
|
+
return this._address;
|
|
30
32
|
}
|
|
31
33
|
getEvmAddress() {
|
|
32
|
-
return this.
|
|
34
|
+
return this._address;
|
|
33
35
|
}
|
|
34
36
|
async signMessage(message) {
|
|
35
|
-
return this.
|
|
36
|
-
message: { raw: message },
|
|
37
|
-
});
|
|
37
|
+
return this.wallet.signMessage(message);
|
|
38
38
|
}
|
|
39
39
|
async signTypedData(domain, types, message) {
|
|
40
40
|
// TODO: Add explicit primaryType to ClientSigner interface
|
|
@@ -44,22 +44,23 @@ export class EvmClientSigner {
|
|
|
44
44
|
if (!primaryType) {
|
|
45
45
|
throw new Error('No primary type found in types definition');
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const fullData = {
|
|
48
|
+
types: { EIP712Domain: [], ...types },
|
|
49
|
+
domain,
|
|
50
50
|
primaryType,
|
|
51
|
-
message
|
|
52
|
-
}
|
|
51
|
+
message,
|
|
52
|
+
};
|
|
53
|
+
return this.wallet.signTypedData(fullData);
|
|
53
54
|
}
|
|
54
55
|
async checkBalance(token, network) {
|
|
55
56
|
const chainId = this.parseNetworkToChainId(network);
|
|
56
|
-
const client = this.getPublicClient(chainId);
|
|
57
|
+
const client = this.getPublicClient(chainId, network);
|
|
57
58
|
try {
|
|
58
59
|
return await client.readContract({
|
|
59
60
|
address: token,
|
|
60
61
|
abi: ERC20_ABI,
|
|
61
62
|
functionName: 'balanceOf',
|
|
62
|
-
args: [this.
|
|
63
|
+
args: [this._address],
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
66
|
catch (error) {
|
|
@@ -69,14 +70,14 @@ export class EvmClientSigner {
|
|
|
69
70
|
}
|
|
70
71
|
async checkAllowance(token, _amount, network) {
|
|
71
72
|
const chainId = this.parseNetworkToChainId(network);
|
|
72
|
-
const client = this.getPublicClient(chainId);
|
|
73
|
+
const client = this.getPublicClient(chainId, network);
|
|
73
74
|
const spender = getPaymentPermitAddress(network);
|
|
74
75
|
try {
|
|
75
76
|
return await client.readContract({
|
|
76
77
|
address: token,
|
|
77
78
|
abi: ERC20_ABI,
|
|
78
79
|
functionName: 'allowance',
|
|
79
|
-
args: [this.
|
|
80
|
+
args: [this._address, spender],
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
83
|
catch (error) {
|
|
@@ -94,20 +95,25 @@ export class EvmClientSigner {
|
|
|
94
95
|
throw new InsufficientAllowanceError('Interactive approval required');
|
|
95
96
|
}
|
|
96
97
|
const chainId = this.parseNetworkToChainId(network);
|
|
97
|
-
const client = this.getPublicClient(chainId);
|
|
98
|
+
const client = this.getPublicClient(chainId, network);
|
|
98
99
|
const spender = getPaymentPermitAddress(network);
|
|
99
100
|
const chain = this.getChain(chainId);
|
|
100
101
|
try {
|
|
101
|
-
const
|
|
102
|
-
|
|
102
|
+
const rpcUrl = resolveRpcUrl(network);
|
|
103
|
+
// Build approve transaction and sign via wallet
|
|
104
|
+
const account = privateKeyToAccount('0x0000000000000000000000000000000000000000000000000000000000000001');
|
|
105
|
+
const tempWalletClient = createWalletClient({
|
|
106
|
+
account,
|
|
103
107
|
chain: chain,
|
|
104
|
-
transport: http(
|
|
108
|
+
transport: http(rpcUrl),
|
|
105
109
|
});
|
|
106
|
-
|
|
110
|
+
// Use wallet's signTransaction to sign the approval
|
|
111
|
+
const hash = await tempWalletClient.writeContract({
|
|
107
112
|
address: token,
|
|
108
113
|
abi: ERC20_ABI,
|
|
109
114
|
functionName: 'approve',
|
|
110
115
|
args: [spender, BigInt(2) ** BigInt(256) - BigInt(1)],
|
|
116
|
+
account: this._address,
|
|
111
117
|
});
|
|
112
118
|
const receipt = await client.waitForTransactionReceipt({ hash });
|
|
113
119
|
const success = receipt.status === 'success';
|
|
@@ -121,12 +127,13 @@ export class EvmClientSigner {
|
|
|
121
127
|
throw new InsufficientAllowanceError(`ERC20 approval transaction failed for ${token}: ${error instanceof Error ? error.message : String(error)}`);
|
|
122
128
|
}
|
|
123
129
|
}
|
|
124
|
-
getPublicClient(chainId) {
|
|
130
|
+
getPublicClient(chainId, network) {
|
|
125
131
|
let client = this.publicClients.get(chainId);
|
|
126
132
|
if (!client) {
|
|
133
|
+
const rpcUrl = resolveRpcUrl(network);
|
|
127
134
|
client = createPublicClient({
|
|
128
135
|
chain: this.getChain(chainId),
|
|
129
|
-
transport: http(
|
|
136
|
+
transport: http(rpcUrl),
|
|
130
137
|
});
|
|
131
138
|
this.publicClients.set(chainId, client);
|
|
132
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evmSigner.js","sourceRoot":"","sources":["../../src/signers/evmSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EAKJ,QAAQ,GAGT,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,MAAM,SAAS,GAAG,QAAQ,CAAC;IACzB,2EAA2E;IAC3E,kEAAkE;IAClE,4DAA4D;CAC7D,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAClB,
|
|
1
|
+
{"version":3,"file":"evmSigner.js","sourceRoot":"","sources":["../../src/signers/evmSigner.ts"],"names":[],"mappings":"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"}
|
package/dist/signers/signer.d.ts
CHANGED
|
@@ -5,29 +5,30 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { ClientSigner } from '../index.js';
|
|
7
7
|
import { type Hex } from '../index.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type { Wallet } from '../wallet/types.js';
|
|
9
9
|
/**
|
|
10
10
|
* TRON client signer implementation using TronWeb's signTypedData
|
|
11
11
|
*/
|
|
12
12
|
export declare class TronClientSigner implements ClientSigner {
|
|
13
|
-
private
|
|
14
|
-
private privateKey;
|
|
13
|
+
private wallet;
|
|
15
14
|
private address;
|
|
16
|
-
private
|
|
17
|
-
|
|
15
|
+
private tronWebInstances;
|
|
16
|
+
constructor(wallet: Wallet);
|
|
17
|
+
/** Create signer from a Wallet instance. */
|
|
18
|
+
static fromWallet(wallet: Wallet): TronClientSigner;
|
|
19
|
+
/** Create signer from private key (convenience factory). */
|
|
20
|
+
static fromPrivateKey(privateKey: string): TronClientSigner;
|
|
18
21
|
/**
|
|
19
|
-
*
|
|
22
|
+
* Get or create a TronWeb instance for the given network.
|
|
20
23
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
static withPrivateKey(tronWeb: TronWeb, privateKey: string, network?: TronNetwork): TronClientSigner;
|
|
24
|
+
private getTronWeb;
|
|
25
|
+
private getDefaultTronWeb;
|
|
26
|
+
private createTronWeb;
|
|
26
27
|
getAddress(): string;
|
|
27
28
|
getEvmAddress(): Hex;
|
|
28
29
|
signMessage(message: Uint8Array): Promise<string>;
|
|
29
30
|
/**
|
|
30
|
-
* Sign EIP-712 typed data using
|
|
31
|
+
* Sign EIP-712 typed data using Wallet abstraction
|
|
31
32
|
*/
|
|
32
33
|
signTypedData(domain: Record<string, unknown>, types: Record<string, unknown>, message: Record<string, unknown>): Promise<string>;
|
|
33
34
|
checkBalance(token: string, network: string): Promise<bigint>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAGL,KAAK,GAAG,EAKT,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAOjD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAmC;gBAE/C,MAAM,EAAE,MAAM;IAK1B,4CAA4C;IAC5C,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAInD,4DAA4D;IAC5D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAI3D;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAQrB,UAAU,IAAI,MAAM;IAIpB,aAAa,IAAI,GAAG;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC;IAaZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB7D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BhF,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,GAC7C,OAAO,CAAC,OAAO,CAAC;CAqFpB"}
|
package/dist/signers/signer.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Uses TronWeb's signTypedData (TIP-712) for EIP-712 compatible signing.
|
|
5
5
|
*/
|
|
6
|
-
import { getPaymentPermitAddress, toEvmHex,
|
|
6
|
+
import { getPaymentPermitAddress, toEvmHex, InsufficientAllowanceError, UnsupportedNetworkError, TRON_RPC_URLS, } from '../index.js';
|
|
7
|
+
import { TronWeb as TronWebClass } from 'tronweb';
|
|
8
|
+
import { TronPrivateKeyWallet } from '../wallet/tronPrivateKeyWallet.js';
|
|
7
9
|
/** ERC20 function selectors */
|
|
8
10
|
const ERC20_ALLOWANCE_SELECTOR = 'allowance(address,address)';
|
|
9
11
|
const ERC20_APPROVE_SELECTOR = 'approve(address,uint256)';
|
|
@@ -11,34 +13,51 @@ const ERC20_APPROVE_SELECTOR = 'approve(address,uint256)';
|
|
|
11
13
|
* TRON client signer implementation using TronWeb's signTypedData
|
|
12
14
|
*/
|
|
13
15
|
export class TronClientSigner {
|
|
14
|
-
|
|
15
|
-
privateKey;
|
|
16
|
+
wallet;
|
|
16
17
|
address; // Base58 format
|
|
17
|
-
|
|
18
|
-
constructor(
|
|
19
|
-
this.
|
|
20
|
-
this.address =
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
tronWebInstances = new Map();
|
|
19
|
+
constructor(wallet) {
|
|
20
|
+
this.wallet = wallet;
|
|
21
|
+
this.address = wallet.getAddress();
|
|
22
|
+
}
|
|
23
|
+
/** Create signer from a Wallet instance. */
|
|
24
|
+
static fromWallet(wallet) {
|
|
25
|
+
return new TronClientSigner(wallet);
|
|
26
|
+
}
|
|
27
|
+
/** Create signer from private key (convenience factory). */
|
|
28
|
+
static fromPrivateKey(privateKey) {
|
|
29
|
+
return new TronClientSigner(new TronPrivateKeyWallet(privateKey));
|
|
23
30
|
}
|
|
24
31
|
/**
|
|
25
|
-
*
|
|
32
|
+
* Get or create a TronWeb instance for the given network.
|
|
26
33
|
*/
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
getTronWeb(network) {
|
|
35
|
+
const host = network ? TRON_RPC_URLS[network] : undefined;
|
|
36
|
+
const key = host ?? '__default__';
|
|
37
|
+
let tw = this.tronWebInstances.get(key);
|
|
38
|
+
if (!tw) {
|
|
39
|
+
if (!host) {
|
|
40
|
+
throw new UnsupportedNetworkError(`No RPC URL configured for network: ${network}`);
|
|
41
|
+
}
|
|
42
|
+
tw = this.createTronWeb(host);
|
|
43
|
+
this.tronWebInstances.set(key, tw);
|
|
31
44
|
}
|
|
32
|
-
|
|
33
|
-
return new TronClientSigner(tronWeb, address, network);
|
|
45
|
+
return tw;
|
|
34
46
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return
|
|
47
|
+
getDefaultTronWeb() {
|
|
48
|
+
let tw = this.tronWebInstances.get('__default__');
|
|
49
|
+
if (!tw) {
|
|
50
|
+
tw = this.createTronWeb('https://nile.trongrid.io');
|
|
51
|
+
this.tronWebInstances.set('__default__', tw);
|
|
52
|
+
}
|
|
53
|
+
return tw;
|
|
54
|
+
}
|
|
55
|
+
createTronWeb(fullHost) {
|
|
56
|
+
const apiKey = typeof process !== 'undefined' ? process.env?.TRON_GRID_API_KEY : undefined;
|
|
57
|
+
const headers = apiKey ? { 'TRON-PRO-API-KEY': apiKey } : undefined;
|
|
58
|
+
// TronWeb needs a private key for initialization, use a dummy key for read-only operations
|
|
59
|
+
const dummyKey = '0000000000000000000000000000000000000000000000000000000000000001';
|
|
60
|
+
return new TronWebClass({ fullHost, privateKey: dummyKey, headers });
|
|
42
61
|
}
|
|
43
62
|
getAddress() {
|
|
44
63
|
return this.address;
|
|
@@ -47,36 +66,27 @@ export class TronClientSigner {
|
|
|
47
66
|
return toEvmHex(this.address);
|
|
48
67
|
}
|
|
49
68
|
async signMessage(message) {
|
|
50
|
-
|
|
51
|
-
.map(b => b.toString(16).padStart(2, '0'))
|
|
52
|
-
.join('');
|
|
53
|
-
return this.tronWeb.trx.signMessageV2(messageHex, this.privateKey);
|
|
69
|
+
return this.wallet.signMessage(message);
|
|
54
70
|
}
|
|
55
71
|
/**
|
|
56
|
-
* Sign EIP-712 typed data using
|
|
72
|
+
* Sign EIP-712 typed data using Wallet abstraction
|
|
57
73
|
*/
|
|
58
74
|
async signTypedData(domain, types, message) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
const fullData = {
|
|
76
|
+
types: { EIP712Domain: [], ...types },
|
|
77
|
+
domain,
|
|
78
|
+
primaryType: types.PaymentPermitDetails
|
|
79
|
+
? 'PaymentPermitDetails'
|
|
80
|
+
: Object.keys(types).pop(),
|
|
81
|
+
message,
|
|
64
82
|
};
|
|
65
|
-
|
|
66
|
-
const signFn = this.tronWeb.trx.signTypedData || this.tronWeb.trx._signTypedData;
|
|
67
|
-
if (!signFn) {
|
|
68
|
-
throw new SignatureCreationError('TronWeb does not support signTypedData. Please upgrade to TronWeb >= 5.0');
|
|
69
|
-
}
|
|
70
|
-
return signFn.call(this.tronWeb.trx, typedDomain, types, message, this.privateKey);
|
|
83
|
+
return this.wallet.signTypedData(fullData);
|
|
71
84
|
}
|
|
72
85
|
async checkBalance(token, network) {
|
|
73
|
-
const resolvedNetwork = network || (this.network ? `tron:${this.network}` : undefined);
|
|
74
|
-
if (!resolvedNetwork) {
|
|
75
|
-
throw new UnsupportedNetworkError('network is required for checkBalance');
|
|
76
|
-
}
|
|
77
86
|
try {
|
|
78
87
|
const ownerHex = toEvmHex(this.address);
|
|
79
|
-
const
|
|
88
|
+
const tw = this.getTronWeb(network);
|
|
89
|
+
const result = await tw.transactionBuilder.triggerConstantContract(token, 'balanceOf(address)', {}, [{ type: 'address', value: ownerHex }], this.address);
|
|
80
90
|
if (result.result?.result && result.constant_result?.length) {
|
|
81
91
|
return BigInt('0x' + result.constant_result[0]);
|
|
82
92
|
}
|
|
@@ -87,15 +97,12 @@ export class TronClientSigner {
|
|
|
87
97
|
return BigInt(0);
|
|
88
98
|
}
|
|
89
99
|
async checkAllowance(token, _amount, network) {
|
|
90
|
-
const
|
|
91
|
-
if (!resolvedNetwork) {
|
|
92
|
-
throw new UnsupportedNetworkError('network is required for checkAllowance');
|
|
93
|
-
}
|
|
94
|
-
const spender = getPaymentPermitAddress(resolvedNetwork);
|
|
100
|
+
const spender = getPaymentPermitAddress(network);
|
|
95
101
|
try {
|
|
96
102
|
const ownerHex = toEvmHex(this.address);
|
|
97
103
|
const spenderHex = toEvmHex(spender);
|
|
98
|
-
const
|
|
104
|
+
const tw = this.getTronWeb(network);
|
|
105
|
+
const result = await tw.transactionBuilder.triggerConstantContract(token, ERC20_ALLOWANCE_SELECTOR, {}, [
|
|
99
106
|
{ type: 'address', value: ownerHex },
|
|
100
107
|
{ type: 'address', value: spenderHex },
|
|
101
108
|
], this.address);
|
|
@@ -122,17 +129,14 @@ export class TronClientSigner {
|
|
|
122
129
|
}
|
|
123
130
|
// Auto mode: send approve transaction
|
|
124
131
|
console.log(`[ALLOWANCE] Insufficient allowance: ${currentAllowance} < ${amount}, sending approve...`);
|
|
125
|
-
const
|
|
126
|
-
if (!resolvedNetwork) {
|
|
127
|
-
throw new UnsupportedNetworkError('network is required for ensureAllowance');
|
|
128
|
-
}
|
|
129
|
-
const spender = getPaymentPermitAddress(resolvedNetwork);
|
|
132
|
+
const spender = getPaymentPermitAddress(network);
|
|
130
133
|
const spenderHex = toEvmHex(spender);
|
|
131
134
|
// Use maxUint160 (2^160 - 1) to avoid repeated approvals
|
|
132
135
|
const maxUint160 = (BigInt(2) ** BigInt(160)) - BigInt(1);
|
|
133
136
|
try {
|
|
134
137
|
// Build approve transaction
|
|
135
|
-
const
|
|
138
|
+
const tw = this.getTronWeb(network);
|
|
139
|
+
const tx = await tw.transactionBuilder.triggerSmartContract(token, ERC20_APPROVE_SELECTOR, {
|
|
136
140
|
feeLimit: 100_000_000,
|
|
137
141
|
callValue: 0,
|
|
138
142
|
}, [
|
|
@@ -142,10 +146,11 @@ export class TronClientSigner {
|
|
|
142
146
|
if (!tx.result?.result) {
|
|
143
147
|
throw new InsufficientAllowanceError('Failed to build approve transaction');
|
|
144
148
|
}
|
|
145
|
-
// Sign transaction
|
|
146
|
-
const
|
|
149
|
+
// Sign transaction via wallet (returns signature hex without 0x)
|
|
150
|
+
const sigHex = await this.wallet.signTransaction(tx.transaction);
|
|
151
|
+
const signedTx = { ...tx.transaction, signature: [sigHex] };
|
|
147
152
|
// Broadcast transaction
|
|
148
|
-
const broadcast = await
|
|
153
|
+
const broadcast = await tw.trx.sendRawTransaction(signedTx);
|
|
149
154
|
if (!broadcast.result) {
|
|
150
155
|
throw new InsufficientAllowanceError(`Failed to broadcast approve transaction: ${JSON.stringify(broadcast)}`);
|
|
151
156
|
}
|
|
@@ -155,7 +160,7 @@ export class TronClientSigner {
|
|
|
155
160
|
for (let i = 0; i < 10; i++) {
|
|
156
161
|
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
157
162
|
try {
|
|
158
|
-
const info = await
|
|
163
|
+
const info = await tw.trx.getTransactionInfo(txid);
|
|
159
164
|
if (info && info.blockNumber) {
|
|
160
165
|
const success = info.receipt?.result === 'SUCCESS';
|
|
161
166
|
console.log(`[ALLOWANCE] Approve confirmed: ${success ? 'SUCCESS' : 'FAILED'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentWalletAdapter — Adapts agent-wallet's BaseWallet to x402 Wallet interface.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* import { WalletFactory } from "agent-wallet";
|
|
6
|
+
* const provider = WalletFactory({ secretsDir: "~/.agent-wallet", password: "..." });
|
|
7
|
+
* const agentWallet = await provider.getWallet("my-wallet");
|
|
8
|
+
* const wallet = await AgentWalletAdapter.create(agentWallet);
|
|
9
|
+
* const signer = EvmClientSigner.fromWallet(wallet);
|
|
10
|
+
*/
|
|
11
|
+
import type { Wallet } from './types.js';
|
|
12
|
+
/** Minimal interface expected from agent-wallet's BaseWallet + Eip712Capable. */
|
|
13
|
+
interface AgentWallet {
|
|
14
|
+
getAddress(): Promise<string>;
|
|
15
|
+
signMessage(msg: Uint8Array): Promise<string>;
|
|
16
|
+
signTypedData(data: Record<string, unknown>): Promise<string>;
|
|
17
|
+
signTransaction(payload: Record<string, unknown>): Promise<string>;
|
|
18
|
+
}
|
|
19
|
+
export declare class AgentWalletAdapter implements Wallet {
|
|
20
|
+
private agentWallet;
|
|
21
|
+
private _address;
|
|
22
|
+
private constructor();
|
|
23
|
+
/** Create adapter by eagerly resolving the async address. */
|
|
24
|
+
static create(agentWallet: AgentWallet): Promise<AgentWalletAdapter>;
|
|
25
|
+
getAddress(): string;
|
|
26
|
+
signMessage(message: Uint8Array): Promise<string>;
|
|
27
|
+
signTypedData(data: Record<string, unknown>): Promise<string>;
|
|
28
|
+
signTransaction(tx: Record<string, unknown>): Promise<string>;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=agentWalletAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentWalletAdapter.d.ts","sourceRoot":"","sources":["../../src/wallet/agentWalletAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,iFAAiF;AACjF,UAAU,WAAW;IACnB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE;AAED,qBAAa,kBAAmB,YAAW,MAAM;IAC/C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO;IAKP,6DAA6D;WAChD,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK1E,UAAU,IAAI,MAAM;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7D,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAcpE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentWalletAdapter — Adapts agent-wallet's BaseWallet to x402 Wallet interface.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* import { WalletFactory } from "agent-wallet";
|
|
6
|
+
* const provider = WalletFactory({ secretsDir: "~/.agent-wallet", password: "..." });
|
|
7
|
+
* const agentWallet = await provider.getWallet("my-wallet");
|
|
8
|
+
* const wallet = await AgentWalletAdapter.create(agentWallet);
|
|
9
|
+
* const signer = EvmClientSigner.fromWallet(wallet);
|
|
10
|
+
*/
|
|
11
|
+
export class AgentWalletAdapter {
|
|
12
|
+
agentWallet;
|
|
13
|
+
_address;
|
|
14
|
+
constructor(agentWallet, address) {
|
|
15
|
+
this.agentWallet = agentWallet;
|
|
16
|
+
this._address = address;
|
|
17
|
+
}
|
|
18
|
+
/** Create adapter by eagerly resolving the async address. */
|
|
19
|
+
static async create(agentWallet) {
|
|
20
|
+
const address = await agentWallet.getAddress();
|
|
21
|
+
return new AgentWalletAdapter(agentWallet, address);
|
|
22
|
+
}
|
|
23
|
+
getAddress() {
|
|
24
|
+
return this._address;
|
|
25
|
+
}
|
|
26
|
+
async signMessage(message) {
|
|
27
|
+
return this.agentWallet.signMessage(message);
|
|
28
|
+
}
|
|
29
|
+
async signTypedData(data) {
|
|
30
|
+
return this.agentWallet.signTypedData(data);
|
|
31
|
+
}
|
|
32
|
+
async signTransaction(tx) {
|
|
33
|
+
let result = await this.agentWallet.signTransaction(tx);
|
|
34
|
+
// TRON case: agent-wallet may return JSON with embedded signature
|
|
35
|
+
if (result.trimStart().startsWith('{')) {
|
|
36
|
+
const signed = JSON.parse(result);
|
|
37
|
+
const sigs = signed.signature ?? [];
|
|
38
|
+
if (!sigs.length)
|
|
39
|
+
throw new Error('agent-wallet returned signed tx JSON without signature');
|
|
40
|
+
result = sigs[0];
|
|
41
|
+
}
|
|
42
|
+
// Normalize: strip 0x prefix to match Wallet contract
|
|
43
|
+
return result.startsWith('0x') ? result.slice(2) : result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=agentWalletAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentWalletAdapter.js","sourceRoot":"","sources":["../../src/wallet/agentWalletAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,MAAM,OAAO,kBAAkB;IACrB,WAAW,CAAc;IACzB,QAAQ,CAAS;IAEzB,YAAoB,WAAwB,EAAE,OAAe;QAC3D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAwB;QAC1C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;QAC/C,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAA6B;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAA2B;QAC/C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAExD,kEAAkE;QAClE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,GAAa,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5F,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,sDAAsD;QACtD,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvmPrivateKeyWallet — EVM wallet backed by a local private key (viem).
|
|
3
|
+
*/
|
|
4
|
+
import type { Wallet } from './types.js';
|
|
5
|
+
export declare class EvmPrivateKeyWallet implements Wallet {
|
|
6
|
+
private account;
|
|
7
|
+
private _address;
|
|
8
|
+
constructor(privateKey: string);
|
|
9
|
+
getAddress(): string;
|
|
10
|
+
signMessage(message: Uint8Array): Promise<string>;
|
|
11
|
+
signTypedData(data: Record<string, unknown>): Promise<string>;
|
|
12
|
+
signTransaction(tx: Record<string, unknown>): Promise<string>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=evmPrivateKeyWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evmPrivateKeyWallet.d.ts","sourceRoot":"","sources":["../../src/wallet/evmPrivateKeyWallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,qBAAa,mBAAoB,YAAW,MAAM;IAChD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAAS;gBAEb,UAAU,EAAE,MAAM;IAM9B,UAAU,IAAI,MAAM;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjD,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7D,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAMpE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvmPrivateKeyWallet — EVM wallet backed by a local private key (viem).
|
|
3
|
+
*/
|
|
4
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
5
|
+
export class EvmPrivateKeyWallet {
|
|
6
|
+
account;
|
|
7
|
+
_address;
|
|
8
|
+
constructor(privateKey) {
|
|
9
|
+
const hexKey = (privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`);
|
|
10
|
+
this.account = privateKeyToAccount(hexKey);
|
|
11
|
+
this._address = this.account.address;
|
|
12
|
+
}
|
|
13
|
+
getAddress() {
|
|
14
|
+
return this._address;
|
|
15
|
+
}
|
|
16
|
+
async signMessage(message) {
|
|
17
|
+
return this.account.signMessage({
|
|
18
|
+
message: { raw: message },
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async signTypedData(data) {
|
|
22
|
+
const { domain, types, primaryType, message } = data;
|
|
23
|
+
// Remove EIP712Domain from types — viem adds it automatically
|
|
24
|
+
const { EIP712Domain, ...messageTypes } = types;
|
|
25
|
+
return this.account.signTypedData({
|
|
26
|
+
domain: domain,
|
|
27
|
+
types: messageTypes,
|
|
28
|
+
primaryType,
|
|
29
|
+
message: message,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async signTransaction(tx) {
|
|
33
|
+
const raw = await this.account.signTransaction(tx);
|
|
34
|
+
return raw.startsWith('0x') ? raw.slice(2) : raw;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=evmPrivateKeyWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evmPrivateKeyWallet.js","sourceRoot":"","sources":["../../src/wallet/evmPrivateKeyWallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIpD,MAAM,OAAO,mBAAmB;IACtB,OAAO,CAAyC;IAChD,QAAQ,CAAS;IAEzB,YAAY,UAAkB;QAC5B,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAQ,CAAC;QACrF,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9B,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAA6B;QAC/C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAK/C,CAAC;QAEF,8DAA8D;QAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC;QAEhD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAChC,MAAM,EAAE,MAAa;YACrB,KAAK,EAAE,YAAmB;YAC1B,WAAW;YACX,OAAO,EAAE,OAAc;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAA2B;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAC5C,EAAwD,CACzD,CAAC;QACF,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet abstraction layer for x402 signers.
|
|
3
|
+
*/
|
|
4
|
+
export type { Wallet } from './types.js';
|
|
5
|
+
export { EvmPrivateKeyWallet } from './evmPrivateKeyWallet.js';
|
|
6
|
+
export { TronPrivateKeyWallet } from './tronPrivateKeyWallet.js';
|
|
7
|
+
export { AgentWalletAdapter } from './agentWalletAdapter.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet abstraction layer for x402 signers.
|
|
3
|
+
*/
|
|
4
|
+
export { EvmPrivateKeyWallet } from './evmPrivateKeyWallet.js';
|
|
5
|
+
export { TronPrivateKeyWallet } from './tronPrivateKeyWallet.js';
|
|
6
|
+
export { AgentWalletAdapter } from './agentWalletAdapter.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TronPrivateKeyWallet — TRON wallet backed by a local private key (tronweb).
|
|
3
|
+
*/
|
|
4
|
+
import type { Wallet } from './types.js';
|
|
5
|
+
export declare class TronPrivateKeyWallet implements Wallet {
|
|
6
|
+
private privateKey;
|
|
7
|
+
private _address;
|
|
8
|
+
private tronWeb;
|
|
9
|
+
constructor(privateKey: string);
|
|
10
|
+
getAddress(): string;
|
|
11
|
+
signMessage(message: Uint8Array): Promise<string>;
|
|
12
|
+
signTypedData(data: Record<string, unknown>): Promise<string>;
|
|
13
|
+
signTransaction(tx: Record<string, unknown>): Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=tronPrivateKeyWallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tronPrivateKeyWallet.d.ts","sourceRoot":"","sources":["../../src/wallet/tronPrivateKeyWallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,oBAAqB,YAAW,MAAM;IACjD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAU;gBAEb,UAAU,EAAE,MAAM;IAY9B,UAAU,IAAI,MAAM;IAId,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjD,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B7D,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAKpE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TronPrivateKeyWallet — TRON wallet backed by a local private key (tronweb).
|
|
3
|
+
*/
|
|
4
|
+
import { TronWeb as TronWebClass } from 'tronweb';
|
|
5
|
+
export class TronPrivateKeyWallet {
|
|
6
|
+
privateKey;
|
|
7
|
+
_address;
|
|
8
|
+
tronWeb;
|
|
9
|
+
constructor(privateKey) {
|
|
10
|
+
const cleanKey = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;
|
|
11
|
+
this.privateKey = cleanKey;
|
|
12
|
+
// Derive address using a temporary TronWeb instance (pure crypto, no network needed)
|
|
13
|
+
this.tronWeb = new TronWebClass({
|
|
14
|
+
fullHost: 'https://nile.trongrid.io',
|
|
15
|
+
privateKey: cleanKey,
|
|
16
|
+
});
|
|
17
|
+
this._address = this.tronWeb.address.fromPrivateKey(cleanKey);
|
|
18
|
+
}
|
|
19
|
+
getAddress() {
|
|
20
|
+
return this._address;
|
|
21
|
+
}
|
|
22
|
+
async signMessage(message) {
|
|
23
|
+
const messageHex = Array.from(message)
|
|
24
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
25
|
+
.join('');
|
|
26
|
+
return this.tronWeb.trx.signMessageV2(messageHex, this.privateKey);
|
|
27
|
+
}
|
|
28
|
+
async signTypedData(data) {
|
|
29
|
+
const { domain, types, message } = data;
|
|
30
|
+
const typedDomain = {
|
|
31
|
+
name: domain.name,
|
|
32
|
+
chainId: domain.chainId,
|
|
33
|
+
verifyingContract: domain.verifyingContract,
|
|
34
|
+
};
|
|
35
|
+
// Remove EIP712Domain from types for TronWeb
|
|
36
|
+
const { EIP712Domain, ...messageTypes } = types;
|
|
37
|
+
const signFn = this.tronWeb.trx.signTypedData || this.tronWeb.trx._signTypedData;
|
|
38
|
+
if (!signFn) {
|
|
39
|
+
throw new Error('TronWeb does not support signTypedData. Please upgrade to TronWeb >= 5.0');
|
|
40
|
+
}
|
|
41
|
+
return signFn.call(this.tronWeb.trx, typedDomain, messageTypes, message, this.privateKey);
|
|
42
|
+
}
|
|
43
|
+
async signTransaction(tx) {
|
|
44
|
+
const signedTx = await this.tronWeb.trx.sign(tx, this.privateKey);
|
|
45
|
+
const sig = signedTx.signature?.[0] ?? '';
|
|
46
|
+
return sig.startsWith('0x') ? sig.slice(2) : sig;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=tronPrivateKeyWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tronPrivateKeyWallet.js","sourceRoot":"","sources":["../../src/wallet/tronPrivateKeyWallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,OAAO,oBAAoB;IACvB,UAAU,CAAS;IACnB,QAAQ,CAAS;IACjB,OAAO,CAAU;IAEzB,YAAY,UAAkB;QAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE3B,qFAAqF;QACrF,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC;YAC9B,QAAQ,EAAE,0BAA0B;YACpC,UAAU,EAAE,QAAQ;SACrB,CAAuB,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACzC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAA6B;QAC/C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAIlC,CAAC;QAEF,MAAM,WAAW,GAAoB;YACnC,IAAI,EAAE,MAAM,CAAC,IAAc;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAiB;YACjC,iBAAiB,EAAE,MAAM,CAAC,iBAA2B;SACtD,CAAC;QAEF,6CAA6C;QAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,GAAG,KAAK,CAAC;QAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACjF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB,WAAW,EACX,YAAgD,EAChD,OAAO,EACP,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAA2B;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,MAAM,GAAG,GAAY,QAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wallet interface — abstracts private-key-dependent operations.
|
|
3
|
+
*
|
|
4
|
+
* Implementations may hold a raw private key locally (PrivateKeyWallet)
|
|
5
|
+
* or delegate to an external wallet service (AgentWalletAdapter).
|
|
6
|
+
*/
|
|
7
|
+
export interface Wallet {
|
|
8
|
+
/** Return the wallet's public address (chain-native format). */
|
|
9
|
+
getAddress(): string;
|
|
10
|
+
/** Sign an arbitrary message, return signature hex. */
|
|
11
|
+
signMessage(message: Uint8Array): Promise<string>;
|
|
12
|
+
/** Sign EIP-712 typed data, return signature hex. */
|
|
13
|
+
signTypedData(data: Record<string, unknown>): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Sign a pre-built transaction.
|
|
16
|
+
* @returns Hex string **without** `0x` prefix.
|
|
17
|
+
* - EVM: complete signed transaction hex (RLP-encoded)
|
|
18
|
+
* - TRON: signature hex only (to be attached to transaction)
|
|
19
|
+
*/
|
|
20
|
+
signTransaction(tx: Record<string, unknown>): Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,gEAAgE;IAChE,UAAU,IAAI,MAAM,CAAC;IAErB,uDAAuD;IACvD,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,qDAAqD;IACrD,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/wallet/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bankofai/x402",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2-beta.1",
|
|
4
4
|
"description": "x402 TypeScript SDK (TRON and EVM support)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"x402",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"payment",
|
|
12
12
|
"blockchain"
|
|
13
13
|
],
|
|
14
|
-
"homepage": "https://github.com/
|
|
14
|
+
"homepage": "https://github.com/BofAI/x402#readme",
|
|
15
15
|
"bugs": {
|
|
16
|
-
"url": "https://github.com/
|
|
16
|
+
"url": "https://github.com/BofAI/x402/issues"
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|
|
20
|
-
"url": "git+https://github.com/
|
|
20
|
+
"url": "git+https://github.com/BofAI/x402.git",
|
|
21
21
|
"directory": "typescript/packages/x402"
|
|
22
22
|
},
|
|
23
23
|
"engines": {
|