@atomiqlabs/chain-evm 1.0.0-dev.62 → 1.0.0-dev.64

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 (187) hide show
  1. package/LICENSE +201 -201
  2. package/dist/chains/botanix/BotanixChainType.d.ts +13 -13
  3. package/dist/chains/botanix/BotanixChainType.js +2 -2
  4. package/dist/chains/botanix/BotanixInitializer.d.ts +30 -30
  5. package/dist/chains/botanix/BotanixInitializer.js +122 -122
  6. package/dist/chains/citrea/CitreaBtcRelay.d.ts +21 -21
  7. package/dist/chains/citrea/CitreaBtcRelay.js +43 -43
  8. package/dist/chains/citrea/CitreaChainType.d.ts +13 -13
  9. package/dist/chains/citrea/CitreaChainType.js +2 -2
  10. package/dist/chains/citrea/CitreaFees.d.ts +29 -29
  11. package/dist/chains/citrea/CitreaFees.js +67 -67
  12. package/dist/chains/citrea/CitreaInitializer.d.ts +30 -30
  13. package/dist/chains/citrea/CitreaInitializer.js +129 -129
  14. package/dist/chains/citrea/CitreaSpvVaultContract.d.ts +15 -15
  15. package/dist/chains/citrea/CitreaSpvVaultContract.js +74 -74
  16. package/dist/chains/citrea/CitreaSwapContract.d.ts +22 -22
  17. package/dist/chains/citrea/CitreaSwapContract.js +96 -96
  18. package/dist/chains/citrea/CitreaTokens.d.ts +9 -9
  19. package/dist/chains/citrea/CitreaTokens.js +20 -20
  20. package/dist/evm/btcrelay/BtcRelayAbi.d.ts +198 -198
  21. package/dist/evm/btcrelay/BtcRelayAbi.js +261 -261
  22. package/dist/evm/btcrelay/BtcRelayTypechain.d.ts +172 -172
  23. package/dist/evm/btcrelay/BtcRelayTypechain.js +2 -2
  24. package/dist/evm/btcrelay/EVMBtcRelay.d.ts +195 -195
  25. package/dist/evm/btcrelay/EVMBtcRelay.js +423 -423
  26. package/dist/evm/btcrelay/headers/EVMBtcHeader.d.ts +33 -33
  27. package/dist/evm/btcrelay/headers/EVMBtcHeader.js +84 -84
  28. package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.d.ts +56 -56
  29. package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.js +123 -123
  30. package/dist/evm/chain/EVMChainInterface.d.ts +51 -51
  31. package/dist/evm/chain/EVMChainInterface.js +89 -89
  32. package/dist/evm/chain/EVMModule.d.ts +9 -9
  33. package/dist/evm/chain/EVMModule.js +13 -13
  34. package/dist/evm/chain/modules/ERC20Abi.d.ts +168 -168
  35. package/dist/evm/chain/modules/ERC20Abi.js +225 -225
  36. package/dist/evm/chain/modules/EVMAddresses.d.ts +10 -10
  37. package/dist/evm/chain/modules/EVMAddresses.js +30 -30
  38. package/dist/evm/chain/modules/EVMBlocks.d.ts +20 -20
  39. package/dist/evm/chain/modules/EVMBlocks.js +64 -64
  40. package/dist/evm/chain/modules/EVMEvents.d.ts +36 -36
  41. package/dist/evm/chain/modules/EVMEvents.js +122 -122
  42. package/dist/evm/chain/modules/EVMFees.d.ts +36 -36
  43. package/dist/evm/chain/modules/EVMFees.js +73 -73
  44. package/dist/evm/chain/modules/EVMSignatures.d.ts +29 -29
  45. package/dist/evm/chain/modules/EVMSignatures.js +68 -68
  46. package/dist/evm/chain/modules/EVMTokens.d.ts +70 -70
  47. package/dist/evm/chain/modules/EVMTokens.js +142 -142
  48. package/dist/evm/chain/modules/EVMTransactions.d.ts +89 -89
  49. package/dist/evm/chain/modules/EVMTransactions.js +235 -235
  50. package/dist/evm/contract/EVMContractBase.d.ts +22 -22
  51. package/dist/evm/contract/EVMContractBase.js +34 -34
  52. package/dist/evm/contract/EVMContractModule.d.ts +8 -8
  53. package/dist/evm/contract/EVMContractModule.js +11 -11
  54. package/dist/evm/contract/modules/EVMContractEvents.d.ts +42 -42
  55. package/dist/evm/contract/modules/EVMContractEvents.js +75 -75
  56. package/dist/evm/events/EVMChainEvents.d.ts +22 -22
  57. package/dist/evm/events/EVMChainEvents.js +69 -69
  58. package/dist/evm/events/EVMChainEventsBrowser.d.ts +102 -102
  59. package/dist/evm/events/EVMChainEventsBrowser.js +402 -400
  60. package/dist/evm/providers/JsonRpcProviderWithRetries.d.ts +15 -15
  61. package/dist/evm/providers/JsonRpcProviderWithRetries.js +19 -19
  62. package/dist/evm/providers/ReconnectingWebSocketProvider.d.ts +22 -20
  63. package/dist/evm/providers/ReconnectingWebSocketProvider.js +87 -77
  64. package/dist/evm/providers/SocketProvider.d.ts +111 -111
  65. package/dist/evm/providers/SocketProvider.js +334 -334
  66. package/dist/evm/providers/WebSocketProviderWithRetries.d.ts +17 -17
  67. package/dist/evm/providers/WebSocketProviderWithRetries.js +19 -19
  68. package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +78 -78
  69. package/dist/evm/spv_swap/EVMSpvVaultContract.js +478 -478
  70. package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
  71. package/dist/evm/spv_swap/EVMSpvVaultData.js +180 -180
  72. package/dist/evm/spv_swap/EVMSpvWithdrawalData.d.ts +19 -19
  73. package/dist/evm/spv_swap/EVMSpvWithdrawalData.js +55 -55
  74. package/dist/evm/spv_swap/SpvVaultContractAbi.d.ts +91 -91
  75. package/dist/evm/spv_swap/SpvVaultContractAbi.js +849 -849
  76. package/dist/evm/spv_swap/SpvVaultContractTypechain.d.ts +450 -450
  77. package/dist/evm/spv_swap/SpvVaultContractTypechain.js +2 -2
  78. package/dist/evm/swaps/EVMSwapContract.d.ts +193 -193
  79. package/dist/evm/swaps/EVMSwapContract.js +378 -378
  80. package/dist/evm/swaps/EVMSwapData.d.ts +66 -66
  81. package/dist/evm/swaps/EVMSwapData.js +260 -260
  82. package/dist/evm/swaps/EVMSwapModule.d.ts +9 -9
  83. package/dist/evm/swaps/EVMSwapModule.js +11 -11
  84. package/dist/evm/swaps/EscrowManagerAbi.d.ts +120 -120
  85. package/dist/evm/swaps/EscrowManagerAbi.js +985 -985
  86. package/dist/evm/swaps/EscrowManagerTypechain.d.ts +475 -475
  87. package/dist/evm/swaps/EscrowManagerTypechain.js +2 -2
  88. package/dist/evm/swaps/handlers/IHandler.d.ts +13 -13
  89. package/dist/evm/swaps/handlers/IHandler.js +2 -2
  90. package/dist/evm/swaps/handlers/claim/ClaimHandlers.d.ts +10 -10
  91. package/dist/evm/swaps/handlers/claim/ClaimHandlers.js +13 -13
  92. package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.d.ts +20 -20
  93. package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.js +39 -39
  94. package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  95. package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +59 -59
  96. package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  97. package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +51 -51
  98. package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +21 -21
  99. package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +28 -28
  100. package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +48 -48
  101. package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +63 -63
  102. package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  103. package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.js +28 -28
  104. package/dist/evm/swaps/modules/EVMLpVault.d.ts +69 -69
  105. package/dist/evm/swaps/modules/EVMLpVault.js +134 -134
  106. package/dist/evm/swaps/modules/EVMSwapClaim.d.ts +54 -54
  107. package/dist/evm/swaps/modules/EVMSwapClaim.js +137 -137
  108. package/dist/evm/swaps/modules/EVMSwapInit.d.ts +88 -88
  109. package/dist/evm/swaps/modules/EVMSwapInit.js +274 -274
  110. package/dist/evm/swaps/modules/EVMSwapRefund.d.ts +62 -62
  111. package/dist/evm/swaps/modules/EVMSwapRefund.js +167 -167
  112. package/dist/evm/typechain/common.d.ts +50 -50
  113. package/dist/evm/typechain/common.js +2 -2
  114. package/dist/evm/wallet/EVMSigner.d.ts +10 -10
  115. package/dist/evm/wallet/EVMSigner.js +17 -17
  116. package/dist/index.d.ts +43 -43
  117. package/dist/index.js +59 -59
  118. package/dist/utils/Utils.d.ts +15 -15
  119. package/dist/utils/Utils.js +71 -71
  120. package/package.json +37 -37
  121. package/src/chains/botanix/BotanixChainType.ts +28 -28
  122. package/src/chains/botanix/BotanixInitializer.ts +171 -171
  123. package/src/chains/citrea/CitreaBtcRelay.ts +57 -57
  124. package/src/chains/citrea/CitreaChainType.ts +28 -28
  125. package/src/chains/citrea/CitreaFees.ts +77 -77
  126. package/src/chains/citrea/CitreaInitializer.ts +178 -178
  127. package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -75
  128. package/src/chains/citrea/CitreaSwapContract.ts +102 -102
  129. package/src/chains/citrea/CitreaTokens.ts +21 -21
  130. package/src/evm/btcrelay/BtcRelayAbi.ts +258 -258
  131. package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -371
  132. package/src/evm/btcrelay/EVMBtcRelay.ts +522 -522
  133. package/src/evm/btcrelay/headers/EVMBtcHeader.ts +109 -109
  134. package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +152 -152
  135. package/src/evm/chain/EVMChainInterface.ts +155 -155
  136. package/src/evm/chain/EVMModule.ts +21 -21
  137. package/src/evm/chain/modules/ERC20Abi.ts +222 -222
  138. package/src/evm/chain/modules/EVMAddresses.ts +28 -28
  139. package/src/evm/chain/modules/EVMBlocks.ts +75 -75
  140. package/src/evm/chain/modules/EVMEvents.ts +139 -139
  141. package/src/evm/chain/modules/EVMFees.ts +104 -104
  142. package/src/evm/chain/modules/EVMSignatures.ts +76 -76
  143. package/src/evm/chain/modules/EVMTokens.ts +155 -155
  144. package/src/evm/chain/modules/EVMTransactions.ts +263 -263
  145. package/src/evm/contract/EVMContractBase.ts +63 -63
  146. package/src/evm/contract/EVMContractModule.ts +16 -16
  147. package/src/evm/contract/modules/EVMContractEvents.ts +102 -102
  148. package/src/evm/events/EVMChainEvents.ts +82 -82
  149. package/src/evm/events/EVMChainEventsBrowser.ts +524 -523
  150. package/src/evm/providers/JsonRpcProviderWithRetries.ts +26 -26
  151. package/src/evm/providers/ReconnectingWebSocketProvider.ts +101 -93
  152. package/src/evm/providers/SocketProvider.ts +368 -368
  153. package/src/evm/providers/WebSocketProviderWithRetries.ts +28 -28
  154. package/src/evm/spv_swap/EVMSpvVaultContract.ts +608 -608
  155. package/src/evm/spv_swap/EVMSpvVaultData.ts +224 -224
  156. package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -70
  157. package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -846
  158. package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -685
  159. package/src/evm/swaps/EVMSwapContract.ts +600 -600
  160. package/src/evm/swaps/EVMSwapData.ts +378 -378
  161. package/src/evm/swaps/EVMSwapModule.ts +16 -16
  162. package/src/evm/swaps/EscrowManagerAbi.ts +982 -982
  163. package/src/evm/swaps/EscrowManagerTypechain.ts +723 -723
  164. package/src/evm/swaps/handlers/IHandler.ts +17 -17
  165. package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -20
  166. package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +46 -46
  167. package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -82
  168. package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -76
  169. package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -46
  170. package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -115
  171. package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +37 -37
  172. package/src/evm/swaps/modules/EVMLpVault.ts +154 -154
  173. package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
  174. package/src/evm/swaps/modules/EVMSwapInit.ts +328 -328
  175. package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
  176. package/src/evm/typechain/common.ts +131 -131
  177. package/src/evm/wallet/EVMSigner.ts +25 -25
  178. package/src/index.ts +52 -52
  179. package/src/utils/Utils.ts +81 -81
  180. package/dist/evm/JsonRpcProviderWithRetries.d.ts +0 -15
  181. package/dist/evm/JsonRpcProviderWithRetries.js +0 -19
  182. package/dist/evm/ReconnectingWebSocketProvider.d.ts +0 -20
  183. package/dist/evm/ReconnectingWebSocketProvider.js +0 -77
  184. package/dist/evm/SocketProvider.d.ts +0 -111
  185. package/dist/evm/SocketProvider.js +0 -334
  186. package/dist/evm/WebSocketProviderWithRetries.d.ts +0 -17
  187. package/dist/evm/WebSocketProviderWithRetries.js +0 -19
@@ -1,62 +1,62 @@
1
- import { EVMSwapModule } from "../EVMSwapModule";
2
- import { EVMSwapData } from "../EVMSwapData";
3
- import { EVMSigner } from "../../wallet/EVMSigner";
4
- import { EVMTx } from "../../chain/modules/EVMTransactions";
5
- export declare class EVMSwapRefund extends EVMSwapModule {
6
- private static readonly GasCosts;
7
- /**
8
- * Action for generic Refund instruction
9
- *
10
- * @param signer
11
- * @param swapData
12
- * @param witness
13
- * @param feeRate
14
- * @param handlerGas
15
- * @private
16
- */
17
- private Refund;
18
- /**
19
- * Action for cooperative refunding with signature
20
- *
21
- * @param sender
22
- * @param swapData
23
- * @param timeout
24
- * @param signature
25
- * @param feeRate
26
- * @private
27
- */
28
- private RefundWithSignature;
29
- signSwapRefund(signer: EVMSigner, swapData: EVMSwapData, authorizationTimeout: number): Promise<{
30
- prefix: string;
31
- timeout: string;
32
- signature: string;
33
- }>;
34
- isSignatureValid(swapData: EVMSwapData, timeout: string, prefix: string, signature: string): Promise<null>;
35
- /**
36
- * Creates transactions required for refunding timed out swap
37
- *
38
- * @param signer
39
- * @param swapData swap data to refund
40
- * @param check whether to check if swap is already expired and refundable
41
- * @param feeRate fee rate to be used for the transactions
42
- * @param witnessData
43
- */
44
- txsRefund<T>(signer: string, swapData: EVMSwapData, check?: boolean, feeRate?: string, witnessData?: T): Promise<EVMTx[]>;
45
- /**
46
- * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL
47
- *
48
- * @param signer
49
- * @param swapData swap data to refund
50
- * @param timeout signature timeout
51
- * @param prefix signature prefix of the counterparty
52
- * @param signature signature of the counterparty
53
- * @param check whether to check if swap is committed before attempting refund
54
- * @param feeRate fee rate to be used for the transactions
55
- */
56
- txsRefundWithAuthorization(signer: string, swapData: EVMSwapData, timeout: string, prefix: string, signature: string, check?: boolean, feeRate?: string): Promise<EVMTx[]>;
57
- getRefundGas(swapData: EVMSwapData): number;
58
- /**
59
- * Get the estimated transaction fee of the refund transaction
60
- */
61
- getRefundFee(swapData: EVMSwapData, feeRate?: string): Promise<bigint>;
62
- }
1
+ import { EVMSwapModule } from "../EVMSwapModule";
2
+ import { EVMSwapData } from "../EVMSwapData";
3
+ import { EVMSigner } from "../../wallet/EVMSigner";
4
+ import { EVMTx } from "../../chain/modules/EVMTransactions";
5
+ export declare class EVMSwapRefund extends EVMSwapModule {
6
+ private static readonly GasCosts;
7
+ /**
8
+ * Action for generic Refund instruction
9
+ *
10
+ * @param signer
11
+ * @param swapData
12
+ * @param witness
13
+ * @param feeRate
14
+ * @param handlerGas
15
+ * @private
16
+ */
17
+ private Refund;
18
+ /**
19
+ * Action for cooperative refunding with signature
20
+ *
21
+ * @param sender
22
+ * @param swapData
23
+ * @param timeout
24
+ * @param signature
25
+ * @param feeRate
26
+ * @private
27
+ */
28
+ private RefundWithSignature;
29
+ signSwapRefund(signer: EVMSigner, swapData: EVMSwapData, authorizationTimeout: number): Promise<{
30
+ prefix: string;
31
+ timeout: string;
32
+ signature: string;
33
+ }>;
34
+ isSignatureValid(swapData: EVMSwapData, timeout: string, prefix: string, signature: string): Promise<null>;
35
+ /**
36
+ * Creates transactions required for refunding timed out swap
37
+ *
38
+ * @param signer
39
+ * @param swapData swap data to refund
40
+ * @param check whether to check if swap is already expired and refundable
41
+ * @param feeRate fee rate to be used for the transactions
42
+ * @param witnessData
43
+ */
44
+ txsRefund<T>(signer: string, swapData: EVMSwapData, check?: boolean, feeRate?: string, witnessData?: T): Promise<EVMTx[]>;
45
+ /**
46
+ * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL
47
+ *
48
+ * @param signer
49
+ * @param swapData swap data to refund
50
+ * @param timeout signature timeout
51
+ * @param prefix signature prefix of the counterparty
52
+ * @param signature signature of the counterparty
53
+ * @param check whether to check if swap is committed before attempting refund
54
+ * @param feeRate fee rate to be used for the transactions
55
+ */
56
+ txsRefundWithAuthorization(signer: string, swapData: EVMSwapData, timeout: string, prefix: string, signature: string, check?: boolean, feeRate?: string): Promise<EVMTx[]>;
57
+ getRefundGas(swapData: EVMSwapData): number;
58
+ /**
59
+ * Get the estimated transaction fee of the refund transaction
60
+ */
61
+ getRefundFee(swapData: EVMSwapData, feeRate?: string): Promise<bigint>;
62
+ }
@@ -1,167 +1,167 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EVMSwapRefund = void 0;
4
- const base_1 = require("@atomiqlabs/base");
5
- const Utils_1 = require("../../../utils/Utils");
6
- const EVMSwapModule_1 = require("../EVMSwapModule");
7
- const EVMFees_1 = require("../../chain/modules/EVMFees");
8
- const Refund = [
9
- { name: "swapHash", type: "bytes32" },
10
- { name: "timeout", type: "uint256" }
11
- ];
12
- class EVMSwapRefund extends EVMSwapModule_1.EVMSwapModule {
13
- /**
14
- * Action for generic Refund instruction
15
- *
16
- * @param signer
17
- * @param swapData
18
- * @param witness
19
- * @param feeRate
20
- * @param handlerGas
21
- * @private
22
- */
23
- async Refund(signer, swapData, witness, feeRate, handlerGas) {
24
- const tx = await this.swapContract.refund.populateTransaction(swapData.toEscrowStruct(), witness);
25
- tx.from = signer;
26
- EVMFees_1.EVMFees.applyFeeRate(tx, this.getRefundGas(swapData) + (handlerGas ?? 0), feeRate);
27
- return tx;
28
- }
29
- /**
30
- * Action for cooperative refunding with signature
31
- *
32
- * @param sender
33
- * @param swapData
34
- * @param timeout
35
- * @param signature
36
- * @param feeRate
37
- * @private
38
- */
39
- async RefundWithSignature(sender, swapData, timeout, signature, feeRate) {
40
- const tx = await this.swapContract.cooperativeRefund.populateTransaction(swapData.toEscrowStruct(), signature, BigInt(timeout));
41
- tx.from = sender;
42
- EVMFees_1.EVMFees.applyFeeRate(tx, this.getRefundGas(swapData), feeRate);
43
- return tx;
44
- }
45
- async signSwapRefund(signer, swapData, authorizationTimeout) {
46
- const authPrefix = "refund";
47
- const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;
48
- const signature = await this.root.Signatures.signTypedMessage(this.contract.contractAddress, signer, Refund, "Refund", {
49
- "swapHash": "0x" + swapData.getEscrowHash(),
50
- "timeout": BigInt(authTimeout)
51
- });
52
- return {
53
- prefix: authPrefix,
54
- timeout: authTimeout.toString(10),
55
- signature: signature
56
- };
57
- }
58
- async isSignatureValid(swapData, timeout, prefix, signature) {
59
- if (prefix !== "refund")
60
- throw new base_1.SignatureVerificationError("Invalid prefix");
61
- const expiryTimestamp = BigInt(timeout);
62
- const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
63
- const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.contract.authGracePeriod);
64
- if (isExpired)
65
- throw new base_1.SignatureVerificationError("Authorization expired!");
66
- const valid = await this.root.Signatures.isValidSignature(this.contract.contractAddress, signature, swapData.claimer, Refund, "Refund", {
67
- "swapHash": "0x" + swapData.getEscrowHash(),
68
- "timeout": BigInt(expiryTimestamp)
69
- });
70
- if (!valid) {
71
- throw new base_1.SignatureVerificationError("Invalid signature!");
72
- }
73
- return null;
74
- }
75
- /**
76
- * Creates transactions required for refunding timed out swap
77
- *
78
- * @param signer
79
- * @param swapData swap data to refund
80
- * @param check whether to check if swap is already expired and refundable
81
- * @param feeRate fee rate to be used for the transactions
82
- * @param witnessData
83
- */
84
- async txsRefund(signer, swapData, check, feeRate, witnessData) {
85
- const refundHandler = this.contract.refundHandlersByAddress[swapData.refundHandler.toLowerCase()];
86
- if (refundHandler == null)
87
- throw new Error("Invalid refund handler");
88
- if (check && !await (0, Utils_1.tryWithRetries)(() => this.contract.isRequestRefundable(swapData.offerer.toString(), swapData), this.retryPolicy)) {
89
- throw new base_1.SwapDataVerificationError("Not refundable yet!");
90
- }
91
- feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
92
- const { initialTxns, witness } = await refundHandler.getWitness(signer, swapData, witnessData, feeRate);
93
- const tx = await this.Refund(signer, swapData, witness, feeRate, refundHandler.getGas(swapData));
94
- this.logger.debug("txsRefund(): creating refund transaction, swap: " + swapData.getClaimHash());
95
- return [...initialTxns, tx];
96
- }
97
- /**
98
- * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL
99
- *
100
- * @param signer
101
- * @param swapData swap data to refund
102
- * @param timeout signature timeout
103
- * @param prefix signature prefix of the counterparty
104
- * @param signature signature of the counterparty
105
- * @param check whether to check if swap is committed before attempting refund
106
- * @param feeRate fee rate to be used for the transactions
107
- */
108
- async txsRefundWithAuthorization(signer, swapData, timeout, prefix, signature, check, feeRate) {
109
- if (check && !await (0, Utils_1.tryWithRetries)(() => this.contract.isCommited(swapData), this.retryPolicy)) {
110
- throw new base_1.SwapDataVerificationError("Not correctly committed");
111
- }
112
- await (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError);
113
- feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
114
- const tx = await this.RefundWithSignature(signer, swapData, timeout, signature, feeRate);
115
- this.logger.debug("txsRefundWithAuthorization(): creating refund transaction, swap: " + swapData.getClaimHash() +
116
- " auth expiry: " + timeout + " signature: " + signature);
117
- return [tx];
118
- }
119
- getRefundGas(swapData) {
120
- let totalGas = EVMSwapRefund.GasCosts.BASE;
121
- if (swapData.reputation)
122
- totalGas += EVMSwapRefund.GasCosts.REPUTATION;
123
- if (swapData.isPayIn()) {
124
- if (swapData.isToken(this.root.getNativeCurrencyAddress())) {
125
- totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
126
- }
127
- else {
128
- totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
129
- }
130
- }
131
- else {
132
- totalGas += EVMSwapRefund.GasCosts.LP_VAULT_TRANSFER;
133
- }
134
- if (swapData.getSecurityDeposit() > 0n) {
135
- if (swapData.isDepositToken(this.root.getNativeCurrencyAddress())) {
136
- totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
137
- }
138
- else {
139
- totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
140
- }
141
- }
142
- if (swapData.getClaimerBounty() > swapData.getSecurityDeposit()) {
143
- if (swapData.isDepositToken(this.root.getNativeCurrencyAddress())) {
144
- totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
145
- }
146
- else {
147
- totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
148
- }
149
- }
150
- return totalGas;
151
- }
152
- /**
153
- * Get the estimated transaction fee of the refund transaction
154
- */
155
- async getRefundFee(swapData, feeRate) {
156
- feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
157
- return EVMFees_1.EVMFees.getGasFee(this.getRefundGas(swapData), feeRate);
158
- }
159
- }
160
- exports.EVMSwapRefund = EVMSwapRefund;
161
- EVMSwapRefund.GasCosts = {
162
- BASE: 35000 + 21000,
163
- ERC20_TRANSFER: 40000,
164
- NATIVE_TRANSFER: 35500,
165
- LP_VAULT_TRANSFER: 10000,
166
- REPUTATION: 25000
167
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVMSwapRefund = void 0;
4
+ const base_1 = require("@atomiqlabs/base");
5
+ const Utils_1 = require("../../../utils/Utils");
6
+ const EVMSwapModule_1 = require("../EVMSwapModule");
7
+ const EVMFees_1 = require("../../chain/modules/EVMFees");
8
+ const Refund = [
9
+ { name: "swapHash", type: "bytes32" },
10
+ { name: "timeout", type: "uint256" }
11
+ ];
12
+ class EVMSwapRefund extends EVMSwapModule_1.EVMSwapModule {
13
+ /**
14
+ * Action for generic Refund instruction
15
+ *
16
+ * @param signer
17
+ * @param swapData
18
+ * @param witness
19
+ * @param feeRate
20
+ * @param handlerGas
21
+ * @private
22
+ */
23
+ async Refund(signer, swapData, witness, feeRate, handlerGas) {
24
+ const tx = await this.swapContract.refund.populateTransaction(swapData.toEscrowStruct(), witness);
25
+ tx.from = signer;
26
+ EVMFees_1.EVMFees.applyFeeRate(tx, this.getRefundGas(swapData) + (handlerGas ?? 0), feeRate);
27
+ return tx;
28
+ }
29
+ /**
30
+ * Action for cooperative refunding with signature
31
+ *
32
+ * @param sender
33
+ * @param swapData
34
+ * @param timeout
35
+ * @param signature
36
+ * @param feeRate
37
+ * @private
38
+ */
39
+ async RefundWithSignature(sender, swapData, timeout, signature, feeRate) {
40
+ const tx = await this.swapContract.cooperativeRefund.populateTransaction(swapData.toEscrowStruct(), signature, BigInt(timeout));
41
+ tx.from = sender;
42
+ EVMFees_1.EVMFees.applyFeeRate(tx, this.getRefundGas(swapData), feeRate);
43
+ return tx;
44
+ }
45
+ async signSwapRefund(signer, swapData, authorizationTimeout) {
46
+ const authPrefix = "refund";
47
+ const authTimeout = Math.floor(Date.now() / 1000) + authorizationTimeout;
48
+ const signature = await this.root.Signatures.signTypedMessage(this.contract.contractAddress, signer, Refund, "Refund", {
49
+ "swapHash": "0x" + swapData.getEscrowHash(),
50
+ "timeout": BigInt(authTimeout)
51
+ });
52
+ return {
53
+ prefix: authPrefix,
54
+ timeout: authTimeout.toString(10),
55
+ signature: signature
56
+ };
57
+ }
58
+ async isSignatureValid(swapData, timeout, prefix, signature) {
59
+ if (prefix !== "refund")
60
+ throw new base_1.SignatureVerificationError("Invalid prefix");
61
+ const expiryTimestamp = BigInt(timeout);
62
+ const currentTimestamp = BigInt(Math.floor(Date.now() / 1000));
63
+ const isExpired = (expiryTimestamp - currentTimestamp) < BigInt(this.contract.authGracePeriod);
64
+ if (isExpired)
65
+ throw new base_1.SignatureVerificationError("Authorization expired!");
66
+ const valid = await this.root.Signatures.isValidSignature(this.contract.contractAddress, signature, swapData.claimer, Refund, "Refund", {
67
+ "swapHash": "0x" + swapData.getEscrowHash(),
68
+ "timeout": BigInt(expiryTimestamp)
69
+ });
70
+ if (!valid) {
71
+ throw new base_1.SignatureVerificationError("Invalid signature!");
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Creates transactions required for refunding timed out swap
77
+ *
78
+ * @param signer
79
+ * @param swapData swap data to refund
80
+ * @param check whether to check if swap is already expired and refundable
81
+ * @param feeRate fee rate to be used for the transactions
82
+ * @param witnessData
83
+ */
84
+ async txsRefund(signer, swapData, check, feeRate, witnessData) {
85
+ const refundHandler = this.contract.refundHandlersByAddress[swapData.refundHandler.toLowerCase()];
86
+ if (refundHandler == null)
87
+ throw new Error("Invalid refund handler");
88
+ if (check && !await (0, Utils_1.tryWithRetries)(() => this.contract.isRequestRefundable(swapData.offerer.toString(), swapData), this.retryPolicy)) {
89
+ throw new base_1.SwapDataVerificationError("Not refundable yet!");
90
+ }
91
+ feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
92
+ const { initialTxns, witness } = await refundHandler.getWitness(signer, swapData, witnessData, feeRate);
93
+ const tx = await this.Refund(signer, swapData, witness, feeRate, refundHandler.getGas(swapData));
94
+ this.logger.debug("txsRefund(): creating refund transaction, swap: " + swapData.getClaimHash());
95
+ return [...initialTxns, tx];
96
+ }
97
+ /**
98
+ * Creates transactions required for refunding the swap with authorization signature, also unwraps WSOL to SOL
99
+ *
100
+ * @param signer
101
+ * @param swapData swap data to refund
102
+ * @param timeout signature timeout
103
+ * @param prefix signature prefix of the counterparty
104
+ * @param signature signature of the counterparty
105
+ * @param check whether to check if swap is committed before attempting refund
106
+ * @param feeRate fee rate to be used for the transactions
107
+ */
108
+ async txsRefundWithAuthorization(signer, swapData, timeout, prefix, signature, check, feeRate) {
109
+ if (check && !await (0, Utils_1.tryWithRetries)(() => this.contract.isCommited(swapData), this.retryPolicy)) {
110
+ throw new base_1.SwapDataVerificationError("Not correctly committed");
111
+ }
112
+ await (0, Utils_1.tryWithRetries)(() => this.isSignatureValid(swapData, timeout, prefix, signature), this.retryPolicy, (e) => e instanceof base_1.SignatureVerificationError);
113
+ feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
114
+ const tx = await this.RefundWithSignature(signer, swapData, timeout, signature, feeRate);
115
+ this.logger.debug("txsRefundWithAuthorization(): creating refund transaction, swap: " + swapData.getClaimHash() +
116
+ " auth expiry: " + timeout + " signature: " + signature);
117
+ return [tx];
118
+ }
119
+ getRefundGas(swapData) {
120
+ let totalGas = EVMSwapRefund.GasCosts.BASE;
121
+ if (swapData.reputation)
122
+ totalGas += EVMSwapRefund.GasCosts.REPUTATION;
123
+ if (swapData.isPayIn()) {
124
+ if (swapData.isToken(this.root.getNativeCurrencyAddress())) {
125
+ totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
126
+ }
127
+ else {
128
+ totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
129
+ }
130
+ }
131
+ else {
132
+ totalGas += EVMSwapRefund.GasCosts.LP_VAULT_TRANSFER;
133
+ }
134
+ if (swapData.getSecurityDeposit() > 0n) {
135
+ if (swapData.isDepositToken(this.root.getNativeCurrencyAddress())) {
136
+ totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
137
+ }
138
+ else {
139
+ totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
140
+ }
141
+ }
142
+ if (swapData.getClaimerBounty() > swapData.getSecurityDeposit()) {
143
+ if (swapData.isDepositToken(this.root.getNativeCurrencyAddress())) {
144
+ totalGas += EVMSwapRefund.GasCosts.NATIVE_TRANSFER;
145
+ }
146
+ else {
147
+ totalGas += EVMSwapRefund.GasCosts.ERC20_TRANSFER;
148
+ }
149
+ }
150
+ return totalGas;
151
+ }
152
+ /**
153
+ * Get the estimated transaction fee of the refund transaction
154
+ */
155
+ async getRefundFee(swapData, feeRate) {
156
+ feeRate ?? (feeRate = await this.root.Fees.getFeeRate());
157
+ return EVMFees_1.EVMFees.getGasFee(this.getRefundGas(swapData), feeRate);
158
+ }
159
+ }
160
+ exports.EVMSwapRefund = EVMSwapRefund;
161
+ EVMSwapRefund.GasCosts = {
162
+ BASE: 35000 + 21000,
163
+ ERC20_TRANSFER: 40000,
164
+ NATIVE_TRANSFER: 35500,
165
+ LP_VAULT_TRANSFER: 10000,
166
+ REPUTATION: 25000
167
+ };
@@ -1,50 +1,50 @@
1
- import type { FunctionFragment, Typed, EventFragment, ContractTransaction, ContractTransactionResponse, DeferredTopicFilter, EventLog, TransactionRequest, LogDescription } from "ethers";
2
- export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> extends DeferredTopicFilter {
3
- }
4
- export interface TypedContractEvent<InputTuple extends Array<any> = any, OutputTuple extends Array<any> = any, OutputObject = any> {
5
- (...args: Partial<InputTuple>): TypedDeferredTopicFilter<TypedContractEvent<InputTuple, OutputTuple, OutputObject>>;
6
- name: string;
7
- fragment: EventFragment;
8
- getFragment(...args: Partial<InputTuple>): EventFragment;
9
- }
10
- type __TypechainAOutputTuple<T> = T extends TypedContractEvent<infer _U, infer W> ? W : never;
11
- type __TypechainOutputObject<T> = T extends TypedContractEvent<infer _U, infer _W, infer V> ? V : never;
12
- export interface TypedEventLog<TCEvent extends TypedContractEvent> extends Omit<EventLog, "args"> {
13
- args: __TypechainAOutputTuple<TCEvent> & __TypechainOutputObject<TCEvent>;
14
- }
15
- export interface TypedLogDescription<TCEvent extends TypedContractEvent> extends Omit<LogDescription, "args"> {
16
- args: __TypechainAOutputTuple<TCEvent> & __TypechainOutputObject<TCEvent>;
17
- }
18
- export type TypedListener<TCEvent extends TypedContractEvent> = (...listenerArg: [
19
- ...__TypechainAOutputTuple<TCEvent>,
20
- TypedEventLog<TCEvent>,
21
- ...undefined[]
22
- ]) => void;
23
- export type MinEthersFactory<C, ARGS> = {
24
- deploy(...a: ARGS[]): Promise<C>;
25
- };
26
- export type GetContractTypeFromFactory<F> = F extends MinEthersFactory<infer C, any> ? C : never;
27
- export type GetARGsTypeFromFactory<F> = F extends MinEthersFactory<any, any> ? Parameters<F["deploy"]> : never;
28
- export type StateMutability = "nonpayable" | "payable" | "view";
29
- export type BaseOverrides = Omit<TransactionRequest, "to" | "data">;
30
- export type NonPayableOverrides = Omit<BaseOverrides, "value" | "blockTag" | "enableCcipRead">;
31
- export type PayableOverrides = Omit<BaseOverrides, "blockTag" | "enableCcipRead">;
32
- export type ViewOverrides = Omit<TransactionRequest, "to" | "data">;
33
- export type Overrides<S extends StateMutability> = S extends "nonpayable" ? NonPayableOverrides : S extends "payable" ? PayableOverrides : ViewOverrides;
34
- export type PostfixOverrides<A extends Array<any>, S extends StateMutability> = A | [...A, Overrides<S>];
35
- export type ContractMethodArgs<A extends Array<any>, S extends StateMutability> = PostfixOverrides<{
36
- [I in keyof A]-?: A[I] | Typed;
37
- }, S>;
38
- export type DefaultReturnType<R> = R extends Array<any> ? R[0] : R;
39
- export interface TypedContractMethod<A extends Array<any> = Array<any>, R = any, S extends StateMutability = "payable"> {
40
- (...args: ContractMethodArgs<A, S>): S extends "view" ? Promise<DefaultReturnType<R>> : Promise<ContractTransactionResponse>;
41
- name: string;
42
- fragment: FunctionFragment;
43
- getFragment(...args: ContractMethodArgs<A, S>): FunctionFragment;
44
- populateTransaction(...args: ContractMethodArgs<A, S>): Promise<ContractTransaction>;
45
- staticCall(...args: ContractMethodArgs<A, "view">): Promise<DefaultReturnType<R>>;
46
- send(...args: ContractMethodArgs<A, S>): Promise<ContractTransactionResponse>;
47
- estimateGas(...args: ContractMethodArgs<A, S>): Promise<bigint>;
48
- staticCallResult(...args: ContractMethodArgs<A, "view">): Promise<R>;
49
- }
50
- export {};
1
+ import type { FunctionFragment, Typed, EventFragment, ContractTransaction, ContractTransactionResponse, DeferredTopicFilter, EventLog, TransactionRequest, LogDescription } from "ethers";
2
+ export interface TypedDeferredTopicFilter<_TCEvent extends TypedContractEvent> extends DeferredTopicFilter {
3
+ }
4
+ export interface TypedContractEvent<InputTuple extends Array<any> = any, OutputTuple extends Array<any> = any, OutputObject = any> {
5
+ (...args: Partial<InputTuple>): TypedDeferredTopicFilter<TypedContractEvent<InputTuple, OutputTuple, OutputObject>>;
6
+ name: string;
7
+ fragment: EventFragment;
8
+ getFragment(...args: Partial<InputTuple>): EventFragment;
9
+ }
10
+ type __TypechainAOutputTuple<T> = T extends TypedContractEvent<infer _U, infer W> ? W : never;
11
+ type __TypechainOutputObject<T> = T extends TypedContractEvent<infer _U, infer _W, infer V> ? V : never;
12
+ export interface TypedEventLog<TCEvent extends TypedContractEvent> extends Omit<EventLog, "args"> {
13
+ args: __TypechainAOutputTuple<TCEvent> & __TypechainOutputObject<TCEvent>;
14
+ }
15
+ export interface TypedLogDescription<TCEvent extends TypedContractEvent> extends Omit<LogDescription, "args"> {
16
+ args: __TypechainAOutputTuple<TCEvent> & __TypechainOutputObject<TCEvent>;
17
+ }
18
+ export type TypedListener<TCEvent extends TypedContractEvent> = (...listenerArg: [
19
+ ...__TypechainAOutputTuple<TCEvent>,
20
+ TypedEventLog<TCEvent>,
21
+ ...undefined[]
22
+ ]) => void;
23
+ export type MinEthersFactory<C, ARGS> = {
24
+ deploy(...a: ARGS[]): Promise<C>;
25
+ };
26
+ export type GetContractTypeFromFactory<F> = F extends MinEthersFactory<infer C, any> ? C : never;
27
+ export type GetARGsTypeFromFactory<F> = F extends MinEthersFactory<any, any> ? Parameters<F["deploy"]> : never;
28
+ export type StateMutability = "nonpayable" | "payable" | "view";
29
+ export type BaseOverrides = Omit<TransactionRequest, "to" | "data">;
30
+ export type NonPayableOverrides = Omit<BaseOverrides, "value" | "blockTag" | "enableCcipRead">;
31
+ export type PayableOverrides = Omit<BaseOverrides, "blockTag" | "enableCcipRead">;
32
+ export type ViewOverrides = Omit<TransactionRequest, "to" | "data">;
33
+ export type Overrides<S extends StateMutability> = S extends "nonpayable" ? NonPayableOverrides : S extends "payable" ? PayableOverrides : ViewOverrides;
34
+ export type PostfixOverrides<A extends Array<any>, S extends StateMutability> = A | [...A, Overrides<S>];
35
+ export type ContractMethodArgs<A extends Array<any>, S extends StateMutability> = PostfixOverrides<{
36
+ [I in keyof A]-?: A[I] | Typed;
37
+ }, S>;
38
+ export type DefaultReturnType<R> = R extends Array<any> ? R[0] : R;
39
+ export interface TypedContractMethod<A extends Array<any> = Array<any>, R = any, S extends StateMutability = "payable"> {
40
+ (...args: ContractMethodArgs<A, S>): S extends "view" ? Promise<DefaultReturnType<R>> : Promise<ContractTransactionResponse>;
41
+ name: string;
42
+ fragment: FunctionFragment;
43
+ getFragment(...args: ContractMethodArgs<A, S>): FunctionFragment;
44
+ populateTransaction(...args: ContractMethodArgs<A, S>): Promise<ContractTransaction>;
45
+ staticCall(...args: ContractMethodArgs<A, "view">): Promise<DefaultReturnType<R>>;
46
+ send(...args: ContractMethodArgs<A, S>): Promise<ContractTransactionResponse>;
47
+ estimateGas(...args: ContractMethodArgs<A, S>): Promise<bigint>;
48
+ staticCallResult(...args: ContractMethodArgs<A, "view">): Promise<R>;
49
+ }
50
+ export {};
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,10 +1,10 @@
1
- import { AbstractSigner } from "@atomiqlabs/base";
2
- import { Signer } from "ethers";
3
- export declare class EVMSigner implements AbstractSigner {
4
- account: Signer;
5
- readonly address: string;
6
- readonly isBrowserWallet: boolean;
7
- constructor(account: Signer, address: string, isBrowserWallet?: boolean);
8
- getNonce(): Promise<number>;
9
- getAddress(): string;
10
- }
1
+ import { AbstractSigner } from "@atomiqlabs/base";
2
+ import { Signer } from "ethers";
3
+ export declare class EVMSigner implements AbstractSigner {
4
+ account: Signer;
5
+ readonly address: string;
6
+ readonly isBrowserWallet: boolean;
7
+ constructor(account: Signer, address: string, isBrowserWallet?: boolean);
8
+ getNonce(): Promise<number>;
9
+ getAddress(): string;
10
+ }
@@ -1,17 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EVMSigner = void 0;
4
- class EVMSigner {
5
- constructor(account, address, isBrowserWallet = false) {
6
- this.account = account;
7
- this.address = address;
8
- this.isBrowserWallet = isBrowserWallet;
9
- }
10
- getNonce() {
11
- return Promise.resolve(null);
12
- }
13
- getAddress() {
14
- return this.address;
15
- }
16
- }
17
- exports.EVMSigner = EVMSigner;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVMSigner = void 0;
4
+ class EVMSigner {
5
+ constructor(account, address, isBrowserWallet = false) {
6
+ this.account = account;
7
+ this.address = address;
8
+ this.isBrowserWallet = isBrowserWallet;
9
+ }
10
+ getNonce() {
11
+ return Promise.resolve(null);
12
+ }
13
+ getAddress() {
14
+ return this.address;
15
+ }
16
+ }
17
+ exports.EVMSigner = EVMSigner;