hodl-wallet 2.0.4 → 2.0.5

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 (81) hide show
  1. package/README.md +79 -2
  2. package/dist/agent-cli.js +75 -0
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/agent-errors.d.ts +1 -1
  5. package/dist/agent-errors.js.map +1 -1
  6. package/dist/index.js +130 -77
  7. package/dist/index.js.map +1 -1
  8. package/dist/network/arb.d.ts +1 -0
  9. package/dist/network/arb.js +2 -1
  10. package/dist/network/arb.js.map +1 -1
  11. package/dist/network/avax.d.ts +1 -0
  12. package/dist/network/avax.js +2 -1
  13. package/dist/network/avax.js.map +1 -1
  14. package/dist/network/bsc.d.ts +1 -0
  15. package/dist/network/bsc.js +2 -1
  16. package/dist/network/bsc.js.map +1 -1
  17. package/dist/network/eth.d.ts +1 -0
  18. package/dist/network/eth.js +2 -1
  19. package/dist/network/eth.js.map +1 -1
  20. package/dist/network/ftm.d.ts +1 -0
  21. package/dist/network/ftm.js +2 -1
  22. package/dist/network/ftm.js.map +1 -1
  23. package/dist/network/hyperliquid.d.ts +1 -0
  24. package/dist/network/hyperliquid.js +2 -1
  25. package/dist/network/hyperliquid.js.map +1 -1
  26. package/dist/network/lib/BitcoinNetwork.d.ts +2 -0
  27. package/dist/network/lib/BitcoinNetwork.js +11 -11
  28. package/dist/network/lib/BitcoinNetwork.js.map +1 -1
  29. package/dist/network/op.d.ts +1 -0
  30. package/dist/network/op.js +2 -1
  31. package/dist/network/op.js.map +1 -1
  32. package/dist/network/pol.d.ts +1 -0
  33. package/dist/network/pol.js +2 -1
  34. package/dist/network/pol.js.map +1 -1
  35. package/dist/network/types.d.ts +1 -0
  36. package/dist/network-registry.d.ts +1 -0
  37. package/dist/network-registry.js +3 -0
  38. package/dist/network-registry.js.map +1 -1
  39. package/dist/persist.d.ts +2 -0
  40. package/dist/persist.js +21 -0
  41. package/dist/persist.js.map +1 -1
  42. package/dist/profile-lock.d.ts +4 -0
  43. package/dist/profile-lock.js +9 -1
  44. package/dist/profile-lock.js.map +1 -1
  45. package/dist/swap/bitcoin.d.ts +34 -0
  46. package/dist/swap/bitcoin.js +179 -0
  47. package/dist/swap/bitcoin.js.map +1 -0
  48. package/dist/swap/chain.d.ts +49 -0
  49. package/dist/swap/chain.js +255 -0
  50. package/dist/swap/chain.js.map +1 -0
  51. package/dist/swap/config.d.ts +68 -0
  52. package/dist/swap/config.js +46 -0
  53. package/dist/swap/config.js.map +1 -0
  54. package/dist/swap/http.d.ts +14 -0
  55. package/dist/swap/http.js +70 -0
  56. package/dist/swap/http.js.map +1 -0
  57. package/dist/swap/providers.d.ts +24 -0
  58. package/dist/swap/providers.js +424 -0
  59. package/dist/swap/providers.js.map +1 -0
  60. package/dist/swap/routes.d.ts +145 -0
  61. package/dist/swap/routes.js +48 -0
  62. package/dist/swap/routes.js.map +1 -0
  63. package/dist/swap/service.d.ts +104 -0
  64. package/dist/swap/service.js +512 -0
  65. package/dist/swap/service.js.map +1 -0
  66. package/dist/swap/storage.d.ts +3 -0
  67. package/dist/swap/storage.js +28 -0
  68. package/dist/swap/storage.js.map +1 -0
  69. package/dist/swap/types.d.ts +140 -0
  70. package/dist/swap/types.js +2 -0
  71. package/dist/swap/types.js.map +1 -0
  72. package/dist/swap/ui.d.ts +3 -0
  73. package/dist/swap/ui.js +257 -0
  74. package/dist/swap/ui.js.map +1 -0
  75. package/dist/transfer-service.d.ts +38 -0
  76. package/dist/transfer-service.js +177 -0
  77. package/dist/transfer-service.js.map +1 -0
  78. package/dist/wallet-service.d.ts +22 -6
  79. package/dist/wallet-service.js +36 -171
  80. package/dist/wallet-service.js.map +1 -1
  81. package/package.json +99 -92
@@ -1 +1 @@
1
- {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persist.js","sourceRoot":"","sources":["../persist.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ export type ProfileLockOptions = {
2
2
  isProcessAlive?: (pid: number) => boolean;
3
3
  pid?: number;
4
4
  };
5
+ export declare class ProfileLockedError extends Error {
6
+ readonly owner: number | null;
7
+ constructor(owner: number | null);
8
+ }
5
9
  export declare class ProfileLock {
6
10
  private readonly lockPath;
7
11
  private readonly isProcessAlive;
@@ -8,6 +8,14 @@ function defaultIsProcessAlive(pid) {
8
8
  return error.code === 'EPERM';
9
9
  }
10
10
  }
11
+ export class ProfileLockedError extends Error {
12
+ owner;
13
+ constructor(owner) {
14
+ super(`Profile is locked by process ${owner}.`);
15
+ this.owner = owner;
16
+ this.name = 'ProfileLockedError';
17
+ }
18
+ }
11
19
  export class ProfileLock {
12
20
  lockPath;
13
21
  isProcessAlive;
@@ -37,7 +45,7 @@ export class ProfileLock {
37
45
  }
38
46
  const owner = this.readOwner();
39
47
  if (owner === null || this.isProcessAlive(owner)) {
40
- throw new Error(`Profile is locked by process ${owner}.`);
48
+ throw new ProfileLockedError(owner);
41
49
  }
42
50
  try {
43
51
  fs.unlinkSync(this.lockPath);
@@ -1 +1 @@
1
- {"version":3,"file":"profile-lock.js","sourceRoot":"","sources":["../profile-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-lock.js","sourceRoot":"","sources":["../profile-lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { WalletAccount } from '../network/types.js';
2
+ import { BitcoinPayments } from './chain.js';
3
+ import type { ChainReceipt, FundingEstimate, ProviderQuote, SwapChain, SwapInput, SwapPlan, SwapQuote, SwapStep } from './types.js';
4
+ type Output = {
5
+ script: Buffer;
6
+ value: number;
7
+ };
8
+ export declare function bitcoinMemoOutputs(memo?: string): Output[];
9
+ export declare class BitcoinSwapChain extends BitcoinPayments implements SwapChain {
10
+ private readonly network;
11
+ private utxos;
12
+ private feeRate;
13
+ availableBalance(address: string): Promise<bigint>;
14
+ estimate(input: SwapInput, offer: ProviderQuote): Promise<FundingEstimate>;
15
+ balance(input: SwapInput, funding: FundingEstimate): Promise<{
16
+ sufficientAsset: boolean;
17
+ sufficientFee: boolean;
18
+ }>;
19
+ assertAvailable(address: string): Promise<void>;
20
+ checkFunding(quote: SwapQuote): Promise<void>;
21
+ nextStep(): Promise<'deposit'>;
22
+ sign(quote: SwapQuote, plan: SwapPlan, kind: SwapStep['kind'], account: WalletAccount): Promise<SwapStep>;
23
+ broadcast(step: SwapStep): Promise<void>;
24
+ receipt(hash: string): Promise<ChainReceipt>;
25
+ payoutPayment(hash: string, address: string): Promise<{
26
+ amount: bigint;
27
+ confirmations: number;
28
+ }>;
29
+ refundPayment(hash: string, address: string): Promise<{
30
+ amount: bigint;
31
+ confirmations: number;
32
+ }>;
33
+ }
34
+ export {};
@@ -0,0 +1,179 @@
1
+ import * as bitcoin from 'bitcoinjs-lib';
2
+ import BitcoinNetwork, { signBitcoinTransaction } from '../network/lib/BitcoinNetwork.js';
3
+ import { BscPayments, BitcoinPayments } from './chain.js';
4
+ import { swapConfig as config } from './config.js';
5
+ import { integer, list, record, swapJson, swapText, SwapHttpError, textField, transactionHash, units } from './http.js';
6
+ export function bitcoinMemoOutputs(memo) {
7
+ if (memo === undefined)
8
+ return [];
9
+ if (!memo || !/^[\x20-\x7e]+$/.test(memo))
10
+ throw new Error('Invalid Bitcoin swap memo.');
11
+ const bytes = Buffer.from(memo, 'ascii');
12
+ const first = bytes.length <= 80 ? bytes : Buffer.concat([bytes.subarray(0, 79), Buffer.from('^')]);
13
+ const outputs = [{ script: bitcoin.payments.embed({ data: [first] }).output, value: 0 }];
14
+ for (let offset = 79; bytes.length > 80 && offset < bytes.length; offset += 20) {
15
+ const chunk = Buffer.alloc(20);
16
+ bytes.copy(chunk, 0, offset, offset + 20);
17
+ outputs.push({ script: Buffer.concat([Buffer.from('0014', 'hex'), chunk]), value: config.bitcoin.memoDustSats });
18
+ }
19
+ if (outputs.length + 2 > config.bitcoin.maxOutputs)
20
+ throw new Error('Bitcoin swap memo exceeds the supported output limit.');
21
+ return outputs;
22
+ }
23
+ export class BitcoinSwapChain extends BitcoinPayments {
24
+ network = new BitcoinNetwork(config.destination);
25
+ async utxos(address) {
26
+ bitcoin.address.toOutputScript(address, bitcoin.networks.bitcoin);
27
+ const values = list(await swapJson(`${config.destination.url}/address/${address}/utxo`)).map(record);
28
+ const seen = new Set();
29
+ return values.filter(value => record(value.status).confirmed === true).map(value => {
30
+ const input = { txid: transactionHash(value.txid), vout: integer(value.vout), value: integer(value.value) };
31
+ const key = `${input.txid}:${input.vout}`;
32
+ if (seen.has(key) || input.value === 0)
33
+ throw new Error('Invalid Bitcoin UTXO list.');
34
+ seen.add(key);
35
+ return input;
36
+ });
37
+ }
38
+ async feeRate(offer) {
39
+ const estimates = record(await swapJson(`${config.destination.url}/fee-estimates`));
40
+ const value = estimates[String(config.bitcoin.feeTargetBlocks)];
41
+ if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0)
42
+ throw new Error('Invalid Bitcoin fee estimate.');
43
+ const rate = BigInt(Math.ceil(value));
44
+ const recommended = offer?.provider === 'thorchain' ? units(offer.details.gasPrice) : 0n;
45
+ return rate > recommended ? rate : recommended;
46
+ }
47
+ async availableBalance(address) {
48
+ return (await this.utxos(address)).reduce((sum, utxo) => sum + BigInt(utxo.value), 0n);
49
+ }
50
+ async estimate(input, offer) {
51
+ const [utxos, rate] = await Promise.all([this.utxos(input.from), this.feeRate(offer)]);
52
+ const memo = bitcoinMemoOutputs(offer.provider === 'thorchain' ? textField(offer.details.memo) : undefined);
53
+ const memoValue = memo.reduce((sum, output) => sum + BigInt(output.value), 0n);
54
+ const extraBytes = memo.reduce((sum, output) => sum + 8 + 1 + output.script.length, 0);
55
+ const selected = [];
56
+ let value = 0n;
57
+ let size = 0;
58
+ for (const utxo of utxos) {
59
+ selected.push(utxo);
60
+ value += BigInt(utxo.value);
61
+ // SegWit input upper bound, 34-byte deposit script and P2WPKH change.
62
+ size = 11 + selected.length * 69 + 43 + 31 + extraBytes;
63
+ if (value >= BigInt(input.amountBaseUnits) + BigInt(size) * rate + memoValue + BigInt(config.bitcoin.changeDustSats))
64
+ break;
65
+ }
66
+ if (!selected.length)
67
+ throw new Error('No confirmed Bitcoin UTXOs are available.');
68
+ return {
69
+ asset: 'BTC', decimals: 8, price: 'btc', rate: rate.toString(), units: size,
70
+ budgetBaseUnits: (BigInt(size) * rate + memoValue).toString(), inputs: selected
71
+ };
72
+ }
73
+ async balance(input, funding) {
74
+ const available = await this.utxos(input.from);
75
+ const total = available.reduce((sum, utxo) => sum + BigInt(utxo.value), 0n);
76
+ return {
77
+ sufficientAsset: total >= BigInt(input.amountBaseUnits),
78
+ sufficientFee: total >= BigInt(input.amountBaseUnits) + BigInt(funding.budgetBaseUnits) + BigInt(config.bitcoin.changeDustSats)
79
+ };
80
+ }
81
+ async assertAvailable(address) {
82
+ const script = bitcoin.address.toOutputScript(address).toString('hex');
83
+ const pending = list(await swapJson(`${config.destination.url}/address/${address}/txs/mempool`)).map(record);
84
+ if (pending.some(tx => list(tx.vin).some(input => record(record(input).prevout).scriptpubkey === script))) {
85
+ throw new Error('An outgoing Bitcoin transaction is still pending.');
86
+ }
87
+ }
88
+ async checkFunding(quote) {
89
+ const inputs = quote.funding.inputs;
90
+ if (!inputs?.length)
91
+ throw new Error('Bitcoin quote has no selected inputs.');
92
+ const [available, rate] = await Promise.all([this.utxos(quote.from), this.feeRate()]);
93
+ for (const input of inputs) {
94
+ if (!available.some(utxo => utxo.txid === input.txid && utxo.vout === input.vout && utxo.value === input.value)) {
95
+ throw new Error('A selected Bitcoin input is no longer available; obtain a new quote.');
96
+ }
97
+ }
98
+ if (rate > BigInt(quote.funding.rate))
99
+ throw new Error('Bitcoin fee rate increased; obtain a new quote.');
100
+ const total = inputs.reduce((sum, input) => sum + BigInt(input.value), 0n);
101
+ if (total < BigInt(quote.amountBaseUnits) + BigInt(quote.funding.budgetBaseUnits) + BigInt(config.bitcoin.changeDustSats)) {
102
+ throw new Error('Insufficient BTC for the deposit, fee and refund-address change.');
103
+ }
104
+ }
105
+ async nextStep() { return 'deposit'; }
106
+ async sign(quote, plan, kind, account) {
107
+ if (kind !== 'deposit' || quote.routeId !== 'btc-bsc' || plan.router)
108
+ throw new Error('Invalid Bitcoin funding step.');
109
+ const signer = await this.network.privateKeyToAccount(account.privateKey);
110
+ if (signer.address !== quote.from || account.address !== quote.from)
111
+ throw new Error('Swap signer does not match source account.');
112
+ await this.assertAvailable(quote.from);
113
+ await this.checkFunding(quote);
114
+ const inputs = quote.funding.inputs;
115
+ const script = bitcoin.address.toOutputScript(quote.from, bitcoin.networks.bitcoin);
116
+ const psbt = new bitcoin.Psbt({ network: bitcoin.networks.bitcoin });
117
+ psbt.setVersion(2);
118
+ psbt.setLocktime(0);
119
+ let total = 0n;
120
+ for (const input of inputs) {
121
+ const raw = await swapText(`${config.destination.url}/tx/${input.txid}/hex`);
122
+ const parent = bitcoin.Transaction.fromHex(raw.trim());
123
+ const output = parent.outs[input.vout];
124
+ if (parent.getId() !== input.txid || !output || output.value !== input.value || !output.script.equals(script)) {
125
+ throw new Error('Bitcoin funding input does not match the source wallet.');
126
+ }
127
+ if (quote.provider === 'thorchain' && parent.outs.length > config.bitcoin.maxOutputs) {
128
+ throw new Error('THORChain does not accept this Bitcoin parent transaction.');
129
+ }
130
+ psbt.addInput({ hash: input.txid, index: input.vout, nonWitnessUtxo: Buffer.from(raw.trim(), 'hex'), sequence: 0xffffffff });
131
+ total += BigInt(input.value);
132
+ }
133
+ const amount = BigInt(quote.amountBaseUnits);
134
+ const change = total - amount - BigInt(quote.funding.budgetBaseUnits);
135
+ if (amount > BigInt(Number.MAX_SAFE_INTEGER) || change > BigInt(Number.MAX_SAFE_INTEGER) || change < BigInt(config.bitcoin.changeDustSats)) {
136
+ throw new Error('Invalid Bitcoin deposit or change amount.');
137
+ }
138
+ const memo = bitcoinMemoOutputs(quote.provider === 'thorchain' ? textField(plan.memo) : undefined);
139
+ const memoCost = memo.reduce((sum, output) => sum + BigInt(output.value), 0n);
140
+ psbt.addOutput({ address: plan.depositAddress, value: Number(amount) });
141
+ psbt.addOutput({ address: quote.from, value: Number(change) });
142
+ for (const output of memo)
143
+ psbt.addOutput(output);
144
+ signBitcoinTransaction(psbt, account.privateKey, bitcoin.networks.bitcoin);
145
+ const transaction = psbt.extractTransaction();
146
+ const minerFee = BigInt(quote.funding.budgetBaseUnits) - memoCost;
147
+ if (minerFee < BigInt(transaction.virtualSize()) * BigInt(quote.funding.rate)) {
148
+ throw new Error('Bitcoin transaction exceeds the accepted fee budget.');
149
+ }
150
+ return { kind, hash: transaction.getId(), rawTransaction: transaction.toHex(), confirmed: false, broadcastAttempted: false };
151
+ }
152
+ async broadcast(step) {
153
+ const response = await fetch(`${config.destination.url}/tx`, {
154
+ method: 'POST', headers: { 'content-type': 'text/plain' }, body: step.rawTransaction,
155
+ signal: AbortSignal.timeout(config.httpTimeoutMs), redirect: 'error'
156
+ });
157
+ if (!response.ok)
158
+ throw new SwapHttpError(response.status, `Bitcoin broadcast failed (HTTP ${response.status}).`);
159
+ if (transactionHash((await response.text()).trim()) !== step.hash)
160
+ throw new Error('Unexpected Bitcoin broadcast hash.');
161
+ }
162
+ async receipt(hash) {
163
+ try {
164
+ const tx = record(await swapJson(`${config.destination.url}/tx/${transactionHash(hash)}`));
165
+ if (transactionHash(tx.txid) !== transactionHash(hash))
166
+ throw new Error('Bitcoin transaction hash mismatch.');
167
+ const confirmations = await this.confirmations(record(tx.status));
168
+ return { state: confirmations >= config.bitcoinConfirmations ? 'confirmed' : 'pending', confirmations };
169
+ }
170
+ catch (error) {
171
+ if (error instanceof SwapHttpError && error.status === 404)
172
+ return { state: 'not_found', confirmations: 0 };
173
+ throw error;
174
+ }
175
+ }
176
+ async payoutPayment(hash, address) { return new BscPayments().payment(hash, address); }
177
+ async refundPayment(hash, address) { return this.payment(hash, address); }
178
+ }
179
+ //# sourceMappingURL=bitcoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoin.js","sourceRoot":"","sources":["../../swap/bitcoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,eAAe,CAAC;AACzC,OAAO,cAAc,EAAE,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAKxH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC5C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1F,KAAK,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACrH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7H,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IAChC,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE1D,KAAK,CAAC,KAAK,CAAC,OAAe;QAC/B,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,YAAY,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/E,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5G,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACtF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAqB;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;QAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACzH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAe;QAClC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAgB,EAAE,KAAoB;QACjD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,sEAAsE;YACtE,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;YACxD,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;gBAAE,MAAM;QAChI,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACnF,OAAO;YACH,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI;YAC3E,eAAe,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ;SAClF,CAAC;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAgB,EAAE,OAAwB;QACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO;YACH,eAAe,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;YACvD,aAAa,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;SAClI,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,YAAY,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7G,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC;YACxG,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAgB;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC9E,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9G,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC5F,CAAC;QACL,CAAC;QACD,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAC1G,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACxH,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,KAAyB,OAAO,SAAS,CAAC,CAAC,CAAC;IAE1D,KAAK,CAAC,IAAI,CAAC,KAAgB,EAAE,IAAc,EAAE,IAAsB,EAAE,OAAsB;QACvF,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACvH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACnI,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAO,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5G,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7H,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACzI,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;QAClE,IAAI,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IACjI,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAc;QAC1B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,EAAE;YACzD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc;YACpF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,OAAO;SACvE,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,kCAAkC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAClH,IAAI,eAAe,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACtB,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3F,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC9G,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,OAAO,EAAE,KAAK,EAAE,aAAa,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;QAC5G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;YAC5G,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAe,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvG,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,OAAe,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7F"}
@@ -0,0 +1,49 @@
1
+ import type { ChainReceipt, FundingEstimate, ProviderQuote, SwapChain, SwapInput, SwapPlan, SwapQuote, SwapStep } from './types.js';
2
+ import type { WalletAccount } from '../network/types.js';
3
+ export declare class BscPayments {
4
+ protected rpc(method: string, params: unknown[]): Promise<unknown>;
5
+ protected assertChain(): Promise<void>;
6
+ blockNumber(): Promise<bigint>;
7
+ private confirmedReceipt;
8
+ receipt(hash: string): Promise<ChainReceipt>;
9
+ payment(hash: string, address: string): Promise<{
10
+ amount: bigint;
11
+ confirmations: number;
12
+ }>;
13
+ }
14
+ export declare class BitcoinPayments {
15
+ payment(hash: string, address: string): Promise<{
16
+ amount: bigint;
17
+ confirmations: number;
18
+ }>;
19
+ blockNumber(): Promise<bigint>;
20
+ protected confirmations(status: Record<string, unknown>): Promise<number>;
21
+ }
22
+ export declare class BscSwapChain extends BscPayments implements SwapChain {
23
+ availableBalance(address: string): Promise<bigint>;
24
+ checkSource(address: string): Promise<{
25
+ balance: bigint;
26
+ nativeBalance: bigint;
27
+ gasPrice: bigint;
28
+ }>;
29
+ allowance(address: string, router: string): Promise<bigint>;
30
+ assertNonceAvailable(address: string): Promise<void>;
31
+ sign(quote: SwapQuote, plan: SwapPlan, kind: SwapStep['kind'], account: WalletAccount): Promise<SwapStep>;
32
+ broadcast(step: SwapStep): Promise<void>;
33
+ estimate(input: SwapInput, offer: ProviderQuote): Promise<FundingEstimate>;
34
+ balance(input: SwapInput, funding: FundingEstimate): Promise<{
35
+ sufficientAsset: boolean;
36
+ sufficientFee: boolean;
37
+ }>;
38
+ checkFunding(quote: SwapQuote, steps: SwapStep[]): Promise<void>;
39
+ assertAvailable(address: string): Promise<void>;
40
+ nextStep(quote: SwapQuote, plan: SwapPlan, steps: SwapStep[]): Promise<SwapStep['kind']>;
41
+ payoutPayment(hash: string, address: string): Promise<{
42
+ amount: bigint;
43
+ confirmations: number;
44
+ }>;
45
+ refundPayment(hash: string, address: string): Promise<{
46
+ amount: bigint;
47
+ confirmations: number;
48
+ }>;
49
+ }
@@ -0,0 +1,255 @@
1
+ import { Web3 } from 'web3';
2
+ import * as bitcoin from 'bitcoinjs-lib';
3
+ import { swapConfig as config } from './config.js';
4
+ import { evmAddress, integer, list, record, swapJson, swapText, textField, transactionHash } from './http.js';
5
+ const web3 = new Web3();
6
+ const approveAbi = {
7
+ name: 'approve', type: 'function',
8
+ inputs: [{ name: 'spender', type: 'address' }, { name: 'amount', type: 'uint256' }]
9
+ };
10
+ const allowanceAbi = {
11
+ name: 'allowance', type: 'function',
12
+ inputs: [{ name: 'owner', type: 'address' }, { name: 'spender', type: 'address' }]
13
+ };
14
+ const transferAbi = {
15
+ name: 'transfer', type: 'function',
16
+ inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }]
17
+ };
18
+ const depositAbi = {
19
+ name: 'depositWithExpiry', type: 'function',
20
+ inputs: [
21
+ { name: 'vault', type: 'address' }, { name: 'asset', type: 'address' },
22
+ { name: 'amount', type: 'uint256' }, { name: 'memo', type: 'string' },
23
+ { name: 'expiry', type: 'uint256' }
24
+ ]
25
+ };
26
+ function hex(value) {
27
+ if (typeof value !== 'string' || !/^0x[\da-f]+$/i.test(value))
28
+ throw new Error('Invalid RPC number.');
29
+ return BigInt(value);
30
+ }
31
+ export class BscPayments {
32
+ async rpc(method, params) {
33
+ const response = record(await swapJson(config.source.url, { jsonrpc: '2.0', id: 1, method, params }));
34
+ if (response.error || !('result' in response))
35
+ throw new Error(`BSC RPC ${method} failed.`);
36
+ return response.result;
37
+ }
38
+ async assertChain() {
39
+ if (hex(await this.rpc('eth_chainId', [])) !== BigInt(config.source.chainId)) {
40
+ throw new Error('BSC RPC chain ID mismatch.');
41
+ }
42
+ }
43
+ async blockNumber() { return hex(await this.rpc('eth_blockNumber', [])); }
44
+ async confirmedReceipt(hash) {
45
+ await this.assertChain();
46
+ const value = await this.rpc('eth_getTransactionReceipt', [transactionHash(hash, true)]);
47
+ if (value === null)
48
+ return { receipt: null, confirmations: 0 };
49
+ const receipt = record(value);
50
+ if (transactionHash(receipt.transactionHash, true) !== transactionHash(hash, true))
51
+ throw new Error('Receipt hash mismatch.');
52
+ const block = hex(receipt.blockNumber);
53
+ const [tip, canonical] = await Promise.all([
54
+ this.blockNumber(), this.rpc('eth_getBlockByNumber', [`0x${block.toString(16)}`, false])
55
+ ]);
56
+ if (tip < block || record(canonical).hash !== receipt.blockHash)
57
+ return { receipt: null, confirmations: 0 };
58
+ return { receipt, confirmations: Number(tip - block + 1n) };
59
+ }
60
+ async receipt(hash) {
61
+ const { receipt, confirmations } = await this.confirmedReceipt(hash);
62
+ if (!receipt) {
63
+ const transaction = await this.rpc('eth_getTransactionByHash', [transactionHash(hash, true)]);
64
+ if (transaction === null)
65
+ return { state: 'not_found', confirmations: 0 };
66
+ if (transactionHash(record(transaction).hash, true) !== transactionHash(hash, true))
67
+ throw new Error('Pending transaction hash mismatch.');
68
+ return { state: 'pending', confirmations: 0 };
69
+ }
70
+ if (confirmations < config.bscConfirmations)
71
+ return { state: 'pending', confirmations };
72
+ const status = hex(receipt.status);
73
+ if (status !== 0n && status !== 1n)
74
+ throw new Error('Invalid receipt status.');
75
+ return { state: status === 1n ? 'confirmed' : 'reverted', confirmations };
76
+ }
77
+ async payment(hash, address) {
78
+ const { receipt, confirmations } = await this.confirmedReceipt(hash);
79
+ if (!receipt)
80
+ return { amount: 0n, confirmations: 0 };
81
+ if (hex(receipt.status) !== 1n)
82
+ throw new Error('Refund transaction reverted.');
83
+ const transferTopic = web3.utils.keccak256('Transfer(address,address,uint256)');
84
+ const recipient = `0x${evmAddress(address).slice(2).toLowerCase().padStart(64, '0')}`;
85
+ let amount = 0n;
86
+ for (const value of list(receipt.logs)) {
87
+ const log = record(value);
88
+ if (textField(log.address).toLowerCase() !== config.token.toLowerCase())
89
+ continue;
90
+ const topics = list(log.topics);
91
+ if (topics[0] === transferTopic && typeof topics[2] === 'string' && topics[2].toLowerCase() === recipient) {
92
+ amount += hex(log.data);
93
+ }
94
+ }
95
+ return { amount, confirmations };
96
+ }
97
+ }
98
+ export class BitcoinPayments {
99
+ async payment(hash, address) {
100
+ const id = transactionHash(hash);
101
+ const tx = record(await swapJson(`${config.destination.url}/tx/${id}`));
102
+ if (transactionHash(tx.txid) !== id)
103
+ throw new Error('Bitcoin transaction hash mismatch.');
104
+ const script = bitcoin.address.toOutputScript(address, bitcoin.networks.bitcoin).toString('hex');
105
+ let sats = 0n;
106
+ for (const entry of list(tx.vout)) {
107
+ const output = record(entry);
108
+ if (output.scriptpubkey === script)
109
+ sats += BigInt(integer(output.value));
110
+ }
111
+ return { amount: sats, confirmations: await this.confirmations(record(tx.status)) };
112
+ }
113
+ async blockNumber() {
114
+ const value = (await swapText(`${config.destination.url}/blocks/tip/height`)).trim();
115
+ if (!/^\d+$/.test(value))
116
+ throw new Error('Invalid Bitcoin tip height.');
117
+ return BigInt(value);
118
+ }
119
+ async confirmations(status) {
120
+ if (status.confirmed !== true)
121
+ return 0;
122
+ const height = integer(status.block_height);
123
+ const [tip, canonical] = await Promise.all([
124
+ this.blockNumber(), swapText(`${config.destination.url}/block-height/${height}`)
125
+ ]);
126
+ return canonical.trim() === textField(status.block_hash) ? Math.max(0, Number(tip) - height + 1) : 0;
127
+ }
128
+ }
129
+ export class BscSwapChain extends BscPayments {
130
+ async availableBalance(address) {
131
+ return (await this.checkSource(address)).balance;
132
+ }
133
+ async checkSource(address) {
134
+ evmAddress(address);
135
+ await this.assertChain();
136
+ const [balance, nativeBalance, gasPrice, decimals] = await Promise.all([
137
+ this.rpc('eth_call', [{ to: config.token, data: `0x70a08231${address.slice(2).padStart(64, '0')}` }, 'latest']),
138
+ this.rpc('eth_getBalance', [address, 'latest']),
139
+ this.rpc('eth_gasPrice', []),
140
+ this.rpc('eth_call', [{ to: config.token, data: '0x313ce567' }, 'latest'])
141
+ ]);
142
+ if (hex(decimals) !== BigInt(config.decimals))
143
+ throw new Error('Unexpected BSC USDT decimals.');
144
+ if (hex(gasPrice) <= 0n)
145
+ throw new Error('Invalid BSC gas price.');
146
+ return { balance: hex(balance), nativeBalance: hex(nativeBalance), gasPrice: hex(gasPrice) };
147
+ }
148
+ async allowance(address, router) {
149
+ await this.assertChain();
150
+ const data = web3.eth.abi.encodeFunctionCall(allowanceAbi, [evmAddress(address), evmAddress(router)]);
151
+ return hex(await this.rpc('eth_call', [{ to: config.token, data }, 'latest']));
152
+ }
153
+ async assertNonceAvailable(address) {
154
+ const [latest, pending] = await Promise.all([
155
+ this.rpc('eth_getTransactionCount', [address, 'latest']),
156
+ this.rpc('eth_getTransactionCount', [address, 'pending'])
157
+ ]);
158
+ if (hex(latest) !== hex(pending))
159
+ throw new Error('An outgoing BSC transaction is still pending.');
160
+ }
161
+ async sign(quote, plan, kind, account) {
162
+ await this.assertChain();
163
+ if (web3.eth.accounts.privateKeyToAccount(account.privateKey).address.toLowerCase() !== quote.from.toLowerCase()) {
164
+ throw new Error('Swap signer does not match source account.');
165
+ }
166
+ await this.assertNonceAvailable(quote.from);
167
+ let to = config.token;
168
+ let data;
169
+ let limit = config.gas.approval;
170
+ if (kind !== 'deposit') {
171
+ if (quote.provider !== 'thorchain' || plan.router !== config.thorchain.router)
172
+ throw new Error('Invalid approval router.');
173
+ data = web3.eth.abi.encodeFunctionCall(approveAbi, [plan.router, kind === 'approve' ? quote.amountBaseUnits : '0']);
174
+ }
175
+ else if (quote.provider === 'chainflip') {
176
+ data = web3.eth.abi.encodeFunctionCall(transferAbi, [evmAddress(plan.depositAddress), quote.amountBaseUnits]);
177
+ limit = config.gas.transfer;
178
+ }
179
+ else {
180
+ if (plan.router !== config.thorchain.router || !plan.memo || !plan.expirySeconds)
181
+ throw new Error('Invalid THORChain deposit.');
182
+ to = plan.router;
183
+ data = web3.eth.abi.encodeFunctionCall(depositAbi, [
184
+ evmAddress(plan.depositAddress), config.token, quote.amountBaseUnits, plan.memo, String(plan.expirySeconds)
185
+ ]);
186
+ limit = config.gas.deposit;
187
+ }
188
+ const nonce = hex(await this.rpc('eth_getTransactionCount', [quote.from, 'pending']));
189
+ const gasPrice = BigInt(quote.funding.rate);
190
+ const request = { from: quote.from, to, data, value: '0x0', gasPrice: `0x${gasPrice.toString(16)}` };
191
+ const estimate = hex(await this.rpc('eth_estimateGas', [request]));
192
+ if (estimate > BigInt(limit))
193
+ throw new Error('Gas exceeds the accepted budget; obtain a new quote.');
194
+ const signed = await web3.eth.accounts.signTransaction({
195
+ ...request, nonce, gas: limit, gasPrice, chainId: config.source.chainId, networkId: config.source.chainId, type: '0x0'
196
+ }, account.privateKey);
197
+ if (!signed.rawTransaction)
198
+ throw new Error('Could not sign swap transaction.');
199
+ return {
200
+ kind, nonce: nonce.toString(), rawTransaction: signed.rawTransaction,
201
+ hash: transactionHash(signed.transactionHash, true), confirmed: false, broadcastAttempted: false
202
+ };
203
+ }
204
+ async broadcast(step) {
205
+ await this.assertChain();
206
+ const hash = transactionHash(await this.rpc('eth_sendRawTransaction', [step.rawTransaction]), true);
207
+ if (hash !== step.hash)
208
+ throw new Error('RPC returned an unexpected transaction hash.');
209
+ }
210
+ async estimate(input, offer) {
211
+ const source = await this.checkSource(input.from);
212
+ let gasUnits = config.gas.transfer;
213
+ if (offer.provider === 'thorchain') {
214
+ gasUnits = config.gas.deposit;
215
+ const allowance = await this.allowance(input.from, config.thorchain.router);
216
+ if (allowance < BigInt(input.amountBaseUnits))
217
+ gasUnits += config.gas.approval * (allowance > 0n ? 2 : 1);
218
+ }
219
+ const recommended = offer.provider === 'thorchain' ? BigInt(textField(offer.details.gasPrice)) : 0n;
220
+ const rate = source.gasPrice > recommended ? source.gasPrice : recommended;
221
+ return { asset: 'BNB', decimals: 18, price: 'bnb', rate: rate.toString(), units: gasUnits, budgetBaseUnits: (rate * BigInt(gasUnits)).toString() };
222
+ }
223
+ async balance(input, funding) {
224
+ const source = await this.checkSource(input.from);
225
+ return { sufficientAsset: source.balance >= BigInt(input.amountBaseUnits), sufficientFee: source.nativeBalance >= BigInt(funding.budgetBaseUnits) };
226
+ }
227
+ async checkFunding(quote, steps) {
228
+ const source = await this.checkSource(quote.from);
229
+ if (source.balance < BigInt(quote.amountBaseUnits))
230
+ throw new Error('Insufficient USDT on BSC.');
231
+ const consumed = steps.filter(step => step.confirmed).length * config.gas.approval;
232
+ const remaining = BigInt(quote.funding.units - consumed) * BigInt(quote.funding.rate);
233
+ if (source.nativeBalance < remaining)
234
+ throw new Error('Insufficient BNB for the accepted gas budget.');
235
+ if (source.gasPrice > BigInt(quote.funding.rate))
236
+ throw new Error('BSC gas price increased; obtain a new quote.');
237
+ }
238
+ async assertAvailable(address) { await this.assertNonceAvailable(address); }
239
+ async nextStep(quote, plan, steps) {
240
+ let kind = 'deposit';
241
+ if (plan.router) {
242
+ const allowance = await this.allowance(quote.from, plan.router);
243
+ if (allowance < BigInt(quote.amountBaseUnits))
244
+ kind = allowance > 0n ? 'reset_approval' : 'approve';
245
+ }
246
+ const spent = steps.reduce((sum, step) => sum + (step.kind === 'deposit' ? config.gas.deposit : config.gas.approval), 0);
247
+ const next = kind === 'deposit' ? (quote.provider === 'chainflip' ? config.gas.transfer : config.gas.deposit) : config.gas.approval;
248
+ if (spent + next > quote.funding.units)
249
+ throw new Error('Funding requirements exceed the accepted gas budget.');
250
+ return kind;
251
+ }
252
+ async payoutPayment(hash, address) { return new BitcoinPayments().payment(hash, address); }
253
+ async refundPayment(hash, address) { return this.payment(hash, address); }
254
+ }
255
+ //# sourceMappingURL=chain.js.map