@x402-crosschain/sdk 1.0.2 → 2.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 +143 -356
- package/dist/client/browser-client.d.ts +2 -2
- package/dist/client/browser-client.d.ts.map +1 -1
- package/dist/client/browser-client.js +132 -89
- package/dist/client/browser-client.js.map +1 -1
- package/dist/client/payment-client.d.ts +3 -2
- package/dist/client/payment-client.d.ts.map +1 -1
- package/dist/client/payment-client.js +258 -109
- package/dist/client/payment-client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/middleware/payment-middleware.d.ts +4 -1
- package/dist/middleware/payment-middleware.d.ts.map +1 -1
- package/dist/middleware/payment-middleware.js +38 -10
- package/dist/middleware/payment-middleware.js.map +1 -1
- package/dist/types.d.ts +59 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +42 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
+
import { keccak256, toHex } from 'viem';
|
|
3
|
+
import { CHAIN_IDS, NETWORK_NAMES, USDC_ADDRESSES } from '../types.js';
|
|
4
|
+
// EIP-3009 TransferWithAuthorization types for USDC
|
|
5
|
+
const AUTHORIZATION_TYPES = {
|
|
6
|
+
TransferWithAuthorization: [
|
|
7
|
+
{ name: 'from', type: 'address' },
|
|
8
|
+
{ name: 'to', type: 'address' },
|
|
9
|
+
{ name: 'value', type: 'uint256' },
|
|
10
|
+
{ name: 'validAfter', type: 'uint256' },
|
|
11
|
+
{ name: 'validBefore', type: 'uint256' },
|
|
12
|
+
{ name: 'nonce', type: 'bytes32' },
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
// ERC-2612 Permit types
|
|
16
|
+
const PERMIT_TYPES = {
|
|
17
|
+
Permit: [
|
|
18
|
+
{ name: 'owner', type: 'address' },
|
|
19
|
+
{ name: 'spender', type: 'address' },
|
|
20
|
+
{ name: 'value', type: 'uint256' },
|
|
21
|
+
{ name: 'nonce', type: 'uint256' },
|
|
22
|
+
{ name: 'deadline', type: 'uint256' },
|
|
23
|
+
],
|
|
24
|
+
};
|
|
2
25
|
/**
|
|
3
|
-
* Create an x402 payment client for BROWSER use with MetaMask/Coinbase Wallet
|
|
4
|
-
*
|
|
26
|
+
* Create an x402-compatible payment client for BROWSER use with MetaMask/Coinbase Wallet
|
|
27
|
+
* Signs ERC-2612 permits or EIP-3009 authorizations (gasless for customer)
|
|
5
28
|
*/
|
|
6
29
|
export function createBrowserPaymentClient(walletClient, preferences) {
|
|
7
30
|
const client = axios.create();
|
|
@@ -39,7 +62,7 @@ export function createBrowserPaymentClient(walletClient, preferences) {
|
|
|
39
62
|
});
|
|
40
63
|
// Get user's current chain
|
|
41
64
|
const userChainId = await walletClient.getChainId();
|
|
42
|
-
const merchantChainId =
|
|
65
|
+
const merchantChainId = CHAIN_IDS[paymentRequirements.network] || 8453;
|
|
43
66
|
const isCrossChain = userChainId !== merchantChainId;
|
|
44
67
|
if (isCrossChain) {
|
|
45
68
|
console.log('[Browser Payment] Cross-chain payment detected');
|
|
@@ -51,39 +74,24 @@ export function createBrowserPaymentClient(walletClient, preferences) {
|
|
|
51
74
|
if (!userAddress) {
|
|
52
75
|
throw new Error('No wallet address found');
|
|
53
76
|
}
|
|
54
|
-
//
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
else {
|
|
60
|
-
throw new Error('Same-chain payments not yet implemented. Use cross-chain for now.');
|
|
61
|
-
}
|
|
62
|
-
// Create payment payload
|
|
63
|
-
const paymentPayload = {
|
|
64
|
-
x402Version,
|
|
65
|
-
networkId: userChainId,
|
|
66
|
-
scheme: 'exact',
|
|
67
|
-
data: {
|
|
68
|
-
transactionHash: txHash,
|
|
69
|
-
from: userAddress,
|
|
70
|
-
to: paymentRequirements.payTo,
|
|
71
|
-
value: paymentRequirements.maxAmountRequired,
|
|
72
|
-
},
|
|
73
|
-
};
|
|
77
|
+
// Get token to sign for
|
|
78
|
+
const srcToken = preferences?.preferredToken || paymentRequirements.srcTokenAddress || paymentRequirements.asset;
|
|
79
|
+
const srcAmount = paymentRequirements.srcAmountRequired || paymentRequirements.maxAmountRequired;
|
|
80
|
+
// Create signed payment payload
|
|
81
|
+
const paymentPayload = await createBrowserSignedPayment(walletClient, userAddress, userChainId, srcToken, srcAmount, paymentRequirements, x402Version);
|
|
74
82
|
// Encode payment payload as base64
|
|
75
83
|
const paymentHeader = Buffer.from(JSON.stringify(paymentPayload)).toString('base64');
|
|
76
84
|
// Retry request with payment header
|
|
77
85
|
originalRequest._retry = true;
|
|
78
86
|
originalRequest.headers['X-PAYMENT'] = paymentHeader;
|
|
79
|
-
// Add preference headers
|
|
80
|
-
if (
|
|
81
|
-
originalRequest.headers['X-PREFERRED-TOKEN'] = preferences
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
// Add preference headers
|
|
88
|
+
if (preferences?.preferredToken) {
|
|
89
|
+
originalRequest.headers['X-PREFERRED-TOKEN'] = preferences.preferredToken;
|
|
90
|
+
}
|
|
91
|
+
if (preferences?.preferredNetwork) {
|
|
92
|
+
originalRequest.headers['X-PREFERRED-NETWORK'] = preferences.preferredNetwork;
|
|
85
93
|
}
|
|
86
|
-
console.log('[Browser Payment] Retrying request with payment');
|
|
94
|
+
console.log('[Browser Payment] Retrying request with signed payment');
|
|
87
95
|
return client.request(originalRequest);
|
|
88
96
|
}
|
|
89
97
|
catch (err) {
|
|
@@ -94,65 +102,100 @@ export function createBrowserPaymentClient(walletClient, preferences) {
|
|
|
94
102
|
return client;
|
|
95
103
|
}
|
|
96
104
|
/**
|
|
97
|
-
*
|
|
98
|
-
*/
|
|
99
|
-
async function executeBrowserCrossChainPayment(walletClient, userAddress, fromChainId, fromToken, paymentRequirements) {
|
|
100
|
-
console.log('[Cross-Chain] Getting Relay quote...');
|
|
101
|
-
// Get Relay quote
|
|
102
|
-
const quoteResponse = await fetch('https://api.relay.link/quote', {
|
|
103
|
-
method: 'POST',
|
|
104
|
-
headers: { 'Content-Type': 'application/json' },
|
|
105
|
-
body: JSON.stringify({
|
|
106
|
-
user: userAddress,
|
|
107
|
-
originChainId: fromChainId,
|
|
108
|
-
destinationChainId: getChainIdFromNetwork(paymentRequirements.network),
|
|
109
|
-
originCurrency: fromToken,
|
|
110
|
-
destinationCurrency: paymentRequirements.asset,
|
|
111
|
-
amount: paymentRequirements.maxAmountRequired,
|
|
112
|
-
tradeType: 'EXACT_OUTPUT',
|
|
113
|
-
recipient: userAddress,
|
|
114
|
-
}),
|
|
115
|
-
});
|
|
116
|
-
const quote = await quoteResponse.json();
|
|
117
|
-
const txData = quote.steps[0].items[0].data;
|
|
118
|
-
console.log('[Cross-Chain] Quote received');
|
|
119
|
-
console.log('[Cross-Chain] Please approve transaction in your wallet...');
|
|
120
|
-
// Send transaction using user's wallet
|
|
121
|
-
const hash = await walletClient.sendTransaction({
|
|
122
|
-
to: txData.to,
|
|
123
|
-
data: txData.data,
|
|
124
|
-
value: BigInt(txData.value || '0'),
|
|
125
|
-
account: walletClient.account,
|
|
126
|
-
chain: walletClient.chain,
|
|
127
|
-
});
|
|
128
|
-
console.log('[Cross-Chain] Transaction sent:', hash);
|
|
129
|
-
console.log('[Cross-Chain] Relay will bridge in 2-3 seconds...');
|
|
130
|
-
return hash;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Get chain ID from network name
|
|
105
|
+
* Create a signed payment payload using browser wallet
|
|
134
106
|
*/
|
|
135
|
-
function
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
107
|
+
async function createBrowserSignedPayment(walletClient, userAddress, chainId, tokenAddress, amount, paymentRequirements, x402Version) {
|
|
108
|
+
// Determine if this is USDC (use EIP-3009) or other token (use ERC-2612)
|
|
109
|
+
const isUsdc = Object.values(USDC_ADDRESSES).some(addr => addr.toLowerCase() === tokenAddress.toLowerCase());
|
|
110
|
+
// Get spender address (facilitator)
|
|
111
|
+
const spender = paymentRequirements.extra?.facilitatorAddress || paymentRequirements.payTo;
|
|
112
|
+
// Get token name and version for EIP-712 domain
|
|
113
|
+
const tokenName = paymentRequirements.extra?.name || (isUsdc ? 'USD Coin' : 'Unknown Token');
|
|
114
|
+
const tokenVersion = paymentRequirements.extra?.version || '2';
|
|
115
|
+
const deadline = BigInt(Math.floor(Date.now() / 1000) + (paymentRequirements.maxTimeoutSeconds || 300));
|
|
116
|
+
if (isUsdc) {
|
|
117
|
+
// EIP-3009 TransferWithAuthorization for USDC
|
|
118
|
+
console.log('[Browser Payment] Signing EIP-3009 authorization (USDC)...');
|
|
119
|
+
// Generate random nonce
|
|
120
|
+
const nonce = keccak256(toHex(Date.now().toString() + Math.random().toString()));
|
|
121
|
+
const domain = {
|
|
122
|
+
name: tokenName,
|
|
123
|
+
version: tokenVersion,
|
|
124
|
+
chainId: paymentRequirements.extra?.chainId || chainId,
|
|
125
|
+
verifyingContract: (paymentRequirements.extra?.verifyingContract || tokenAddress),
|
|
126
|
+
};
|
|
127
|
+
const message = {
|
|
128
|
+
from: userAddress,
|
|
129
|
+
to: spender,
|
|
130
|
+
value: BigInt(amount),
|
|
131
|
+
validAfter: BigInt(0),
|
|
132
|
+
validBefore: deadline,
|
|
133
|
+
nonce: nonce,
|
|
134
|
+
};
|
|
135
|
+
const signature = await walletClient.signTypedData({
|
|
136
|
+
account: walletClient.account,
|
|
137
|
+
domain,
|
|
138
|
+
types: AUTHORIZATION_TYPES,
|
|
139
|
+
primaryType: 'TransferWithAuthorization',
|
|
140
|
+
message,
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
x402Version,
|
|
144
|
+
scheme: 'exact',
|
|
145
|
+
network: NETWORK_NAMES[chainId] || 'base',
|
|
146
|
+
payload: {
|
|
147
|
+
authorization: {
|
|
148
|
+
from: userAddress,
|
|
149
|
+
to: spender,
|
|
150
|
+
value: amount,
|
|
151
|
+
validAfter: '0',
|
|
152
|
+
validBefore: deadline.toString(),
|
|
153
|
+
nonce: nonce,
|
|
154
|
+
},
|
|
155
|
+
signature,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// ERC-2612 Permit for other tokens
|
|
161
|
+
console.log('[Browser Payment] Signing ERC-2612 permit...');
|
|
162
|
+
// For browser, we'll use nonce 0 (should query from contract in production)
|
|
163
|
+
const nonce = BigInt(0);
|
|
164
|
+
const domain = {
|
|
165
|
+
name: tokenName,
|
|
166
|
+
version: tokenVersion,
|
|
167
|
+
chainId: paymentRequirements.extra?.chainId || chainId,
|
|
168
|
+
verifyingContract: (paymentRequirements.extra?.verifyingContract || tokenAddress),
|
|
169
|
+
};
|
|
170
|
+
const message = {
|
|
171
|
+
owner: userAddress,
|
|
172
|
+
spender: spender,
|
|
173
|
+
value: BigInt(amount),
|
|
174
|
+
nonce,
|
|
175
|
+
deadline,
|
|
176
|
+
};
|
|
177
|
+
const signature = await walletClient.signTypedData({
|
|
178
|
+
account: walletClient.account,
|
|
179
|
+
domain,
|
|
180
|
+
types: PERMIT_TYPES,
|
|
181
|
+
primaryType: 'Permit',
|
|
182
|
+
message,
|
|
183
|
+
});
|
|
184
|
+
return {
|
|
185
|
+
x402Version,
|
|
186
|
+
scheme: 'exact',
|
|
187
|
+
network: NETWORK_NAMES[chainId] || 'base',
|
|
188
|
+
payload: {
|
|
189
|
+
permit: {
|
|
190
|
+
owner: userAddress,
|
|
191
|
+
spender,
|
|
192
|
+
value: amount,
|
|
193
|
+
nonce: nonce.toString(),
|
|
194
|
+
deadline: deadline.toString(),
|
|
195
|
+
},
|
|
196
|
+
signature,
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
}
|
|
157
200
|
}
|
|
158
201
|
//# sourceMappingURL=browser-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/client/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/client/browser-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AxiosInstance } from 'axios';
|
|
2
2
|
import type { PaymentPreferences } from '../types.js';
|
|
3
3
|
/**
|
|
4
|
-
* Create an x402 payment client
|
|
5
|
-
*
|
|
4
|
+
* Create an x402-compatible payment client
|
|
5
|
+
* Signs ERC-2612 permits or EIP-3009 authorizations (gasless for customer)
|
|
6
|
+
* Facilitator executes the bridge and transfer
|
|
6
7
|
*/
|
|
7
8
|
export declare function createPaymentClient(privateKey: `0x${string}`, preferences?: PaymentPreferences): AxiosInstance;
|
|
8
9
|
//# sourceMappingURL=payment-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-client.d.ts","sourceRoot":"","sources":["../../src/client/payment-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"payment-client.d.ts","sourceRoot":"","sources":["../../src/client/payment-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAc,MAAM,OAAO,CAAC;AAIzD,OAAO,KAAK,EAGV,kBAAkB,EAGnB,MAAM,aAAa,CAAC;AAiDrB;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,MAAM,EAAE,EACzB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,CAkGf"}
|