@atomiqlabs/chain-starknet 1.0.8 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +13 -9
- package/dist/index.js +13 -9
- package/dist/starknet/StarknetChainType.d.ts +6 -2
- package/dist/starknet/StarknetInitializer.d.ts +3 -2
- package/dist/starknet/StarknetInitializer.js +17 -6
- package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +28 -7
- package/dist/starknet/btcrelay/StarknetBtcRelay.js +75 -20
- package/dist/starknet/{base → chain}/StarknetAction.d.ts +2 -2
- package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -0
- package/dist/starknet/chain/StarknetChainInterface.js +91 -0
- package/dist/starknet/{base → chain}/StarknetModule.d.ts +3 -3
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.d.ts +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetAddresses.js +1 -1
- package/dist/starknet/{base → chain}/modules/StarknetSignatures.d.ts +2 -2
- package/dist/starknet/{base → chain}/modules/StarknetTokens.js +2 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.d.ts +7 -1
- package/dist/starknet/{base → chain}/modules/StarknetTransactions.js +45 -16
- package/dist/starknet/contract/StarknetContractBase.d.ts +5 -5
- package/dist/starknet/contract/StarknetContractBase.js +5 -7
- package/dist/starknet/contract/StarknetContractModule.d.ts +8 -0
- package/dist/starknet/contract/StarknetContractModule.js +11 -0
- package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +15 -4
- package/dist/starknet/contract/modules/StarknetContractEvents.js +26 -6
- package/dist/starknet/events/StarknetChainEvents.d.ts +3 -1
- package/dist/starknet/events/StarknetChainEvents.js +9 -9
- package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +24 -6
- package/dist/starknet/events/StarknetChainEventsBrowser.js +116 -28
- package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -0
- package/dist/starknet/provider/RpcProviderWithRetries.js +32 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -0
- package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +65 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +372 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -0
- package/dist/starknet/spv_swap/StarknetSpvVaultData.js +144 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +24 -0
- package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +61 -0
- package/dist/starknet/swaps/StarknetSwapContract.d.ts +4 -22
- package/dist/starknet/swaps/StarknetSwapContract.js +23 -80
- package/dist/starknet/swaps/StarknetSwapModule.d.ts +6 -5
- package/dist/starknet/swaps/StarknetSwapModule.js +5 -6
- package/dist/starknet/swaps/handlers/IHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +1 -1
- package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +2 -2
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +2 -21
- package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +7 -41
- package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +2 -2
- package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetLpVault.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapClaim.js +8 -8
- package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +1 -1
- package/dist/starknet/swaps/modules/StarknetSwapInit.js +9 -9
- package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +1 -3
- package/dist/starknet/swaps/modules/StarknetSwapRefund.js +8 -11
- package/dist/starknet/wallet/StarknetSigner.js +1 -1
- package/dist/utils/Utils.d.ts +2 -2
- package/dist/utils/Utils.js +3 -1
- package/package.json +2 -2
- package/src/index.ts +15 -9
- package/src/starknet/StarknetChainType.ts +10 -2
- package/src/starknet/StarknetInitializer.ts +23 -7
- package/src/starknet/btcrelay/StarknetBtcRelay.ts +104 -30
- package/src/starknet/{base → chain}/StarknetAction.ts +3 -3
- package/src/starknet/chain/StarknetChainInterface.ts +149 -0
- package/src/starknet/{base → chain}/StarknetModule.ts +3 -3
- package/src/starknet/{base → chain}/modules/StarknetAddresses.ts +1 -1
- package/src/starknet/{base → chain}/modules/StarknetSignatures.ts +2 -2
- package/src/starknet/{base → chain}/modules/StarknetTokens.ts +2 -1
- package/src/starknet/{base → chain}/modules/StarknetTransactions.ts +43 -18
- package/src/starknet/contract/StarknetContractBase.ts +9 -12
- package/src/starknet/contract/StarknetContractModule.ts +16 -0
- package/src/starknet/contract/modules/StarknetContractEvents.ts +33 -7
- package/src/starknet/events/StarknetChainEvents.ts +15 -11
- package/src/starknet/events/StarknetChainEventsBrowser.ts +168 -41
- package/src/starknet/provider/RpcProviderWithRetries.ts +43 -0
- package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -0
- package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +475 -0
- package/src/starknet/spv_swap/StarknetSpvVaultData.ts +194 -0
- package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +68 -0
- package/src/starknet/swaps/StarknetSwapContract.ts +28 -116
- package/src/starknet/swaps/StarknetSwapModule.ts +8 -8
- package/src/starknet/swaps/handlers/IHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +1 -1
- package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +2 -2
- package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +12 -61
- package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +2 -2
- package/src/starknet/swaps/modules/StarknetLpVault.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapClaim.ts +9 -9
- package/src/starknet/swaps/modules/StarknetSwapInit.ts +10 -10
- package/src/starknet/swaps/modules/StarknetSwapRefund.ts +9 -13
- package/src/starknet/wallet/StarknetSigner.ts +1 -1
- package/src/utils/Utils.ts +4 -3
- package/dist/starknet/base/StarknetBase.d.ts +0 -34
- package/dist/starknet/base/StarknetBase.js +0 -29
- package/src/starknet/base/StarknetBase.ts +0 -56
- /package/dist/starknet/{base → chain}/StarknetAction.js +0 -0
- /package/dist/starknet/{base → chain}/StarknetModule.js +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/ERC20Abi.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetAccounts.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetBlocks.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetEvents.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.d.ts +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetFees.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetSignatures.js +0 -0
- /package/dist/starknet/{base → chain}/modules/StarknetTokens.d.ts +0 -0
- /package/src/starknet/{base → chain}/modules/ERC20Abi.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetAccounts.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetBlocks.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetEvents.ts +0 -0
- /package/src/starknet/{base → chain}/modules/StarknetFees.ts +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StarknetSpvWithdrawalData = void 0;
|
|
4
|
+
const base_1 = require("@atomiqlabs/base");
|
|
5
|
+
const buffer_1 = require("buffer");
|
|
6
|
+
const starknet_1 = require("starknet");
|
|
7
|
+
const Utils_1 = require("../../utils/Utils");
|
|
8
|
+
const StarknetSpvVaultContract_1 = require("./StarknetSpvVaultContract");
|
|
9
|
+
class StarknetSpvWithdrawalData extends base_1.SpvWithdrawalTransactionData {
|
|
10
|
+
fromOpReturnData(data) {
|
|
11
|
+
return StarknetSpvVaultContract_1.StarknetSpvVaultContract.fromOpReturnData(data);
|
|
12
|
+
}
|
|
13
|
+
isRecipient(address) {
|
|
14
|
+
return this.getRecipient().toLowerCase() === address.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
getTxHash() {
|
|
17
|
+
return BigInt("0x" + buffer_1.Buffer.from(this.btcTx.txid, "hex").reverse().toString("hex"));
|
|
18
|
+
}
|
|
19
|
+
getFrontingAmount() {
|
|
20
|
+
return [this.rawAmounts[0] + this.getExecutionFee()[0], this.rawAmounts[1]];
|
|
21
|
+
}
|
|
22
|
+
serialize() {
|
|
23
|
+
return {
|
|
24
|
+
type: "STARKNET",
|
|
25
|
+
...super.serialize()
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
serializeToStruct() {
|
|
29
|
+
const callerFee = this.getCallerFee();
|
|
30
|
+
const frontingFee = this.getFrontingFee();
|
|
31
|
+
const executionFee = this.getExecutionFee();
|
|
32
|
+
return {
|
|
33
|
+
recipient: this.recipient,
|
|
34
|
+
amount: starknet_1.cairo.tuple(this.rawAmounts[0], this.rawAmounts[1]),
|
|
35
|
+
caller_fee: starknet_1.cairo.tuple(callerFee[0], callerFee[1]),
|
|
36
|
+
fronting_fee: starknet_1.cairo.tuple(frontingFee[0], frontingFee[1]),
|
|
37
|
+
execution_handler_fee_amount_0: executionFee[0],
|
|
38
|
+
execution_hash: (0, Utils_1.toBigInt)(this.executionHash) ?? 0n,
|
|
39
|
+
execution_expiry: BigInt(this.executionExpiry)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
serializeToFelts() {
|
|
43
|
+
const callerFee = this.getCallerFee();
|
|
44
|
+
const frontingFee = this.getFrontingFee();
|
|
45
|
+
const executionFee = this.getExecutionFee();
|
|
46
|
+
return [
|
|
47
|
+
this.recipient,
|
|
48
|
+
this.rawAmounts[0],
|
|
49
|
+
this.rawAmounts[1],
|
|
50
|
+
callerFee[0],
|
|
51
|
+
callerFee[1],
|
|
52
|
+
frontingFee[0],
|
|
53
|
+
frontingFee[1],
|
|
54
|
+
executionFee[0],
|
|
55
|
+
(0, Utils_1.toBigInt)(this.executionHash) ?? 0n,
|
|
56
|
+
BigInt(this.executionExpiry)
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.StarknetSpvWithdrawalData = StarknetSpvWithdrawalData;
|
|
61
|
+
base_1.SpvWithdrawalTransactionData.deserializers["STARKNET"] = StarknetSpvWithdrawalData;
|
|
@@ -2,11 +2,9 @@ import { ChainSwapType, IntermediaryReputationType, RelaySynchronizer, Signature
|
|
|
2
2
|
import { Buffer } from "buffer";
|
|
3
3
|
import { EscrowManagerAbi } from "./EscrowManagerAbi";
|
|
4
4
|
import { StarknetContractBase } from "../contract/StarknetContractBase";
|
|
5
|
-
import { StarknetTx } from "../
|
|
5
|
+
import { StarknetTx } from "../chain/modules/StarknetTransactions";
|
|
6
6
|
import { StarknetSigner } from "../wallet/StarknetSigner";
|
|
7
|
-
import {
|
|
8
|
-
import { StarknetRetryPolicy } from "../base/StarknetBase";
|
|
9
|
-
import { StarknetFees } from "../base/modules/StarknetFees";
|
|
7
|
+
import { StarknetChainInterface } from "../chain/StarknetChainInterface";
|
|
10
8
|
import { StarknetBtcRelay } from "../btcrelay/StarknetBtcRelay";
|
|
11
9
|
import { StarknetSwapData } from "./StarknetSwapData";
|
|
12
10
|
import { StarknetLpVault } from "./modules/StarknetLpVault";
|
|
@@ -39,7 +37,7 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
39
37
|
};
|
|
40
38
|
readonly timelockRefundHandler: IHandler<any, any>;
|
|
41
39
|
readonly btcRelay: StarknetBtcRelay<any>;
|
|
42
|
-
constructor(
|
|
40
|
+
constructor(chainInterface: StarknetChainInterface, btcRelay: StarknetBtcRelay<any>, contractAddress?: string, handlerAddresses?: {
|
|
43
41
|
refund?: {
|
|
44
42
|
timelock?: string;
|
|
45
43
|
};
|
|
@@ -141,15 +139,13 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
141
139
|
*/
|
|
142
140
|
getCommitedData(paymentHashHex: string): Promise<StarknetSwapData>;
|
|
143
141
|
createSwapData(type: ChainSwapType, offerer: string, claimer: string, token: string, amount: bigint, paymentHash: string, sequence: bigint, expiry: bigint, payIn: boolean, payOut: boolean, securityDeposit: bigint, claimerBounty: bigint, depositToken?: string): Promise<StarknetSwapData>;
|
|
144
|
-
getBalance(signer: string, tokenAddress: string, inContract
|
|
142
|
+
getBalance(signer: string, tokenAddress: string, inContract?: boolean): Promise<bigint>;
|
|
145
143
|
getIntermediaryData(address: string, token: string): Promise<{
|
|
146
144
|
balance: bigint;
|
|
147
145
|
reputation: IntermediaryReputationType;
|
|
148
146
|
}>;
|
|
149
147
|
getIntermediaryReputation(address: string, token: string): Promise<IntermediaryReputationType>;
|
|
150
148
|
getIntermediaryBalance(address: string, token: string): Promise<bigint>;
|
|
151
|
-
isValidAddress(address: string): boolean;
|
|
152
|
-
getNativeCurrencyAddress(): string;
|
|
153
149
|
txsClaimWithSecret(signer: string | StarknetSigner, swapData: StarknetSwapData, secret: string, checkExpiry?: boolean, initAta?: boolean, feeRate?: string, skipAtaCheck?: boolean): Promise<StarknetTx[]>;
|
|
154
150
|
txsClaimWithTxData(signer: string | StarknetSigner, swapData: StarknetSwapData, tx: {
|
|
155
151
|
blockhash: string;
|
|
@@ -171,7 +167,6 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
171
167
|
}, skipChecks?: boolean, feeRate?: string): Promise<StarknetTx[]>;
|
|
172
168
|
txsWithdraw(signer: string, token: string, amount: bigint, feeRate?: string): Promise<StarknetTx[]>;
|
|
173
169
|
txsDeposit(signer: string, token: string, amount: bigint, feeRate?: string): Promise<StarknetTx[]>;
|
|
174
|
-
txsTransfer(signer: string, token: string, amount: bigint, dstAddress: string, feeRate?: string): Promise<StarknetTx[]>;
|
|
175
170
|
claimWithSecret(signer: StarknetSigner, swapData: StarknetSwapData, secret: string, checkExpiry?: boolean, initAta?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
|
|
176
171
|
claimWithTxData(signer: StarknetSigner, swapData: StarknetSwapData, tx: {
|
|
177
172
|
blockhash: string;
|
|
@@ -185,12 +180,6 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
185
180
|
init(signer: StarknetSigner, swapData: StarknetSwapData, signature: SignatureData, skipChecks?: boolean, txOptions?: TransactionConfirmationOptions): Promise<string>;
|
|
186
181
|
withdraw(signer: StarknetSigner, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
|
|
187
182
|
deposit(signer: StarknetSigner, token: string, amount: bigint, txOptions?: TransactionConfirmationOptions): Promise<string>;
|
|
188
|
-
transfer(signer: StarknetSigner, token: string, amount: bigint, dstAddress: string, txOptions?: TransactionConfirmationOptions): Promise<string>;
|
|
189
|
-
sendAndConfirm(signer: StarknetSigner, txs: StarknetTx[], waitForConfirmation?: boolean, abortSignal?: AbortSignal, parallel?: boolean, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string[]>;
|
|
190
|
-
serializeTx(tx: StarknetTx): Promise<string>;
|
|
191
|
-
deserializeTx(txData: string): Promise<StarknetTx>;
|
|
192
|
-
getTxIdStatus(txId: string): Promise<"not_found" | "pending" | "success" | "reverted">;
|
|
193
|
-
getTxStatus(tx: string): Promise<"not_found" | "pending" | "success" | "reverted">;
|
|
194
183
|
getInitPayInFeeRate(offerer?: string, claimer?: string, token?: string, paymentHash?: string): Promise<string>;
|
|
195
184
|
getInitFeeRate(offerer?: string, claimer?: string, token?: string, paymentHash?: string): Promise<string>;
|
|
196
185
|
getRefundFeeRate(swapData: StarknetSwapData): Promise<string>;
|
|
@@ -204,11 +193,4 @@ export declare class StarknetSwapContract extends StarknetContractBase<typeof Es
|
|
|
204
193
|
* Get the estimated solana transaction fee of the refund transaction
|
|
205
194
|
*/
|
|
206
195
|
getRefundFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint>;
|
|
207
|
-
offBeforeTxReplace(callback: (oldTx: string, oldTxId: string, newTx: string, newTxId: string) => Promise<void>): boolean;
|
|
208
|
-
onBeforeTxReplace(callback: (oldTx: string, oldTxId: string, newTx: string, newTxId: string) => Promise<void>): void;
|
|
209
|
-
onBeforeTxSigned(callback: (tx: StarknetTx) => Promise<void>): void;
|
|
210
|
-
offBeforeTxSigned(callback: (tx: StarknetTx) => Promise<void>): boolean;
|
|
211
|
-
isValidToken(tokenIdentifier: string): boolean;
|
|
212
|
-
randomAddress(): string;
|
|
213
|
-
randomSigner(): StarknetSigner;
|
|
214
196
|
}
|
|
@@ -5,13 +5,10 @@ const base_1 = require("@atomiqlabs/base");
|
|
|
5
5
|
const buffer_1 = require("buffer");
|
|
6
6
|
const EscrowManagerAbi_1 = require("./EscrowManagerAbi");
|
|
7
7
|
const StarknetContractBase_1 = require("../contract/StarknetContractBase");
|
|
8
|
-
const StarknetSigner_1 = require("../wallet/StarknetSigner");
|
|
9
8
|
const starknet_1 = require("starknet");
|
|
10
|
-
const StarknetFees_1 = require("../base/modules/StarknetFees");
|
|
11
9
|
const StarknetSwapData_1 = require("./StarknetSwapData");
|
|
12
10
|
const Utils_1 = require("../../utils/Utils");
|
|
13
11
|
const TimelockRefundHandler_1 = require("./handlers/refund/TimelockRefundHandler");
|
|
14
|
-
const StarknetKeypairWallet_1 = require("../wallet/StarknetKeypairWallet");
|
|
15
12
|
const StarknetLpVault_1 = require("./modules/StarknetLpVault");
|
|
16
13
|
const StarknetSwapInit_1 = require("./modules/StarknetSwapInit");
|
|
17
14
|
const StarknetSwapRefund_1 = require("./modules/StarknetSwapRefund");
|
|
@@ -48,8 +45,8 @@ const defaultRefundAddresses = {
|
|
|
48
45
|
}
|
|
49
46
|
};
|
|
50
47
|
class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
51
|
-
constructor(
|
|
52
|
-
super(
|
|
48
|
+
constructor(chainInterface, btcRelay, contractAddress = swapContractAddreses[chainInterface.starknetChainId], handlerAddresses) {
|
|
49
|
+
super(chainInterface, contractAddress, EscrowManagerAbi_1.EscrowManagerAbi);
|
|
53
50
|
////////////////////////
|
|
54
51
|
//// Constants
|
|
55
52
|
this.chainId = "STARKNET";
|
|
@@ -66,16 +63,16 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
66
63
|
this.claimHandlersByAddress = {};
|
|
67
64
|
this.claimHandlersBySwapType = {};
|
|
68
65
|
this.refundHandlersByAddress = {};
|
|
69
|
-
this.Init = new StarknetSwapInit_1.StarknetSwapInit(this);
|
|
70
|
-
this.Refund = new StarknetSwapRefund_1.StarknetSwapRefund(this);
|
|
71
|
-
this.Claim = new StarknetSwapClaim_1.StarknetSwapClaim(this);
|
|
72
|
-
this.LpVault = new StarknetLpVault_1.StarknetLpVault(this);
|
|
66
|
+
this.Init = new StarknetSwapInit_1.StarknetSwapInit(chainInterface, this);
|
|
67
|
+
this.Refund = new StarknetSwapRefund_1.StarknetSwapRefund(chainInterface, this);
|
|
68
|
+
this.Claim = new StarknetSwapClaim_1.StarknetSwapClaim(chainInterface, this);
|
|
69
|
+
this.LpVault = new StarknetLpVault_1.StarknetLpVault(chainInterface, this);
|
|
73
70
|
this.btcRelay = btcRelay;
|
|
74
71
|
handlerAddresses ?? (handlerAddresses = {});
|
|
75
72
|
handlerAddresses.refund ?? (handlerAddresses.refund = {});
|
|
76
|
-
handlerAddresses.refund = { ...defaultRefundAddresses[
|
|
73
|
+
handlerAddresses.refund = { ...defaultRefundAddresses[chainInterface.starknetChainId], ...handlerAddresses.refund };
|
|
77
74
|
handlerAddresses.claim ?? (handlerAddresses.claim = {});
|
|
78
|
-
handlerAddresses.claim = { ...defaultClaimAddresses[
|
|
75
|
+
handlerAddresses.claim = { ...defaultClaimAddresses[chainInterface.starknetChainId], ...handlerAddresses.claim };
|
|
79
76
|
ClaimHandlers_1.claimHandlersList.forEach(handlerCtor => {
|
|
80
77
|
const handler = new handlerCtor(handlerAddresses.claim[handlerCtor.type]);
|
|
81
78
|
this.claimHandlersByAddress[handler.address] = handler;
|
|
@@ -110,10 +107,10 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
110
107
|
return this.Refund.isSignatureValid(swapData, timeout, prefix, signature);
|
|
111
108
|
}
|
|
112
109
|
getDataSignature(signer, data) {
|
|
113
|
-
return this.Signatures.getDataSignature(signer, data);
|
|
110
|
+
return this.Chain.Signatures.getDataSignature(signer, data);
|
|
114
111
|
}
|
|
115
112
|
isValidDataSignature(data, signature, publicKey) {
|
|
116
|
-
return this.Signatures.isValidDataSignature(data, signature, publicKey);
|
|
113
|
+
return this.Chain.Signatures.isValidDataSignature(data, signature, publicKey);
|
|
117
114
|
}
|
|
118
115
|
////////////////////////////////////////////
|
|
119
116
|
//// Swap data utils
|
|
@@ -273,7 +270,7 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
273
270
|
}
|
|
274
271
|
////////////////////////////////////////////
|
|
275
272
|
//// Swap data initializer
|
|
276
|
-
createSwapData(type, offerer, claimer, token, amount, paymentHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken = this.Tokens.getNativeCurrencyAddress()) {
|
|
273
|
+
createSwapData(type, offerer, claimer, token, amount, paymentHash, sequence, expiry, payIn, payOut, securityDeposit, claimerBounty, depositToken = this.Chain.Tokens.getNativeCurrencyAddress()) {
|
|
277
274
|
return Promise.resolve(new StarknetSwapData_1.StarknetSwapData(offerer, claimer, token, this.timelockRefundHandler.address, this.claimHandlersBySwapType?.[type]?.address, payOut, payIn, payIn, //For now track reputation for all payIn swaps
|
|
278
275
|
sequence, "0x" + paymentHash, (0, Utils_1.toHex)(expiry), amount, depositToken, securityDeposit, claimerBounty, type, null));
|
|
279
276
|
}
|
|
@@ -283,7 +280,7 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
283
280
|
if (inContract)
|
|
284
281
|
return await this.getIntermediaryBalance(signer, tokenAddress);
|
|
285
282
|
//TODO: For native token we should discount the cost of deploying an account if it is not deployed yet
|
|
286
|
-
return await this.
|
|
283
|
+
return await this.Chain.getBalance(signer, tokenAddress);
|
|
287
284
|
}
|
|
288
285
|
getIntermediaryData(address, token) {
|
|
289
286
|
return this.LpVault.getIntermediaryData(address, token);
|
|
@@ -294,12 +291,6 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
294
291
|
getIntermediaryBalance(address, token) {
|
|
295
292
|
return this.LpVault.getIntermediaryBalance(address, token);
|
|
296
293
|
}
|
|
297
|
-
isValidAddress(address) {
|
|
298
|
-
return this.Addresses.isValidAddress(address);
|
|
299
|
-
}
|
|
300
|
-
getNativeCurrencyAddress() {
|
|
301
|
-
return this.Tokens.getNativeCurrencyAddress();
|
|
302
|
-
}
|
|
303
294
|
////////////////////////////////////////////
|
|
304
295
|
//// Transaction initializers
|
|
305
296
|
async txsClaimWithSecret(signer, swapData, secret, checkExpiry, initAta, feeRate, skipAtaCheck) {
|
|
@@ -323,14 +314,11 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
323
314
|
txsDeposit(signer, token, amount, feeRate) {
|
|
324
315
|
return this.LpVault.txsDeposit(signer, token, amount, feeRate);
|
|
325
316
|
}
|
|
326
|
-
txsTransfer(signer, token, amount, dstAddress, feeRate) {
|
|
327
|
-
return this.Tokens.txsTransfer(signer, token, amount, dstAddress, feeRate);
|
|
328
|
-
}
|
|
329
317
|
////////////////////////////////////////////
|
|
330
318
|
//// Executors
|
|
331
319
|
async claimWithSecret(signer, swapData, secret, checkExpiry, initAta, txOptions) {
|
|
332
320
|
const result = await this.Claim.txsClaimWithSecret(signer.getAddress(), swapData, secret, checkExpiry, txOptions?.feeRate);
|
|
333
|
-
const [signature] = await this.
|
|
321
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
334
322
|
return signature;
|
|
335
323
|
}
|
|
336
324
|
async claimWithTxData(signer, swapData, tx, requiredConfirmations, vout, commitedHeader, synchronizer, initAta, txOptions) {
|
|
@@ -338,17 +326,17 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
338
326
|
if (txs === null)
|
|
339
327
|
throw new Error("Btc relay not synchronized to required blockheight!");
|
|
340
328
|
//TODO: This doesn't return proper tx signature
|
|
341
|
-
const [signature] = await this.
|
|
329
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
342
330
|
return signature;
|
|
343
331
|
}
|
|
344
332
|
async refund(signer, swapData, check, initAta, txOptions) {
|
|
345
333
|
let result = await this.txsRefund(signer.getAddress(), swapData, check, initAta, txOptions?.feeRate);
|
|
346
|
-
const [signature] = await this.
|
|
334
|
+
const [signature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
347
335
|
return signature;
|
|
348
336
|
}
|
|
349
337
|
async refundWithAuthorization(signer, swapData, signature, check, initAta, txOptions) {
|
|
350
338
|
let result = await this.txsRefundWithAuthorization(signer.getAddress(), swapData, signature, check, initAta, txOptions?.feeRate);
|
|
351
|
-
const [txSignature] = await this.
|
|
339
|
+
const [txSignature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
352
340
|
return txSignature;
|
|
353
341
|
}
|
|
354
342
|
async init(signer, swapData, signature, skipChecks, txOptions) {
|
|
@@ -361,54 +349,32 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
361
349
|
throw new Error("Invalid signer provided!");
|
|
362
350
|
}
|
|
363
351
|
let result = await this.txsInit(swapData, signature, skipChecks, txOptions?.feeRate);
|
|
364
|
-
const [txSignature] = await this.
|
|
352
|
+
const [txSignature] = await this.Chain.sendAndConfirm(signer, result, txOptions?.waitForConfirmation, txOptions?.abortSignal);
|
|
365
353
|
return txSignature;
|
|
366
354
|
}
|
|
367
355
|
async withdraw(signer, token, amount, txOptions) {
|
|
368
356
|
const txs = await this.LpVault.txsWithdraw(signer.getAddress(), token, amount, txOptions?.feeRate);
|
|
369
|
-
const [txId] = await this.
|
|
357
|
+
const [txId] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
370
358
|
return txId;
|
|
371
359
|
}
|
|
372
360
|
async deposit(signer, token, amount, txOptions) {
|
|
373
361
|
const txs = await this.LpVault.txsDeposit(signer.getAddress(), token, amount, txOptions?.feeRate);
|
|
374
|
-
const [txId] = await this.
|
|
375
|
-
return txId;
|
|
376
|
-
}
|
|
377
|
-
async transfer(signer, token, amount, dstAddress, txOptions) {
|
|
378
|
-
const txs = await this.Tokens.txsTransfer(signer.getAddress(), token, amount, dstAddress, txOptions?.feeRate);
|
|
379
|
-
const [txId] = await this.Transactions.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
362
|
+
const [txId] = await this.Chain.sendAndConfirm(signer, txs, txOptions?.waitForConfirmation, txOptions?.abortSignal, false);
|
|
380
363
|
return txId;
|
|
381
364
|
}
|
|
382
365
|
////////////////////////////////////////////
|
|
383
|
-
//// Transactions
|
|
384
|
-
sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {
|
|
385
|
-
return this.Transactions.sendAndConfirm(signer, txs, waitForConfirmation, abortSignal, parallel, onBeforePublish);
|
|
386
|
-
}
|
|
387
|
-
serializeTx(tx) {
|
|
388
|
-
return this.Transactions.serializeTx(tx);
|
|
389
|
-
}
|
|
390
|
-
deserializeTx(txData) {
|
|
391
|
-
return this.Transactions.deserializeTx(txData);
|
|
392
|
-
}
|
|
393
|
-
getTxIdStatus(txId) {
|
|
394
|
-
return this.Transactions.getTxIdStatus(txId);
|
|
395
|
-
}
|
|
396
|
-
getTxStatus(tx) {
|
|
397
|
-
return this.Transactions.getTxStatus(tx);
|
|
398
|
-
}
|
|
399
|
-
////////////////////////////////////////////
|
|
400
366
|
//// Fees
|
|
401
367
|
getInitPayInFeeRate(offerer, claimer, token, paymentHash) {
|
|
402
|
-
return this.Fees.getFeeRate();
|
|
368
|
+
return this.Chain.Fees.getFeeRate();
|
|
403
369
|
}
|
|
404
370
|
getInitFeeRate(offerer, claimer, token, paymentHash) {
|
|
405
|
-
return this.Fees.getFeeRate();
|
|
371
|
+
return this.Chain.Fees.getFeeRate();
|
|
406
372
|
}
|
|
407
373
|
getRefundFeeRate(swapData) {
|
|
408
|
-
return this.Fees.getFeeRate();
|
|
374
|
+
return this.Chain.Fees.getFeeRate();
|
|
409
375
|
}
|
|
410
376
|
getClaimFeeRate(signer, swapData) {
|
|
411
|
-
return this.Fees.getFeeRate();
|
|
377
|
+
return this.Chain.Fees.getFeeRate();
|
|
412
378
|
}
|
|
413
379
|
getClaimFee(signer, swapData, feeRate) {
|
|
414
380
|
return this.Claim.getClaimFee(swapData, feeRate);
|
|
@@ -425,28 +391,5 @@ class StarknetSwapContract extends StarknetContractBase_1.StarknetContractBase {
|
|
|
425
391
|
getRefundFee(swapData, feeRate) {
|
|
426
392
|
return this.Refund.getRefundFee(swapData, feeRate);
|
|
427
393
|
}
|
|
428
|
-
///////////////////////////////////
|
|
429
|
-
//// Callbacks & handlers
|
|
430
|
-
offBeforeTxReplace(callback) {
|
|
431
|
-
return true;
|
|
432
|
-
}
|
|
433
|
-
onBeforeTxReplace(callback) { }
|
|
434
|
-
onBeforeTxSigned(callback) {
|
|
435
|
-
this.Transactions.onBeforeTxSigned(callback);
|
|
436
|
-
}
|
|
437
|
-
offBeforeTxSigned(callback) {
|
|
438
|
-
return this.Transactions.offBeforeTxSigned(callback);
|
|
439
|
-
}
|
|
440
|
-
isValidToken(tokenIdentifier) {
|
|
441
|
-
return this.Tokens.isValidToken(tokenIdentifier);
|
|
442
|
-
}
|
|
443
|
-
randomAddress() {
|
|
444
|
-
return starknet_1.stark.randomAddress();
|
|
445
|
-
}
|
|
446
|
-
randomSigner() {
|
|
447
|
-
const privateKey = "0x" + buffer_1.Buffer.from(starknet_1.ec.starkCurve.utils.randomPrivateKey()).toString("hex");
|
|
448
|
-
const wallet = new StarknetKeypairWallet_1.StarknetKeypairWallet(this.provider, privateKey);
|
|
449
|
-
return new StarknetSigner_1.StarknetSigner(wallet);
|
|
450
|
-
}
|
|
451
394
|
}
|
|
452
395
|
exports.StarknetSwapContract = StarknetSwapContract;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { StarknetModule } from "../base/StarknetModule";
|
|
2
1
|
import { StarknetSwapContract } from "./StarknetSwapContract";
|
|
3
2
|
import { TypedContractV2 } from "starknet";
|
|
4
3
|
import { EscrowManagerAbi } from "./EscrowManagerAbi";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { StarknetChainInterface } from "../chain/StarknetChainInterface";
|
|
5
|
+
import { StarknetContractModule } from "../contract/StarknetContractModule";
|
|
6
|
+
export declare class StarknetSwapModule extends StarknetContractModule<typeof EscrowManagerAbi> {
|
|
7
|
+
readonly contract: StarknetSwapContract;
|
|
8
|
+
readonly swapContract: TypedContractV2<typeof EscrowManagerAbi>;
|
|
9
|
+
constructor(chainInterface: StarknetChainInterface, contract: StarknetSwapContract);
|
|
9
10
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StarknetSwapModule = void 0;
|
|
4
|
-
const
|
|
5
|
-
class StarknetSwapModule extends
|
|
6
|
-
constructor(
|
|
7
|
-
super(
|
|
8
|
-
this.
|
|
9
|
-
this.contract = root.contract;
|
|
4
|
+
const StarknetContractModule_1 = require("../contract/StarknetContractModule");
|
|
5
|
+
class StarknetSwapModule extends StarknetContractModule_1.StarknetContractModule {
|
|
6
|
+
constructor(chainInterface, contract) {
|
|
7
|
+
super(chainInterface, contract);
|
|
8
|
+
this.swapContract = contract.contract;
|
|
10
9
|
}
|
|
11
10
|
}
|
|
12
11
|
exports.StarknetSwapModule = StarknetSwapModule;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../StarknetSwapData";
|
|
2
2
|
import { BigNumberish } from "starknet";
|
|
3
|
-
import { StarknetGas } from "../../
|
|
4
|
-
import { StarknetTx } from "../../
|
|
3
|
+
import { StarknetGas } from "../../chain/StarknetAction";
|
|
4
|
+
import { StarknetTx } from "../../chain/modules/StarknetTransactions";
|
|
5
5
|
export interface IHandler<TCommitmentData, TWitnessData> {
|
|
6
6
|
readonly address: string;
|
|
7
7
|
getCommitment(data: TCommitmentData): BigNumberish;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
2
|
-
import { StarknetGas } from "../../../
|
|
2
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
3
3
|
import { IHandler } from "../IHandler";
|
|
4
4
|
import { BigNumberish } from "starknet";
|
|
5
5
|
export interface IClaimHandler<C, W> extends IHandler<C, W> {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../StarknetSwapData";
|
|
2
2
|
import { BigNumberish } from "starknet";
|
|
3
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
4
|
-
import { StarknetGas } from "../../../
|
|
4
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
5
5
|
import { Buffer } from "buffer";
|
|
6
|
-
import { StarknetTx } from "../../../
|
|
6
|
+
import { StarknetTx } from "../../../chain/modules/StarknetTransactions";
|
|
7
7
|
import { IClaimHandler } from "./ClaimHandlers";
|
|
8
8
|
export declare class HashlockClaimHandler implements IClaimHandler<Buffer, string> {
|
|
9
9
|
readonly address: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
-
import { StarknetGas } from "../../../../
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
3
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
4
4
|
import { BigNumberish } from "starknet";
|
|
5
|
-
import { StarknetTx } from "../../../../
|
|
5
|
+
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import { BitcoinCommitmentData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
7
7
|
import { BitcoinOutputWitnessData } from "./BitcoinOutputClaimHandler";
|
|
8
8
|
import { Buffer } from "buffer";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
-
import { StarknetGas } from "../../../../
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
3
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
4
4
|
import { BigNumberish } from "starknet";
|
|
5
|
-
import { StarknetTx } from "../../../../
|
|
5
|
+
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import { BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
7
7
|
import { Buffer } from "buffer";
|
|
8
8
|
export type BitcoinOutputCommitmentData = {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
2
|
-
import { StarknetGas } from "../../../../
|
|
2
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
3
3
|
import { ChainSwapType } from "@atomiqlabs/base";
|
|
4
4
|
import { BigNumberish } from "starknet";
|
|
5
|
-
import { StarknetTx } from "../../../../
|
|
5
|
+
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
6
6
|
import { BitcoinCommitmentData, BitcoinWitnessData, IBitcoinClaimHandler } from "./IBitcoinClaimHandler";
|
|
7
7
|
export type BitcoinTxIdCommitmentData = {
|
|
8
8
|
txId: string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IClaimHandler } from "../ClaimHandlers";
|
|
2
2
|
import { StarknetSwapData } from "../../../StarknetSwapData";
|
|
3
|
-
import { StarknetGas } from "../../../../
|
|
3
|
+
import { StarknetGas } from "../../../../chain/StarknetAction";
|
|
4
4
|
import { ChainSwapType, RelaySynchronizer } from "@atomiqlabs/base";
|
|
5
5
|
import { BigNumberish } from "starknet";
|
|
6
6
|
import { StarknetBtcStoredHeader } from "../../../../btcrelay/headers/StarknetBtcStoredHeader";
|
|
7
|
-
import { StarknetTx } from "../../../../
|
|
7
|
+
import { StarknetTx } from "../../../../chain/modules/StarknetTransactions";
|
|
8
8
|
import { StarknetBtcRelay } from "../../../../btcrelay/StarknetBtcRelay";
|
|
9
9
|
export type BitcoinCommitmentData = {
|
|
10
10
|
btcRelay: StarknetBtcRelay<any>;
|
|
@@ -26,25 +26,6 @@ export type BitcoinWitnessData = {
|
|
|
26
26
|
export declare abstract class IBitcoinClaimHandler<C, W extends BitcoinWitnessData> implements IClaimHandler<C & BitcoinCommitmentData, W> {
|
|
27
27
|
readonly address: string;
|
|
28
28
|
constructor(address: string);
|
|
29
|
-
/**
|
|
30
|
-
* Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
31
|
-
* requiredConfirmations
|
|
32
|
-
* If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
|
|
33
|
-
* current chain tip & adds them to the txs array
|
|
34
|
-
*
|
|
35
|
-
* @param signer
|
|
36
|
-
* @param btcRelay
|
|
37
|
-
* @param txBlockheight transaction blockheight
|
|
38
|
-
* @param requiredConfirmations required confirmation for the swap to be claimable with that TX
|
|
39
|
-
* @param blockhash blockhash of the block which includes the transaction
|
|
40
|
-
* @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
41
|
-
* txns are added here
|
|
42
|
-
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
43
|
-
* to the required blockheight
|
|
44
|
-
* @param feeRate Fee rate to use for synchronization transactions
|
|
45
|
-
* @private
|
|
46
|
-
*/
|
|
47
|
-
protected getCommitedHeaderAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, txBlockheight: number, requiredConfirmations: number, blockhash: string, txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<StarknetBtcStoredHeader>;
|
|
48
29
|
static readonly address = "";
|
|
49
30
|
static readonly type: ChainSwapType;
|
|
50
31
|
static readonly gas: StarknetGas;
|
|
@@ -3,49 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.IBitcoinClaimHandler = void 0;
|
|
4
4
|
const base_1 = require("@atomiqlabs/base");
|
|
5
5
|
const starknet_1 = require("starknet");
|
|
6
|
+
const StarknetBtcRelay_1 = require("../../../../btcrelay/StarknetBtcRelay");
|
|
6
7
|
const Utils_1 = require("../../../../../utils/Utils");
|
|
7
8
|
const logger = (0, Utils_1.getLogger)("IBitcoinClaimHandler: ");
|
|
8
9
|
class IBitcoinClaimHandler {
|
|
9
10
|
constructor(address) {
|
|
10
11
|
this.address = address;
|
|
11
12
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
|
|
14
|
-
* requiredConfirmations
|
|
15
|
-
* If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
|
|
16
|
-
* current chain tip & adds them to the txs array
|
|
17
|
-
*
|
|
18
|
-
* @param signer
|
|
19
|
-
* @param btcRelay
|
|
20
|
-
* @param txBlockheight transaction blockheight
|
|
21
|
-
* @param requiredConfirmations required confirmation for the swap to be claimable with that TX
|
|
22
|
-
* @param blockhash blockhash of the block which includes the transaction
|
|
23
|
-
* @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
|
|
24
|
-
* txns are added here
|
|
25
|
-
* @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
|
|
26
|
-
* to the required blockheight
|
|
27
|
-
* @param feeRate Fee rate to use for synchronization transactions
|
|
28
|
-
* @private
|
|
29
|
-
*/
|
|
30
|
-
async getCommitedHeaderAndSynchronize(signer, btcRelay, txBlockheight, requiredConfirmations, blockhash, txs, synchronizer, feeRate) {
|
|
31
|
-
const requiredBlockheight = txBlockheight + requiredConfirmations - 1;
|
|
32
|
-
const result = await (0, Utils_1.tryWithRetries)(() => btcRelay.retrieveLogAndBlockheight({
|
|
33
|
-
blockhash: blockhash
|
|
34
|
-
}, requiredBlockheight));
|
|
35
|
-
if (result != null)
|
|
36
|
-
return result.header;
|
|
37
|
-
//Need to synchronize
|
|
38
|
-
if (synchronizer == null)
|
|
39
|
-
return null;
|
|
40
|
-
//TODO: We don't have to synchronize to tip, only to our required blockheight
|
|
41
|
-
const resp = await synchronizer.syncToLatestTxs(signer.toString(), feeRate);
|
|
42
|
-
logger.debug("getCommitedHeaderAndSynchronize(): BTC Relay not synchronized to required blockheight, " +
|
|
43
|
-
"synchronizing ourselves in " + resp.txs.length + " txs");
|
|
44
|
-
logger.debug("getCommitedHeaderAndSynchronize(): BTC Relay computed header map: ", resp.computedHeaderMap);
|
|
45
|
-
resp.txs.forEach(tx => txs.push(tx));
|
|
46
|
-
//Retrieve computed header
|
|
47
|
-
return resp.computedHeaderMap[txBlockheight];
|
|
48
|
-
}
|
|
49
13
|
serializeCommitment(data) {
|
|
50
14
|
return [
|
|
51
15
|
data.confirmations,
|
|
@@ -67,10 +31,12 @@ class IBitcoinClaimHandler {
|
|
|
67
31
|
const merkleProof = await btcRelay.bitcoinRpc.getMerkleProof(tx.txid, tx.blockhash);
|
|
68
32
|
logger.debug("getWitness(): merkle proof computed: ", merkleProof);
|
|
69
33
|
const txs = [];
|
|
70
|
-
if (commitedHeader == null)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
34
|
+
if (commitedHeader == null) {
|
|
35
|
+
const headers = await StarknetBtcRelay_1.StarknetBtcRelay.getCommitedHeadersAndSynchronize(signer, btcRelay, [{ blockheight: tx.height, requiredConfirmations, blockhash: tx.blockhash }], txs, synchronizer, feeRate);
|
|
36
|
+
if (headers == null)
|
|
37
|
+
throw new Error("Cannot fetch committed header!");
|
|
38
|
+
commitedHeader = headers[tx.blockhash];
|
|
39
|
+
}
|
|
74
40
|
serializedData.push(...commitedHeader.serialize());
|
|
75
41
|
serializedData.push(merkleProof.merkle.length, ...merkleProof.merkle.map(Utils_1.bufferToU32Array).flat());
|
|
76
42
|
serializedData.push(merkleProof.pos);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { StarknetTx } from "../../../
|
|
1
|
+
import { StarknetTx } from "../../../chain/modules/StarknetTransactions";
|
|
2
2
|
import { StarknetSwapData } from "../../StarknetSwapData";
|
|
3
3
|
import { BigNumberish } from "starknet";
|
|
4
4
|
import { IHandler } from "../IHandler";
|
|
5
|
-
import { StarknetGas } from "../../../
|
|
5
|
+
import { StarknetGas } from "../../../chain/StarknetAction";
|
|
6
6
|
export declare class TimelockRefundHandler implements IHandler<bigint, never> {
|
|
7
7
|
readonly address: string;
|
|
8
8
|
static readonly gas: StarknetGas;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IntermediaryReputationType } from "@atomiqlabs/base";
|
|
2
2
|
import { StarknetSwapModule } from "../StarknetSwapModule";
|
|
3
|
-
import { StarknetTx } from "../../
|
|
3
|
+
import { StarknetTx } from "../../chain/modules/StarknetTransactions";
|
|
4
4
|
export declare class StarknetLpVault extends StarknetSwapModule {
|
|
5
5
|
private static readonly GasCosts;
|
|
6
6
|
/**
|