@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.
- package/README.md +206 -69
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/core/address.d.ts +4 -0
- package/dist/core/address.d.ts.map +1 -0
- package/dist/core/address.js +27 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/deposit.d.ts +59 -0
- package/dist/core/deposit.d.ts.map +1 -0
- package/dist/core/deposit.js +93 -0
- package/dist/core/deposit.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/default-config.d.ts +51 -0
- package/dist/default-config.d.ts.map +1 -0
- package/dist/default-config.js +52 -0
- package/dist/default-config.js.map +1 -0
- package/dist/index.d.ts +4 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/intents.d.ts +94 -0
- package/dist/intents.d.ts.map +1 -0
- package/dist/intents.js +120 -0
- package/dist/intents.js.map +1 -0
- package/dist/node/bridge.d.ts +55 -0
- package/dist/node/bridge.d.ts.map +1 -0
- package/dist/node/bridge.js +496 -0
- package/dist/node/bridge.js.map +1 -0
- package/dist/node/config.d.ts +45 -0
- package/dist/node/config.d.ts.map +1 -0
- package/dist/node/config.js +49 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/evm-executor.d.ts +130 -0
- package/dist/node/evm-executor.d.ts.map +1 -0
- package/dist/node/evm-executor.js +159 -0
- package/dist/node/evm-executor.js.map +1 -0
- package/dist/node/index.d.ts +14 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +17 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/provider.d.ts +162 -0
- package/dist/node/provider.d.ts.map +1 -0
- package/dist/node/provider.js +269 -0
- package/dist/node/provider.js.map +1 -0
- package/dist/node/types.d.ts +111 -0
- package/dist/node/types.d.ts.map +1 -0
- package/dist/node/types.js.map +1 -0
- package/package.json +23 -2
- package/dist/bridge.d.ts +0 -12
- package/dist/bridge.d.ts.map +0 -1
- package/dist/bridge.js +0 -305
- package/dist/bridge.js.map +0 -1
- package/dist/evm-executor.d.ts +0 -28
- package/dist/evm-executor.d.ts.map +0 -1
- package/dist/evm-executor.js +0 -92
- package/dist/evm-executor.js.map +0 -1
- package/dist/fast-client.d.ts +0 -57
- package/dist/fast-client.d.ts.map +0 -1
- package/dist/fast-client.js +0 -335
- package/dist/fast-client.js.map +0 -1
- package/dist/fast-compat.d.ts +0 -13
- package/dist/fast-compat.d.ts.map +0 -1
- package/dist/fast-compat.js +0 -22
- package/dist/fast-compat.js.map +0 -1
- package/dist/types.d.ts +0 -68
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{types.js → node/types.js} +0 -0
package/dist/bridge.js
DELETED
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* bridge.ts — AllSet bridge provider
|
|
3
|
-
*
|
|
4
|
-
* Bridges between Fast network and the SDK's supported EVM routes.
|
|
5
|
-
*
|
|
6
|
-
* Two directions:
|
|
7
|
-
* Deposit (EVM → Fast): call bridge.deposit(token, amount, receiver) on the EVM bridge contract
|
|
8
|
-
* Withdraw (Fast → EVM): transfer on Fast network + submit ExternalClaim intent + POST to relayer
|
|
9
|
-
*/
|
|
10
|
-
import { bech32m } from 'bech32';
|
|
11
|
-
import { encodeAbiParameters, encodeFunctionData } from 'viem';
|
|
12
|
-
import { FastError } from './fast-compat.js';
|
|
13
|
-
function base64ToBytes(b64) {
|
|
14
|
-
return new Uint8Array(Buffer.from(b64, 'base64'));
|
|
15
|
-
}
|
|
16
|
-
const FAST_USDC_TOKEN_ID = hexToUint8Array('b4cf1b9e227bb6a21b959338895dfb39b8d2a96dfa1ce5dd633561c193124cb5');
|
|
17
|
-
const FAST_USDC_TOKEN_HEX = 'b4cf1b9e227bb6a21b959338895dfb39b8d2a96dfa1ce5dd633561c193124cb5';
|
|
18
|
-
const CHAIN_CONFIGS = {
|
|
19
|
-
ethereum: {
|
|
20
|
-
chainId: 11155111,
|
|
21
|
-
bridgeContract: '0x38b48764f6B12e1Dd5e4f8391d06d34Ba3920201',
|
|
22
|
-
fastsetBridgeAddress: 'fast19cjwajufyuqv883ydlvrp8xrhxejuvfe40pxq5dsrv675zgh89sqg9txs8',
|
|
23
|
-
relayerUrl: 'https://staging.omniset.fastset.xyz/ethereum-sepolia-relayer/relay',
|
|
24
|
-
},
|
|
25
|
-
arbitrum: {
|
|
26
|
-
chainId: 421614,
|
|
27
|
-
bridgeContract: '0xAc5164c04ee74c417e809916C65455499ae70eb6',
|
|
28
|
-
fastsetBridgeAddress: 'fast1x0g58phuf0pf32e9uvp3mv6hak4z37ytpqyfzjzhfsehua9kmegqwzv0td',
|
|
29
|
-
relayerUrl: 'https://staging.allset.fastset.xyz/arbitrum-sepolia/relayer/relay',
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
const CHAIN_TOKENS = {
|
|
33
|
-
arbitrum: {
|
|
34
|
-
USDC: {
|
|
35
|
-
evmAddress: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
|
|
36
|
-
fastsetTokenId: FAST_USDC_TOKEN_ID,
|
|
37
|
-
decimals: 6,
|
|
38
|
-
isNative: false,
|
|
39
|
-
},
|
|
40
|
-
fastUSDC: {
|
|
41
|
-
evmAddress: '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
|
|
42
|
-
fastsetTokenId: FAST_USDC_TOKEN_ID,
|
|
43
|
-
decimals: 6,
|
|
44
|
-
isNative: false,
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
function resolveAllSetToken(token, evmChain) {
|
|
49
|
-
const chainTokens = CHAIN_TOKENS[evmChain];
|
|
50
|
-
if (!chainTokens)
|
|
51
|
-
return null;
|
|
52
|
-
const upper = token.toUpperCase();
|
|
53
|
-
if (chainTokens[upper])
|
|
54
|
-
return chainTokens[upper];
|
|
55
|
-
if (chainTokens[token])
|
|
56
|
-
return chainTokens[token];
|
|
57
|
-
const clean = token.startsWith('0x') ? token.slice(2).toLowerCase() : token.toLowerCase();
|
|
58
|
-
if (clean === FAST_USDC_TOKEN_HEX)
|
|
59
|
-
return chainTokens.USDC ?? null;
|
|
60
|
-
for (const info of Object.values(chainTokens)) {
|
|
61
|
-
if (info.evmAddress.toLowerCase() === token.toLowerCase())
|
|
62
|
-
return info;
|
|
63
|
-
}
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
function fastAddressToBytes32(address) {
|
|
67
|
-
const { words } = bech32m.decode(address, 90);
|
|
68
|
-
const bytes = new Uint8Array(bech32m.fromWords(words));
|
|
69
|
-
return `0x${Buffer.from(bytes).toString('hex')}`;
|
|
70
|
-
}
|
|
71
|
-
function hexToUint8Array(hex) {
|
|
72
|
-
const clean = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
73
|
-
const bytes = new Uint8Array(clean.length / 2);
|
|
74
|
-
for (let i = 0; i < bytes.length; i += 1) {
|
|
75
|
-
bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
|
|
76
|
-
}
|
|
77
|
-
return bytes;
|
|
78
|
-
}
|
|
79
|
-
const BRIDGE_DEPOSIT_ABI = [{
|
|
80
|
-
type: 'function',
|
|
81
|
-
name: 'deposit',
|
|
82
|
-
inputs: [
|
|
83
|
-
{ name: 'token', type: 'address' },
|
|
84
|
-
{ name: 'amount', type: 'uint256' },
|
|
85
|
-
{ name: 'receiver', type: 'bytes32' },
|
|
86
|
-
],
|
|
87
|
-
outputs: [],
|
|
88
|
-
stateMutability: 'payable',
|
|
89
|
-
}];
|
|
90
|
-
export const allsetProvider = {
|
|
91
|
-
name: 'allset',
|
|
92
|
-
chains: ['fast', 'ethereum', 'arbitrum'],
|
|
93
|
-
networks: ['testnet'],
|
|
94
|
-
async bridge(params) {
|
|
95
|
-
try {
|
|
96
|
-
const isDeposit = params.fromChain !== 'fast' && params.toChain === 'fast';
|
|
97
|
-
const isWithdraw = params.fromChain === 'fast';
|
|
98
|
-
if (!isDeposit && !isWithdraw) {
|
|
99
|
-
throw new FastError('UNSUPPORTED_OPERATION', `AllSet only supports bridging between Fast network and EVM chains (ethereum, arbitrum). Got: ${params.fromChain} → ${params.toChain}`, {
|
|
100
|
-
note: 'Use fromChain: "fast" for withdrawals, or toChain: "fast" for deposits.\n Example: await allset.bridge({ fromChain: "ethereum", toChain: "fast", fromToken: "USDC", toToken: "fastUSDC", amount: "1000000", senderAddress: "0x...", receiverAddress: "fast1..." })',
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
if (isDeposit) {
|
|
104
|
-
if (!params.evmExecutor) {
|
|
105
|
-
throw new FastError('INVALID_PARAMS', 'AllSet deposit (EVM → Fast) requires evmExecutor', {
|
|
106
|
-
note: 'Provide an evmExecutor created with createEvmExecutor().\n Example: const executor = createEvmExecutor(privateKey, rpcUrl, chainId)',
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
const chainConfig = CHAIN_CONFIGS[params.fromChain];
|
|
110
|
-
if (!chainConfig) {
|
|
111
|
-
throw new FastError('UNSUPPORTED_OPERATION', `AllSet does not support EVM chain "${params.fromChain}". Supported: ${Object.keys(CHAIN_CONFIGS).join(', ')}`, {
|
|
112
|
-
note: 'Use "ethereum" or "arbitrum" as the source chain for AllSet deposits.',
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
let tokenInfo = resolveAllSetToken(params.fromToken, params.fromChain);
|
|
116
|
-
if (!tokenInfo) {
|
|
117
|
-
tokenInfo = resolveAllSetToken(params.toToken, params.fromChain);
|
|
118
|
-
}
|
|
119
|
-
if (!tokenInfo) {
|
|
120
|
-
throw new FastError('TOKEN_NOT_FOUND', `Cannot resolve token "${params.fromToken}" on AllSet for chain "${params.fromChain}".`, {
|
|
121
|
-
note: 'Supported tokens: USDC, fastUSDC.\n Example: await allset.bridge({ fromChain: "arbitrum", toChain: "fast", fromToken: "USDC", toToken: "fastUSDC", amount: "1000000", senderAddress: "0x...", receiverAddress: "fast1..." })',
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
let receiverBytes32;
|
|
125
|
-
try {
|
|
126
|
-
receiverBytes32 = fastAddressToBytes32(params.receiverAddress);
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
130
|
-
throw new FastError('INVALID_ADDRESS', `Failed to decode Fast network receiver address "${params.receiverAddress}": ${msg}`, {
|
|
131
|
-
note: 'The receiver address must be a valid Fast network bech32m address (fast1...).\n Example: fast1abc...',
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
const calldata = encodeFunctionData({
|
|
135
|
-
abi: BRIDGE_DEPOSIT_ABI,
|
|
136
|
-
functionName: 'deposit',
|
|
137
|
-
args: [
|
|
138
|
-
tokenInfo.evmAddress,
|
|
139
|
-
BigInt(params.amount),
|
|
140
|
-
receiverBytes32,
|
|
141
|
-
],
|
|
142
|
-
});
|
|
143
|
-
let txHash;
|
|
144
|
-
if (tokenInfo.isNative) {
|
|
145
|
-
const receipt = await params.evmExecutor.sendTx({
|
|
146
|
-
to: chainConfig.bridgeContract,
|
|
147
|
-
data: calldata,
|
|
148
|
-
value: params.amount,
|
|
149
|
-
});
|
|
150
|
-
if (receipt.status === 'reverted') {
|
|
151
|
-
throw new FastError('TX_FAILED', `AllSet deposit transaction reverted: ${receipt.txHash}`, {
|
|
152
|
-
note: 'The deposit transaction was reverted. Check that you have sufficient ETH balance.',
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
txHash = receipt.txHash;
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
const requiredAmount = BigInt(params.amount);
|
|
159
|
-
const currentAllowance = await params.evmExecutor.checkAllowance(tokenInfo.evmAddress, chainConfig.bridgeContract, params.senderAddress);
|
|
160
|
-
if (currentAllowance < requiredAmount) {
|
|
161
|
-
await params.evmExecutor.approveErc20(tokenInfo.evmAddress, chainConfig.bridgeContract, params.amount);
|
|
162
|
-
}
|
|
163
|
-
const receipt = await params.evmExecutor.sendTx({
|
|
164
|
-
to: chainConfig.bridgeContract,
|
|
165
|
-
data: calldata,
|
|
166
|
-
value: '0',
|
|
167
|
-
});
|
|
168
|
-
if (receipt.status === 'reverted') {
|
|
169
|
-
throw new FastError('TX_FAILED', `AllSet deposit transaction reverted: ${receipt.txHash}`, {
|
|
170
|
-
note: 'The deposit transaction was reverted. Check that you have sufficient token balance and the approval succeeded.',
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
txHash = receipt.txHash;
|
|
174
|
-
}
|
|
175
|
-
return {
|
|
176
|
-
txHash,
|
|
177
|
-
orderId: txHash,
|
|
178
|
-
estimatedTime: '1-5 minutes',
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
if (!params.fastClient) {
|
|
182
|
-
throw new FastError('INVALID_PARAMS', 'AllSet withdrawal (Fast → EVM) requires fastClient', {
|
|
183
|
-
note: 'Provide a compatible FastClient implementation with submit() and evmSign().',
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
const chainConfig = CHAIN_CONFIGS[params.toChain];
|
|
187
|
-
if (!chainConfig) {
|
|
188
|
-
throw new FastError('UNSUPPORTED_OPERATION', `AllSet does not support EVM destination chain "${params.toChain}". Supported: ${Object.keys(CHAIN_CONFIGS).join(', ')}`, {
|
|
189
|
-
note: 'Use "ethereum" or "arbitrum" as the destination chain for AllSet withdrawals.',
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
let tokenInfo = resolveAllSetToken(params.fromToken, params.toChain);
|
|
193
|
-
if (!tokenInfo) {
|
|
194
|
-
tokenInfo = resolveAllSetToken(params.toToken, params.toChain);
|
|
195
|
-
}
|
|
196
|
-
if (!tokenInfo) {
|
|
197
|
-
throw new FastError('TOKEN_NOT_FOUND', `Cannot resolve token "${params.fromToken}" on AllSet for destination chain "${params.toChain}".`, {
|
|
198
|
-
note: 'Supported tokens: USDC, fastUSDC.\n Example: await allset.bridge({ fromChain: "fast", toChain: "arbitrum", fromToken: "fastUSDC", toToken: "USDC", amount: "1000000", senderAddress: "fast1...", receiverAddress: "0x..." })',
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
const evmTokenAddress = tokenInfo.evmAddress;
|
|
202
|
-
const transferResult = await params.fastClient.submit({
|
|
203
|
-
recipient: chainConfig.fastsetBridgeAddress,
|
|
204
|
-
claim: {
|
|
205
|
-
TokenTransfer: {
|
|
206
|
-
token_id: tokenInfo.fastsetTokenId,
|
|
207
|
-
amount: params.amount,
|
|
208
|
-
user_data: null,
|
|
209
|
-
},
|
|
210
|
-
},
|
|
211
|
-
});
|
|
212
|
-
const transferCrossSign = await params.fastClient.evmSign({
|
|
213
|
-
certificate: transferResult.certificate,
|
|
214
|
-
});
|
|
215
|
-
// Use the transaction hash directly (keccak256 of BCS-serialized transaction)
|
|
216
|
-
// This matches how x402-sdk and AllSetPortal compute the transfer ID
|
|
217
|
-
const transferFastTxId = transferResult.txHash;
|
|
218
|
-
const dynamicTransferPayload = encodeAbiParameters([{ type: 'address' }, { type: 'address' }], [
|
|
219
|
-
evmTokenAddress,
|
|
220
|
-
params.receiverAddress,
|
|
221
|
-
]);
|
|
222
|
-
// Deadline: 1 hour from now
|
|
223
|
-
const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);
|
|
224
|
-
const intentClaimEncoded = encodeAbiParameters([{
|
|
225
|
-
type: 'tuple',
|
|
226
|
-
components: [
|
|
227
|
-
{ name: 'transferFastTxId', type: 'bytes32' },
|
|
228
|
-
{ name: 'deadline', type: 'uint256' },
|
|
229
|
-
{
|
|
230
|
-
name: 'intents',
|
|
231
|
-
type: 'tuple[]',
|
|
232
|
-
components: [
|
|
233
|
-
{ name: 'action', type: 'uint8' },
|
|
234
|
-
{ name: 'payload', type: 'bytes' },
|
|
235
|
-
{ name: 'value', type: 'uint256' },
|
|
236
|
-
],
|
|
237
|
-
},
|
|
238
|
-
],
|
|
239
|
-
}], [{
|
|
240
|
-
transferFastTxId,
|
|
241
|
-
deadline,
|
|
242
|
-
intents: [{
|
|
243
|
-
action: 1,
|
|
244
|
-
payload: dynamicTransferPayload,
|
|
245
|
-
value: 0n,
|
|
246
|
-
}],
|
|
247
|
-
}]);
|
|
248
|
-
const intentBytes = hexToUint8Array(intentClaimEncoded);
|
|
249
|
-
const intentResult = await params.fastClient.submit({
|
|
250
|
-
recipient: params.fastClient.address,
|
|
251
|
-
claim: {
|
|
252
|
-
ExternalClaim: {
|
|
253
|
-
claim: {
|
|
254
|
-
verifier_committee: [],
|
|
255
|
-
verifier_quorum: 0,
|
|
256
|
-
claim_data: Array.from(intentBytes),
|
|
257
|
-
},
|
|
258
|
-
signatures: [],
|
|
259
|
-
},
|
|
260
|
-
},
|
|
261
|
-
});
|
|
262
|
-
const intentCrossSign = await params.fastClient.evmSign({
|
|
263
|
-
certificate: intentResult.certificate,
|
|
264
|
-
});
|
|
265
|
-
const relayerBody = {
|
|
266
|
-
encoded_transfer_claim: Array.from(new Uint8Array(transferCrossSign.transaction.map(Number))),
|
|
267
|
-
transfer_proof: transferCrossSign.signature,
|
|
268
|
-
transfer_fast_tx_id: transferResult.txHash,
|
|
269
|
-
transfer_claim_id: transferResult.txHash,
|
|
270
|
-
fastset_address: params.senderAddress,
|
|
271
|
-
external_address: params.receiverAddress,
|
|
272
|
-
encoded_intent_claim: Array.from(new Uint8Array(intentCrossSign.transaction.map(Number))),
|
|
273
|
-
intent_proof: intentCrossSign.signature,
|
|
274
|
-
intent_fast_tx_id: intentResult.txHash,
|
|
275
|
-
intent_claim_id: intentResult.txHash,
|
|
276
|
-
external_token_address: evmTokenAddress,
|
|
277
|
-
};
|
|
278
|
-
const relayRes = await fetch(chainConfig.relayerUrl, {
|
|
279
|
-
method: 'POST',
|
|
280
|
-
headers: { 'Content-Type': 'application/json' },
|
|
281
|
-
body: JSON.stringify(relayerBody),
|
|
282
|
-
});
|
|
283
|
-
if (!relayRes.ok) {
|
|
284
|
-
const text = await relayRes.text();
|
|
285
|
-
throw new FastError('TX_FAILED', `AllSet relayer request failed (${relayRes.status}): ${text}`, {
|
|
286
|
-
note: 'The withdrawal was submitted to Fast network but the relayer rejected it. Try again.',
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
return {
|
|
290
|
-
txHash: transferResult.txHash,
|
|
291
|
-
orderId: transferFastTxId,
|
|
292
|
-
estimatedTime: '1-5 minutes',
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
catch (err) {
|
|
296
|
-
if (err instanceof FastError)
|
|
297
|
-
throw err;
|
|
298
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
299
|
-
throw new FastError('TX_FAILED', `AllSet bridge failed: ${msg}`, {
|
|
300
|
-
note: 'Check that both chains are configured and have sufficient balance.',
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
},
|
|
304
|
-
};
|
|
305
|
-
//# sourceMappingURL=bridge.js.map
|
package/dist/bridge.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/evm-executor.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* evm-executor.ts — Minimal EVM transaction executor using viem
|
|
3
|
-
*
|
|
4
|
-
* Provides sendTx, checkAllowance, and approveErc20 for bridge operations.
|
|
5
|
-
* Also provides createEvmWallet() to generate a new EVM wallet.
|
|
6
|
-
*/
|
|
7
|
-
import type { EvmTxExecutor } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Generate a new EVM wallet (private key + address).
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const wallet = createEvmWallet();
|
|
14
|
-
* console.log(wallet.address); // 0x...
|
|
15
|
-
* // Persist wallet.privateKey securely. Never log or commit it.
|
|
16
|
-
*
|
|
17
|
-
* // Use with createEvmExecutor
|
|
18
|
-
* const executor = createEvmExecutor(wallet.privateKey, rpcUrl, chainId);
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* @returns Object containing privateKey and address
|
|
22
|
-
*/
|
|
23
|
-
export declare function createEvmWallet(): {
|
|
24
|
-
privateKey: `0x${string}`;
|
|
25
|
-
address: `0x${string}`;
|
|
26
|
-
};
|
|
27
|
-
export declare function createEvmExecutor(privateKey: string, rpcUrl: string, chainId: number): EvmTxExecutor;
|
|
28
|
-
//# sourceMappingURL=evm-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evm-executor.d.ts","sourceRoot":"","sources":["../src/evm-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI;IAAE,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,CAOvF;AAYD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,aAAa,CAyDf"}
|
package/dist/evm-executor.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* evm-executor.ts — Minimal EVM transaction executor using viem
|
|
3
|
-
*
|
|
4
|
-
* Provides sendTx, checkAllowance, and approveErc20 for bridge operations.
|
|
5
|
-
* Also provides createEvmWallet() to generate a new EVM wallet.
|
|
6
|
-
*/
|
|
7
|
-
import { createPublicClient, createWalletClient, http, parseAbi, } from 'viem';
|
|
8
|
-
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
|
|
9
|
-
import { arbitrumSepolia, sepolia } from 'viem/chains';
|
|
10
|
-
/**
|
|
11
|
-
* Generate a new EVM wallet (private key + address).
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* const wallet = createEvmWallet();
|
|
16
|
-
* console.log(wallet.address); // 0x...
|
|
17
|
-
* // Persist wallet.privateKey securely. Never log or commit it.
|
|
18
|
-
*
|
|
19
|
-
* // Use with createEvmExecutor
|
|
20
|
-
* const executor = createEvmExecutor(wallet.privateKey, rpcUrl, chainId);
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @returns Object containing privateKey and address
|
|
24
|
-
*/
|
|
25
|
-
export function createEvmWallet() {
|
|
26
|
-
const privateKey = generatePrivateKey();
|
|
27
|
-
const account = privateKeyToAccount(privateKey);
|
|
28
|
-
return {
|
|
29
|
-
privateKey,
|
|
30
|
-
address: account.address,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
const ERC20_ABI = parseAbi([
|
|
34
|
-
'function approve(address spender, uint256 amount) returns (bool)',
|
|
35
|
-
'function allowance(address owner, address spender) view returns (uint256)',
|
|
36
|
-
]);
|
|
37
|
-
const CHAIN_MAP = {
|
|
38
|
-
11155111: sepolia,
|
|
39
|
-
421614: arbitrumSepolia,
|
|
40
|
-
};
|
|
41
|
-
export function createEvmExecutor(privateKey, rpcUrl, chainId) {
|
|
42
|
-
const key = (privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`);
|
|
43
|
-
const account = privateKeyToAccount(key);
|
|
44
|
-
const chain = CHAIN_MAP[chainId];
|
|
45
|
-
if (!chain) {
|
|
46
|
-
throw new Error(`Unsupported EVM chain ID: ${chainId}. Supported: ${Object.keys(CHAIN_MAP).join(', ')}`);
|
|
47
|
-
}
|
|
48
|
-
const walletClient = createWalletClient({
|
|
49
|
-
account,
|
|
50
|
-
chain,
|
|
51
|
-
transport: http(rpcUrl),
|
|
52
|
-
});
|
|
53
|
-
const publicClient = createPublicClient({
|
|
54
|
-
chain,
|
|
55
|
-
transport: http(rpcUrl),
|
|
56
|
-
});
|
|
57
|
-
return {
|
|
58
|
-
async sendTx(tx) {
|
|
59
|
-
const hash = await walletClient.sendTransaction({
|
|
60
|
-
to: tx.to,
|
|
61
|
-
data: tx.data,
|
|
62
|
-
value: BigInt(tx.value),
|
|
63
|
-
gas: tx.gas ? BigInt(tx.gas) : undefined,
|
|
64
|
-
});
|
|
65
|
-
const receipt = await publicClient.waitForTransactionReceipt({ hash });
|
|
66
|
-
return {
|
|
67
|
-
txHash: hash,
|
|
68
|
-
status: receipt.status === 'success' ? 'success' : 'reverted',
|
|
69
|
-
};
|
|
70
|
-
},
|
|
71
|
-
async checkAllowance(token, spender, owner) {
|
|
72
|
-
const allowance = await publicClient.readContract({
|
|
73
|
-
address: token,
|
|
74
|
-
abi: ERC20_ABI,
|
|
75
|
-
functionName: 'allowance',
|
|
76
|
-
args: [owner, spender],
|
|
77
|
-
});
|
|
78
|
-
return allowance;
|
|
79
|
-
},
|
|
80
|
-
async approveErc20(token, spender, amount) {
|
|
81
|
-
const hash = await walletClient.writeContract({
|
|
82
|
-
address: token,
|
|
83
|
-
abi: ERC20_ABI,
|
|
84
|
-
functionName: 'approve',
|
|
85
|
-
args: [spender, BigInt(amount)],
|
|
86
|
-
});
|
|
87
|
-
await publicClient.waitForTransactionReceipt({ hash });
|
|
88
|
-
return hash;
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=evm-executor.js.map
|
package/dist/evm-executor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evm-executor.js","sourceRoot":"","sources":["../src/evm-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/fast-client.d.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fast-client.ts — FastClient implementation for AllSet SDK
|
|
3
|
-
*
|
|
4
|
-
* Provides a reference implementation of the FastClient interface with proper
|
|
5
|
-
* handling of large integers (timestamp_nanos) to avoid JavaScript precision loss.
|
|
6
|
-
*/
|
|
7
|
-
import type { FastClient } from './types.js';
|
|
8
|
-
export interface FastClientOptions {
|
|
9
|
-
/** Private key as hex string (32 bytes / 64 hex chars) */
|
|
10
|
-
privateKey: string;
|
|
11
|
-
/** Public key as hex string (32 bytes / 64 hex chars) */
|
|
12
|
-
publicKey: string;
|
|
13
|
-
/** Optional RPC URL override */
|
|
14
|
-
rpcUrl?: string;
|
|
15
|
-
/** Optional cross-sign URL override */
|
|
16
|
-
crossSignUrl?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface FastWallet {
|
|
19
|
-
/** Private key as 64 hex chars (32 bytes), without 0x prefix */
|
|
20
|
-
privateKey: string;
|
|
21
|
-
/** Public key as 64 hex chars (32 bytes), without 0x prefix */
|
|
22
|
-
publicKey: string;
|
|
23
|
-
/** Fast bech32m address derived from the public key */
|
|
24
|
-
address: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Generate a new Fast wallet (private key + public key + address).
|
|
28
|
-
*
|
|
29
|
-
* Generate once, store the keys securely, then use them with createFastClient().
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const wallet = createFastWallet();
|
|
34
|
-
* const fastClient = createFastClient({
|
|
35
|
-
* privateKey: wallet.privateKey,
|
|
36
|
-
* publicKey: wallet.publicKey,
|
|
37
|
-
* });
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export declare function createFastWallet(): FastWallet;
|
|
41
|
-
/**
|
|
42
|
-
* Create a FastClient for interacting with the Fast network.
|
|
43
|
-
*
|
|
44
|
-
* IMPORTANT: This implementation properly handles large integers (timestamp_nanos)
|
|
45
|
-
* which exceed JavaScript's safe integer range. Incorrect handling causes transaction
|
|
46
|
-
* hash mismatches and on-chain verification failures (error 0x36289cf3).
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```typescript
|
|
50
|
-
* const client = createFastClient({
|
|
51
|
-
* privateKey: process.env.FAST_PRIVATE_KEY!,
|
|
52
|
-
* publicKey: process.env.FAST_PUBLIC_KEY!,
|
|
53
|
-
* });
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
export declare function createFastClient(options: FastClientOptions): FastClient;
|
|
57
|
-
//# sourceMappingURL=fast-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fast-client.d.ts","sourceRoot":"","sources":["../src/fast-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkH7C,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAkB7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAiOvE"}
|