@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.
@@ -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
- * Automatically handles cross-chain payments via Relay
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 = getChainIdFromNetwork(paymentRequirements.network);
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
- // Execute cross-chain payment
55
- let txHash;
56
- if (isCrossChain) {
57
- txHash = await executeBrowserCrossChainPayment(walletClient, userAddress, userChainId, preferences?.preferredToken || '0x0000000000000000000000000000000000000000', paymentRequirements);
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 for cross-chain verification
80
- if (isCrossChain) {
81
- originalRequest.headers['X-PREFERRED-TOKEN'] = preferences?.preferredToken || '0x0000000000000000000000000000000000000000';
82
- originalRequest.headers['X-PREFERRED-NETWORK'] = getNetworkName(userChainId);
83
- paymentRequirements.srcTokenAddress = preferences?.preferredToken || '0x0000000000000000000000000000000000000000';
84
- paymentRequirements.srcNetwork = getNetworkName(userChainId);
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
- * Execute cross-chain payment via Relay using browser wallet
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 getChainIdFromNetwork(network) {
136
- const map = {
137
- 'mainnet': 1,
138
- 'base': 8453,
139
- 'arbitrum': 42161,
140
- 'optimism': 10,
141
- 'polygon': 137,
142
- };
143
- return map[network] || 8453;
144
- }
145
- /**
146
- * Get network name from chain ID
147
- */
148
- function getNetworkName(chainId) {
149
- const map = {
150
- 1: 'mainnet',
151
- 8453: 'base',
152
- 42161: 'arbitrum',
153
- 10: 'optimism',
154
- 137: 'polygon',
155
- };
156
- return map[chainId] || 'base';
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":"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"}
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 with cross-chain support
5
- * Uses Relay for automatic bridging when customer is on different chain than merchant requires
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,EAAuC,kBAAkB,EAAgB,MAAM,aAAa,CAAC;AAmBzG;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,MAAM,EAAE,EACzB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,CAqHf"}
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"}