@atomiqlabs/chain-starknet 4.0.0-dev.3 → 4.0.0-dev.31

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 (154) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +39 -38
  3. package/dist/index.js +55 -54
  4. package/dist/starknet/StarknetChainType.d.ts +13 -13
  5. package/dist/starknet/StarknetChainType.js +2 -2
  6. package/dist/starknet/StarknetInitializer.d.ts +28 -27
  7. package/dist/starknet/StarknetInitializer.js +69 -69
  8. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  9. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +186 -186
  11. package/dist/starknet/btcrelay/StarknetBtcRelay.js +379 -379
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +31 -31
  13. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -74
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +51 -51
  15. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -113
  16. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  17. package/dist/starknet/chain/StarknetAction.js +73 -73
  18. package/dist/starknet/chain/StarknetChainInterface.d.ts +54 -52
  19. package/dist/starknet/chain/StarknetChainInterface.js +97 -91
  20. package/dist/starknet/chain/StarknetModule.d.ts +9 -14
  21. package/dist/starknet/chain/StarknetModule.js +13 -13
  22. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  23. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  24. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  25. package/dist/starknet/chain/modules/StarknetAccounts.js +24 -24
  26. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +9 -9
  27. package/dist/starknet/chain/modules/StarknetAddresses.js +26 -26
  28. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +20 -20
  29. package/dist/starknet/chain/modules/StarknetBlocks.js +64 -64
  30. package/dist/starknet/chain/modules/StarknetEvents.d.ts +44 -44
  31. package/dist/starknet/chain/modules/StarknetEvents.js +88 -88
  32. package/dist/starknet/chain/modules/StarknetFees.d.ts +82 -77
  33. package/dist/starknet/chain/modules/StarknetFees.js +121 -114
  34. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  35. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  36. package/dist/starknet/chain/modules/StarknetTokens.d.ts +69 -69
  37. package/dist/starknet/chain/modules/StarknetTokens.js +102 -98
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +111 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +381 -255
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +20 -16
  42. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  43. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  44. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +51 -51
  45. package/dist/starknet/contract/modules/StarknetContractEvents.js +97 -97
  46. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  47. package/dist/starknet/events/StarknetChainEvents.js +52 -52
  48. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +84 -90
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +307 -292
  50. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +41 -21
  51. package/dist/starknet/provider/RpcProviderWithRetries.js +70 -32
  52. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  54. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +89 -66
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +477 -382
  56. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -145
  58. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -25
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -72
  60. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -434
  61. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -587
  62. package/dist/starknet/swaps/StarknetSwapContract.d.ts +197 -190
  63. package/dist/starknet/swaps/StarknetSwapContract.js +440 -409
  64. package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -67
  65. package/dist/starknet/swaps/StarknetSwapData.js +325 -290
  66. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  67. package/dist/starknet/swaps/StarknetSwapModule.js +11 -11
  68. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  69. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  70. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  72. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  74. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  80. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +45 -45
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +52 -52
  82. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  84. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +69 -69
  85. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  86. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -53
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -100
  88. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -86
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -224
  90. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +62 -62
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +128 -128
  92. package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +5 -0
  93. package/dist/starknet/wallet/StarknetBrowserSigner.js +11 -0
  94. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
  95. package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -30
  96. package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +33 -0
  97. package/dist/starknet/wallet/StarknetPersistentSigner.js +244 -0
  98. package/dist/starknet/wallet/StarknetSigner.d.ts +18 -12
  99. package/dist/starknet/wallet/StarknetSigner.js +69 -46
  100. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +7 -0
  101. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +35 -0
  102. package/dist/utils/Utils.d.ts +39 -37
  103. package/dist/utils/Utils.js +264 -261
  104. package/package.json +45 -37
  105. package/src/index.ts +48 -47
  106. package/src/starknet/StarknetChainType.ts +28 -28
  107. package/src/starknet/StarknetInitializer.ts +110 -108
  108. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
  109. package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
  110. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
  111. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
  112. package/src/starknet/chain/StarknetAction.ts +85 -85
  113. package/src/starknet/chain/StarknetChainInterface.ts +165 -149
  114. package/src/starknet/chain/StarknetModule.ts +19 -19
  115. package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
  116. package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
  117. package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
  118. package/src/starknet/chain/modules/StarknetBlocks.ts +75 -74
  119. package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
  120. package/src/starknet/chain/modules/StarknetFees.ts +162 -154
  121. package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
  122. package/src/starknet/chain/modules/StarknetTokens.ts +120 -116
  123. package/src/starknet/chain/modules/StarknetTransactions.ts +424 -277
  124. package/src/starknet/contract/StarknetContractBase.ts +30 -26
  125. package/src/starknet/contract/StarknetContractModule.ts +16 -16
  126. package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
  127. package/src/starknet/events/StarknetChainEvents.ts +67 -67
  128. package/src/starknet/events/StarknetChainEventsBrowser.ts +420 -410
  129. package/src/starknet/provider/RpcProviderWithRetries.ts +83 -43
  130. package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
  131. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +591 -483
  132. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
  133. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
  134. package/src/starknet/swaps/EscrowManagerAbi.ts +582 -586
  135. package/src/starknet/swaps/StarknetSwapContract.ts +668 -628
  136. package/src/starknet/swaps/StarknetSwapData.ts +455 -403
  137. package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
  138. package/src/starknet/swaps/handlers/IHandler.ts +20 -20
  139. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
  140. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
  141. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
  142. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
  143. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
  144. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
  145. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
  146. package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
  147. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
  148. package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -286
  149. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  150. package/src/starknet/wallet/StarknetBrowserSigner.ts +12 -0
  151. package/src/starknet/wallet/StarknetPersistentSigner.ts +311 -0
  152. package/src/starknet/wallet/StarknetSigner.ts +84 -55
  153. package/src/starknet/wallet/{StarknetKeypairWallet.ts → accounts/StarknetKeypairWallet.ts} +44 -39
  154. package/src/utils/Utils.ts +262 -252
@@ -1,142 +1,142 @@
1
- import {ChainSwapType, RelaySynchronizer, SwapDataVerificationError} from "@atomiqlabs/base";
2
- import {toHex} from "../../../utils/Utils";
3
- import {StarknetSwapModule} from "../StarknetSwapModule";
4
- import {StarknetSwapData} from "../StarknetSwapData";
5
- import {StarknetAction} from "../../chain/StarknetAction";
6
- import {BigNumberish} from "starknet";
7
- import {IClaimHandler} from "../handlers/claim/ClaimHandlers";
8
- import {StarknetTx} from "../../chain/modules/StarknetTransactions";
9
- import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
10
- import {StarknetBtcStoredHeader} from "../../btcrelay/headers/StarknetBtcStoredHeader";
11
- import {BitcoinOutputWitnessData} from "../handlers/claim/btc/BitcoinOutputClaimHandler";
12
- import {BitcoinWitnessData} from "../handlers/claim/btc/IBitcoinClaimHandler";
13
- import {Buffer} from "buffer";
14
-
15
- export class StarknetSwapClaim extends StarknetSwapModule {
16
-
17
- private static readonly GasCosts = {
18
- CLAIM: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
19
- CLAIM_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
20
- };
21
-
22
- /**
23
- * Claim action which uses the provided witness for claiming the swap
24
- *
25
- * @param signer
26
- * @param swapData
27
- * @param witness
28
- * @param claimHandlerGas
29
- * @constructor
30
- * @private
31
- */
32
- private Claim(
33
- signer: string,
34
- swapData: StarknetSwapData,
35
- witness: BigNumberish[],
36
- claimHandlerGas?: StarknetGas
37
- ): StarknetAction {
38
- return new StarknetAction(signer, this.root,
39
- this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness),
40
- starknetGasAdd(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
41
- );
42
- }
43
-
44
- /**
45
- * Creates transactions claiming the swap using a secret (for HTLC swaps)
46
- *
47
- * @param signer
48
- * @param swapData swap to claim
49
- * @param secret hex encoded secret pre-image to the HTLC hash
50
- * @param checkExpiry whether to check if the swap is already expired (trying to claim an expired swap with a secret
51
- * is dangerous because we might end up revealing the secret to the counterparty without being able to claim the swap)
52
- * @param feeRate fee rate to use for the transaction
53
- */
54
- async txsClaimWithSecret(
55
- signer: string,
56
- swapData: StarknetSwapData,
57
- secret: string,
58
- checkExpiry?: boolean,
59
- feeRate?: string
60
- ): Promise<StarknetTx[]> {
61
- //We need to be sure that this transaction confirms in time, otherwise we reveal the secret to the counterparty
62
- // and won't claim the funds
63
- if(checkExpiry && await this.contract.isExpired(swapData.claimer.toString(), swapData)) {
64
- throw new SwapDataVerificationError("Not enough time to reliably pay the invoice");
65
- }
66
-
67
- const claimHandler: IClaimHandler<Buffer, string> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
68
- if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
69
- if(claimHandler.getType()!==ChainSwapType.HTLC) throw new SwapDataVerificationError("Invalid claim handler!");
70
-
71
- feeRate ??= await this.root.Fees.getFeeRate();
72
-
73
- const {initialTxns, witness} = await claimHandler.getWitness(signer, swapData, secret, feeRate);
74
- const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));
75
- await action.addToTxs(initialTxns, feeRate);
76
-
77
- this.logger.debug("txsClaimWithSecret(): creating claim transaction, swap: "+swapData.getClaimHash()+" witness: ", witness.map(toHex));
78
-
79
- return initialTxns;
80
- }
81
-
82
- /**
83
- * Creates transaction claiming the swap using a confirmed transaction data (for BTC on-chain swaps)
84
- *
85
- * @param signer
86
- * @param swapData swap to claim
87
- * @param tx bitcoin transaction that satisfies the swap condition
88
- * @param requiredConfirmations
89
- * @param vout vout of the bitcoin transaction that satisfies the swap condition
90
- * @param commitedHeader commited header data from btc relay (fetched internally if null)
91
- * @param synchronizer optional synchronizer to use in case we need to sync up the btc relay ourselves
92
- * @param feeRate fee rate to be used for the transactions
93
- */
94
- async txsClaimWithTxData(
95
- signer: string,
96
- swapData: StarknetSwapData,
97
- tx: { blockhash: string, confirmations: number, txid: string, hex: string, height: number },
98
- requiredConfirmations: number,
99
- vout: number,
100
- commitedHeader?: StarknetBtcStoredHeader,
101
- synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>,
102
- feeRate?: string
103
- ): Promise<StarknetTx[] | null> {
104
- const claimHandler: IClaimHandler<any, BitcoinOutputWitnessData | BitcoinWitnessData> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
105
- if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
106
- if(
107
- claimHandler.getType()!==ChainSwapType.CHAIN_NONCED &&
108
- claimHandler.getType()!==ChainSwapType.CHAIN_TXID &&
109
- claimHandler.getType()!==ChainSwapType.CHAIN
110
- ) throw new SwapDataVerificationError("Invalid claim handler!");
111
-
112
- feeRate ??= await this.root.Fees.getFeeRate();
113
-
114
- const {initialTxns, witness} = await claimHandler.getWitness(signer, swapData, {
115
- tx,
116
- vout,
117
- requiredConfirmations,
118
- commitedHeader,
119
- btcRelay: this.contract.btcRelay,
120
- synchronizer,
121
- }, feeRate);
122
- const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));
123
- await action.addToTxs(initialTxns, feeRate);
124
-
125
- return initialTxns;
126
- }
127
-
128
- /**
129
- * Get the estimated starknet transaction fee of the claim transaction
130
- */
131
- public async getClaimFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
132
- feeRate ??= await this.root.Fees.getFeeRate();
133
-
134
- let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
135
-
136
- const claimHandler: IClaimHandler<any, any> = this.contract.claimHandlersByAddress[swapData.claimHandler.toLowerCase()];
137
- if(claimHandler!=null) gasRequired = starknetGasAdd(gasRequired, claimHandler.getGas(swapData));
138
-
139
- return StarknetFees.getGasFee(gasRequired, feeRate);
140
- }
141
-
1
+ import {ChainSwapType, RelaySynchronizer, SwapDataVerificationError} from "@atomiqlabs/base";
2
+ import {toHex} from "../../../utils/Utils";
3
+ import {StarknetSwapModule} from "../StarknetSwapModule";
4
+ import {StarknetSwapData} from "../StarknetSwapData";
5
+ import {StarknetAction} from "../../chain/StarknetAction";
6
+ import {BigNumberish} from "starknet";
7
+ import {IClaimHandler} from "../handlers/claim/ClaimHandlers";
8
+ import {StarknetTx} from "../../chain/modules/StarknetTransactions";
9
+ import {StarknetFees, StarknetGas, starknetGasAdd} from "../../chain/modules/StarknetFees";
10
+ import {StarknetBtcStoredHeader} from "../../btcrelay/headers/StarknetBtcStoredHeader";
11
+ import {BitcoinOutputWitnessData} from "../handlers/claim/btc/BitcoinOutputClaimHandler";
12
+ import {BitcoinWitnessData} from "../handlers/claim/btc/IBitcoinClaimHandler";
13
+ import {Buffer} from "buffer";
14
+
15
+ export class StarknetSwapClaim extends StarknetSwapModule {
16
+
17
+ private static readonly GasCosts = {
18
+ CLAIM: {l1DataGas: 750, l2Gas: 4_000_000, l1Gas: 0},
19
+ CLAIM_PAY_OUT: {l1DataGas: 900, l2Gas: 6_000_000, l1Gas: 0}
20
+ };
21
+
22
+ /**
23
+ * Claim action which uses the provided witness for claiming the swap
24
+ *
25
+ * @param signer
26
+ * @param swapData
27
+ * @param witness
28
+ * @param claimHandlerGas
29
+ * @constructor
30
+ * @private
31
+ */
32
+ private Claim(
33
+ signer: string,
34
+ swapData: StarknetSwapData,
35
+ witness: BigNumberish[],
36
+ claimHandlerGas?: StarknetGas
37
+ ): StarknetAction {
38
+ return new StarknetAction(signer, this.root,
39
+ this.swapContract.populateTransaction.claim(swapData.toEscrowStruct(), witness),
40
+ starknetGasAdd(swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM, claimHandlerGas)
41
+ );
42
+ }
43
+
44
+ /**
45
+ * Creates transactions claiming the swap using a secret (for HTLC swaps)
46
+ *
47
+ * @param signer
48
+ * @param swapData swap to claim
49
+ * @param secret hex encoded secret pre-image to the HTLC hash
50
+ * @param checkExpiry whether to check if the swap is already expired (trying to claim an expired swap with a secret
51
+ * is dangerous because we might end up revealing the secret to the counterparty without being able to claim the swap)
52
+ * @param feeRate fee rate to use for the transaction
53
+ */
54
+ async txsClaimWithSecret(
55
+ signer: string,
56
+ swapData: StarknetSwapData,
57
+ secret: string,
58
+ checkExpiry?: boolean,
59
+ feeRate?: string
60
+ ): Promise<StarknetTx[]> {
61
+ //We need to be sure that this transaction confirms in time, otherwise we reveal the secret to the counterparty
62
+ // and won't claim the funds
63
+ if(checkExpiry && await this.contract.isExpired(swapData.claimer.toString(), swapData)) {
64
+ throw new SwapDataVerificationError("Not enough time to reliably pay the invoice");
65
+ }
66
+
67
+ const claimHandler: IClaimHandler<Buffer, string> = this.contract.claimHandlersByAddress[toHex(swapData.claimHandler)];
68
+ if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
69
+ if(claimHandler.getType()!==ChainSwapType.HTLC) throw new SwapDataVerificationError("Invalid claim handler!");
70
+
71
+ feeRate ??= await this.root.Fees.getFeeRate();
72
+
73
+ const {initialTxns, witness} = await claimHandler.getWitness(signer, swapData, secret, feeRate);
74
+ const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));
75
+ await action.addToTxs(initialTxns, feeRate);
76
+
77
+ this.logger.debug("txsClaimWithSecret(): creating claim transaction, swap: "+swapData.getClaimHash()+" witness: ", witness.map(toHex));
78
+
79
+ return initialTxns;
80
+ }
81
+
82
+ /**
83
+ * Creates transaction claiming the swap using a confirmed transaction data (for BTC on-chain swaps)
84
+ *
85
+ * @param signer
86
+ * @param swapData swap to claim
87
+ * @param tx bitcoin transaction that satisfies the swap condition
88
+ * @param requiredConfirmations
89
+ * @param vout vout of the bitcoin transaction that satisfies the swap condition
90
+ * @param commitedHeader commited header data from btc relay (fetched internally if null)
91
+ * @param synchronizer optional synchronizer to use in case we need to sync up the btc relay ourselves
92
+ * @param feeRate fee rate to be used for the transactions
93
+ */
94
+ async txsClaimWithTxData(
95
+ signer: string,
96
+ swapData: StarknetSwapData,
97
+ tx: { blockhash: string, confirmations: number, txid: string, hex: string, height: number },
98
+ requiredConfirmations: number,
99
+ vout: number,
100
+ commitedHeader?: StarknetBtcStoredHeader,
101
+ synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>,
102
+ feeRate?: string
103
+ ): Promise<StarknetTx[] | null> {
104
+ const claimHandler: IClaimHandler<any, BitcoinOutputWitnessData | BitcoinWitnessData> = this.contract.claimHandlersByAddress[toHex(swapData.claimHandler)];
105
+ if(claimHandler==null) throw new SwapDataVerificationError("Unknown claim handler!");
106
+ if(
107
+ claimHandler.getType()!==ChainSwapType.CHAIN_NONCED &&
108
+ claimHandler.getType()!==ChainSwapType.CHAIN_TXID &&
109
+ claimHandler.getType()!==ChainSwapType.CHAIN
110
+ ) throw new SwapDataVerificationError("Invalid claim handler!");
111
+
112
+ feeRate ??= await this.root.Fees.getFeeRate();
113
+
114
+ const {initialTxns, witness} = await claimHandler.getWitness(signer, swapData, {
115
+ tx,
116
+ vout,
117
+ requiredConfirmations,
118
+ commitedHeader,
119
+ btcRelay: this.contract.btcRelay,
120
+ synchronizer,
121
+ }, feeRate);
122
+ const action = this.Claim(signer, swapData, witness, claimHandler.getGas(swapData));
123
+ await action.addToTxs(initialTxns, feeRate);
124
+
125
+ return initialTxns;
126
+ }
127
+
128
+ /**
129
+ * Get the estimated starknet transaction fee of the claim transaction
130
+ */
131
+ public async getClaimFee(swapData: StarknetSwapData, feeRate?: string): Promise<bigint> {
132
+ feeRate ??= await this.root.Fees.getFeeRate();
133
+
134
+ let gasRequired = swapData.payOut ? StarknetSwapClaim.GasCosts.CLAIM_PAY_OUT : StarknetSwapClaim.GasCosts.CLAIM;
135
+
136
+ const claimHandler: IClaimHandler<any, any> = this.contract.claimHandlersByAddress[toHex(swapData.claimHandler)];
137
+ if(claimHandler!=null) gasRequired = starknetGasAdd(gasRequired, claimHandler.getGas(swapData));
138
+
139
+ return StarknetFees.getGasFee(gasRequired, feeRate);
140
+ }
141
+
142
142
  }