@spicenet-io/spiceflow-core 0.3.15 → 0.3.17

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.
Files changed (49) hide show
  1. package/package.json +1 -1
  2. package/dist/abis/delegate.d.ts +0 -419
  3. package/dist/abis/delegate.d.ts.map +0 -1
  4. package/dist/abis/erc20.d.ts +0 -130
  5. package/dist/abis/erc20.d.ts.map +0 -1
  6. package/dist/abis/index.d.ts +0 -5
  7. package/dist/abis/index.d.ts.map +0 -1
  8. package/dist/abis/uniV3.d.ts +0 -93
  9. package/dist/abis/uniV3.d.ts.map +0 -1
  10. package/dist/abis/wcbtc.d.ts +0 -58
  11. package/dist/abis/wcbtc.d.ts.map +0 -1
  12. package/dist/authorization.d.ts +0 -44
  13. package/dist/authorization.d.ts.map +0 -1
  14. package/dist/chains/index.d.ts +0 -25
  15. package/dist/chains/index.d.ts.map +0 -1
  16. package/dist/chains/list.d.ts +0 -3
  17. package/dist/chains/list.d.ts.map +0 -1
  18. package/dist/chains/types.d.ts +0 -30
  19. package/dist/chains/types.d.ts.map +0 -1
  20. package/dist/config.d.ts +0 -9
  21. package/dist/config.d.ts.map +0 -1
  22. package/dist/core.d.ts +0 -49
  23. package/dist/core.d.ts.map +0 -1
  24. package/dist/http.d.ts +0 -17
  25. package/dist/http.d.ts.map +0 -1
  26. package/dist/index.cjs +0 -1518
  27. package/dist/index.d.ts +0 -14
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -1437
  30. package/dist/logos.d.ts +0 -12
  31. package/dist/logos.d.ts.map +0 -1
  32. package/dist/relayer.d.ts +0 -22
  33. package/dist/relayer.d.ts.map +0 -1
  34. package/dist/rfqt.d.ts +0 -17
  35. package/dist/rfqt.d.ts.map +0 -1
  36. package/dist/status.d.ts +0 -10
  37. package/dist/status.d.ts.map +0 -1
  38. package/dist/swap.d.ts +0 -31
  39. package/dist/swap.d.ts.map +0 -1
  40. package/dist/tokens/index.d.ts +0 -17
  41. package/dist/tokens/index.d.ts.map +0 -1
  42. package/dist/tokens/list.d.ts +0 -3
  43. package/dist/tokens/list.d.ts.map +0 -1
  44. package/dist/tokens/types.d.ts +0 -33
  45. package/dist/tokens/types.d.ts.map +0 -1
  46. package/dist/types.d.ts +0 -66
  47. package/dist/types.d.ts.map +0 -1
  48. package/dist/utils.d.ts +0 -11
  49. package/dist/utils.d.ts.map +0 -1
package/dist/index.js DELETED
@@ -1,1437 +0,0 @@
1
- // src/config.ts
2
- var SPICENET_NATIVE_CHAIN_ID = 4321;
3
- function isSpicenetChainId(chainId) {
4
- return BigInt(chainId) === BigInt(SPICENET_NATIVE_CHAIN_ID);
5
- }
6
-
7
- // src/authorization.ts
8
- import { encodeAbiParameters, keccak256 } from "viem";
9
- var CallComponents = [
10
- { name: "to", type: "address" },
11
- { name: "value", type: "uint256" },
12
- { name: "data", type: "bytes" }
13
- ];
14
- var ChainBatchHashAbi = [
15
- { name: "chainId", type: "uint256" },
16
- { name: "calls", type: "tuple[]", components: CallComponents }
17
- ];
18
- var IntentHashAbi = [
19
- { type: "string" },
20
- { type: "uint256" },
21
- { type: "uint256" },
22
- { type: "bytes32[]" }
23
- ];
24
- function hashChainBatches(chainCalls) {
25
- return chainCalls.map(({ chainId, calls }) => {
26
- const cid = BigInt(chainId);
27
- const hash = keccak256(
28
- encodeAbiParameters(ChainBatchHashAbi, [cid, calls])
29
- );
30
- return { hash, chainId: cid, calls };
31
- });
32
- }
33
- function getIntentHash(signatureType, nbf, exp, chainBatches) {
34
- const hashes = chainBatches.map(({ hash }) => hash);
35
- return keccak256(
36
- encodeAbiParameters(IntentHashAbi, [signatureType, nbf, exp, hashes])
37
- );
38
- }
39
- async function getAccountNonce(address, publicClient) {
40
- return await publicClient.getTransactionCount({ address, blockTag: "pending" });
41
- }
42
- async function getRecentBlock(publicClient) {
43
- return await publicClient.getBlockNumber();
44
- }
45
-
46
- // src/http.ts
47
- var HttpError = class extends Error {
48
- constructor(message, status, code, body) {
49
- super(message);
50
- this.status = status;
51
- this.code = code;
52
- this.body = body;
53
- }
54
- };
55
- function sleep(ms) {
56
- return new Promise((r) => setTimeout(r, ms));
57
- }
58
- async function fetchWithRetry(url, init = {}, opts = {}) {
59
- const {
60
- retries = 3,
61
- backoffMs = 300,
62
- maxBackoffMs = 5e3,
63
- jitter = true,
64
- idempotencyKey,
65
- retryOn = (e) => e instanceof Error || e instanceof Response && (e.status >= 500 || e.status === 429),
66
- signal
67
- } = opts;
68
- const headers = new Headers(init.headers || {});
69
- if (idempotencyKey) headers.set("Idempotency-Key", idempotencyKey);
70
- const reqInit = { ...init, headers, signal };
71
- let attempt = 0;
72
- let lastErr;
73
- while (attempt <= retries) {
74
- try {
75
- const res = await fetch(url, reqInit);
76
- if (!res.ok && retryOn(res) && attempt < retries) {
77
- attempt++;
78
- const base = Math.min(maxBackoffMs, backoffMs * 2 ** (attempt - 1));
79
- const delay = jitter ? Math.floor(base * (0.7 + Math.random() * 0.6)) : base;
80
- await sleep(delay);
81
- continue;
82
- }
83
- if (!res.ok) {
84
- let body;
85
- try {
86
- body = await res.json();
87
- } catch {
88
- body = await res.text();
89
- }
90
- throw new HttpError(`HTTP ${res.status}`, res.status, body && body.code || void 0, body);
91
- }
92
- return res;
93
- } catch (e) {
94
- if (attempt >= retries || !retryOn(e)) throw e;
95
- attempt++;
96
- const base = Math.min(maxBackoffMs, backoffMs * 2 ** (attempt - 1));
97
- const delay = jitter ? Math.floor(base * (0.7 + Math.random() * 0.6)) : base;
98
- await sleep(delay);
99
- lastErr = e;
100
- }
101
- }
102
- throw lastErr;
103
- }
104
-
105
- // src/relayer.ts
106
- async function submitTransaction(baseUrl, request, retry) {
107
- const res = await fetchWithRetry(`${baseUrl}/transaction/submit`, {
108
- method: "POST",
109
- headers: { "Content-Type": "application/json" },
110
- body: JSON.stringify(request, (k, v) => typeof v === "bigint" ? v.toString() : v)
111
- }, retry);
112
- const result = await res.json();
113
- return { hash: result.hash, intentId: result.intentId || request.intentAuthorization.signature };
114
- }
115
-
116
- // src/core.ts
117
- var SpiceFlowCore = class {
118
- constructor(cfg, signers) {
119
- this.cfg = cfg;
120
- this.signers = signers;
121
- }
122
- getConfig() {
123
- return this.cfg;
124
- }
125
- getClient(chainId) {
126
- return this.cfg.publicClientForChain(chainId);
127
- }
128
- async signDelegations(params) {
129
- const out = [];
130
- for (const d of params.delegations) {
131
- const client = this.getClient(d.chainId);
132
- const nonce = typeof d.nonce === "number" ? d.nonce : await getAccountNonce(params.user, client);
133
- const auth = await this.signers.authorizationSigner({ contractAddress: d.contractAddress, chainId: d.chainId, nonce, address: params.user });
134
- delete auth.v;
135
- out.push(auth);
136
- }
137
- return out;
138
- }
139
- async buildChainBatches(nbf, exp, callsByChain, signatureType = "ecdsa") {
140
- const chainBatches = hashChainBatches(
141
- callsByChain.map((c) => ({ chainId: c.chainId, calls: c.calls }))
142
- );
143
- const digest = getIntentHash(signatureType, nbf, exp, chainBatches);
144
- return { chainBatches, digest };
145
- }
146
- async signIntent(digest) {
147
- return this.signers.messageSigner(digest);
148
- }
149
- async submitIntent(req) {
150
- const signatureType = req.signatureType ?? "ecdsa";
151
- const signature = req.signature ?? await this.signIntent(getIntentHash(signatureType, req.nbf, req.exp, req.chainBatches));
152
- const resp = await submitTransaction(this.cfg.txApiUrl, {
153
- tokenAddress: req.tokenAddress,
154
- tokenAmount: req.tokenAmount,
155
- address: req.user,
156
- authorization: req.authorization,
157
- intentAuthorization: { signature, chainBatches: req.chainBatches }
158
- });
159
- return resp;
160
- }
161
- };
162
-
163
- // src/status.ts
164
- async function getIntentStepStatus(txApiUrl, intentId, stepId, retry) {
165
- const res = await fetchWithRetry(`${txApiUrl}/intent/${intentId}/step/${stepId}/status`, {}, retry);
166
- return res.json();
167
- }
168
-
169
- // src/rfqt.ts
170
- async function prepareRFQT(txApiUrl, request, retry) {
171
- const res = await fetchWithRetry(`${txApiUrl}/rfqt`, {
172
- method: "POST",
173
- headers: { "Content-Type": "application/json" },
174
- body: JSON.stringify(request)
175
- }, retry);
176
- return res.json();
177
- }
178
-
179
- // src/logos.ts
180
- var logo_arb = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAjVBMVEVMaXEgMkwgMk0fMUogMkwgMkwgMkwgMUsNOE0gMUwhMk0fMk0fMUsgM00gMkz///8hM04iNVESqf78/P0RIz8hKkEYKkURsv8Rrv8yQ1vq7O7W2d4fQGBXZHhrdohFVGoVjtMbWIOeprETm+XEyM8YdK0SpfQaZZYdS3AWgb+mrbh5hJSKlKG0usOUnakhSCyqAAAADnRSTlMAj2cY0Oqw/QP6KkyHd87n3EEAAAAJcEhZcwAACxMAAAsTAQCanBgAAAPZSURBVHjarZfbeqowEIVBQUBsmEBArHiuVu3h/R9vz4QQIMHD/mwuWmrJuNbkz2TiONYIQ/oxjWcTz48Yi3xvMounYfOfR4NeCmPXizjnAAwHAD5GnhuHz4TAF8ZvHk6BIIoCJkcQRAF94r2N5Qv3v37s+gBBoOa2Az8B8GfjuyJCJxz5+N3W7CYGcH8U3hYROlMPp7M7A0N40xsRUNoo4sHd+aSCR6NBG2EYujx6MF2JcEM7Ajqb8Ig9NSI+GUjE8/NVBFOAOZ/owbXvPPQj9CWEjmvOLwSNApoHU4PbjYD554Exf33d7/fXdVGs5MOXmUo+aiPg+vv95Ydi8Z4kSZb8Cr7EX1lyLcBYC7/DAyawL4CLrySjsREr+ZCsjAAoQSeSDBgLAMWH/N6PorjKhyUwsJZCmxgbBnD+JpMOvoS2EuSmBPDHSsDMFMDFd0IR3hdiLR+SjTjvzAgRn9USUIBJCtSZ+ykaKyy/HCzMawmh8wZWBlaJFL4W2go/lGfbxBtJCD1zB4OoM4cOGiv5riyPdgCPLMSmAWAqc3uhreSXsjxwa1NAjAFcbglQmVsJbaU6pWlppTFAoIccFD/12nPx2zj4nKfp/DLoYWpuYo3xd4PxXgTbEhWcKpumqRObDiTGFGFTOyAr5AAlfNoeYpuiIYwZKUjL7RBLE/4IY7Qic5CmpyqwC4uZQwvjbIMb8YYHzKJjcWxhXDAO+WUuPdg0O09gXG2rfCc92DhHDnsCY5SOe4E8WDgzZwDjrI9xcJlvmfJg42xYuIXxGXeT9GDiHBlJ1BiD2HcwRunKg4EzJrG3jIhxptZeWyGMUXp+lB76ONMy9kDqYKytnJV0+dtAgUDqodzBuLFSfzNKH8KZUO5upiGMlfRDpXBOq04E2kzd7dwWAG2laKTv8upU2h6m/YICzTmmrWDDtVXpt3Gui2Jb0jTGq041Br0TGxRanGVJ6xRVaApAuyNJgd6JNs6yqHY8kINMnmMNxtRg5FslXS3Itu8AD5Z2HRb7TDrQGMsA9U5EnM9lOj8duXGwdI427EY2P8kykBjTjiTqqJo00g/zS5UbR1vvcAVeiPVatAeL/FDvxPxzl+cA5uHaO96xJyoIY8qhaipApR9RCNrp7fFuNhj4yuLaVGMFGKZ/nh4rBjDYYOBC9EozpeIjoWqs/sb0l9tz3jtWsMVxbjZZmIpivdw0bRHk5wOZv9Nk2W0eiK5cYDnA7TZvqNFk3CyW9xrNoVb3UbNsddsvNtt/0e5THuDJC8eNK8trV57XL11/cO2rL56zFy6eKsQLV98/uHz/9/X/H1O71f+Xu2swAAAAAElFTkSuQmCC";
181
- var logo_base = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAATlBMVEVMaXEAUPQAT+wAT+0AT+8AUPUASdgAUf4ASN8AUPcAUPUASf8AUv////8BVf8ASv/9/v8sbf/0+P9fkf9Efv/U4f+80f8aYf92of+Xt//AWxqQAAAADHRSTlMAklRFcb8d/ATgpvy0jdC4AAAACXBIWXMAAAsTAAALEwEAmpwYAAACQElEQVR42q1X27KDIAy0CgKOKN7b///REzwKQVHppPvQaa275AYkWXaGtB9lwV6cKwDnL1aU7o9H2LdKxlUTQHFWJknAGzLnAigigH3Ac/koITPJYO1aiPoAeAJ2MHmrAP/lyq5dR2HtUHkm5TW/rK7pu0RVXhkhs0Ld0jcJVcQVZMZg+eDtPQWhRCNYXOEVLA+01qHGImDE64KP6MCul3GwGLvF/sISZwUZ8IFej5+p1xv6+d0FElZBHv1H67fNMK1Ms2L9Ng/wGCkEcYD4e37TtkA3emPuOlpPIzJCNEEuSuUEmnaZtUFsp6H1p3FGQDZL5EKF+GOvj+xdQ08dUqi8AzniD2C8voDR/YgU8t0J6RwA/sXyZwVwQh4zAPbfrL8pdF5hy4Q3oF36e75VmFAc5SEC9fzEtw5+vAn/UeCbwBoA/Qij9zCIhq814EtoShOYW1dOthaYM+Cdwg9NYMiDRAOwCasPexVDCm9L4JBKX8+F8+CTZoBVeDsfClRFU7qA94G5g6Tt+m37XwL5sPiDhaMQ6FQLjAsC9wKD7h9wTqQVcBth6e6x+I1m9LALKC+ATvEYIEg0gfZR4MmFbogLoCCaxDSGQSSnMSikVAFcSORSJm8m8nYmHyj0I418qFKP9S8vFh25WIhX2w8uV+r1/oMGg9rixJss/U2TBW2euGnzTKTNq0URNorRRtOkNpr0Vvey2X4DhjHWbMvztHPd7tdJ7T7EQdAGDurIQx+66GMfffD8wehLH76/Hv//AJLWpkq0aQz+AAAAAElFTkSuQmCC";
182
- var logo_cbtc = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAATlBMVEX////jcS/eXCrpkDfhaC3kezLnhTTfYSvwqj7upD3tnjvxsT/dVynbVCjsmDj9/PfytUHxrj7tt4rwxZ7lkGDtr2Dz1brpo2v58OT35NHn8bXSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC2UlEQVR42rWWi5ajIAyGQxFs7VQ6oALv/6LLRS4Bes7sOvuDlEvyGSE6A++Lgufz+X5ivZup99vXMocW4XlR1wHfFwX3i3KA70v1FyJ43P+xxh94/Fj34SyUpftns/vn4V9E8PgUweLK2S6x7zu9kkuyjz3wK3E9XKfrPlAGVcxlgeG9dgWiEah9GNcIsEqzG2jkptQ6BKxV8XVZHwakBFG7Cz9jHsGiNL7C6gaZ4Ou6KuewWxyA9TGpsF5drsLaaKG7v/exY4DbFY9dO3WAlR4h+v2o/Y9AhYMOABSVle4p5moTRMJJ2thToK7xNV1renipCkClPbXJL1cog/gj87lpU3fPeBQNKk5AsRbT3VbUwZilcWgAXJXzF9rGgdVlDg4+BsRpruv0ObQHCND1gYgdE4DTUihHpqBD6ErjlAq3ywUBuMbpe3BlreIHTmvpDIP1CfC9cLm2zV/uo+IWAwytfNwjZFGG3yAfQdDRTCtWnHgF4Jto3uDtnG/ebbGNAUwrJElzbBKv6A8RaImkf7LCgfFcdPMIloaHZe3eCu3mk1cNIKreLRF2y5uqdhMJZ9kJXD+LGpwHNk53x+jdk8A3CUhkk0hMHockbSKR6HNGwJAsTuUAlBoBLPbAAKJRAC4x3E6IDX3dNOkAJFXXVOF6R5FAhRr9sw+ULvGlysbyFmpVZaG3rHyAIPmjzImcN8Ru5ZM2MewBwatqmCl/inI0Mh2PYSQbR/MmAkImXe4KXTR6au07ACFxz7f66whqi9TeugdMYR/DERYAhKMU2zQATE0hk4L27CMQDr/aFJhOkVCDuPHZ18hlpeHINJpnQKVZGmZbgGVGzp0pGQPYJvt/ceTGBrZDgNM20NjyA2C+zb3GgHkoz+jLSB8AP9d/BNyqdrglJ+B2u82pRs31z9xNzdXlBLeLug74uqjfALxeofcK18vXVxm90tJXGMS12IT5F7wu6jLgDxzHd9wqQIUtAAAAAElFTkSuQmCC";
183
- var logo_citrea = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAATlBMVEX////jcS/eXCrpkDfhaC3kezLnhTTfYSvwqj7upD3tnjvxsT/dVynbVCjsmDj9/PfytUHxrj7tt4rwxZ7lkGDtr2Dz1brpo2v58OT35NHn8bXSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC2UlEQVR42rWWi5ajIAyGQxFs7VQ6oALv/6LLRS4Bes7sOvuDlEvyGSE6A++Lgufz+X5ivZup99vXMocW4XlR1wHfFwX3i3KA70v1FyJ43P+xxh94/Fj34SyUpftns/vn4V9E8PgUweLK2S6x7zu9kkuyjz3wK3E9XKfrPlAGVcxlgeG9dgWiEah9GNcIsEqzG2jkptQ6BKxV8XVZHwakBFG7Cz9jHsGiNL7C6gaZ4Ou6KuewWxyA9TGpsF5drsLaaKG7v/exY4DbFY9dO3WAlR4h+v2o/Y9AhYMOABSVle4p5moTRMJJ2thToK7xNV1renipCkClPbXJL1cog/gj87lpU3fPeBQNKk5AsRbT3VbUwZilcWgAXJXzF9rGgdVlDg4+BsRpruv0ObQHCND1gYgdE4DTUihHpqBD6ErjlAq3ywUBuMbpe3BlreIHTmvpDIP1CfC9cLm2zV/uo+IWAwytfNwjZFGG3yAfQdDRTCtWnHgF4Jto3uDtnG/ebbGNAUwrJElzbBKv6A8RaImkf7LCgfFcdPMIloaHZe3eCu3mk1cNIKreLRF2y5uqdhMJZ9kJXD+LGpwHNk53x+jdk8A3CUhkk0hMHockbSKR6HNGwJAsTuUAlBoBLPbAAKJRAC4x3E6IDX3dNOkAJFXXVOF6R5FAhRr9sw+ULvGlysbyFmpVZaG3rHyAIPmjzImcN8Ru5ZM2MewBwatqmCl/inI0Mh2PYSQbR/MmAkImXe4KXTR6au07ACFxz7f66whqi9TeugdMYR/DERYAhKMU2zQATE0hk4L27CMQDr/aFJhOkVCDuPHZ18hlpeHINJpnQKVZGmZbgGVGzp0pGQPYJvt/ceTGBrZDgNM20NjyA2C+zb3GgHkoz+jLSB8AP9d/BNyqdrglJ+B2u82pRs31z9xNzdXlBLeLug74uqjfALxeofcK18vXVxm90tJXGMS12IT5F7wu6jLgDxzHd9wqQIUtAAAAAElFTkSuQmCC";
184
- var logo_eth = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAATlBMVEVMaXFIo/VMrO1MqvNKpvNJpfNIpPRGoPRRoe5Io/RHoPT////8/v+k0fpLqv9KovVKpfw8m/R4uvdirva02fvq9P6Oxfna7P32+v/F4fwkLp0eAAAACnRSTlMA6BMrVn2o/APPAqKYHQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAuJJREFUeNqtl+vWqiAQhj3kAVAhwMz7v9E9QIbJi/attj+slc3rwzDMoSiSq+/dvb41LWNl15WMtc2tjk+uLvpTXzesm6ZJKcm5VIq+dqype//wyrwvqoapScnOX5yHT0k/saa6gvDm5aSC6f5yv6ipvJCgR7dykkfjKCKn8nayjr6oW/d2nr0cRVvnFHr3+jPzIOEgemzfkOeOBlImElI1SKEvWvB6qbUEEG2qAO3l/TGOj7v8QoH4J7D6+zLa5Y4YDqvw9in/XYtxFPpagfyvOAJYncCaCtCf1cdeVKVK7R2AExgMUlBl9elADgRWLwAR+M6RtABsr8XgCSACKbwX0TOVAQgCwkIBxfpzADNsAoTATxByAJbgwxJOEc4ANgLxPEHIboEVcQkZhLARdcdRDJiniASEgAh453Jtkwd4C9BnbicLvALuASJBBoHWkIviYPcWwAg+nmuJjmEA2BGIWSEnyBpu4gawE8ggkBOgD9UsjgRihl5skA/fAHuBQTxAYiEvMrSEF8AHAULoJlakB4FS6Wa0F0AIdByAQAQ4CKQIUGAH8LkEgIAJ5IIFhFggwcGJe4CDQIrgnJhu4+JSCFrCkCC4bUwCSepV4F0Q67FQukBKQ1lrvYhAEQ8T3RZ6AEK5lsd8YubVeIl9PiBzs84GHKb0OFM2HKx5zCImVTE/tE3rQyhPiRfdPojBapJ4EXhzAcLAJRRwHEM+e1o9zk5gHp05SqwhpaGkGmKJJOw40u3pvLBInFRRWg8ZyUsYY19fDQBofV24oYzgwzE6MZMNQm1DpS1J66CybNU1U9tcRMfKtJwV1wxCcEMgmE0eIIfg+4vNBxoWhdhgwOoUUqsnwBl93yvC8uTc8OqR+HmTlWnzJB0rH4mKy6s279dGM9fqUjSMdvzGPtesw279L+16buZo8cCABg5gnxk4fh95nEL1zdBVnY1tv419cfDkaPDk14Pn76Pvfxi+/zz+/wNRN43Lkt3u4wAAAABJRU5ErkJggg==";
185
- var logo_pharos = "data:image/jpeg;base64,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";
186
- var logo_starknet = "data:image/png;base64,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";
187
- var logo_usdc = "data:image/png;base64,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";
188
- var logo_usdt = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTExIiBoZWlnaHQ9IjkwIiB2aWV3Qm94PSIwIDAgMTExIDkwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI0LjQ4MjUgMC44NjIzMDVIODguMDQ5NkM4OS41NjYzIDAuODYyMzA1IDkwLjk2NzUgMS42NDgyNyA5MS43MjM5IDIuOTIzMzhMMTEwLjI0NCAzNC4xNDE5QzExMS4yMDQgMzUuNzYwOSAxMTAuOTE5IDM3LjgwNDMgMTA5LjU0OSAzOS4xMTcxTDU4LjU3MjkgODcuOTcwM0M1Ni45MjE2IDg5LjU1MjggNTQuMjY1MiA4OS41NTI4IDUyLjYxMzkgODcuOTcwM0wxLjcwNjk5IDM5LjE4MzFDMC4zMDUyNjIgMzcuODM5OCAwLjA0Mjc4MTIgMzUuNzM2NyAxLjA3MzU0IDM0LjEwNzdMMjAuODY5NiAyLjgyMzIyQzIxLjY0MDYgMS42MDQ4MyAyMy4wMDg3IDAuODYyMzA1IDI0LjQ4MjUgMC44NjIzMDVaTTc5Ljg0MTkgMTQuODAwM1YyMy41NTk3SDYxLjczNDNWMjkuNjMyOUM3NC40NTE4IDMwLjI4MTkgODMuOTkzNCAzMi45NDc1IDg0LjA2NDIgMzYuMTQyNUw4NC4wNjM4IDQyLjgwM0M4My45OTMgNDUuOTk4IDc0LjQ1MTggNDguNjYzNSA2MS43MzQzIDQ5LjMxMjVWNjQuMjE2OEg0OS43MTA1VjQ5LjMxMjVDMzYuOTkyOSA0OC42NjM1IDI3LjQ1MTMgNDUuOTk4IDI3LjM4MDUgNDIuODAzTDI3LjM4MSAzNi4xNDI1QzI3LjQ1MTcgMzIuOTQ3NSAzNi45OTI5IDMwLjI4MTkgNDkuNzEwNSAyOS42MzI5VjIzLjU1OTdIMzEuNjAyOFYxNC44MDAzSDc5Ljg0MTlaTTU1LjcyMjQgNDQuNzM2N0M2OS4yOTQzIDQ0LjczNjcgODAuNjM4MiA0Mi40ODI3IDgzLjQxNDMgMzkuNDcyN0M4MS4wNjAxIDM2LjkyMDIgNzIuNTQ0OCAzNC45MTE0IDYxLjczNDMgMzQuMzU5N1Y0MC43MTgzQzU5Ljc5NjYgNDAuODE3MiA1Ny43ODUyIDQwLjg2OTMgNTUuNzIyNCA0MC44NjkzQzUzLjY1OTUgNDAuODY5MyA1MS42NDgxIDQwLjgxNzIgNDkuNzEwNSA0MC43MTgzVjM0LjM1OTdDMzguODk5OSAzNC45MTE0IDMwLjM4NDYgMzYuOTIwMiAyOC4wMzA0IDM5LjQ3MjdDMzAuODA2NiA0Mi40ODI3IDQyLjE1MDQgNDQuNzM2NyA1NS43MjI0IDQ0LjczNjdaIiBmaWxsPSIjMDA5MzkzIi8+Cjwvc3ZnPgo=";
189
- var logo_wbtc = "data:image/png;base64,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";
190
-
191
- // src/tokens/list.ts
192
- var TOKENS = [
193
- {
194
- symbol: "USDC",
195
- name: "USD Coin",
196
- equivalenceGroup: "USDC",
197
- logo: logo_usdc,
198
- deployments: [
199
- {
200
- chainId: 1,
201
- address: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
202
- decimals: 6,
203
- network: "mainnet",
204
- swapContracts: []
205
- },
206
- {
207
- chainId: 8453,
208
- address: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
209
- decimals: 6,
210
- network: "mainnet",
211
- swapContracts: []
212
- },
213
- {
214
- chainId: 42161,
215
- address: "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
216
- decimals: 6,
217
- network: "mainnet",
218
- swapContracts: []
219
- },
220
- {
221
- chainId: 4114,
222
- address: "0xe045e6c36cf77faa2cfb54466d71a3aef7bbe839",
223
- decimals: 6,
224
- network: "mainnet",
225
- swapContracts: []
226
- },
227
- {
228
- chainId: 23448594291968336,
229
- address: "0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8",
230
- decimals: 6,
231
- network: "mainnet",
232
- swapContracts: []
233
- },
234
- {
235
- chainId: 11155111,
236
- address: "0x1c7d4b196cb0c7b01d743fbc6116a902379c7238",
237
- decimals: 6,
238
- network: "testnet",
239
- swapContracts: []
240
- },
241
- {
242
- chainId: 421614,
243
- address: "0xbeb51deb2018b67b35d5695fd15bb30d452c7868",
244
- decimals: 18,
245
- network: "testnet",
246
- swapContracts: []
247
- },
248
- {
249
- chainId: 84532,
250
- address: "0xf370dc3765f81ac9dd2febd59fb4e710330b0bc8",
251
- decimals: 18,
252
- network: "testnet",
253
- swapContracts: []
254
- }
255
- ]
256
- },
257
- {
258
- symbol: "ctUSD",
259
- name: "Citrea USD",
260
- equivalenceGroup: "USDC",
261
- logo: logo_usdc,
262
- deployments: [
263
- {
264
- chainId: 4114,
265
- address: "0x8d82c4e3c936c7b5724a382a9c5a4e6eb7ab6d5d",
266
- decimals: 6,
267
- network: "mainnet",
268
- swapContracts: []
269
- }
270
- ]
271
- },
272
- {
273
- symbol: "sUSD",
274
- name: "Spice USD",
275
- equivalenceGroup: "SUSD",
276
- logo: logo_usdc,
277
- deployments: [
278
- {
279
- chainId: 11155111,
280
- address: "0x9bf2d44887be65c4f6337b20814ec79197a092aa",
281
- decimals: 18,
282
- network: "testnet",
283
- swapContracts: []
284
- },
285
- {
286
- chainId: 421614,
287
- address: "0xf370dc3765f81ac9dd2febd59fb4e710330b0bc8",
288
- decimals: 18,
289
- network: "testnet",
290
- swapContracts: []
291
- },
292
- {
293
- chainId: 84532,
294
- address: "0xbeb51deb2018b67b35d5695fd15bb30d452c7868",
295
- decimals: 18,
296
- network: "testnet",
297
- swapContracts: []
298
- }
299
- ]
300
- },
301
- {
302
- symbol: "USDT",
303
- name: "Tether USD",
304
- equivalenceGroup: "USDC",
305
- logo: logo_usdt,
306
- deployments: [
307
- {
308
- chainId: 1,
309
- address: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
310
- decimals: 6,
311
- network: "mainnet",
312
- swapContracts: []
313
- },
314
- {
315
- chainId: 8453,
316
- address: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2",
317
- decimals: 6,
318
- network: "mainnet",
319
- swapContracts: []
320
- },
321
- {
322
- chainId: 42161,
323
- address: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9",
324
- decimals: 6,
325
- network: "mainnet",
326
- swapContracts: []
327
- }
328
- ]
329
- },
330
- {
331
- symbol: "USD",
332
- name: "USD Stable Coin",
333
- equivalenceGroup: "SUSD",
334
- logo: logo_usdc,
335
- deployments: [
336
- {
337
- chainId: 5115,
338
- address: "0xf19308f923582a6f7c465e5ce7a9dc1bec6665b1",
339
- decimals: 18,
340
- network: "testnet",
341
- swapContracts: []
342
- },
343
- {
344
- chainId: 688689,
345
- address: "0x16b90aeb3de140dde993da1d5734bca28574702b",
346
- decimals: 6,
347
- network: "testnet",
348
- swapContracts: []
349
- }
350
- ]
351
- },
352
- {
353
- symbol: "WBTC",
354
- name: "Wrapped Bitcoin",
355
- equivalenceGroup: "WBTC",
356
- logo: logo_wbtc,
357
- deployments: [
358
- {
359
- chainId: 1,
360
- address: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
361
- decimals: 8,
362
- network: "mainnet",
363
- swapContracts: []
364
- },
365
- {
366
- chainId: 42161,
367
- address: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f",
368
- decimals: 8,
369
- network: "mainnet",
370
- swapContracts: []
371
- },
372
- {
373
- chainId: 11155111,
374
- address: "0x4fc381b6cc6df8cf1c1bd46d184475be5b7a3c62",
375
- decimals: 8,
376
- network: "testnet",
377
- swapContracts: []
378
- },
379
- {
380
- chainId: 421614,
381
- address: "0xba4c54d4cf10c766c22a08f783998cfab237f7c9",
382
- decimals: 8,
383
- network: "testnet",
384
- swapContracts: []
385
- },
386
- {
387
- chainId: 84532,
388
- address: "0x16dd3a855433059be478facb416d9afed6ca96ec",
389
- decimals: 8,
390
- network: "testnet",
391
- swapContracts: []
392
- }
393
- ]
394
- },
395
- {
396
- symbol: "ETH",
397
- name: "Ether",
398
- equivalenceGroup: "ETH",
399
- logo: logo_eth,
400
- deployments: [
401
- {
402
- chainId: 1,
403
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
404
- decimals: 18,
405
- network: "mainnet",
406
- swapContracts: []
407
- },
408
- {
409
- chainId: 8453,
410
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
411
- decimals: 18,
412
- network: "mainnet",
413
- swapContracts: []
414
- },
415
- {
416
- chainId: 42161,
417
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
418
- decimals: 18,
419
- network: "mainnet",
420
- swapContracts: []
421
- },
422
- {
423
- chainId: 23448594291968336,
424
- address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
425
- decimals: 18,
426
- network: "mainnet",
427
- swapContracts: []
428
- },
429
- {
430
- chainId: 11155111,
431
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
432
- decimals: 18,
433
- network: "testnet",
434
- swapContracts: []
435
- },
436
- {
437
- chainId: 421614,
438
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
439
- decimals: 18,
440
- network: "testnet",
441
- swapContracts: []
442
- },
443
- {
444
- chainId: 84532,
445
- address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
446
- decimals: 18,
447
- network: "testnet",
448
- swapContracts: []
449
- }
450
- ]
451
- },
452
- {
453
- symbol: "cbETH",
454
- name: "Coinbase Wrapped Staked ETH",
455
- equivalenceGroup: "ETH",
456
- logo: logo_eth,
457
- deployments: [
458
- {
459
- chainId: 8453,
460
- address: "0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22",
461
- decimals: 18,
462
- network: "mainnet",
463
- swapContracts: []
464
- }
465
- ]
466
- },
467
- {
468
- symbol: "cBTC",
469
- name: "Citrea Bitcoin",
470
- equivalenceGroup: "CBTC",
471
- logo: logo_cbtc,
472
- deployments: [
473
- {
474
- chainId: 4114,
475
- address: "0x3100000000000000000000000000000000000002",
476
- decimals: 18,
477
- network: "mainnet",
478
- swapContracts: []
479
- }
480
- ]
481
- },
482
- {
483
- symbol: "WCBTC",
484
- name: "Wrapped Citrea BTC",
485
- equivalenceGroup: "CBTC",
486
- logo: logo_cbtc,
487
- deployments: [
488
- {
489
- chainId: 4114,
490
- address: "0x3100000000000000000000000000000000000006",
491
- decimals: 18,
492
- network: "mainnet",
493
- swapContracts: []
494
- },
495
- {
496
- chainId: 5115,
497
- address: "0x8d0c9d1c17ae5e40fff9be350f57840e9e66cd93",
498
- decimals: 18,
499
- network: "testnet",
500
- swapContracts: []
501
- }
502
- ]
503
- },
504
- {
505
- symbol: "eCBTC",
506
- name: "CBTC Vault",
507
- equivalenceGroup: "CBTC",
508
- logo: logo_cbtc,
509
- deployments: [
510
- {
511
- chainId: 5115,
512
- address: "0x2876a1fb400c238b0a9e4edd2e7e03d3cf9b53c2",
513
- decimals: 18,
514
- network: "testnet",
515
- swapContracts: []
516
- }
517
- ]
518
- },
519
- {
520
- symbol: "ARB",
521
- name: "Arbitrum",
522
- equivalenceGroup: "ARB",
523
- logo: logo_arb,
524
- deployments: [
525
- {
526
- chainId: 42161,
527
- address: "0x912ce59144191c1204e64559fe8253a0e49e6548",
528
- decimals: 18,
529
- network: "mainnet",
530
- swapContracts: []
531
- }
532
- ]
533
- }
534
- ];
535
-
536
- // src/tokens/index.ts
537
- var _addressIndex = /* @__PURE__ */ new Map();
538
- var _deploymentIndex = /* @__PURE__ */ new Map();
539
- var _chainIndex = /* @__PURE__ */ new Map();
540
- var _equivalenceIndex = /* @__PURE__ */ new Map();
541
- var NATIVE_SENTINEL = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
542
- var NATIVE_ALIASES = [
543
- "0x0000000000000000000000000000000000000000",
544
- "0x0"
545
- ];
546
- function _buildIndexes() {
547
- for (const token of TOKENS) {
548
- const groupAddrs = _equivalenceIndex.get(token.equivalenceGroup) ?? [];
549
- for (const d of token.deployments) {
550
- const addr = d.address.toLowerCase();
551
- const key = `${d.chainId}:${addr}`;
552
- _addressIndex.set(addr, token);
553
- _deploymentIndex.set(key, { token, deployment: d });
554
- const chainEntries = _chainIndex.get(d.chainId) ?? [];
555
- chainEntries.push({ token, deployment: d });
556
- _chainIndex.set(d.chainId, chainEntries);
557
- if (!groupAddrs.includes(addr)) {
558
- groupAddrs.push(addr);
559
- }
560
- if (addr === NATIVE_SENTINEL) {
561
- for (const alias of NATIVE_ALIASES) {
562
- _addressIndex.set(alias, token);
563
- _deploymentIndex.set(`${d.chainId}:${alias}`, { token, deployment: d });
564
- if (!groupAddrs.includes(alias)) {
565
- groupAddrs.push(alias);
566
- }
567
- }
568
- }
569
- }
570
- _equivalenceIndex.set(token.equivalenceGroup, groupAddrs);
571
- }
572
- }
573
- _buildIndexes();
574
- function _resolve(token, deployment) {
575
- return {
576
- symbol: token.symbol,
577
- name: token.name,
578
- equivalenceGroup: token.equivalenceGroup,
579
- logo: token.logo,
580
- address: deployment.address,
581
- chainId: deployment.chainId,
582
- decimals: deployment.decimals,
583
- network: deployment.network,
584
- swapContracts: deployment.swapContracts
585
- };
586
- }
587
- function getTokensForChain(chainId) {
588
- const entries = _chainIndex.get(chainId);
589
- if (!entries) return [];
590
- return entries.map(({ token, deployment }) => _resolve(token, deployment));
591
- }
592
- function getTokenByAddress(address, chainId) {
593
- const entry = _deploymentIndex.get(`${chainId}:${address.toLowerCase()}`);
594
- if (!entry) return void 0;
595
- return _resolve(entry.token, entry.deployment);
596
- }
597
- function getTokenBySymbol(symbol, chainId) {
598
- return getTokensForChain(chainId).find(
599
- (token) => token.symbol.toUpperCase() === symbol.toUpperCase()
600
- );
601
- }
602
- function requireTokenBySymbol(symbol, chainId) {
603
- const token = getTokenBySymbol(symbol, chainId);
604
- if (token) return token;
605
- throw new Error(
606
- `Token "${symbol}" not found on chain ${chainId} in the token registry.`
607
- );
608
- }
609
- function getTokenDefinition(address) {
610
- return _addressIndex.get(address.toLowerCase());
611
- }
612
- function getDeployment(address, chainId) {
613
- return _deploymentIndex.get(`${chainId}:${address.toLowerCase()}`)?.deployment;
614
- }
615
- function getEquivalentAddresses(tokenAddress) {
616
- const token = _addressIndex.get(tokenAddress.toLowerCase());
617
- if (!token) return [tokenAddress.toLowerCase()];
618
- return _equivalenceIndex.get(token.equivalenceGroup) ?? [tokenAddress.toLowerCase()];
619
- }
620
- function getEquivalenceGroup(tokenAddress) {
621
- return _addressIndex.get(tokenAddress.toLowerCase())?.equivalenceGroup;
622
- }
623
- function areEquivalent(a, b) {
624
- const tokenA = _addressIndex.get(a.toLowerCase());
625
- const tokenB = _addressIndex.get(b.toLowerCase());
626
- if (!tokenA || !tokenB) return false;
627
- return tokenA.equivalenceGroup === tokenB.equivalenceGroup;
628
- }
629
- var USD_GROUPS = /* @__PURE__ */ new Set(["USDC", "SUSD"]);
630
- var BTC_GROUPS = /* @__PURE__ */ new Set(["WBTC", "CBTC"]);
631
- function isUsdDenominated(address) {
632
- const group = getEquivalenceGroup(address);
633
- return group !== void 0 && USD_GROUPS.has(group);
634
- }
635
- function isBtcDenominated(address) {
636
- const group = getEquivalenceGroup(address);
637
- return group !== void 0 && BTC_GROUPS.has(group);
638
- }
639
- function resolveTokenRef(ref) {
640
- const [symbol, chainId] = ref;
641
- const match = getTokenBySymbol(symbol, chainId);
642
- if (!match) {
643
- throw new Error(
644
- `Token "${symbol}" not found on chain ${chainId} in the token registry.`
645
- );
646
- }
647
- return {
648
- address: match.address,
649
- symbol: match.symbol,
650
- decimals: match.decimals,
651
- chainId
652
- };
653
- }
654
-
655
- // src/chains/list.ts
656
- var CHAINS = {
657
- 1: {
658
- id: 1,
659
- name: "Ethereum",
660
- displayName: "Ethereum",
661
- network: "mainnet",
662
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
663
- delegateContract: "0x5884Bff4876C979271E65D2feA8D0CF3bF6E6CcC",
664
- blockExplorer: "https://etherscan.io",
665
- rpcUrl: "https://eth.llamarpc.com",
666
- logo: logo_eth,
667
- moralisId: "0x1"
668
- },
669
- 8453: {
670
- id: 8453,
671
- name: "Base Mainnet",
672
- displayName: "Base",
673
- network: "mainnet",
674
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
675
- delegateContract: "0x5884Bff4876C979271E65D2feA8D0CF3bF6E6CcC",
676
- blockExplorer: "https://basescan.org",
677
- rpcUrl: "https://mainnet.base.org",
678
- logo: logo_base,
679
- moralisId: "0x2105"
680
- },
681
- 42161: {
682
- id: 42161,
683
- name: "Arbitrum One",
684
- displayName: "Arbitrum",
685
- network: "mainnet",
686
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
687
- delegateContract: "0x262E1A689555dA5209113A056d0d164EF8355395",
688
- blockExplorer: "https://arbiscan.io",
689
- rpcUrl: "https://arb1.arbitrum.io/rpc",
690
- logo: logo_arb,
691
- moralisId: "0xa4b1"
692
- },
693
- 4114: {
694
- id: 4114,
695
- name: "Citrea Mainnet",
696
- displayName: "Citrea",
697
- network: "mainnet",
698
- nativeCurrency: { name: "Citrea Bitcoin", symbol: "cBTC", decimals: 18 },
699
- delegateContract: "0x5884Bff4876C979271E65D2feA8D0CF3bF6E6CcC",
700
- blockExplorer: "https://explorer.mainnet.citrea.xyz",
701
- rpcUrl: "https://rpc.mainnet.citrea.xyz",
702
- logo: logo_citrea,
703
- wrappedNativeTokenAddress: "0x3100000000000000000000000000000000000006"
704
- },
705
- 11155111: {
706
- id: 11155111,
707
- name: "Ethereum Sepolia",
708
- displayName: "Sepolia",
709
- network: "testnet",
710
- nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
711
- delegateContract: "0xDF7d39BB544778F467D10b08B1F5C170fd7fB480",
712
- blockExplorer: "https://sepolia.etherscan.io",
713
- rpcUrl: "https://rpc.sepolia.org",
714
- logo: logo_eth,
715
- moralisId: "sepolia"
716
- },
717
- 421614: {
718
- id: 421614,
719
- name: "Arbitrum Sepolia",
720
- displayName: "Arbitrum Sepolia",
721
- network: "testnet",
722
- nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
723
- delegateContract: "0x151755d1bdFeB6082D141EF86e4291b2e902b43F",
724
- blockExplorer: "https://sepolia.arbiscan.io",
725
- rpcUrl: "https://sepolia-rollup.arbitrum.io/rpc",
726
- logo: logo_arb
727
- },
728
- 84532: {
729
- id: 84532,
730
- name: "Base Sepolia",
731
- displayName: "Base Sepolia",
732
- network: "testnet",
733
- nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
734
- delegateContract: "0xD4C4A222cdd42f5c3219249a083a5aBf1420E9D8",
735
- blockExplorer: "https://sepolia.basescan.org",
736
- rpcUrl: "https://sepolia.base.org",
737
- logo: logo_base,
738
- moralisId: "0x14a34"
739
- },
740
- 5115: {
741
- id: 5115,
742
- name: "Citrea Testnet",
743
- displayName: "Citrea Testnet",
744
- network: "testnet",
745
- nativeCurrency: { name: "cBTC", symbol: "cBTC", decimals: 18 },
746
- delegateContract: "0x347056dd1CB95ae850192e3fC6FA995537A3A091",
747
- blockExplorer: "https://explorer.testnet.citrea.xyz",
748
- rpcUrl: "https://rpc.testnet.citrea.xyz",
749
- logo: logo_citrea,
750
- wrappedNativeTokenAddress: "0x8d0c9d1c17ae5e40fff9be350f57840e9e66cd93"
751
- },
752
- 123420001114: {
753
- id: 123420001114,
754
- name: "Base Camp Testnet",
755
- displayName: "Base Camp",
756
- network: "testnet",
757
- nativeCurrency: { name: "Ethereum", symbol: "ETH", decimals: 18 },
758
- delegateContract: "0xA15BFeD4eC0BEdd36b00b9856aFa1C6BCFE61574",
759
- blockExplorer: "https://basecamp.gelato.network",
760
- rpcUrl: "https://rpc-campnetwork.xyz",
761
- logo: logo_base
762
- },
763
- 688688: {
764
- id: 688688,
765
- name: "Pharos Testnet",
766
- displayName: "Pharos",
767
- network: "testnet",
768
- nativeCurrency: { name: "PHRS", symbol: "PHRS", decimals: 18 },
769
- delegateContract: "0xAd45b774C4c632540d36f2105889C0E6aC28b504",
770
- blockExplorer: "https://testnet.pharosscan.xyz",
771
- rpcUrl: "https://testnet.dplabs-internal.com",
772
- logo: logo_pharos
773
- },
774
- 688689: {
775
- id: 688689,
776
- name: "Pharos Atlantic",
777
- displayName: "Pharos Atlantic",
778
- network: "testnet",
779
- nativeCurrency: { name: "PHRS", symbol: "PHRS", decimals: 18 },
780
- delegateContract: "0xAd45b774C4c632540d36f2105889C0E6aC28b504",
781
- blockExplorer: "https://atlantic.pharosscan.xyz",
782
- rpcUrl: "https://atlantic.dplabs-internal.com",
783
- logo: logo_pharos
784
- },
785
- 10143: {
786
- id: 10143,
787
- name: "Monad Testnet",
788
- displayName: "Monad",
789
- network: "testnet",
790
- nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 },
791
- delegateContract: "0xEc4087643A1c5f532Fde98bCa029cebA4E47b053",
792
- blockExplorer: "https://testnet.monadexplorer.com",
793
- rpcUrl: "https://testnet-rpc.monad.xyz",
794
- logo: logo_eth
795
- },
796
- 97: {
797
- id: 97,
798
- name: "BSC Testnet",
799
- displayName: "BSC Testnet",
800
- network: "testnet",
801
- nativeCurrency: { name: "tBNB", symbol: "tBNB", decimals: 18 },
802
- delegateContract: "0xD4C4A222cdd42f5c3219249a083a5aBf1420E9D8",
803
- blockExplorer: "https://testnet.bscscan.com",
804
- rpcUrl: "https://bsc-testnet.public.blastapi.io",
805
- logo: logo_eth
806
- },
807
- 43113: {
808
- id: 43113,
809
- name: "Avalanche Fuji",
810
- displayName: "Avalanche Fuji",
811
- network: "testnet",
812
- nativeCurrency: { name: "AVAX", symbol: "AVAX", decimals: 18 },
813
- delegateContract: "0xD4C4A222cdd42f5c3219249a083a5aBf1420E9D8",
814
- blockExplorer: "https://testnet.snowtrace.io",
815
- rpcUrl: "https://avalanche-fuji.drpc.org",
816
- logo: logo_eth
817
- },
818
- 80002: {
819
- id: 80002,
820
- name: "Polygon Amoy",
821
- displayName: "Polygon Amoy",
822
- network: "testnet",
823
- nativeCurrency: { name: "POL", symbol: "POL", decimals: 18 },
824
- delegateContract: "0xD4C4A222cdd42f5c3219249a083a5aBf1420E9D8",
825
- blockExplorer: "https://amoy.polygonscan.com",
826
- rpcUrl: "https://polygon-amoy-public.nodies.app",
827
- logo: logo_eth
828
- },
829
- 11155420: {
830
- id: 11155420,
831
- name: "Optimism Sepolia",
832
- displayName: "Optimism Sepolia",
833
- network: "testnet",
834
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
835
- delegateContract: "0xD4C4A222cdd42f5c3219249a083a5aBf1420E9D8",
836
- blockExplorer: "https://sepolia-optimism.etherscan.io",
837
- rpcUrl: "https://sepolia.optimism.io",
838
- logo: logo_eth
839
- },
840
- 23448594291968336: {
841
- id: 23448594291968336,
842
- chainIdHex: "0x534e5f4d41494e",
843
- name: "StarkNet Mainnet",
844
- displayName: "StarkNet",
845
- network: "mainnet",
846
- chainType: "starknet",
847
- nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
848
- blockExplorer: "https://voyager.online",
849
- rpcUrl: "https://starknet-mainnet.public.blastapi.io",
850
- logo: logo_starknet
851
- }
852
- };
853
-
854
- // src/chains/index.ts
855
- import { defineChain } from "viem";
856
- function getChainMeta(chainId) {
857
- return CHAINS[chainId];
858
- }
859
- function getChainsByNetwork(network) {
860
- return Object.values(CHAINS).filter(
861
- (c) => c.network === network && c.chainType !== "starknet"
862
- );
863
- }
864
- function getChainIdsByNetwork(network) {
865
- return getChainsByNetwork(network).map((c) => c.id);
866
- }
867
- function getMainnetChains() {
868
- return getChainsByNetwork("mainnet");
869
- }
870
- function getTestnetChains() {
871
- return getChainsByNetwork("testnet");
872
- }
873
- function getAllChainsByNetwork(network) {
874
- return Object.values(CHAINS).filter((c) => c.network === network);
875
- }
876
- function getDelegateContract(chainId) {
877
- return CHAINS[chainId]?.delegateContract;
878
- }
879
- function toViemChain(meta) {
880
- if (meta.chainType === "starknet") return void 0;
881
- return defineChain({
882
- id: meta.id,
883
- name: meta.name,
884
- nativeCurrency: meta.nativeCurrency,
885
- rpcUrls: {
886
- default: {
887
- http: [meta.rpcUrl]
888
- },
889
- public: {
890
- http: [meta.rpcUrl]
891
- }
892
- },
893
- ...meta.blockExplorer ? {
894
- blockExplorers: {
895
- default: {
896
- name: meta.displayName || meta.name,
897
- url: meta.blockExplorer
898
- }
899
- }
900
- } : {}
901
- });
902
- }
903
- var VIEM_CHAINS = Object.fromEntries(
904
- Object.values(CHAINS).map((meta) => [meta.id, toViemChain(meta)]).filter((entry) => entry[1] !== void 0)
905
- );
906
- function getViemChain(chainId) {
907
- return VIEM_CHAINS[chainId];
908
- }
909
- function requireViemChain(chainId) {
910
- const chain = getViemChain(chainId);
911
- if (chain) return chain;
912
- throw new Error(`Viem chain not found for chain ${chainId}.`);
913
- }
914
- function isStarknetChain(chainId) {
915
- return getChainMeta(chainId)?.chainType === "starknet";
916
- }
917
- var STARKNET_MAINNET_CHAIN_ID = 23448594291968336;
918
-
919
- // src/utils.ts
920
- var NATIVE_TOKEN_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
921
- var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
922
- var ESCROW_ADDRESS = "0xeee2b52e7CFe6e2168341a34cEB783b68FEdf1A2";
923
- function isNativeToken(address) {
924
- const lower = address.toLowerCase();
925
- return lower === "0x0" || lower === "0x0000000000000000000000000000000000000000" || lower === "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
926
- }
927
- function normalizeNativeTokenAddress(address) {
928
- if (isNativeToken(address)) {
929
- return ZERO_ADDRESS;
930
- }
931
- return address;
932
- }
933
- function convertAmountBetweenDecimals(amount, fromDecimals, toDecimals) {
934
- if (fromDecimals === toDecimals) return amount;
935
- if (fromDecimals < toDecimals) {
936
- return amount * BigInt(10) ** BigInt(toDecimals - fromDecimals);
937
- }
938
- return amount / BigInt(10) ** BigInt(fromDecimals - toDecimals);
939
- }
940
- function formatTokenAmount(amount, decimals, maxFractional = 6) {
941
- const divisor = BigInt(10) ** BigInt(decimals);
942
- const whole = amount / divisor;
943
- const remainder = amount % divisor;
944
- if (remainder === 0n) return whole.toString();
945
- const fracStr = remainder.toString().padStart(decimals, "0").slice(0, maxFractional).replace(/0+$/, "");
946
- if (!fracStr) return whole.toString();
947
- return `${whole}.${fracStr}`;
948
- }
949
- function truncateAddress(address, startChars = 6, endChars = 4) {
950
- if (address.length <= startChars + endChars) return address;
951
- return `${address.slice(0, startChars)}...${address.slice(-endChars)}`;
952
- }
953
- async function withRetry(fn, maxRetries = 3, delayMs = 300) {
954
- let lastErr;
955
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
956
- try {
957
- return await fn();
958
- } catch (err) {
959
- lastErr = err;
960
- if (attempt < maxRetries) {
961
- await new Promise((r) => setTimeout(r, delayMs * 2 ** attempt));
962
- }
963
- }
964
- }
965
- throw lastErr;
966
- }
967
-
968
- // src/abis/delegate.ts
969
- var DELEGATE_ABI = [
970
- {
971
- type: "fallback",
972
- stateMutability: "payable"
973
- },
974
- {
975
- type: "receive",
976
- stateMutability: "payable"
977
- },
978
- {
979
- type: "function",
980
- name: "execute",
981
- inputs: [
982
- {
983
- name: "intent",
984
- type: "tuple",
985
- internalType: "struct Delegate.Intent",
986
- components: [
987
- { name: "signatureType", type: "string", internalType: "string" },
988
- { name: "signature", type: "bytes", internalType: "bytes" },
989
- { name: "nbf", type: "uint256", internalType: "uint256" },
990
- { name: "exp", type: "uint256", internalType: "uint256" },
991
- {
992
- name: "chainBatches",
993
- type: "tuple[]",
994
- internalType: "struct Delegate.ChainBatch[]",
995
- components: [
996
- { name: "hash", type: "bytes32", internalType: "bytes32" },
997
- { name: "chainId", type: "uint256", internalType: "uint256" },
998
- {
999
- name: "calls",
1000
- type: "tuple[]",
1001
- internalType: "struct Delegate.Call[]",
1002
- components: [
1003
- { name: "to", type: "address", internalType: "address" },
1004
- { name: "value", type: "uint256", internalType: "uint256" },
1005
- { name: "data", type: "bytes", internalType: "bytes" }
1006
- ]
1007
- }
1008
- ]
1009
- }
1010
- ]
1011
- }
1012
- ],
1013
- outputs: [],
1014
- stateMutability: "payable"
1015
- },
1016
- {
1017
- type: "function",
1018
- name: "selfExecute",
1019
- inputs: [
1020
- {
1021
- name: "calls",
1022
- type: "tuple[]",
1023
- internalType: "struct Delegate.Call[]",
1024
- components: [
1025
- { name: "to", type: "address", internalType: "address" },
1026
- { name: "value", type: "uint256", internalType: "uint256" },
1027
- { name: "data", type: "bytes", internalType: "bytes" }
1028
- ]
1029
- }
1030
- ],
1031
- outputs: [],
1032
- stateMutability: "payable"
1033
- },
1034
- {
1035
- type: "function",
1036
- name: "isChainBatchProcessed",
1037
- inputs: [
1038
- { name: "chainBatchHash", type: "bytes32", internalType: "bytes32" }
1039
- ],
1040
- outputs: [{ name: "", type: "bool", internalType: "bool" }],
1041
- stateMutability: "view"
1042
- },
1043
- {
1044
- type: "function",
1045
- name: "normalizeIntentAndComputeHash",
1046
- inputs: [
1047
- {
1048
- name: "userIntent",
1049
- type: "tuple",
1050
- internalType: "struct Delegate.Intent",
1051
- components: [
1052
- { name: "signatureType", type: "string", internalType: "string" },
1053
- { name: "signature", type: "bytes", internalType: "bytes" },
1054
- { name: "nbf", type: "uint256", internalType: "uint256" },
1055
- { name: "exp", type: "uint256", internalType: "uint256" },
1056
- {
1057
- name: "chainBatches",
1058
- type: "tuple[]",
1059
- internalType: "struct Delegate.ChainBatch[]",
1060
- components: [
1061
- { name: "hash", type: "bytes32", internalType: "bytes32" },
1062
- { name: "chainId", type: "uint256", internalType: "uint256" },
1063
- {
1064
- name: "calls",
1065
- type: "tuple[]",
1066
- internalType: "struct Delegate.Call[]",
1067
- components: [
1068
- { name: "to", type: "address", internalType: "address" },
1069
- { name: "value", type: "uint256", internalType: "uint256" },
1070
- { name: "data", type: "bytes", internalType: "bytes" }
1071
- ]
1072
- }
1073
- ]
1074
- }
1075
- ]
1076
- }
1077
- ],
1078
- outputs: [
1079
- {
1080
- name: "intent",
1081
- type: "tuple",
1082
- internalType: "struct Delegate.Intent",
1083
- components: [
1084
- { name: "signatureType", type: "string", internalType: "string" },
1085
- { name: "signature", type: "bytes", internalType: "bytes" },
1086
- { name: "nbf", type: "uint256", internalType: "uint256" },
1087
- { name: "exp", type: "uint256", internalType: "uint256" },
1088
- {
1089
- name: "chainBatches",
1090
- type: "tuple[]",
1091
- internalType: "struct Delegate.ChainBatch[]",
1092
- components: [
1093
- { name: "hash", type: "bytes32", internalType: "bytes32" },
1094
- { name: "chainId", type: "uint256", internalType: "uint256" },
1095
- {
1096
- name: "calls",
1097
- type: "tuple[]",
1098
- internalType: "struct Delegate.Call[]",
1099
- components: [
1100
- { name: "to", type: "address", internalType: "address" },
1101
- { name: "value", type: "uint256", internalType: "uint256" },
1102
- { name: "data", type: "bytes", internalType: "bytes" }
1103
- ]
1104
- }
1105
- ]
1106
- }
1107
- ]
1108
- },
1109
- { name: "hash", type: "bytes32", internalType: "bytes32" }
1110
- ],
1111
- stateMutability: "pure"
1112
- },
1113
- {
1114
- type: "event",
1115
- name: "BatchExecuted",
1116
- inputs: [
1117
- { name: "block", type: "uint256", indexed: true, internalType: "uint256" },
1118
- {
1119
- name: "calls",
1120
- type: "tuple[]",
1121
- indexed: false,
1122
- internalType: "struct Delegate.Call[]",
1123
- components: [
1124
- { name: "to", type: "address", internalType: "address" },
1125
- { name: "value", type: "uint256", internalType: "uint256" },
1126
- { name: "data", type: "bytes", internalType: "bytes" }
1127
- ]
1128
- }
1129
- ],
1130
- anonymous: false
1131
- },
1132
- {
1133
- type: "event",
1134
- name: "CallExecuted",
1135
- inputs: [
1136
- { name: "executor", type: "address", indexed: true, internalType: "address" },
1137
- { name: "sender", type: "address", indexed: true, internalType: "address" },
1138
- { name: "to", type: "address", indexed: true, internalType: "address" },
1139
- { name: "value", type: "uint256", indexed: false, internalType: "uint256" },
1140
- { name: "data", type: "bytes", indexed: false, internalType: "bytes" },
1141
- { name: "returnData", type: "bytes", indexed: false, internalType: "bytes" }
1142
- ],
1143
- anonymous: false
1144
- },
1145
- {
1146
- type: "event",
1147
- name: "IntentSubmitted",
1148
- inputs: [
1149
- { name: "signature", type: "bytes", indexed: true, internalType: "bytes" }
1150
- ],
1151
- anonymous: false
1152
- },
1153
- {
1154
- type: "error",
1155
- name: "CallReverted",
1156
- inputs: [
1157
- { name: "account", type: "address", internalType: "address" },
1158
- { name: "to", type: "address", internalType: "address" },
1159
- { name: "value", type: "uint256", internalType: "uint256" },
1160
- { name: "data", type: "bytes", internalType: "bytes" },
1161
- { name: "errorMessage", type: "bytes", internalType: "bytes" }
1162
- ]
1163
- },
1164
- {
1165
- type: "error",
1166
- name: "DuplicateChainBatch",
1167
- inputs: [
1168
- { name: "intentSignature", type: "bytes", internalType: "bytes" },
1169
- { name: "chainBatchHash", type: "bytes32", internalType: "bytes32" },
1170
- { name: "chainBatchId", type: "bytes32", internalType: "bytes32" }
1171
- ]
1172
- },
1173
- { type: "error", name: "ECDSAInvalidSignature", inputs: [] },
1174
- {
1175
- type: "error",
1176
- name: "ECDSAInvalidSignatureLength",
1177
- inputs: [{ name: "length", type: "uint256", internalType: "uint256" }]
1178
- },
1179
- {
1180
- type: "error",
1181
- name: "ECDSAInvalidSignatureS",
1182
- inputs: [{ name: "s", type: "bytes32", internalType: "bytes32" }]
1183
- },
1184
- {
1185
- type: "error",
1186
- name: "IntentExpired",
1187
- inputs: [
1188
- { name: "currentTime", type: "uint256", internalType: "uint256" },
1189
- { name: "exp", type: "uint256", internalType: "uint256" }
1190
- ]
1191
- },
1192
- {
1193
- type: "error",
1194
- name: "IntentTooEarly",
1195
- inputs: [
1196
- { name: "currentTime", type: "uint256", internalType: "uint256" },
1197
- { name: "nbf", type: "uint256", internalType: "uint256" }
1198
- ]
1199
- },
1200
- {
1201
- type: "error",
1202
- name: "InvalidAuthority",
1203
- inputs: [
1204
- { name: "actual", type: "address", internalType: "address" },
1205
- { name: "expected", type: "address", internalType: "address" }
1206
- ]
1207
- },
1208
- {
1209
- type: "error",
1210
- name: "InvalidChainId",
1211
- inputs: [
1212
- { name: "actual", type: "uint256", internalType: "uint256" },
1213
- { name: "expected", type: "uint256", internalType: "uint256" }
1214
- ]
1215
- },
1216
- {
1217
- type: "error",
1218
- name: "InvalidSignature",
1219
- inputs: [
1220
- { name: "signatureType", type: "string", internalType: "string" },
1221
- { name: "recovered", type: "address", internalType: "address" },
1222
- { name: "expected", type: "address", internalType: "address" }
1223
- ]
1224
- },
1225
- {
1226
- type: "error",
1227
- name: "InvalidSignatureType",
1228
- inputs: [{ name: "signatureType", type: "string", internalType: "string" }]
1229
- }
1230
- ];
1231
-
1232
- // src/abis/erc20.ts
1233
- var ERC20_ABI = [
1234
- { inputs: [], name: "name", outputs: [{ type: "string" }], stateMutability: "view", type: "function" },
1235
- { inputs: [], name: "symbol", outputs: [{ type: "string" }], stateMutability: "view", type: "function" },
1236
- { inputs: [], name: "decimals", outputs: [{ type: "uint8" }], stateMutability: "view", type: "function" },
1237
- { inputs: [{ name: "account", type: "address" }], name: "balanceOf", outputs: [{ type: "uint256" }], stateMutability: "view", type: "function" },
1238
- { inputs: [{ name: "to", type: "address" }, { name: "amount", type: "uint256" }], name: "transfer", outputs: [{ type: "bool" }], stateMutability: "nonpayable", type: "function" },
1239
- { inputs: [{ name: "from", type: "address" }, { name: "to", type: "address" }, { name: "amount", type: "uint256" }], name: "transferFrom", outputs: [{ type: "bool" }], stateMutability: "nonpayable", type: "function" },
1240
- { inputs: [{ name: "spender", type: "address" }, { name: "amount", type: "uint256" }], name: "approve", outputs: [{ type: "bool" }], stateMutability: "nonpayable", type: "function" },
1241
- { inputs: [{ name: "owner", type: "address" }, { name: "spender", type: "address" }], name: "allowance", outputs: [{ type: "uint256" }], stateMutability: "view", type: "function" },
1242
- { anonymous: false, inputs: [{ indexed: true, name: "from", type: "address" }, { indexed: true, name: "to", type: "address" }, { indexed: false, name: "value", type: "uint256" }], name: "Transfer", type: "event" },
1243
- { anonymous: false, inputs: [{ indexed: true, name: "owner", type: "address" }, { indexed: true, name: "spender", type: "address" }, { indexed: false, name: "value", type: "uint256" }], name: "Approval", type: "event" }
1244
- ];
1245
-
1246
- // src/abis/wcbtc.ts
1247
- var WCBTC_ABI = [
1248
- { inputs: [], name: "name", outputs: [{ type: "string" }], stateMutability: "view", type: "function" },
1249
- { inputs: [], name: "symbol", outputs: [{ type: "string" }], stateMutability: "view", type: "function" },
1250
- { inputs: [], name: "decimals", outputs: [{ type: "uint8" }], stateMutability: "view", type: "function" },
1251
- { inputs: [{ name: "account", type: "address" }], name: "balanceOf", outputs: [{ type: "uint256" }], stateMutability: "view", type: "function" },
1252
- { inputs: [], name: "deposit", outputs: [], stateMutability: "payable", type: "function" },
1253
- { inputs: [{ name: "amount", type: "uint256" }], name: "withdraw", outputs: [], stateMutability: "nonpayable", type: "function" },
1254
- { stateMutability: "payable", type: "receive" },
1255
- { stateMutability: "payable", type: "fallback" }
1256
- ];
1257
-
1258
- // src/abis/uniV3.ts
1259
- var uniV3QuoterV2Abi = [
1260
- {
1261
- inputs: [
1262
- {
1263
- components: [
1264
- { internalType: "address", name: "tokenIn", type: "address" },
1265
- { internalType: "address", name: "tokenOut", type: "address" },
1266
- { internalType: "uint256", name: "amountIn", type: "uint256" },
1267
- { internalType: "uint24", name: "fee", type: "uint24" },
1268
- {
1269
- internalType: "uint160",
1270
- name: "sqrtPriceLimitX96",
1271
- type: "uint160"
1272
- }
1273
- ],
1274
- internalType: "struct IQuoterV2.QuoteExactInputSingleParams",
1275
- name: "params",
1276
- type: "tuple"
1277
- }
1278
- ],
1279
- name: "quoteExactInputSingle",
1280
- outputs: [
1281
- { internalType: "uint256", name: "amountOut", type: "uint256" },
1282
- {
1283
- internalType: "uint160",
1284
- name: "sqrtPriceX96After",
1285
- type: "uint160"
1286
- },
1287
- {
1288
- internalType: "uint32",
1289
- name: "initializedTicksCrossed",
1290
- type: "uint32"
1291
- },
1292
- { internalType: "uint256", name: "gasEstimate", type: "uint256" }
1293
- ],
1294
- stateMutability: "nonpayable",
1295
- type: "function"
1296
- }
1297
- ];
1298
- var uniV3SwapRouterAbi = [
1299
- {
1300
- inputs: [
1301
- {
1302
- components: [
1303
- { internalType: "address", name: "tokenIn", type: "address" },
1304
- { internalType: "address", name: "tokenOut", type: "address" },
1305
- { internalType: "uint24", name: "fee", type: "uint24" },
1306
- { internalType: "address", name: "recipient", type: "address" },
1307
- { internalType: "uint256", name: "amountIn", type: "uint256" },
1308
- {
1309
- internalType: "uint256",
1310
- name: "amountOutMinimum",
1311
- type: "uint256"
1312
- },
1313
- {
1314
- internalType: "uint160",
1315
- name: "sqrtPriceLimitX96",
1316
- type: "uint160"
1317
- }
1318
- ],
1319
- internalType: "struct IV3SwapRouter.ExactInputSingleParams",
1320
- name: "params",
1321
- type: "tuple"
1322
- }
1323
- ],
1324
- name: "exactInputSingle",
1325
- outputs: [
1326
- { internalType: "uint256", name: "amountOut", type: "uint256" }
1327
- ],
1328
- stateMutability: "payable",
1329
- type: "function"
1330
- }
1331
- ];
1332
-
1333
- // src/swap.ts
1334
- import { encodeFunctionData, erc20Abi } from "viem";
1335
- function applySlippage(amount, slippage = 0.03) {
1336
- const slippageBps = BigInt(Math.floor((1 - slippage) * 1e4));
1337
- return amount * slippageBps / 10000n;
1338
- }
1339
- function buildUniV3SwapCalls(params) {
1340
- const {
1341
- tokenIn,
1342
- tokenOut,
1343
- amountIn,
1344
- amountOutMinimum,
1345
- fee,
1346
- recipient,
1347
- config
1348
- } = params;
1349
- return [
1350
- {
1351
- to: tokenIn,
1352
- value: 0n,
1353
- data: encodeFunctionData({
1354
- abi: erc20Abi,
1355
- functionName: "approve",
1356
- args: [config.swapRouter, amountIn]
1357
- })
1358
- },
1359
- {
1360
- to: config.swapRouter,
1361
- value: 0n,
1362
- data: encodeFunctionData({
1363
- abi: uniV3SwapRouterAbi,
1364
- functionName: "exactInputSingle",
1365
- args: [
1366
- {
1367
- tokenIn,
1368
- tokenOut,
1369
- fee,
1370
- recipient,
1371
- amountIn,
1372
- amountOutMinimum,
1373
- sqrtPriceLimitX96: 0n
1374
- }
1375
- ]
1376
- })
1377
- }
1378
- ];
1379
- }
1380
- export {
1381
- CHAINS,
1382
- ChainBatchHashAbi,
1383
- DELEGATE_ABI,
1384
- ERC20_ABI,
1385
- ESCROW_ADDRESS,
1386
- HttpError,
1387
- IntentHashAbi,
1388
- NATIVE_TOKEN_ADDRESS,
1389
- SPICENET_NATIVE_CHAIN_ID,
1390
- STARKNET_MAINNET_CHAIN_ID,
1391
- SpiceFlowCore,
1392
- TOKENS,
1393
- VIEM_CHAINS,
1394
- WCBTC_ABI,
1395
- ZERO_ADDRESS,
1396
- applySlippage,
1397
- areEquivalent,
1398
- buildUniV3SwapCalls,
1399
- convertAmountBetweenDecimals,
1400
- fetchWithRetry,
1401
- formatTokenAmount,
1402
- getAccountNonce,
1403
- getAllChainsByNetwork,
1404
- getChainIdsByNetwork,
1405
- getChainMeta,
1406
- getChainsByNetwork,
1407
- getDelegateContract,
1408
- getDeployment,
1409
- getEquivalenceGroup,
1410
- getEquivalentAddresses,
1411
- getIntentHash,
1412
- getIntentStepStatus,
1413
- getMainnetChains,
1414
- getRecentBlock,
1415
- getTestnetChains,
1416
- getTokenByAddress,
1417
- getTokenBySymbol,
1418
- getTokenDefinition,
1419
- getTokensForChain,
1420
- getViemChain,
1421
- hashChainBatches,
1422
- isBtcDenominated,
1423
- isNativeToken,
1424
- isSpicenetChainId,
1425
- isStarknetChain,
1426
- isUsdDenominated,
1427
- normalizeNativeTokenAddress,
1428
- prepareRFQT,
1429
- requireTokenBySymbol,
1430
- requireViemChain,
1431
- resolveTokenRef,
1432
- submitTransaction,
1433
- truncateAddress,
1434
- uniV3QuoterV2Abi,
1435
- uniV3SwapRouterAbi,
1436
- withRetry
1437
- };