@bankofai/x402 0.3.1 → 0.4.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 +70 -89
- package/dist/abi.d.ts +20 -4
- package/dist/abi.d.ts.map +1 -1
- package/dist/abi.js +13 -4
- package/dist/abi.js.map +1 -1
- package/dist/client/x402Client.d.ts +12 -5
- package/dist/client/x402Client.d.ts.map +1 -1
- package/dist/client/x402Client.js +11 -0
- package/dist/client/x402Client.js.map +1 -1
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -1
- package/dist/mechanisms/exact.d.ts.map +1 -1
- package/dist/mechanisms/exact.js +2 -2
- package/dist/mechanisms/exact.js.map +1 -1
- package/dist/mechanisms/exactEvm.d.ts.map +1 -1
- package/dist/mechanisms/exactEvm.js +2 -2
- package/dist/mechanisms/exactEvm.js.map +1 -1
- package/dist/mechanisms/exactGasfree.d.ts +11 -0
- package/dist/mechanisms/exactGasfree.d.ts.map +1 -0
- package/dist/mechanisms/exactGasfree.js +136 -0
- package/dist/mechanisms/exactGasfree.js.map +1 -0
- package/dist/mechanisms/gasfree.d.ts +8 -0
- package/dist/mechanisms/gasfree.d.ts.map +1 -0
- package/dist/mechanisms/gasfree.js +125 -0
- package/dist/mechanisms/gasfree.js.map +1 -0
- package/dist/mechanisms/index.d.ts +1 -0
- package/dist/mechanisms/index.d.ts.map +1 -1
- package/dist/mechanisms/index.js +2 -0
- package/dist/mechanisms/index.js.map +1 -1
- package/dist/mechanisms/nativeExactEvm.d.ts.map +1 -1
- package/dist/mechanisms/nativeExactEvm.js +2 -2
- package/dist/mechanisms/nativeExactEvm.js.map +1 -1
- package/dist/mechanisms/nativeExactTron.d.ts.map +1 -1
- package/dist/mechanisms/nativeExactTron.js +2 -2
- package/dist/mechanisms/nativeExactTron.js.map +1 -1
- package/dist/signers/evmSigner.d.ts +2 -2
- package/dist/signers/evmSigner.d.ts.map +1 -1
- package/dist/signers/evmSigner.js +4 -10
- package/dist/signers/evmSigner.js.map +1 -1
- package/dist/signers/signer.d.ts +2 -2
- package/dist/signers/signer.d.ts.map +1 -1
- package/dist/signers/signer.js +6 -10
- package/dist/signers/signer.js.map +1 -1
- package/dist/types/responses.d.ts +4 -5
- package/dist/types/responses.d.ts.map +1 -1
- package/dist/utils/gasfree.d.ts +123 -0
- package/dist/utils/gasfree.d.ts.map +1 -0
- package/dist/utils/gasfree.js +228 -0
- package/dist/utils/gasfree.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +15 -14
package/dist/signers/signer.js
CHANGED
|
@@ -68,13 +68,7 @@ export class TronClientSigner {
|
|
|
68
68
|
/**
|
|
69
69
|
* Sign EIP-712 typed data using TronWeb's signTypedData (TIP-712)
|
|
70
70
|
*/
|
|
71
|
-
async signTypedData(domain, types, message) {
|
|
72
|
-
// Prepare domain
|
|
73
|
-
const typedDomain = {
|
|
74
|
-
name: domain.name,
|
|
75
|
-
chainId: domain.chainId,
|
|
76
|
-
verifyingContract: domain.verifyingContract,
|
|
77
|
-
};
|
|
71
|
+
async signTypedData(domain, types, message, _primaryType) {
|
|
78
72
|
// Signing is pure crypto — any TronWeb instance works
|
|
79
73
|
const tw = this.getDefaultTronWeb();
|
|
80
74
|
// Use signTypedData (stable API) or fall back to _signTypedData (legacy)
|
|
@@ -82,11 +76,13 @@ export class TronClientSigner {
|
|
|
82
76
|
if (!signFn) {
|
|
83
77
|
throw new SignatureCreationError('TronWeb does not support signTypedData. Please upgrade to TronWeb >= 5.0');
|
|
84
78
|
}
|
|
85
|
-
|
|
79
|
+
// Pure Passthrough: Let TronWeb handle the domain and types as-is.
|
|
80
|
+
return signFn.call(tw.trx, domain, types, message, this.privateKey);
|
|
86
81
|
}
|
|
87
|
-
async checkBalance(token, network) {
|
|
82
|
+
async checkBalance(token, network, address) {
|
|
88
83
|
try {
|
|
89
|
-
const
|
|
84
|
+
const targetAddress = address || this.address;
|
|
85
|
+
const ownerHex = toEvmHex(targetAddress);
|
|
90
86
|
const tw = this.getTronWeb(network);
|
|
91
87
|
const result = await tw.transactionBuilder.triggerConstantContract(token, 'balanceOf(address)', {}, [{ type: 'address', value: ownerHex }], this.address);
|
|
92
88
|
if (result.result?.result && result.constant_result?.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signers/signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,11 +53,6 @@ export interface SupportedResponse {
|
|
|
53
53
|
scheme: string;
|
|
54
54
|
network: string;
|
|
55
55
|
}>;
|
|
56
|
-
/** Fee configuration */
|
|
57
|
-
fee?: {
|
|
58
|
-
feeTo: string;
|
|
59
|
-
pricing: 'per_accept' | 'flat';
|
|
60
|
-
};
|
|
61
56
|
}
|
|
62
57
|
/** Fee quote response from facilitator */
|
|
63
58
|
export interface FeeQuoteResponse {
|
|
@@ -68,8 +63,12 @@ export interface FeeQuoteResponse {
|
|
|
68
63
|
};
|
|
69
64
|
/** Pricing model */
|
|
70
65
|
pricing: string;
|
|
66
|
+
/** Payment scheme */
|
|
67
|
+
scheme: string;
|
|
71
68
|
/** Network identifier */
|
|
72
69
|
network: string;
|
|
70
|
+
/** Token asset address */
|
|
71
|
+
asset: string;
|
|
73
72
|
/** Quote expiry time */
|
|
74
73
|
expiresAt?: number;
|
|
75
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/types/responses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE9E,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,+BAA+B;IAC/B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,iBAAiB;IACjB,UAAU,CAAC,EAAE;QACX,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,KAAK,EAAE,KAAK,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/types/responses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE9E,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,+BAA+B;IAC/B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,iBAAiB;IACjB,UAAU,CAAC,EAAE;QACX,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,KAAK,EAAE,KAAK,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GasFree utility functions for API interaction and domain helpers.
|
|
3
|
+
*/
|
|
4
|
+
export interface GasFreeResponse<T> {
|
|
5
|
+
code: number;
|
|
6
|
+
reason: string | null;
|
|
7
|
+
message: string | null;
|
|
8
|
+
data: T;
|
|
9
|
+
}
|
|
10
|
+
export interface GasFreeAsset {
|
|
11
|
+
tokenAddress: string;
|
|
12
|
+
tokenSymbol: string;
|
|
13
|
+
activateFee: number;
|
|
14
|
+
transferFee: number;
|
|
15
|
+
decimal: number;
|
|
16
|
+
frozen: number;
|
|
17
|
+
balance?: string | number;
|
|
18
|
+
}
|
|
19
|
+
export interface GasFreeAddressInfo {
|
|
20
|
+
accountAddress: string;
|
|
21
|
+
gasFreeAddress: string;
|
|
22
|
+
active: boolean;
|
|
23
|
+
nonce: number;
|
|
24
|
+
allowSubmit: boolean;
|
|
25
|
+
assets: GasFreeAsset[];
|
|
26
|
+
}
|
|
27
|
+
export interface GasFreeSubmitResponseData {
|
|
28
|
+
id: string;
|
|
29
|
+
state: 'WAITING' | 'INPROGRESS' | 'CONFIRMING' | 'SUCCEED' | 'FAILED';
|
|
30
|
+
createdAt: string;
|
|
31
|
+
accountAddress: string;
|
|
32
|
+
gasFreeAddress: string;
|
|
33
|
+
providerAddress: string;
|
|
34
|
+
targetAddress: string;
|
|
35
|
+
nonce: number;
|
|
36
|
+
tokenAddress: string;
|
|
37
|
+
amount: string;
|
|
38
|
+
expiredAt: string;
|
|
39
|
+
reason?: string;
|
|
40
|
+
txnHash?: string;
|
|
41
|
+
txnState?: 'INIT' | 'NOT_ON_CHAIN' | 'ON_CHAIN' | 'SOLIDITY' | 'ON_CHAIN_FAILED';
|
|
42
|
+
}
|
|
43
|
+
export interface GasFreeProvider {
|
|
44
|
+
address: string;
|
|
45
|
+
name: string;
|
|
46
|
+
icon: string;
|
|
47
|
+
website: string;
|
|
48
|
+
config: {
|
|
49
|
+
maxPendingTransfer: number;
|
|
50
|
+
minDeadlineDuration: number;
|
|
51
|
+
maxDeadlineDuration: number;
|
|
52
|
+
defaultDeadlineDuration: number;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare const GASFREE_TYPES: {
|
|
56
|
+
readonly PermitTransfer: readonly [{
|
|
57
|
+
readonly name: "token";
|
|
58
|
+
readonly type: "address";
|
|
59
|
+
}, {
|
|
60
|
+
readonly name: "serviceProvider";
|
|
61
|
+
readonly type: "address";
|
|
62
|
+
}, {
|
|
63
|
+
readonly name: "user";
|
|
64
|
+
readonly type: "address";
|
|
65
|
+
}, {
|
|
66
|
+
readonly name: "receiver";
|
|
67
|
+
readonly type: "address";
|
|
68
|
+
}, {
|
|
69
|
+
readonly name: "value";
|
|
70
|
+
readonly type: "uint256";
|
|
71
|
+
}, {
|
|
72
|
+
readonly name: "maxFee";
|
|
73
|
+
readonly type: "uint256";
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: "deadline";
|
|
76
|
+
readonly type: "uint256";
|
|
77
|
+
}, {
|
|
78
|
+
readonly name: "version";
|
|
79
|
+
readonly type: "uint256";
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "nonce";
|
|
82
|
+
readonly type: "uint256";
|
|
83
|
+
}];
|
|
84
|
+
};
|
|
85
|
+
export declare class GasFreeAPIClient {
|
|
86
|
+
private baseUrl;
|
|
87
|
+
private apiKey?;
|
|
88
|
+
private apiSecret?;
|
|
89
|
+
constructor(baseUrl: string, apiKey?: string, apiSecret?: string);
|
|
90
|
+
/**
|
|
91
|
+
* Generate HMAC signature for authentication
|
|
92
|
+
*/
|
|
93
|
+
private generateSignature;
|
|
94
|
+
/**
|
|
95
|
+
* Get headers with authentication if keys are provided
|
|
96
|
+
*/
|
|
97
|
+
private getHeaders;
|
|
98
|
+
/**
|
|
99
|
+
* Get all supported service providers
|
|
100
|
+
*/
|
|
101
|
+
getProviders(): Promise<GasFreeProvider[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Get the current recommended nonce for a user
|
|
104
|
+
*/
|
|
105
|
+
getNonce(user: string): Promise<number>;
|
|
106
|
+
/**
|
|
107
|
+
* Get full account info (activation, balance, nonce) for a user
|
|
108
|
+
*/
|
|
109
|
+
getAddressInfo(user: string): Promise<GasFreeAddressInfo>;
|
|
110
|
+
/**
|
|
111
|
+
* Get status of a submitted GasFree transaction
|
|
112
|
+
*/
|
|
113
|
+
getStatus(traceId: string): Promise<GasFreeSubmitResponseData>;
|
|
114
|
+
/**
|
|
115
|
+
* Wait for a GasFree transaction to reach a terminal state or ON_CHAIN state
|
|
116
|
+
*/
|
|
117
|
+
waitForSuccess(traceId: string, timeout?: number, pollInterval?: number): Promise<GasFreeSubmitResponseData>;
|
|
118
|
+
/**
|
|
119
|
+
* Submit a signed GasFree transaction to the official relayer
|
|
120
|
+
*/
|
|
121
|
+
submit(domain: any, message: any, signature: string): Promise<string>;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=gasfree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gasfree.d.ts","sourceRoot":"","sources":["../../src/utils/gasfree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { GASFREE_PRIMARY_TYPE, } from '../abi.js';
|
|
2
|
+
import { getGasFreeApiKey, getGasFreeApiSecret } from '../config.js';
|
|
3
|
+
// GasFree TIP-712 Types
|
|
4
|
+
export const GASFREE_TYPES = {
|
|
5
|
+
[GASFREE_PRIMARY_TYPE]: [
|
|
6
|
+
{ name: 'token', type: 'address' },
|
|
7
|
+
{ name: 'serviceProvider', type: 'address' },
|
|
8
|
+
{ name: 'user', type: 'address' },
|
|
9
|
+
{ name: 'receiver', type: 'address' },
|
|
10
|
+
{ name: 'value', type: 'uint256' },
|
|
11
|
+
{ name: 'maxFee', type: 'uint256' },
|
|
12
|
+
{ name: 'deadline', type: 'uint256' },
|
|
13
|
+
{ name: 'version', type: 'uint256' },
|
|
14
|
+
{ name: 'nonce', type: 'uint256' },
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export class GasFreeAPIClient {
|
|
18
|
+
baseUrl;
|
|
19
|
+
apiKey;
|
|
20
|
+
apiSecret;
|
|
21
|
+
constructor(baseUrl, apiKey, apiSecret) {
|
|
22
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
23
|
+
// Fallback to environment variables if keys are missing
|
|
24
|
+
if (!apiKey || !apiSecret) {
|
|
25
|
+
let network = 'tron:mainnet';
|
|
26
|
+
if (this.baseUrl.includes('open-test')) {
|
|
27
|
+
if (this.baseUrl.includes('nile'))
|
|
28
|
+
network = 'tron:nile';
|
|
29
|
+
else if (this.baseUrl.includes('shasta'))
|
|
30
|
+
network = 'tron:shasta';
|
|
31
|
+
}
|
|
32
|
+
this.apiKey = apiKey || getGasFreeApiKey(network);
|
|
33
|
+
this.apiSecret = apiSecret || getGasFreeApiSecret(network);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this.apiKey = apiKey;
|
|
37
|
+
this.apiSecret = apiSecret;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate HMAC signature for authentication
|
|
42
|
+
*/
|
|
43
|
+
async generateSignature(method, path, timestamp) {
|
|
44
|
+
if (!this.apiSecret)
|
|
45
|
+
return '';
|
|
46
|
+
const message = `${method.toUpperCase()}${path}${timestamp}`;
|
|
47
|
+
console.debug(`GasFree HMAC base string: ${message}`);
|
|
48
|
+
// Check if we are in Node.js environment
|
|
49
|
+
if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
|
50
|
+
const crypto = await import('node:crypto');
|
|
51
|
+
return crypto
|
|
52
|
+
.createHmac('sha256', this.apiSecret)
|
|
53
|
+
.update(message)
|
|
54
|
+
.digest('base64');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Browser implementation using Web Crypto API
|
|
58
|
+
const encoder = new TextEncoder();
|
|
59
|
+
const keyData = encoder.encode(this.apiSecret);
|
|
60
|
+
const msgData = encoder.encode(message);
|
|
61
|
+
const cryptoKey = await globalThis.crypto.subtle.importKey('raw', keyData, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
|
|
62
|
+
const signature = await globalThis.crypto.subtle.sign('HMAC', cryptoKey, msgData);
|
|
63
|
+
return btoa(String.fromCharCode(...new Uint8Array(signature)));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get headers with authentication if keys are provided
|
|
68
|
+
*/
|
|
69
|
+
async getHeaders(method, path) {
|
|
70
|
+
const headers = {
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
};
|
|
73
|
+
if (this.apiKey && this.apiSecret) {
|
|
74
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
75
|
+
// The Provider expects the FULL path including /nile or /tron for signature
|
|
76
|
+
let fullPath = path;
|
|
77
|
+
const urlParts = this.baseUrl.split('/');
|
|
78
|
+
if (urlParts.length > 3) {
|
|
79
|
+
const prefix = '/' + urlParts.slice(3).join('/');
|
|
80
|
+
if (!fullPath.startsWith(prefix)) {
|
|
81
|
+
fullPath = prefix + path;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const signature = await this.generateSignature(method, fullPath, timestamp);
|
|
85
|
+
headers['Timestamp'] = timestamp.toString();
|
|
86
|
+
headers['Authorization'] = `ApiKey ${this.apiKey}:${signature}`;
|
|
87
|
+
}
|
|
88
|
+
return headers;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get all supported service providers
|
|
92
|
+
*/
|
|
93
|
+
async getProviders() {
|
|
94
|
+
const path = '/api/v1/config/provider/all';
|
|
95
|
+
const url = `${this.baseUrl}${path}`;
|
|
96
|
+
const headers = await this.getHeaders('GET', path);
|
|
97
|
+
const response = await fetch(url, { headers });
|
|
98
|
+
const bodyText = await response.text();
|
|
99
|
+
if (!response.ok) {
|
|
100
|
+
console.error(`GasFree config API HTTP error ${response.status} at ${url}: ${bodyText}`);
|
|
101
|
+
throw new Error(`GasFree config API error: ${response.status}`);
|
|
102
|
+
}
|
|
103
|
+
const result = JSON.parse(bodyText);
|
|
104
|
+
if (result.code !== 200) {
|
|
105
|
+
console.error(`GasFree config API business error at ${url}: ${result.message || result.reason}`);
|
|
106
|
+
throw new Error(`GasFree config API error: ${result.message || result.reason}`);
|
|
107
|
+
}
|
|
108
|
+
return result.data.providers;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get the current recommended nonce for a user
|
|
112
|
+
*/
|
|
113
|
+
async getNonce(user) {
|
|
114
|
+
try {
|
|
115
|
+
const data = await this.getAddressInfo(user);
|
|
116
|
+
return data.nonce ?? 0;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.warn(`Failed to get nonce from GasFree API: ${error}. Defaulting to 0.`);
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get full account info (activation, balance, nonce) for a user
|
|
125
|
+
*/
|
|
126
|
+
async getAddressInfo(user) {
|
|
127
|
+
const path = `/api/v1/address/${user}`;
|
|
128
|
+
const url = `${this.baseUrl}${path}`;
|
|
129
|
+
const headers = await this.getHeaders('GET', path);
|
|
130
|
+
const response = await fetch(url, { headers });
|
|
131
|
+
const bodyText = await response.text();
|
|
132
|
+
if (!response.ok) {
|
|
133
|
+
console.error(`GasFree API HTTP error ${response.status} at ${url}: ${bodyText}`);
|
|
134
|
+
throw new Error(`GasFree API HTTP error: ${response.status} - Body: ${bodyText}`);
|
|
135
|
+
}
|
|
136
|
+
const result = JSON.parse(bodyText);
|
|
137
|
+
if (result.code !== 200) {
|
|
138
|
+
console.error(`GasFree API business error at ${url}: ${result.message || result.reason} - Body: ${bodyText}`);
|
|
139
|
+
throw new Error(`GasFree API error: ${result.message || result.reason} - Body: ${bodyText}`);
|
|
140
|
+
}
|
|
141
|
+
return result.data;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get status of a submitted GasFree transaction
|
|
145
|
+
*/
|
|
146
|
+
async getStatus(traceId) {
|
|
147
|
+
const path = `/api/v1/gasfree/${traceId}`;
|
|
148
|
+
const url = `${this.baseUrl}${path}`;
|
|
149
|
+
const headers = await this.getHeaders('GET', path);
|
|
150
|
+
const response = await fetch(url, { headers });
|
|
151
|
+
const bodyText = await response.text();
|
|
152
|
+
if (!response.ok) {
|
|
153
|
+
console.error(`GasFree status API HTTP error ${response.status} at ${url}: ${bodyText}`);
|
|
154
|
+
throw new Error(`GasFree status API error: ${response.status}`);
|
|
155
|
+
}
|
|
156
|
+
const result = JSON.parse(bodyText);
|
|
157
|
+
if (result.code !== 200) {
|
|
158
|
+
console.error(`GasFree status API business error at ${url}: ${result.message || result.reason}`);
|
|
159
|
+
throw new Error(`GasFree status API error: ${result.message || result.reason}`);
|
|
160
|
+
}
|
|
161
|
+
return result.data;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Wait for a GasFree transaction to reach a terminal state or ON_CHAIN state
|
|
165
|
+
*/
|
|
166
|
+
async waitForSuccess(traceId, timeout = 120000, pollInterval = 5000) {
|
|
167
|
+
const startTime = Date.now();
|
|
168
|
+
while (Date.now() - startTime < timeout) {
|
|
169
|
+
const statusData = await this.getStatus(traceId);
|
|
170
|
+
const state = statusData.state.toUpperCase();
|
|
171
|
+
const txnState = (statusData.txnState || '').toUpperCase();
|
|
172
|
+
// 1. Immediate return for successful or "good enough" states
|
|
173
|
+
if (state === 'SUCCEED' || (statusData.txnHash && ['ON_CHAIN', 'SOLIDITY'].includes(txnState))) {
|
|
174
|
+
return statusData;
|
|
175
|
+
}
|
|
176
|
+
if (state === 'FAILED' || txnState === 'ON_CHAIN_FAILED') {
|
|
177
|
+
throw new Error(`GasFree transaction failed. Reason: ${statusData.reason || 'Unknown'}`);
|
|
178
|
+
}
|
|
179
|
+
console.debug(`GasFree transaction ${traceId} is ${state} (${txnState}), waiting...`);
|
|
180
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
181
|
+
}
|
|
182
|
+
throw new Error(`GasFree transaction ${traceId} timed out after ${timeout / 1000}s`);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Submit a signed GasFree transaction to the official relayer
|
|
186
|
+
*/
|
|
187
|
+
async submit(domain, message, signature) {
|
|
188
|
+
const path = '/api/v1/gasfree/submit';
|
|
189
|
+
const url = `${this.baseUrl}${path}`;
|
|
190
|
+
const payload = {
|
|
191
|
+
token: message.token,
|
|
192
|
+
serviceProvider: message.serviceProvider,
|
|
193
|
+
user: message.user,
|
|
194
|
+
receiver: message.receiver,
|
|
195
|
+
value: message.value.toString(),
|
|
196
|
+
maxFee: message.maxFee.toString(),
|
|
197
|
+
deadline: Number(message.deadline),
|
|
198
|
+
version: 1,
|
|
199
|
+
nonce: Number(message.nonce),
|
|
200
|
+
sig: signature.startsWith('0x') ? signature.slice(2) : signature,
|
|
201
|
+
requestId: `x402-${Date.now()}-${signature.slice(2, 10)}`,
|
|
202
|
+
};
|
|
203
|
+
try {
|
|
204
|
+
const headers = await this.getHeaders('POST', path);
|
|
205
|
+
const response = await fetch(url, {
|
|
206
|
+
method: 'POST',
|
|
207
|
+
headers,
|
|
208
|
+
body: JSON.stringify(payload),
|
|
209
|
+
});
|
|
210
|
+
const bodyText = await response.text();
|
|
211
|
+
if (!response.ok) {
|
|
212
|
+
console.error(`GasFree submit HTTP error ${response.status} at ${url}: ${bodyText}`);
|
|
213
|
+
throw new Error(`GasFree submit HTTP error: ${response.status} - Body: ${bodyText}`);
|
|
214
|
+
}
|
|
215
|
+
const result = JSON.parse(bodyText);
|
|
216
|
+
if (result.code !== 200) {
|
|
217
|
+
console.error(`GasFree submit API business error at ${url}: ${result.message || result.reason} - Body: ${bodyText}`);
|
|
218
|
+
throw new Error(`GasFree submit API error: ${result.message || result.reason} - Body: ${bodyText}`);
|
|
219
|
+
}
|
|
220
|
+
return result.data.id;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
console.error(`Failed to submit GasFree transaction: ${error}`);
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=gasfree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gasfree.js","sourceRoot":"","sources":["../../src/utils/gasfree.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1H,cAAc,cAAc,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1H,cAAc,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bankofai/x402",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.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": {
|
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
"main": "./dist/index.js",
|
|
28
28
|
"module": "./dist/index.js",
|
|
29
29
|
"types": "./dist/index.d.ts",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@gasfree/gasfree-sdk": "^1.1.2",
|
|
32
|
+
"viem": "^2.45.2"
|
|
33
|
+
},
|
|
30
34
|
"exports": {
|
|
31
35
|
".": {
|
|
32
36
|
"import": "./dist/index.js",
|
|
@@ -37,12 +41,14 @@
|
|
|
37
41
|
"dist",
|
|
38
42
|
"README.md"
|
|
39
43
|
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "tsc",
|
|
46
|
+
"clean": "rm -rf dist",
|
|
47
|
+
"test": "vitest run"
|
|
48
|
+
},
|
|
40
49
|
"peerDependencies": {
|
|
41
50
|
"tronweb": "^5.0.0 || ^6.0.0"
|
|
42
51
|
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"viem": "^2.45.2"
|
|
45
|
-
},
|
|
46
52
|
"devDependencies": {
|
|
47
53
|
"@types/node": "^20.10.0",
|
|
48
54
|
"typescript": "^5.3.0",
|
|
@@ -51,10 +57,5 @@
|
|
|
51
57
|
"publishConfig": {
|
|
52
58
|
"access": "public"
|
|
53
59
|
},
|
|
54
|
-
"license": "MIT"
|
|
55
|
-
|
|
56
|
-
"build": "tsc",
|
|
57
|
-
"clean": "rm -rf dist",
|
|
58
|
-
"test": "vitest run"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
60
|
+
"license": "MIT"
|
|
61
|
+
}
|