@t402/evm 2.6.1 → 2.7.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/dist/cjs/constants-05D7IZJA.d.ts +136 -0
- package/dist/cjs/permit2/index.d.ts +1 -137
- package/dist/cjs/permit2-proxy/client/index.d.ts +83 -0
- package/dist/cjs/permit2-proxy/client/index.js +182 -0
- package/dist/cjs/permit2-proxy/client/index.js.map +1 -0
- package/dist/cjs/permit2-proxy/facilitator/index.d.ts +93 -0
- package/dist/cjs/permit2-proxy/facilitator/index.js +368 -0
- package/dist/cjs/permit2-proxy/facilitator/index.js.map +1 -0
- package/dist/cjs/permit2-proxy/index.d.ts +344 -0
- package/dist/cjs/permit2-proxy/index.js +1274 -0
- package/dist/cjs/permit2-proxy/index.js.map +1 -0
- package/dist/cjs/permit2-proxy/server/index.d.ts +130 -0
- package/dist/cjs/permit2-proxy/server/index.js +695 -0
- package/dist/cjs/permit2-proxy/server/index.js.map +1 -0
- package/dist/esm/chunk-A2U6NWHQ.mjs +199 -0
- package/dist/esm/chunk-A2U6NWHQ.mjs.map +1 -0
- package/dist/esm/chunk-HUUYTNV2.mjs +138 -0
- package/dist/esm/chunk-HUUYTNV2.mjs.map +1 -0
- package/dist/esm/chunk-THXENBBU.mjs +251 -0
- package/dist/esm/chunk-THXENBBU.mjs.map +1 -0
- package/dist/esm/chunk-UK2POASM.mjs +204 -0
- package/dist/esm/chunk-UK2POASM.mjs.map +1 -0
- package/dist/esm/constants-05D7IZJA.d.mts +136 -0
- package/dist/esm/permit2/index.d.mts +1 -137
- package/dist/esm/permit2-proxy/client/index.d.mts +83 -0
- package/dist/esm/permit2-proxy/client/index.mjs +12 -0
- package/dist/esm/permit2-proxy/client/index.mjs.map +1 -0
- package/dist/esm/permit2-proxy/facilitator/index.d.mts +93 -0
- package/dist/esm/permit2-proxy/facilitator/index.mjs +12 -0
- package/dist/esm/permit2-proxy/facilitator/index.mjs.map +1 -0
- package/dist/esm/permit2-proxy/index.d.mts +344 -0
- package/dist/esm/permit2-proxy/index.mjs +45 -0
- package/dist/esm/permit2-proxy/index.mjs.map +1 -0
- package/dist/esm/permit2-proxy/server/index.d.mts +130 -0
- package/dist/esm/permit2-proxy/server/index.mjs +13 -0
- package/dist/esm/permit2-proxy/server/index.mjs.map +1 -0
- package/package.json +43 -3
|
@@ -0,0 +1,695 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
21
|
+
|
|
22
|
+
// src/permit2-proxy/server/index.ts
|
|
23
|
+
var server_exports = {};
|
|
24
|
+
__export(server_exports, {
|
|
25
|
+
Permit2ProxyEvmScheme: () => Permit2ProxyEvmScheme,
|
|
26
|
+
registerPermit2ProxyEvmScheme: () => registerPermit2ProxyEvmScheme
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(server_exports);
|
|
29
|
+
|
|
30
|
+
// src/tokens.ts
|
|
31
|
+
var USDT0_ADDRESSES = {
|
|
32
|
+
// === Existing Networks ===
|
|
33
|
+
// Ethereum Mainnet - OFT Adapter (bridge endpoint)
|
|
34
|
+
"eip155:1": "0x6C96dE32CEa08842dcc4058c14d3aaAD7Fa41dee",
|
|
35
|
+
// Arbitrum One - Native USDT0
|
|
36
|
+
"eip155:42161": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
|
|
37
|
+
// Ink Mainnet
|
|
38
|
+
"eip155:57073": "0x0200C29006150606B650577BBE7B6248F58470c1",
|
|
39
|
+
// Berachain Mainnet
|
|
40
|
+
"eip155:80094": "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
41
|
+
// Unichain Mainnet (updated address)
|
|
42
|
+
"eip155:130": "0x9151434b16b9763660705744891fA906F660EcC5",
|
|
43
|
+
// === Phase 1: High Priority Networks ===
|
|
44
|
+
// Polygon PoS
|
|
45
|
+
"eip155:137": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
|
|
46
|
+
// Mantle
|
|
47
|
+
"eip155:5000": "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
48
|
+
// Optimism
|
|
49
|
+
"eip155:10": "0x01bFF41798a0BcF287b996046Ca68b395DbC1071",
|
|
50
|
+
// Plasma
|
|
51
|
+
"eip155:9745": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb",
|
|
52
|
+
// Sei
|
|
53
|
+
"eip155:1329": "0x9151434b16b9763660705744891fA906F660EcC5",
|
|
54
|
+
// Conflux eSpace
|
|
55
|
+
"eip155:1030": "0xaf37E8B6C9ED7f6318979f56Fc287d76c30847ff",
|
|
56
|
+
// Monad
|
|
57
|
+
"eip155:143": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D",
|
|
58
|
+
// === Phase 2: Medium Priority Networks ===
|
|
59
|
+
// Rootstock (Bitcoin sidechain)
|
|
60
|
+
"eip155:30": "0x779dED0C9e1022225F8e0630b35A9B54Be713736",
|
|
61
|
+
// XLayer (OKX L2)
|
|
62
|
+
"eip155:196": "0x779Ded0c9e1022225f8E0630b35a9b54bE713736",
|
|
63
|
+
// Flare
|
|
64
|
+
"eip155:14": "0xe7cd86e13AC4309349F30B3435a9d337750fC82D",
|
|
65
|
+
// Corn
|
|
66
|
+
"eip155:21000000": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb",
|
|
67
|
+
// HyperEVM
|
|
68
|
+
"eip155:999": "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb",
|
|
69
|
+
// MegaETH
|
|
70
|
+
"eip155:4326": "0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb",
|
|
71
|
+
// Stable
|
|
72
|
+
"eip155:988": "0x779Ded0c9e1022225f8E0630b35a9b54bE713736"
|
|
73
|
+
};
|
|
74
|
+
var USDC_ADDRESSES = {
|
|
75
|
+
// Ethereum Mainnet
|
|
76
|
+
"eip155:1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
77
|
+
// Base Mainnet
|
|
78
|
+
"eip155:8453": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
79
|
+
// Base Sepolia (testnet)
|
|
80
|
+
"eip155:84532": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
|
|
81
|
+
// Sepolia (testnet)
|
|
82
|
+
"eip155:11155111": "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238",
|
|
83
|
+
// Arbitrum One
|
|
84
|
+
"eip155:42161": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
85
|
+
// Polygon Mainnet
|
|
86
|
+
"eip155:137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"
|
|
87
|
+
};
|
|
88
|
+
var USAT_ADDRESSES = {
|
|
89
|
+
// Ethereum Mainnet
|
|
90
|
+
"eip155:1": "0x07041776f5007aca2a54844f50503a18a72a8b68"
|
|
91
|
+
};
|
|
92
|
+
var USDT_LEGACY_ADDRESSES = {
|
|
93
|
+
// Ethereum Mainnet
|
|
94
|
+
"eip155:1": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
|
|
95
|
+
// Polygon Mainnet (native USDT, not USDT0)
|
|
96
|
+
"eip155:137": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
|
|
97
|
+
// BNB Chain (BSC) - BEP-20 USDT
|
|
98
|
+
"eip155:56": "0x55d398326f99059fF775485246999027B3197955",
|
|
99
|
+
// Avalanche C-Chain
|
|
100
|
+
"eip155:43114": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
|
|
101
|
+
// Fantom
|
|
102
|
+
"eip155:250": "0x049d68029688eabf473097a2fc38ef61633a3c7a",
|
|
103
|
+
// Celo
|
|
104
|
+
"eip155:42220": "0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e",
|
|
105
|
+
// Kaia (formerly Klaytn)
|
|
106
|
+
"eip155:8217": "0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167"
|
|
107
|
+
};
|
|
108
|
+
var TOKEN_REGISTRY = {
|
|
109
|
+
// Ethereum Mainnet
|
|
110
|
+
"eip155:1": {
|
|
111
|
+
USDT0: {
|
|
112
|
+
address: USDT0_ADDRESSES["eip155:1"],
|
|
113
|
+
symbol: "USDT0",
|
|
114
|
+
name: "TetherToken",
|
|
115
|
+
version: "1",
|
|
116
|
+
decimals: 6,
|
|
117
|
+
tokenType: "eip3009",
|
|
118
|
+
priority: 1
|
|
119
|
+
},
|
|
120
|
+
USDC: {
|
|
121
|
+
address: USDC_ADDRESSES["eip155:1"],
|
|
122
|
+
symbol: "USDC",
|
|
123
|
+
name: "USD Coin",
|
|
124
|
+
version: "2",
|
|
125
|
+
decimals: 6,
|
|
126
|
+
tokenType: "eip3009",
|
|
127
|
+
priority: 2
|
|
128
|
+
},
|
|
129
|
+
USAT: {
|
|
130
|
+
address: USAT_ADDRESSES["eip155:1"],
|
|
131
|
+
symbol: "USAT",
|
|
132
|
+
name: "Tether America USD",
|
|
133
|
+
version: "1",
|
|
134
|
+
decimals: 6,
|
|
135
|
+
tokenType: "legacy",
|
|
136
|
+
priority: 3
|
|
137
|
+
},
|
|
138
|
+
USDT: {
|
|
139
|
+
address: USDT_LEGACY_ADDRESSES["eip155:1"],
|
|
140
|
+
symbol: "USDT",
|
|
141
|
+
name: "TetherUSD",
|
|
142
|
+
version: "1",
|
|
143
|
+
decimals: 6,
|
|
144
|
+
tokenType: "legacy",
|
|
145
|
+
priority: 10
|
|
146
|
+
// Lower priority due to legacy flow
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
// Arbitrum One
|
|
150
|
+
"eip155:42161": {
|
|
151
|
+
USDT0: {
|
|
152
|
+
address: USDT0_ADDRESSES["eip155:42161"],
|
|
153
|
+
symbol: "USDT0",
|
|
154
|
+
name: "TetherToken",
|
|
155
|
+
version: "1",
|
|
156
|
+
decimals: 6,
|
|
157
|
+
tokenType: "eip3009",
|
|
158
|
+
priority: 1
|
|
159
|
+
},
|
|
160
|
+
USDC: {
|
|
161
|
+
address: USDC_ADDRESSES["eip155:42161"],
|
|
162
|
+
symbol: "USDC",
|
|
163
|
+
name: "USD Coin",
|
|
164
|
+
version: "2",
|
|
165
|
+
decimals: 6,
|
|
166
|
+
tokenType: "eip3009",
|
|
167
|
+
priority: 2
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
// Ink Mainnet
|
|
171
|
+
"eip155:57073": {
|
|
172
|
+
USDT0: {
|
|
173
|
+
address: USDT0_ADDRESSES["eip155:57073"],
|
|
174
|
+
symbol: "USDT0",
|
|
175
|
+
name: "TetherToken",
|
|
176
|
+
version: "1",
|
|
177
|
+
decimals: 6,
|
|
178
|
+
tokenType: "eip3009",
|
|
179
|
+
priority: 1
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
// Berachain Mainnet
|
|
183
|
+
"eip155:80094": {
|
|
184
|
+
USDT0: {
|
|
185
|
+
address: USDT0_ADDRESSES["eip155:80094"],
|
|
186
|
+
symbol: "USDT0",
|
|
187
|
+
name: "TetherToken",
|
|
188
|
+
version: "1",
|
|
189
|
+
decimals: 6,
|
|
190
|
+
tokenType: "eip3009",
|
|
191
|
+
priority: 1
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
// Unichain Mainnet
|
|
195
|
+
"eip155:130": {
|
|
196
|
+
USDT0: {
|
|
197
|
+
address: USDT0_ADDRESSES["eip155:130"],
|
|
198
|
+
symbol: "USDT0",
|
|
199
|
+
name: "TetherToken",
|
|
200
|
+
version: "1",
|
|
201
|
+
decimals: 6,
|
|
202
|
+
tokenType: "eip3009",
|
|
203
|
+
priority: 1
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
// Base Mainnet
|
|
207
|
+
"eip155:8453": {
|
|
208
|
+
USDC: {
|
|
209
|
+
address: USDC_ADDRESSES["eip155:8453"],
|
|
210
|
+
symbol: "USDC",
|
|
211
|
+
name: "USD Coin",
|
|
212
|
+
version: "2",
|
|
213
|
+
decimals: 6,
|
|
214
|
+
tokenType: "eip3009",
|
|
215
|
+
priority: 2
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
// Base Sepolia (testnet)
|
|
219
|
+
"eip155:84532": {
|
|
220
|
+
USDC: {
|
|
221
|
+
address: USDC_ADDRESSES["eip155:84532"],
|
|
222
|
+
symbol: "USDC",
|
|
223
|
+
name: "USDC",
|
|
224
|
+
version: "2",
|
|
225
|
+
decimals: 6,
|
|
226
|
+
tokenType: "eip3009",
|
|
227
|
+
priority: 2
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
// Sepolia (testnet)
|
|
231
|
+
"eip155:11155111": {
|
|
232
|
+
USDC: {
|
|
233
|
+
address: USDC_ADDRESSES["eip155:11155111"],
|
|
234
|
+
symbol: "USDC",
|
|
235
|
+
name: "USDC",
|
|
236
|
+
version: "2",
|
|
237
|
+
decimals: 6,
|
|
238
|
+
tokenType: "eip3009",
|
|
239
|
+
priority: 2
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
// Polygon Mainnet
|
|
243
|
+
"eip155:137": {
|
|
244
|
+
USDT0: {
|
|
245
|
+
address: USDT0_ADDRESSES["eip155:137"],
|
|
246
|
+
symbol: "USDT0",
|
|
247
|
+
name: "TetherToken",
|
|
248
|
+
version: "1",
|
|
249
|
+
decimals: 6,
|
|
250
|
+
tokenType: "eip3009",
|
|
251
|
+
priority: 1
|
|
252
|
+
},
|
|
253
|
+
USDC: {
|
|
254
|
+
address: USDC_ADDRESSES["eip155:137"],
|
|
255
|
+
symbol: "USDC",
|
|
256
|
+
name: "USD Coin",
|
|
257
|
+
version: "2",
|
|
258
|
+
decimals: 6,
|
|
259
|
+
tokenType: "eip3009",
|
|
260
|
+
priority: 2
|
|
261
|
+
},
|
|
262
|
+
USDT: {
|
|
263
|
+
address: USDT_LEGACY_ADDRESSES["eip155:137"],
|
|
264
|
+
symbol: "USDT",
|
|
265
|
+
name: "TetherUSD",
|
|
266
|
+
version: "1",
|
|
267
|
+
decimals: 6,
|
|
268
|
+
tokenType: "legacy",
|
|
269
|
+
priority: 10
|
|
270
|
+
}
|
|
271
|
+
},
|
|
272
|
+
// === Phase 1: High Priority USDT0 Networks ===
|
|
273
|
+
// Optimism Mainnet
|
|
274
|
+
"eip155:10": {
|
|
275
|
+
USDT0: {
|
|
276
|
+
address: USDT0_ADDRESSES["eip155:10"],
|
|
277
|
+
symbol: "USDT0",
|
|
278
|
+
name: "TetherToken",
|
|
279
|
+
version: "1",
|
|
280
|
+
decimals: 6,
|
|
281
|
+
tokenType: "eip3009",
|
|
282
|
+
priority: 1
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
// Mantle Mainnet
|
|
286
|
+
"eip155:5000": {
|
|
287
|
+
USDT0: {
|
|
288
|
+
address: USDT0_ADDRESSES["eip155:5000"],
|
|
289
|
+
symbol: "USDT0",
|
|
290
|
+
name: "TetherToken",
|
|
291
|
+
version: "1",
|
|
292
|
+
decimals: 6,
|
|
293
|
+
tokenType: "eip3009",
|
|
294
|
+
priority: 1
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
// Plasma Mainnet
|
|
298
|
+
"eip155:9745": {
|
|
299
|
+
USDT0: {
|
|
300
|
+
address: USDT0_ADDRESSES["eip155:9745"],
|
|
301
|
+
symbol: "USDT0",
|
|
302
|
+
name: "TetherToken",
|
|
303
|
+
version: "1",
|
|
304
|
+
decimals: 6,
|
|
305
|
+
tokenType: "eip3009",
|
|
306
|
+
priority: 1
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
// Sei Mainnet
|
|
310
|
+
"eip155:1329": {
|
|
311
|
+
USDT0: {
|
|
312
|
+
address: USDT0_ADDRESSES["eip155:1329"],
|
|
313
|
+
symbol: "USDT0",
|
|
314
|
+
name: "TetherToken",
|
|
315
|
+
version: "1",
|
|
316
|
+
decimals: 6,
|
|
317
|
+
tokenType: "eip3009",
|
|
318
|
+
priority: 1
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
// Conflux eSpace Mainnet
|
|
322
|
+
"eip155:1030": {
|
|
323
|
+
USDT0: {
|
|
324
|
+
address: USDT0_ADDRESSES["eip155:1030"],
|
|
325
|
+
symbol: "USDT0",
|
|
326
|
+
name: "TetherToken",
|
|
327
|
+
version: "1",
|
|
328
|
+
decimals: 6,
|
|
329
|
+
tokenType: "eip3009",
|
|
330
|
+
priority: 1
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
// Monad Mainnet
|
|
334
|
+
"eip155:143": {
|
|
335
|
+
USDT0: {
|
|
336
|
+
address: USDT0_ADDRESSES["eip155:143"],
|
|
337
|
+
symbol: "USDT0",
|
|
338
|
+
name: "TetherToken",
|
|
339
|
+
version: "1",
|
|
340
|
+
decimals: 6,
|
|
341
|
+
tokenType: "eip3009",
|
|
342
|
+
priority: 1
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
// === Phase 2: Medium Priority USDT0 Networks ===
|
|
346
|
+
// Flare Mainnet
|
|
347
|
+
"eip155:14": {
|
|
348
|
+
USDT0: {
|
|
349
|
+
address: USDT0_ADDRESSES["eip155:14"],
|
|
350
|
+
symbol: "USDT0",
|
|
351
|
+
name: "TetherToken",
|
|
352
|
+
version: "1",
|
|
353
|
+
decimals: 6,
|
|
354
|
+
tokenType: "eip3009",
|
|
355
|
+
priority: 1
|
|
356
|
+
}
|
|
357
|
+
},
|
|
358
|
+
// Rootstock Mainnet (Bitcoin sidechain)
|
|
359
|
+
"eip155:30": {
|
|
360
|
+
USDT0: {
|
|
361
|
+
address: USDT0_ADDRESSES["eip155:30"],
|
|
362
|
+
symbol: "USDT0",
|
|
363
|
+
name: "TetherToken",
|
|
364
|
+
version: "1",
|
|
365
|
+
decimals: 6,
|
|
366
|
+
tokenType: "eip3009",
|
|
367
|
+
priority: 1
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
// XLayer Mainnet (OKX L2)
|
|
371
|
+
"eip155:196": {
|
|
372
|
+
USDT0: {
|
|
373
|
+
address: USDT0_ADDRESSES["eip155:196"],
|
|
374
|
+
symbol: "USDT0",
|
|
375
|
+
name: "TetherToken",
|
|
376
|
+
version: "1",
|
|
377
|
+
decimals: 6,
|
|
378
|
+
tokenType: "eip3009",
|
|
379
|
+
priority: 1
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
// Stable Mainnet
|
|
383
|
+
"eip155:988": {
|
|
384
|
+
USDT0: {
|
|
385
|
+
address: USDT0_ADDRESSES["eip155:988"],
|
|
386
|
+
symbol: "USDT0",
|
|
387
|
+
name: "TetherToken",
|
|
388
|
+
version: "1",
|
|
389
|
+
decimals: 6,
|
|
390
|
+
tokenType: "eip3009",
|
|
391
|
+
priority: 1
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
// HyperEVM Mainnet
|
|
395
|
+
"eip155:999": {
|
|
396
|
+
USDT0: {
|
|
397
|
+
address: USDT0_ADDRESSES["eip155:999"],
|
|
398
|
+
symbol: "USDT0",
|
|
399
|
+
name: "TetherToken",
|
|
400
|
+
version: "1",
|
|
401
|
+
decimals: 6,
|
|
402
|
+
tokenType: "eip3009",
|
|
403
|
+
priority: 1
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
// MegaETH Mainnet
|
|
407
|
+
"eip155:4326": {
|
|
408
|
+
USDT0: {
|
|
409
|
+
address: USDT0_ADDRESSES["eip155:4326"],
|
|
410
|
+
symbol: "USDT0",
|
|
411
|
+
name: "TetherToken",
|
|
412
|
+
version: "1",
|
|
413
|
+
decimals: 6,
|
|
414
|
+
tokenType: "eip3009",
|
|
415
|
+
priority: 1
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
// Corn Mainnet
|
|
419
|
+
"eip155:21000000": {
|
|
420
|
+
USDT0: {
|
|
421
|
+
address: USDT0_ADDRESSES["eip155:21000000"],
|
|
422
|
+
symbol: "USDT0",
|
|
423
|
+
name: "TetherToken",
|
|
424
|
+
version: "1",
|
|
425
|
+
decimals: 6,
|
|
426
|
+
tokenType: "eip3009",
|
|
427
|
+
priority: 1
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
// === Legacy USDT Networks (no EIP-3009 support) ===
|
|
431
|
+
// BNB Chain (BSC) - BEP-20 USDT
|
|
432
|
+
"eip155:56": {
|
|
433
|
+
USDT: {
|
|
434
|
+
address: USDT_LEGACY_ADDRESSES["eip155:56"],
|
|
435
|
+
symbol: "USDT",
|
|
436
|
+
name: "Tether USD",
|
|
437
|
+
version: "1",
|
|
438
|
+
decimals: 18,
|
|
439
|
+
// BSC USDT uses 18 decimals
|
|
440
|
+
tokenType: "legacy",
|
|
441
|
+
priority: 10
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
// Avalanche C-Chain
|
|
445
|
+
"eip155:43114": {
|
|
446
|
+
USDT: {
|
|
447
|
+
address: USDT_LEGACY_ADDRESSES["eip155:43114"],
|
|
448
|
+
symbol: "USDT",
|
|
449
|
+
name: "TetherToken",
|
|
450
|
+
version: "1",
|
|
451
|
+
decimals: 6,
|
|
452
|
+
tokenType: "legacy",
|
|
453
|
+
priority: 10
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
// Fantom
|
|
457
|
+
"eip155:250": {
|
|
458
|
+
USDT: {
|
|
459
|
+
address: USDT_LEGACY_ADDRESSES["eip155:250"],
|
|
460
|
+
symbol: "USDT",
|
|
461
|
+
name: "Frapped USDT",
|
|
462
|
+
version: "1",
|
|
463
|
+
decimals: 6,
|
|
464
|
+
tokenType: "legacy",
|
|
465
|
+
priority: 10
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
// Celo
|
|
469
|
+
"eip155:42220": {
|
|
470
|
+
USDT: {
|
|
471
|
+
address: USDT_LEGACY_ADDRESSES["eip155:42220"],
|
|
472
|
+
symbol: "USDT",
|
|
473
|
+
name: "Tether USD",
|
|
474
|
+
version: "1",
|
|
475
|
+
decimals: 18,
|
|
476
|
+
tokenType: "legacy",
|
|
477
|
+
priority: 10
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
// Kaia (formerly Klaytn)
|
|
481
|
+
"eip155:8217": {
|
|
482
|
+
USDT: {
|
|
483
|
+
address: USDT_LEGACY_ADDRESSES["eip155:8217"],
|
|
484
|
+
symbol: "USDT",
|
|
485
|
+
name: "Tether USD",
|
|
486
|
+
version: "1",
|
|
487
|
+
decimals: 6,
|
|
488
|
+
tokenType: "legacy",
|
|
489
|
+
priority: 10
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
function getTokenConfig(network, symbol) {
|
|
494
|
+
return TOKEN_REGISTRY[network]?.[symbol.toUpperCase()];
|
|
495
|
+
}
|
|
496
|
+
function getNetworkTokens(network) {
|
|
497
|
+
const tokens = TOKEN_REGISTRY[network];
|
|
498
|
+
if (!tokens) return [];
|
|
499
|
+
return Object.values(tokens).sort((a, b) => a.priority - b.priority);
|
|
500
|
+
}
|
|
501
|
+
function getDefaultToken(network) {
|
|
502
|
+
const tokens = getNetworkTokens(network);
|
|
503
|
+
return tokens[0];
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// src/permit2/constants.ts
|
|
507
|
+
var PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
|
|
508
|
+
|
|
509
|
+
// src/permit2-proxy/constants.ts
|
|
510
|
+
var SCHEME_PERMIT2_PROXY = "permit2-proxy";
|
|
511
|
+
var T402_EXACT_PERMIT2_PROXY = "0x0000000000000000000000000000000000000000";
|
|
512
|
+
var T402_UPTO_PERMIT2_PROXY = "0x0000000000000000000000000000000000000000";
|
|
513
|
+
|
|
514
|
+
// src/permit2-proxy/server/scheme.ts
|
|
515
|
+
var Permit2ProxyEvmScheme = class {
|
|
516
|
+
/**
|
|
517
|
+
* Creates a new Permit2ProxyEvmScheme server instance.
|
|
518
|
+
*
|
|
519
|
+
* @param config - Server configuration options
|
|
520
|
+
*/
|
|
521
|
+
constructor(config = {}) {
|
|
522
|
+
__publicField(this, "scheme", SCHEME_PERMIT2_PROXY);
|
|
523
|
+
__publicField(this, "moneyParsers", []);
|
|
524
|
+
__publicField(this, "config");
|
|
525
|
+
this.config = config;
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Get the list of supported EVM networks.
|
|
529
|
+
*
|
|
530
|
+
* @returns Array of supported network identifiers
|
|
531
|
+
*/
|
|
532
|
+
static getSupportedNetworks() {
|
|
533
|
+
return Object.keys(TOKEN_REGISTRY);
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Check if a network is supported.
|
|
537
|
+
*
|
|
538
|
+
* @param network - Network identifier to check
|
|
539
|
+
* @returns Whether the network is supported
|
|
540
|
+
*/
|
|
541
|
+
static isNetworkSupported(network) {
|
|
542
|
+
return network in TOKEN_REGISTRY;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Register a custom money parser for price conversion.
|
|
546
|
+
*
|
|
547
|
+
* @param parser - The money parser to register
|
|
548
|
+
* @returns This instance for chaining
|
|
549
|
+
*/
|
|
550
|
+
registerMoneyParser(parser) {
|
|
551
|
+
this.moneyParsers.push(parser);
|
|
552
|
+
return this;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Parse a price into an AssetAmount for the given network.
|
|
556
|
+
*
|
|
557
|
+
* @param price - The price to parse
|
|
558
|
+
* @param network - The target network
|
|
559
|
+
* @returns The parsed asset amount
|
|
560
|
+
*/
|
|
561
|
+
async parsePrice(price, network) {
|
|
562
|
+
if (typeof price === "object" && price !== null && "amount" in price) {
|
|
563
|
+
if (!price.asset) {
|
|
564
|
+
throw new Error(`Asset address must be specified for AssetAmount on network ${network}`);
|
|
565
|
+
}
|
|
566
|
+
return {
|
|
567
|
+
amount: price.amount,
|
|
568
|
+
asset: price.asset,
|
|
569
|
+
extra: price.extra || {}
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
const amount = this.parseMoneyToDecimal(price);
|
|
573
|
+
for (const parser of this.moneyParsers) {
|
|
574
|
+
const result = await parser(amount, network);
|
|
575
|
+
if (result !== null) {
|
|
576
|
+
return result;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
return this.defaultMoneyConversion(amount, network);
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Enhance payment requirements with Permit2 Proxy-specific data.
|
|
583
|
+
*
|
|
584
|
+
* @param paymentRequirements - The base payment requirements
|
|
585
|
+
* @param supportedKind - The supported kind metadata
|
|
586
|
+
* @param supportedKind.t402Version - Protocol version
|
|
587
|
+
* @param supportedKind.scheme - Payment scheme
|
|
588
|
+
* @param supportedKind.network - Target network
|
|
589
|
+
* @param supportedKind.extra - Extra metadata
|
|
590
|
+
* @param extensionKeys - Active extension keys
|
|
591
|
+
* @returns Enhanced payment requirements
|
|
592
|
+
*/
|
|
593
|
+
enhancePaymentRequirements(paymentRequirements, supportedKind, extensionKeys) {
|
|
594
|
+
void extensionKeys;
|
|
595
|
+
if (!paymentRequirements.extra) {
|
|
596
|
+
paymentRequirements.extra = {};
|
|
597
|
+
}
|
|
598
|
+
paymentRequirements.extra.permit2Address = PERMIT2_ADDRESS;
|
|
599
|
+
paymentRequirements.extra.exactProxyAddress = this.config.exactProxyAddress || T402_EXACT_PERMIT2_PROXY;
|
|
600
|
+
paymentRequirements.extra.uptoProxyAddress = this.config.uptoProxyAddress || T402_UPTO_PERMIT2_PROXY;
|
|
601
|
+
if (supportedKind.extra?.facilitator) {
|
|
602
|
+
paymentRequirements.extra.facilitator = supportedKind.extra.facilitator;
|
|
603
|
+
}
|
|
604
|
+
return Promise.resolve(paymentRequirements);
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Parse a money value into a decimal number.
|
|
608
|
+
*
|
|
609
|
+
* @param money - The money value to parse
|
|
610
|
+
* @returns The decimal amount
|
|
611
|
+
*/
|
|
612
|
+
parseMoneyToDecimal(money) {
|
|
613
|
+
if (typeof money === "number") {
|
|
614
|
+
if (!Number.isFinite(money)) {
|
|
615
|
+
throw new Error(`Invalid money value: ${money} (must be a finite number)`);
|
|
616
|
+
}
|
|
617
|
+
return money;
|
|
618
|
+
}
|
|
619
|
+
const cleanMoney = money.replace(/^\$/, "").trim();
|
|
620
|
+
const amount = parseFloat(cleanMoney);
|
|
621
|
+
if (!Number.isFinite(amount)) {
|
|
622
|
+
throw new Error(`Invalid money format: ${money}`);
|
|
623
|
+
}
|
|
624
|
+
return amount;
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Convert a decimal amount to a token amount using default network token.
|
|
628
|
+
*
|
|
629
|
+
* @param amount - The decimal amount
|
|
630
|
+
* @param network - The target network
|
|
631
|
+
* @returns The asset amount with token details
|
|
632
|
+
*/
|
|
633
|
+
defaultMoneyConversion(amount, network) {
|
|
634
|
+
const token = this.getDefaultAsset(network);
|
|
635
|
+
const tokenAmount = this.convertToTokenAmount(amount.toString(), token.decimals);
|
|
636
|
+
return {
|
|
637
|
+
amount: tokenAmount,
|
|
638
|
+
asset: token.address,
|
|
639
|
+
extra: {
|
|
640
|
+
symbol: token.symbol,
|
|
641
|
+
permit2Address: PERMIT2_ADDRESS
|
|
642
|
+
}
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Convert a decimal amount string to token smallest units.
|
|
647
|
+
*
|
|
648
|
+
* @param decimalAmount - The decimal amount as a string
|
|
649
|
+
* @param decimals - The token's decimal places
|
|
650
|
+
* @returns The amount in smallest units
|
|
651
|
+
*/
|
|
652
|
+
convertToTokenAmount(decimalAmount, decimals) {
|
|
653
|
+
if (!/^-?\d+(\.\d+)?$/.test(decimalAmount)) {
|
|
654
|
+
throw new Error(`Invalid amount format: ${decimalAmount}`);
|
|
655
|
+
}
|
|
656
|
+
const [wholePart, fracPart = ""] = decimalAmount.split(".");
|
|
657
|
+
const paddedFrac = fracPart.padEnd(decimals, "0").slice(0, decimals);
|
|
658
|
+
const combined = wholePart + paddedFrac;
|
|
659
|
+
const result = combined.replace(/^0+/, "") || "0";
|
|
660
|
+
return result;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* Get the default token asset for a network.
|
|
664
|
+
*
|
|
665
|
+
* @param network - The target network
|
|
666
|
+
* @returns The token configuration
|
|
667
|
+
*/
|
|
668
|
+
getDefaultAsset(network) {
|
|
669
|
+
if (this.config.preferredToken) {
|
|
670
|
+
const preferred = getTokenConfig(network, this.config.preferredToken);
|
|
671
|
+
if (preferred) return preferred;
|
|
672
|
+
}
|
|
673
|
+
const defaultToken = getDefaultToken(network);
|
|
674
|
+
if (defaultToken) return defaultToken;
|
|
675
|
+
throw new Error(`No tokens configured for network ${network}`);
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
// src/permit2-proxy/server/register.ts
|
|
680
|
+
function registerPermit2ProxyEvmScheme(server, config = {}) {
|
|
681
|
+
if (config.networks && config.networks.length > 0) {
|
|
682
|
+
config.networks.forEach((network) => {
|
|
683
|
+
server.register(network, new Permit2ProxyEvmScheme(config.schemeConfig));
|
|
684
|
+
});
|
|
685
|
+
} else {
|
|
686
|
+
server.register("eip155:*", new Permit2ProxyEvmScheme(config.schemeConfig));
|
|
687
|
+
}
|
|
688
|
+
return server;
|
|
689
|
+
}
|
|
690
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
691
|
+
0 && (module.exports = {
|
|
692
|
+
Permit2ProxyEvmScheme,
|
|
693
|
+
registerPermit2ProxyEvmScheme
|
|
694
|
+
});
|
|
695
|
+
//# sourceMappingURL=index.js.map
|