@fastxyz/allset-sdk 0.1.1 → 0.1.3

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 (73) hide show
  1. package/README.md +206 -69
  2. package/dist/browser/index.d.ts +2 -0
  3. package/dist/browser/index.d.ts.map +1 -0
  4. package/dist/browser/index.js +2 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/core/address.d.ts +4 -0
  7. package/dist/core/address.d.ts.map +1 -0
  8. package/dist/core/address.js +27 -0
  9. package/dist/core/address.js.map +1 -0
  10. package/dist/core/deposit.d.ts +59 -0
  11. package/dist/core/deposit.d.ts.map +1 -0
  12. package/dist/core/deposit.js +93 -0
  13. package/dist/core/deposit.js.map +1 -0
  14. package/dist/core/index.d.ts +6 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/index.js +4 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/default-config.d.ts +51 -0
  19. package/dist/default-config.d.ts.map +1 -0
  20. package/dist/default-config.js +52 -0
  21. package/dist/default-config.js.map +1 -0
  22. package/dist/index.d.ts +4 -7
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/intents.d.ts +94 -0
  27. package/dist/intents.d.ts.map +1 -0
  28. package/dist/intents.js +120 -0
  29. package/dist/intents.js.map +1 -0
  30. package/dist/node/bridge.d.ts +55 -0
  31. package/dist/node/bridge.d.ts.map +1 -0
  32. package/dist/node/bridge.js +496 -0
  33. package/dist/node/bridge.js.map +1 -0
  34. package/dist/node/config.d.ts +45 -0
  35. package/dist/node/config.d.ts.map +1 -0
  36. package/dist/node/config.js +49 -0
  37. package/dist/node/config.js.map +1 -0
  38. package/dist/node/evm-executor.d.ts +130 -0
  39. package/dist/node/evm-executor.d.ts.map +1 -0
  40. package/dist/node/evm-executor.js +159 -0
  41. package/dist/node/evm-executor.js.map +1 -0
  42. package/dist/node/index.d.ts +14 -0
  43. package/dist/node/index.d.ts.map +1 -0
  44. package/dist/node/index.js +17 -0
  45. package/dist/node/index.js.map +1 -0
  46. package/dist/node/provider.d.ts +162 -0
  47. package/dist/node/provider.d.ts.map +1 -0
  48. package/dist/node/provider.js +269 -0
  49. package/dist/node/provider.js.map +1 -0
  50. package/dist/node/types.d.ts +111 -0
  51. package/dist/node/types.d.ts.map +1 -0
  52. package/dist/node/types.js.map +1 -0
  53. package/package.json +23 -2
  54. package/dist/bridge.d.ts +0 -12
  55. package/dist/bridge.d.ts.map +0 -1
  56. package/dist/bridge.js +0 -305
  57. package/dist/bridge.js.map +0 -1
  58. package/dist/evm-executor.d.ts +0 -28
  59. package/dist/evm-executor.d.ts.map +0 -1
  60. package/dist/evm-executor.js +0 -92
  61. package/dist/evm-executor.js.map +0 -1
  62. package/dist/fast-client.d.ts +0 -57
  63. package/dist/fast-client.d.ts.map +0 -1
  64. package/dist/fast-client.js +0 -335
  65. package/dist/fast-client.js.map +0 -1
  66. package/dist/fast-compat.d.ts +0 -13
  67. package/dist/fast-compat.d.ts.map +0 -1
  68. package/dist/fast-compat.js +0 -22
  69. package/dist/fast-compat.js.map +0 -1
  70. package/dist/types.d.ts +0 -68
  71. package/dist/types.d.ts.map +0 -1
  72. package/dist/types.js.map +0 -1
  73. /package/dist/{types.js → node/types.js} +0 -0
package/README.md CHANGED
@@ -1,112 +1,249 @@
1
1
  # AllSet SDK
2
2
 
3
- Official TypeScript SDK for the AllSet bridge. Bridge tokens between Fast network and supported EVM routes, with the current branch focused on Arbitrum Sepolia and Fast testnet flows.
3
+ Bridge tokens between Fast network and EVM chains.
4
4
 
5
- ## Install
5
+ ## Installation
6
+
7
+ Pure helpers only:
6
8
 
7
9
  ```bash
8
10
  npm install @fastxyz/allset-sdk
9
11
  ```
10
12
 
13
+ FastWallet-backed withdrawals and intent execution:
14
+
15
+ ```bash
16
+ npm install @fastxyz/allset-sdk @fastxyz/sdk
17
+ ```
18
+
19
+ `@fastxyz/sdk` is optional for pure helpers and EVM -> Fast deposits. Install it when you use `FastWallet` flows such as `sendToExternal(...)` or `executeIntent(...)`.
20
+
21
+ ## Entrypoints
22
+
23
+ | Entrypoint | Use for | Browser-safe |
24
+ | --- | --- | --- |
25
+ | `@fastxyz/allset-sdk` | Pure deposit planners, intent builders, Fast address conversion | Yes |
26
+ | `@fastxyz/allset-sdk/core` | Explicit alias of the root pure helper surface | Yes |
27
+ | `@fastxyz/allset-sdk/browser` | Browser-safe frontend import path for pure helpers | Yes |
28
+ | `@fastxyz/allset-sdk/node` | Provider, executor, wallet, bridge execution, file-backed config | No |
29
+
11
30
  ## Quick Start
12
31
 
13
- ### Deposit (EVM → Fast)
32
+ ### Pure deposit planning
14
33
 
15
34
  ```ts
16
- import { createEvmExecutor, allsetProvider } from '@fastxyz/allset-sdk';
17
-
18
- const evmExecutor = createEvmExecutor(
19
- process.env.EVM_PRIVATE_KEY!,
20
- 'https://sepolia-rollup.arbitrum.io/rpc',
21
- 421614
22
- );
23
-
24
- const result = await allsetProvider.bridge({
25
- fromChain: 'arbitrum',
26
- toChain: 'fast',
27
- fromToken: 'USDC',
28
- toToken: 'fastUSDC',
29
- fromDecimals: 6,
30
- amount: '1000000', // 1 USDC (6 decimals)
31
- senderAddress: '0xYourEvmAddress',
32
- receiverAddress: 'fast1yourfastaddress',
33
- evmExecutor,
35
+ import { buildDepositTransaction } from '@fastxyz/allset-sdk';
36
+
37
+ const plan = buildDepositTransaction({
38
+ network: 'testnet',
39
+ chain: 'arbitrum',
40
+ token: 'USDC',
41
+ amount: 1_000_000n,
42
+ receiver: 'fast1receiveraddress...',
34
43
  });
35
44
 
36
- console.log(result.txHash);
45
+ console.log(plan.to);
46
+ console.log(plan.data);
47
+ console.log(plan.value);
37
48
  ```
38
49
 
39
- ### Withdraw (Fast EVM)
50
+ For deployments that are not bundled in the SDK yet, pass your own route config:
40
51
 
41
52
  ```ts
42
- import { createFastWallet } from '@fastxyz/allset-sdk';
43
-
44
- const wallet = createFastWallet();
45
- console.log(wallet.address);
46
- // Persist wallet.privateKey and wallet.publicKey securely.
53
+ const plan = buildDepositTransaction({
54
+ network: 'mainnet',
55
+ chain: 'base',
56
+ token: 'fastUSDC',
57
+ amount: 1_000_000n,
58
+ receiver: 'fast1receiveraddress...',
59
+ networkConfig: {
60
+ chains: {
61
+ base: {
62
+ chainId: 8453,
63
+ bridgeContract: '0xYourAllSetBridge',
64
+ tokens: {
65
+ USDC: {
66
+ evmAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
67
+ decimals: 6,
68
+ },
69
+ },
70
+ },
71
+ },
72
+ },
73
+ });
47
74
  ```
48
75
 
49
- Store that keypair securely, then use it with `createFastClient()`:
76
+ This is the intended temporary path for Base mainnet until the authoritative deployment config is published in the SDK defaults.
50
77
 
51
- ```ts
52
- import { createFastClient, allsetProvider } from '@fastxyz/allset-sdk';
78
+ ### Node execution
53
79
 
54
- const fastClient = createFastClient({
55
- privateKey: process.env.FAST_PRIVATE_KEY!, // 32-byte hex
56
- publicKey: process.env.FAST_PUBLIC_KEY!, // 32-byte hex
80
+ ```ts
81
+ import { FastProvider, FastWallet } from '@fastxyz/sdk';
82
+ import {
83
+ AllSetProvider,
84
+ createEvmExecutor,
85
+ createEvmWallet,
86
+ } from '@fastxyz/allset-sdk/node';
87
+
88
+ const fastProvider = new FastProvider({ network: 'testnet' });
89
+ const allset = new AllSetProvider({ network: 'testnet' });
90
+ const fastWallet = await FastWallet.fromKeyfile('~/.fast/keys/default.json', fastProvider);
91
+
92
+ // Create EVM account
93
+ const account = createEvmWallet('~/.evm/keys/default.json');
94
+ // Or: const account = createEvmWallet('0xprivateKey...');
95
+ // Or: const account = createEvmWallet(); // persist account.privateKey if generated
96
+
97
+ // Create EVM clients
98
+ const evmClients = createEvmExecutor(account, 'https://sepolia-rollup.arbitrum.io/rpc', 421614);
99
+
100
+ // Deposit: EVM → Fast
101
+ await allset.sendToFast({
102
+ chain: 'arbitrum',
103
+ token: 'USDC',
104
+ amount: '1000000',
105
+ from: account.address,
106
+ to: fastWallet.address,
107
+ evmClients,
57
108
  });
58
109
 
59
- const result = await allsetProvider.bridge({
60
- fromChain: 'fast',
61
- toChain: 'arbitrum',
62
- fromToken: 'fastUSDC',
63
- toToken: 'USDC',
64
- fromDecimals: 6,
65
- amount: '1000000', // 1 USDC (6 decimals)
66
- senderAddress: fastClient.address!,
67
- receiverAddress: '0xYourEvmAddress',
68
- fastClient,
110
+ // Withdraw: Fast EVM
111
+ await allset.sendToExternal({
112
+ chain: 'arbitrum',
113
+ token: 'fastUSDC',
114
+ amount: '1000000',
115
+ from: fastWallet.address,
116
+ to: account.address,
117
+ fastWallet,
69
118
  });
70
-
71
- console.log(result.txHash);
72
- // { txHash: '0x...', orderId: '0x...', estimatedTime: '1-5 minutes' }
73
119
  ```
74
120
 
75
- Best practice: generate the Fast wallet once, store the private/public keys in your secret manager or environment, and pass those stored values into `createFastClient()`. Do not generate a fresh wallet on every app start unless that is explicitly what you want.
121
+ ## createEvmWallet
76
122
 
77
- ## Features
123
+ Returns an Account-compatible object with viem signing methods and `privateKey`.
78
124
 
79
- - **Deposit** - Bridge USDC from EVM chains to fastUSDC on Fast
80
- - **Withdraw** - Bridge fastUSDC from Fast to USDC on EVM chains
81
- - **EVM Executor** - Built-in viem-based transaction executor
82
- - **Fast Client** - Built-in Fast network client for withdrawals
83
- - **Fast Wallet Generator** - Generate a Fast keypair and address without another SDK
125
+ ```ts
126
+ // Generate new wallet
127
+ const generatedAccount = createEvmWallet();
128
+ console.log(generatedAccount.privateKey); // persist this if you generated it
84
129
 
85
- ## Supported Networks
130
+ // Derive from private key
131
+ const derivedAccount = createEvmWallet('0x1234...64hexchars');
86
132
 
87
- Current SDK implementation in this branch:
133
+ // Load from keyfile
134
+ const keyfileAccount = createEvmWallet('~/.evm/keys/default.json');
135
+ ```
88
136
 
89
- - Testnet-only bridge flows
90
- - Arbitrum Sepolia (`421614`) + Fast testnet
91
- - Token mapping for `USDC` <-> `fastUSDC`
137
+ **Keyfile format:**
138
+ ```json
139
+ {
140
+ "privateKey": "abc123...64hexchars",
141
+ "address": "0x..." // optional, for reference
142
+ }
143
+ ```
92
144
 
93
- Environment target matrix for AllSet deployments:
145
+ ## createEvmExecutor
94
146
 
95
- - Mainnet: Polygon, Arbitrum, Base with `USDC` -> `fastUSDC`
96
- - Testnet: Sepolia, Arbitrum Sepolia, Tempo with testnet `USDC` -> `testUSDC`
147
+ Returns `{ walletClient, publicClient }` for EVM operations.
97
148
 
98
- ## Documentation
149
+ ```ts
150
+ const { walletClient, publicClient } = createEvmExecutor(account, rpcUrl, chainId);
151
+ ```
99
152
 
100
- See [SKILL.md](./SKILL.md) for detailed API documentation and troubleshooting.
153
+ Accepts viem `Account` values, including the objects returned by `createEvmWallet()`.
101
154
 
102
- ## Development
155
+ ### Pure intent builders
103
156
 
104
- ```bash
105
- npm install
106
- npm run build
107
- npm test
157
+ ```ts
158
+ import {
159
+ buildTransferIntent,
160
+ buildExecuteIntent,
161
+ buildDepositBackIntent,
162
+ } from '@fastxyz/allset-sdk/browser';
163
+
164
+ const intents = [
165
+ buildTransferIntent('0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d', '0xRecipient'),
166
+ buildExecuteIntent('0xContractAddress', '0xabcdef'),
167
+ buildDepositBackIntent('0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d', 'fast1receiveraddress...'),
168
+ ];
169
+ ```
170
+
171
+ ## Advanced: Custom Intents
172
+
173
+ ```ts
174
+ import { buildExecuteIntent, buildTransferIntent } from '@fastxyz/allset-sdk';
175
+
176
+ await allset.executeIntent({
177
+ chain: 'arbitrum',
178
+ fastWallet,
179
+ token: 'fastUSDC',
180
+ amount: '1000000',
181
+ intents: [
182
+ buildTransferIntent(USDC_ADDRESS, '0xRecipient'),
183
+ buildExecuteIntent(CONTRACT_ADDRESS, '0xabcdef'),
184
+ ],
185
+ });
108
186
  ```
109
187
 
188
+ ## Supported Networks
189
+
190
+ | Network | Chain | Status |
191
+ | --- | --- | --- |
192
+ | Testnet | Arbitrum Sepolia | ✅ |
193
+ | Testnet | Ethereum Sepolia | ✅ |
194
+ | Testnet | Base (mainnet chain) | ✅ |
195
+ | Mainnet | Coming soon | 🔜 |
196
+
197
+ ## Current Hosted Endpoints
198
+
199
+ These are the currently used hosted endpoints and token IDs for the public testnet environment:
200
+
201
+ - Portal: `https://testnet.allset.fast.xyz`
202
+ - Fast proxy: `https://testnet.api.fast.xyz/proxy`
203
+ - Cross-sign: `https://testnet.cross-sign.allset.fast.xyz`
204
+
205
+ Current Fast token IDs:
206
+
207
+ - `testUSDC` testnet token id
208
+ - Base64: `nFL+lGX1e8UmwRqgwEj9hwmqRqvAbRXIDL7ZJj1NTfg=`
209
+ - Hex: `9c52fe9465f57bc526c11aa0c048fd8709aa46abc06d15c80cbed9263d4d4df8`
210
+ - `fastUSDC` mainnet token id
211
+ - Base64: `tP2rhGNydA90frS2SsDCLqoVkRPy01sHUCcGX7pBk2U=`
212
+ - Hex: `b4fdab846372740f747eb4b64ac0c22eaa159113f2d35b075027065fba419365`
213
+
214
+ Bundled testnet chain routes:
215
+
216
+ - Ethereum Sepolia
217
+ - Bridge contract: `0x67C5f02df93f2144C6a4e4Fb48D92cE91Cfbc3A6`
218
+ - Fast bridge: `fast1fxtkgpwcy7hnakw96gg7relph4wxx7ghrukm723p3l9adxuxljzsc6f958`
219
+ - Relayer base URL: `https://testnet.allset.fast.xyz/ethereum-sepolia/relayer`
220
+ - Bundled relayer submit URL: `https://testnet.allset.fast.xyz/ethereum-sepolia/relayer/relay`
221
+ - Fast token id: `testUSDC`
222
+ - Arbitrum Sepolia
223
+ - Bridge contract: `0x67C5f02df93f2144C6a4e4Fb48D92cE91Cfbc3A6`
224
+ - Fast bridge: `fast1tkmtqxulhnzeeg9zhuwxy3x95wr7waytm9cq40ndf7tkuwwcc6jseg24j8`
225
+ - Relayer base URL: `https://testnet.allset.fast.xyz/arbitrum-sepolia/relayer`
226
+ - Bundled relayer submit URL: `https://testnet.allset.fast.xyz/arbitrum-sepolia/relayer/relay`
227
+ - Fast token id: `testUSDC`
228
+ - Base
229
+ - Bridge contract: `0x41cE437493f2a9DDA9214aE7b3662175bBe54a6c`
230
+ - Fast bridge: `fast1a4fza9xc8jcm7jp64a0ugtuyw3hkkmje02e8af9aaer4r0je4dpqz4uf58`
231
+ - Relayer base URL: `https://testnet.allset.fast.xyz/base/relayer`
232
+ - Bundled relayer submit URL: `https://testnet.allset.fast.xyz/base/relayer/relay`
233
+ - Bundled Fast token id: `fastUSDC`
234
+
235
+ Note: the SDK currently posts to the explicit `/relay` endpoint. The plain `/relayer` URL above is included as a reference base URL.
236
+
237
+ ## Migration
238
+
239
+ - Root imports are now pure-helper only.
240
+ - Move provider, executor, wallet, and config imports to `@fastxyz/allset-sdk/node`.
241
+ - Use the root, `core`, or `browser` entrypoints for deposit planning and intent building.
242
+
243
+ ## Documentation
244
+
245
+ See [SKILL.md](./SKILL.md) for detailed API documentation.
246
+
110
247
  ## License
111
248
 
112
249
  MIT
@@ -0,0 +1,2 @@
1
+ export * from '../core/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '../core/index.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Hex } from 'viem';
2
+ export declare function bytesToHex(bytes: Uint8Array): Hex;
3
+ export declare function fastAddressToBytes32(address: string): Hex;
4
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/core/address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAMjD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAoBzD"}
@@ -0,0 +1,27 @@
1
+ import { bech32m } from 'bech32';
2
+ export function bytesToHex(bytes) {
3
+ let hex = '';
4
+ for (const byte of bytes) {
5
+ hex += byte.toString(16).padStart(2, '0');
6
+ }
7
+ return `0x${hex}`;
8
+ }
9
+ export function fastAddressToBytes32(address) {
10
+ let decoded;
11
+ try {
12
+ decoded = bech32m.decode(address, 90);
13
+ }
14
+ catch (error) {
15
+ throw new Error(`Invalid Fast address "${address}": ${error.message}`);
16
+ }
17
+ const { prefix, words } = decoded;
18
+ if (prefix !== 'fast') {
19
+ throw new Error(`Fast address must use the "fast" prefix. Got: "${prefix}"`);
20
+ }
21
+ const bytes = new Uint8Array(bech32m.fromWords(words));
22
+ if (bytes.length !== 32) {
23
+ throw new Error(`Fast address must decode to 32 bytes. Got: ${bytes.length}`);
24
+ }
25
+ return bytesToHex(bytes);
26
+ }
27
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/core/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,GAAG,EAAS,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,OAA0C,CAAC;IAE/C,IAAI,CAAC;QACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,MAAO,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,GAAG,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8CAA8C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,59 @@
1
+ export interface DepositPlanningTokenConfig {
2
+ evmAddress: string;
3
+ decimals: number;
4
+ isNative?: boolean;
5
+ }
6
+ export interface DepositPlanningChainConfig {
7
+ chainId: number;
8
+ bridgeContract: string;
9
+ tokens: Record<string, DepositPlanningTokenConfig>;
10
+ }
11
+ export interface DepositPlanningNetworkConfig {
12
+ chains: Record<string, DepositPlanningChainConfig>;
13
+ }
14
+ export interface DepositRouteOverrides {
15
+ bridgeAddress?: string;
16
+ tokenAddress?: string;
17
+ chainId?: number;
18
+ decimals?: number;
19
+ isNative?: boolean;
20
+ }
21
+ export interface ResolveDepositRouteParams {
22
+ network?: 'testnet' | 'mainnet';
23
+ chain: string;
24
+ token: string;
25
+ overrides?: DepositRouteOverrides;
26
+ networkConfig?: DepositPlanningNetworkConfig;
27
+ }
28
+ export interface DepositRoute {
29
+ network: 'testnet' | 'mainnet';
30
+ chain: string;
31
+ token: string;
32
+ chainId: number;
33
+ bridgeAddress: `0x${string}`;
34
+ tokenAddress: `0x${string}`;
35
+ decimals: number;
36
+ isNative: boolean;
37
+ }
38
+ export interface EncodeDepositCalldataParams {
39
+ tokenAddress: string;
40
+ amount: bigint;
41
+ receiverBytes32: `0x${string}`;
42
+ }
43
+ export interface BuildDepositTransactionParams extends ResolveDepositRouteParams {
44
+ amount: bigint;
45
+ receiver: string;
46
+ }
47
+ export interface DepositTransactionPlan {
48
+ chainId: number;
49
+ to: `0x${string}`;
50
+ data: `0x${string}`;
51
+ value: bigint;
52
+ receiverBytes32: `0x${string}`;
53
+ route: DepositRoute;
54
+ }
55
+ export declare function resolveDepositRoute(params: ResolveDepositRouteParams): DepositRoute;
56
+ export declare function encodeDepositCalldata(params: EncodeDepositCalldataParams): `0x${string}`;
57
+ export declare function buildDepositTransactionFromRoute(route: DepositRoute, amount: bigint, receiver: string): DepositTransactionPlan;
58
+ export declare function buildDepositTransaction(params: BuildDepositTransactionParams): DepositTransactionPlan;
59
+ //# sourceMappingURL=deposit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../src/core/deposit.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC;CACrB;AAiDD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,YAAY,CA6BnF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,KAAK,MAAM,EAAE,CAUxF;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,sBAAsB,CAcxB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,6BAA6B,GACpC,sBAAsB,CAGxB"}
@@ -0,0 +1,93 @@
1
+ import { encodeFunctionData } from 'viem';
2
+ import { DEFAULT_NETWORKS_CONFIG } from '../default-config.js';
3
+ import { fastAddressToBytes32 } from './address.js';
4
+ const BRIDGE_DEPOSIT_ABI = [{
5
+ type: 'function',
6
+ name: 'deposit',
7
+ inputs: [
8
+ { name: 'token', type: 'address' },
9
+ { name: 'amount', type: 'uint256' },
10
+ { name: 'receiver', type: 'bytes32' },
11
+ ],
12
+ outputs: [],
13
+ stateMutability: 'payable',
14
+ }];
15
+ function normalizeDepositToken(token) {
16
+ const lowerToken = token.toLowerCase();
17
+ if (lowerToken === 'fastusdc' || lowerToken === 'testusdc') {
18
+ return 'USDC';
19
+ }
20
+ return token;
21
+ }
22
+ function resolveTokenEntry(chainConfig, token) {
23
+ const normalizedToken = normalizeDepositToken(token);
24
+ const exactConfig = chainConfig.tokens[normalizedToken];
25
+ if (exactConfig) {
26
+ return { tokenKey: normalizedToken, tokenConfig: exactConfig };
27
+ }
28
+ const upperToken = normalizedToken.toUpperCase();
29
+ const upperConfig = chainConfig.tokens[upperToken];
30
+ if (upperConfig) {
31
+ return { tokenKey: upperToken, tokenConfig: upperConfig };
32
+ }
33
+ const loweredAddress = token.toLowerCase();
34
+ for (const [tokenKey, tokenConfig] of Object.entries(chainConfig.tokens)) {
35
+ if (tokenConfig.evmAddress.toLowerCase() === loweredAddress) {
36
+ return { tokenKey, tokenConfig };
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ export function resolveDepositRoute(params) {
42
+ const network = params.network ?? 'testnet';
43
+ const networkConfig = params.networkConfig ?? DEFAULT_NETWORKS_CONFIG[network];
44
+ const chainConfig = networkConfig.chains[params.chain];
45
+ if (!chainConfig) {
46
+ throw new Error(`AllSet does not support EVM chain "${params.chain}" on ${network}. Supported: ${Object.keys(networkConfig.chains).join(', ') || 'none'}`);
47
+ }
48
+ const tokenEntry = resolveTokenEntry(chainConfig, params.token);
49
+ if (!tokenEntry) {
50
+ throw new Error(`Cannot resolve token "${params.token}" on AllSet for chain "${params.chain}".`);
51
+ }
52
+ return {
53
+ network,
54
+ chain: params.chain,
55
+ token: tokenEntry.tokenKey,
56
+ chainId: params.overrides?.chainId ?? chainConfig.chainId,
57
+ bridgeAddress: (params.overrides?.bridgeAddress ?? chainConfig.bridgeContract),
58
+ tokenAddress: (params.overrides?.tokenAddress ?? tokenEntry.tokenConfig.evmAddress),
59
+ decimals: params.overrides?.decimals ?? tokenEntry.tokenConfig.decimals,
60
+ isNative: params.overrides?.isNative ?? tokenEntry.tokenConfig.isNative ?? false,
61
+ };
62
+ }
63
+ export function encodeDepositCalldata(params) {
64
+ return encodeFunctionData({
65
+ abi: BRIDGE_DEPOSIT_ABI,
66
+ functionName: 'deposit',
67
+ args: [
68
+ params.tokenAddress,
69
+ params.amount,
70
+ params.receiverBytes32,
71
+ ],
72
+ });
73
+ }
74
+ export function buildDepositTransactionFromRoute(route, amount, receiver) {
75
+ const receiverBytes32 = fastAddressToBytes32(receiver);
76
+ return {
77
+ chainId: route.chainId,
78
+ to: route.bridgeAddress,
79
+ data: encodeDepositCalldata({
80
+ tokenAddress: route.tokenAddress,
81
+ amount,
82
+ receiverBytes32,
83
+ }),
84
+ value: route.isNative ? amount : 0n,
85
+ receiverBytes32,
86
+ route,
87
+ };
88
+ }
89
+ export function buildDepositTransaction(params) {
90
+ const route = resolveDepositRoute(params);
91
+ return buildDepositTransactionFromRoute(route, params.amount, params.receiver);
92
+ }
93
+ //# sourceMappingURL=deposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/core/deposit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { buildDepositTransaction, encodeDepositCalldata, resolveDepositRoute, } from './deposit.js';
2
+ export { fastAddressToBytes32 } from './address.js';
3
+ export { IntentAction, buildTransferIntent, buildExecuteIntent, buildDepositBackIntent, buildRevokeIntent, } from '../intents.js';
4
+ export type { Intent } from '../intents.js';
5
+ export type { BuildDepositTransactionParams, DepositPlanningChainConfig, DepositPlanningNetworkConfig, DepositPlanningTokenConfig, DepositRoute, DepositRouteOverrides, DepositTransactionPlan, EncodeDepositCalldataParams, ResolveDepositRouteParams, } from './deposit.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { buildDepositTransaction, encodeDepositCalldata, resolveDepositRoute, } from './deposit.js';
2
+ export { fastAddressToBytes32 } from './address.js';
3
+ export { IntentAction, buildTransferIntent, buildExecuteIntent, buildDepositBackIntent, buildRevokeIntent, } from '../intents.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,51 @@
1
+ export declare const DEFAULT_NETWORKS_CONFIG: {
2
+ testnet: {
3
+ crossSignUrl: string;
4
+ chains: {
5
+ ethereum: {
6
+ chainId: number;
7
+ bridgeContract: string;
8
+ fastBridgeAddress: string;
9
+ relayerUrl: string;
10
+ tokens: {
11
+ USDC: {
12
+ evmAddress: string;
13
+ fastTokenId: string;
14
+ decimals: number;
15
+ };
16
+ };
17
+ };
18
+ arbitrum: {
19
+ chainId: number;
20
+ bridgeContract: string;
21
+ fastBridgeAddress: string;
22
+ relayerUrl: string;
23
+ tokens: {
24
+ USDC: {
25
+ evmAddress: string;
26
+ fastTokenId: string;
27
+ decimals: number;
28
+ };
29
+ };
30
+ };
31
+ base: {
32
+ chainId: number;
33
+ bridgeContract: string;
34
+ fastBridgeAddress: string;
35
+ relayerUrl: string;
36
+ tokens: {
37
+ USDC: {
38
+ evmAddress: string;
39
+ fastTokenId: string;
40
+ decimals: number;
41
+ };
42
+ };
43
+ };
44
+ };
45
+ };
46
+ mainnet: {
47
+ crossSignUrl: string;
48
+ chains: {};
49
+ };
50
+ };
51
+ //# sourceMappingURL=default-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-config.d.ts","sourceRoot":"","sources":["../src/default-config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDP,CAAC"}