@atomiqlabs/chain-evm 1.0.0-dev.100

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 (185) hide show
  1. package/LICENSE +201 -0
  2. package/dist/chains/botanix/BotanixChainType.d.ts +14 -0
  3. package/dist/chains/botanix/BotanixChainType.js +2 -0
  4. package/dist/chains/botanix/BotanixInitializer.d.ts +30 -0
  5. package/dist/chains/botanix/BotanixInitializer.js +125 -0
  6. package/dist/chains/citrea/CitreaBtcRelay.d.ts +21 -0
  7. package/dist/chains/citrea/CitreaBtcRelay.js +43 -0
  8. package/dist/chains/citrea/CitreaChainType.d.ts +14 -0
  9. package/dist/chains/citrea/CitreaChainType.js +2 -0
  10. package/dist/chains/citrea/CitreaFees.d.ts +29 -0
  11. package/dist/chains/citrea/CitreaFees.js +67 -0
  12. package/dist/chains/citrea/CitreaInitializer.d.ts +30 -0
  13. package/dist/chains/citrea/CitreaInitializer.js +132 -0
  14. package/dist/chains/citrea/CitreaSpvVaultContract.d.ts +15 -0
  15. package/dist/chains/citrea/CitreaSpvVaultContract.js +74 -0
  16. package/dist/chains/citrea/CitreaSwapContract.d.ts +22 -0
  17. package/dist/chains/citrea/CitreaSwapContract.js +96 -0
  18. package/dist/chains/citrea/CitreaTokens.d.ts +9 -0
  19. package/dist/chains/citrea/CitreaTokens.js +20 -0
  20. package/dist/evm/btcrelay/BtcRelayAbi.d.ts +198 -0
  21. package/dist/evm/btcrelay/BtcRelayAbi.js +261 -0
  22. package/dist/evm/btcrelay/BtcRelayTypechain.d.ts +172 -0
  23. package/dist/evm/btcrelay/BtcRelayTypechain.js +2 -0
  24. package/dist/evm/btcrelay/EVMBtcRelay.d.ts +197 -0
  25. package/dist/evm/btcrelay/EVMBtcRelay.js +435 -0
  26. package/dist/evm/btcrelay/headers/EVMBtcHeader.d.ts +33 -0
  27. package/dist/evm/btcrelay/headers/EVMBtcHeader.js +84 -0
  28. package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.d.ts +56 -0
  29. package/dist/evm/btcrelay/headers/EVMBtcStoredHeader.js +123 -0
  30. package/dist/evm/chain/EVMChainInterface.d.ts +60 -0
  31. package/dist/evm/chain/EVMChainInterface.js +107 -0
  32. package/dist/evm/chain/EVMModule.d.ts +9 -0
  33. package/dist/evm/chain/EVMModule.js +13 -0
  34. package/dist/evm/chain/modules/ERC20Abi.d.ts +168 -0
  35. package/dist/evm/chain/modules/ERC20Abi.js +225 -0
  36. package/dist/evm/chain/modules/EVMAddresses.d.ts +10 -0
  37. package/dist/evm/chain/modules/EVMAddresses.js +30 -0
  38. package/dist/evm/chain/modules/EVMBlocks.d.ts +27 -0
  39. package/dist/evm/chain/modules/EVMBlocks.js +73 -0
  40. package/dist/evm/chain/modules/EVMEvents.d.ts +46 -0
  41. package/dist/evm/chain/modules/EVMEvents.js +151 -0
  42. package/dist/evm/chain/modules/EVMFees.d.ts +36 -0
  43. package/dist/evm/chain/modules/EVMFees.js +74 -0
  44. package/dist/evm/chain/modules/EVMSignatures.d.ts +29 -0
  45. package/dist/evm/chain/modules/EVMSignatures.js +68 -0
  46. package/dist/evm/chain/modules/EVMTokens.d.ts +70 -0
  47. package/dist/evm/chain/modules/EVMTokens.js +142 -0
  48. package/dist/evm/chain/modules/EVMTransactions.d.ts +94 -0
  49. package/dist/evm/chain/modules/EVMTransactions.js +307 -0
  50. package/dist/evm/contract/EVMContractBase.d.ts +22 -0
  51. package/dist/evm/contract/EVMContractBase.js +34 -0
  52. package/dist/evm/contract/EVMContractModule.d.ts +8 -0
  53. package/dist/evm/contract/EVMContractModule.js +11 -0
  54. package/dist/evm/contract/modules/EVMContractEvents.d.ts +43 -0
  55. package/dist/evm/contract/modules/EVMContractEvents.js +76 -0
  56. package/dist/evm/events/EVMChainEvents.d.ts +22 -0
  57. package/dist/evm/events/EVMChainEvents.js +69 -0
  58. package/dist/evm/events/EVMChainEventsBrowser.d.ts +102 -0
  59. package/dist/evm/events/EVMChainEventsBrowser.js +412 -0
  60. package/dist/evm/providers/JsonRpcProviderWithRetries.d.ts +16 -0
  61. package/dist/evm/providers/JsonRpcProviderWithRetries.js +27 -0
  62. package/dist/evm/providers/ReconnectingWebSocketProvider.d.ts +22 -0
  63. package/dist/evm/providers/ReconnectingWebSocketProvider.js +91 -0
  64. package/dist/evm/providers/SocketProvider.d.ts +111 -0
  65. package/dist/evm/providers/SocketProvider.js +336 -0
  66. package/dist/evm/providers/WebSocketProviderWithRetries.d.ts +17 -0
  67. package/dist/evm/providers/WebSocketProviderWithRetries.js +23 -0
  68. package/dist/evm/spv_swap/EVMSpvVaultContract.d.ts +110 -0
  69. package/dist/evm/spv_swap/EVMSpvVaultContract.js +629 -0
  70. package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +40 -0
  71. package/dist/evm/spv_swap/EVMSpvVaultData.js +184 -0
  72. package/dist/evm/spv_swap/EVMSpvWithdrawalData.d.ts +19 -0
  73. package/dist/evm/spv_swap/EVMSpvWithdrawalData.js +55 -0
  74. package/dist/evm/spv_swap/SpvVaultContractAbi.d.ts +91 -0
  75. package/dist/evm/spv_swap/SpvVaultContractAbi.js +849 -0
  76. package/dist/evm/spv_swap/SpvVaultContractTypechain.d.ts +450 -0
  77. package/dist/evm/spv_swap/SpvVaultContractTypechain.js +2 -0
  78. package/dist/evm/swaps/EVMSwapContract.d.ts +199 -0
  79. package/dist/evm/swaps/EVMSwapContract.js +394 -0
  80. package/dist/evm/swaps/EVMSwapData.d.ts +66 -0
  81. package/dist/evm/swaps/EVMSwapData.js +260 -0
  82. package/dist/evm/swaps/EVMSwapModule.d.ts +9 -0
  83. package/dist/evm/swaps/EVMSwapModule.js +11 -0
  84. package/dist/evm/swaps/EscrowManagerAbi.d.ts +120 -0
  85. package/dist/evm/swaps/EscrowManagerAbi.js +985 -0
  86. package/dist/evm/swaps/EscrowManagerTypechain.d.ts +475 -0
  87. package/dist/evm/swaps/EscrowManagerTypechain.js +2 -0
  88. package/dist/evm/swaps/handlers/IHandler.d.ts +13 -0
  89. package/dist/evm/swaps/handlers/IHandler.js +2 -0
  90. package/dist/evm/swaps/handlers/claim/ClaimHandlers.d.ts +10 -0
  91. package/dist/evm/swaps/handlers/claim/ClaimHandlers.js +13 -0
  92. package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.d.ts +20 -0
  93. package/dist/evm/swaps/handlers/claim/HashlockClaimHandler.js +39 -0
  94. package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -0
  95. package/dist/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +59 -0
  96. package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -0
  97. package/dist/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +51 -0
  98. package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +21 -0
  99. package/dist/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +28 -0
  100. package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +48 -0
  101. package/dist/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +63 -0
  102. package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -0
  103. package/dist/evm/swaps/handlers/refund/TimelockRefundHandler.js +28 -0
  104. package/dist/evm/swaps/modules/EVMLpVault.d.ts +69 -0
  105. package/dist/evm/swaps/modules/EVMLpVault.js +134 -0
  106. package/dist/evm/swaps/modules/EVMSwapClaim.d.ts +54 -0
  107. package/dist/evm/swaps/modules/EVMSwapClaim.js +137 -0
  108. package/dist/evm/swaps/modules/EVMSwapInit.d.ts +88 -0
  109. package/dist/evm/swaps/modules/EVMSwapInit.js +274 -0
  110. package/dist/evm/swaps/modules/EVMSwapRefund.d.ts +62 -0
  111. package/dist/evm/swaps/modules/EVMSwapRefund.js +167 -0
  112. package/dist/evm/typechain/common.d.ts +50 -0
  113. package/dist/evm/typechain/common.js +2 -0
  114. package/dist/evm/wallet/EVMBrowserSigner.d.ts +5 -0
  115. package/dist/evm/wallet/EVMBrowserSigner.js +11 -0
  116. package/dist/evm/wallet/EVMPersistentSigner.d.ts +29 -0
  117. package/dist/evm/wallet/EVMPersistentSigner.js +230 -0
  118. package/dist/evm/wallet/EVMSigner.d.ts +12 -0
  119. package/dist/evm/wallet/EVMSigner.js +28 -0
  120. package/dist/index.d.ts +44 -0
  121. package/dist/index.js +60 -0
  122. package/dist/utils/Utils.d.ts +19 -0
  123. package/dist/utils/Utils.js +98 -0
  124. package/package.json +39 -0
  125. package/src/chains/botanix/BotanixChainType.ts +30 -0
  126. package/src/chains/botanix/BotanixInitializer.ts +175 -0
  127. package/src/chains/citrea/CitreaBtcRelay.ts +58 -0
  128. package/src/chains/citrea/CitreaChainType.ts +30 -0
  129. package/src/chains/citrea/CitreaFees.ts +77 -0
  130. package/src/chains/citrea/CitreaInitializer.ts +182 -0
  131. package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -0
  132. package/src/chains/citrea/CitreaSwapContract.ts +103 -0
  133. package/src/chains/citrea/CitreaTokens.ts +22 -0
  134. package/src/evm/btcrelay/BtcRelayAbi.ts +258 -0
  135. package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -0
  136. package/src/evm/btcrelay/EVMBtcRelay.ts +537 -0
  137. package/src/evm/btcrelay/headers/EVMBtcHeader.ts +110 -0
  138. package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +153 -0
  139. package/src/evm/chain/EVMChainInterface.ts +189 -0
  140. package/src/evm/chain/EVMModule.ts +21 -0
  141. package/src/evm/chain/modules/ERC20Abi.ts +222 -0
  142. package/src/evm/chain/modules/EVMAddresses.ts +29 -0
  143. package/src/evm/chain/modules/EVMBlocks.ts +86 -0
  144. package/src/evm/chain/modules/EVMEvents.ts +182 -0
  145. package/src/evm/chain/modules/EVMFees.ts +104 -0
  146. package/src/evm/chain/modules/EVMSignatures.ts +76 -0
  147. package/src/evm/chain/modules/EVMTokens.ts +155 -0
  148. package/src/evm/chain/modules/EVMTransactions.ts +346 -0
  149. package/src/evm/contract/EVMContractBase.ts +63 -0
  150. package/src/evm/contract/EVMContractModule.ts +16 -0
  151. package/src/evm/contract/modules/EVMContractEvents.ts +104 -0
  152. package/src/evm/events/EVMChainEvents.ts +82 -0
  153. package/src/evm/events/EVMChainEventsBrowser.ts +533 -0
  154. package/src/evm/providers/JsonRpcProviderWithRetries.ts +34 -0
  155. package/src/evm/providers/ReconnectingWebSocketProvider.ts +107 -0
  156. package/src/evm/providers/SocketProvider.ts +371 -0
  157. package/src/evm/providers/WebSocketProviderWithRetries.ts +35 -0
  158. package/src/evm/spv_swap/EVMSpvVaultContract.ts +779 -0
  159. package/src/evm/spv_swap/EVMSpvVaultData.ts +228 -0
  160. package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -0
  161. package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -0
  162. package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -0
  163. package/src/evm/swaps/EVMSwapContract.ts +621 -0
  164. package/src/evm/swaps/EVMSwapData.ts +378 -0
  165. package/src/evm/swaps/EVMSwapModule.ts +16 -0
  166. package/src/evm/swaps/EscrowManagerAbi.ts +982 -0
  167. package/src/evm/swaps/EscrowManagerTypechain.ts +723 -0
  168. package/src/evm/swaps/handlers/IHandler.ts +17 -0
  169. package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -0
  170. package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +47 -0
  171. package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -0
  172. package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -0
  173. package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -0
  174. package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -0
  175. package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +38 -0
  176. package/src/evm/swaps/modules/EVMLpVault.ts +155 -0
  177. package/src/evm/swaps/modules/EVMSwapClaim.ts +173 -0
  178. package/src/evm/swaps/modules/EVMSwapInit.ts +329 -0
  179. package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -0
  180. package/src/evm/typechain/common.ts +131 -0
  181. package/src/evm/wallet/EVMBrowserSigner.ts +12 -0
  182. package/src/evm/wallet/EVMPersistentSigner.ts +307 -0
  183. package/src/evm/wallet/EVMSigner.ts +35 -0
  184. package/src/index.ts +53 -0
  185. package/src/utils/Utils.ts +111 -0
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVMSpvVaultData = exports.getVaultUtxoFromState = exports.getVaultParamsCommitment = void 0;
4
+ const base_1 = require("@atomiqlabs/base");
5
+ const buffer_1 = require("buffer");
6
+ const EVMSpvWithdrawalData_1 = require("./EVMSpvWithdrawalData");
7
+ const ethers_1 = require("ethers");
8
+ const ethers_2 = require("ethers");
9
+ const EVMAddresses_1 = require("../chain/modules/EVMAddresses");
10
+ function getVaultParamsCommitment(vaultParams) {
11
+ return (0, ethers_2.keccak256)(ethers_2.AbiCoder.defaultAbiCoder().encode(["address", "address", "address", "uint192", "uint192", "uint256"], [vaultParams.btcRelayContract, vaultParams.token0, vaultParams.token1, vaultParams.token0Multiplier, vaultParams.token1Multiplier, vaultParams.confirmations]));
12
+ }
13
+ exports.getVaultParamsCommitment = getVaultParamsCommitment;
14
+ function getVaultUtxoFromState(state) {
15
+ const txHash = buffer_1.Buffer.from((0, ethers_1.hexlify)(state.utxoTxHash).substring(2), "hex");
16
+ return txHash.reverse().toString("hex") + ":" + BigInt(state.utxoVout).toString(10);
17
+ }
18
+ exports.getVaultUtxoFromState = getVaultUtxoFromState;
19
+ class EVMSpvVaultData extends base_1.SpvVaultData {
20
+ constructor(ownerOrObj, vaultId, state, params, initialUtxo) {
21
+ super();
22
+ if (typeof (ownerOrObj) === "string") {
23
+ this.owner = ownerOrObj;
24
+ this.vaultId = vaultId;
25
+ this.relayContract = params.btcRelayContract;
26
+ this.token0 = {
27
+ token: params.token0,
28
+ multiplier: BigInt(params.token0Multiplier),
29
+ rawAmount: BigInt(state.token0Amount)
30
+ };
31
+ this.token1 = {
32
+ token: params.token1,
33
+ multiplier: BigInt(params.token1Multiplier),
34
+ rawAmount: BigInt(state.token1Amount)
35
+ };
36
+ this.utxo = getVaultUtxoFromState(state);
37
+ this.confirmations = Number(params.confirmations);
38
+ this.withdrawCount = Number(state.withdrawCount);
39
+ this.depositCount = Number(state.depositCount);
40
+ this.initialUtxo = initialUtxo;
41
+ }
42
+ else {
43
+ this.owner = ownerOrObj.owner;
44
+ this.vaultId = BigInt(ownerOrObj.vaultId);
45
+ this.relayContract = ownerOrObj.relayContract;
46
+ this.token0 = {
47
+ token: ownerOrObj.token0.token,
48
+ multiplier: BigInt(ownerOrObj.token0.multiplier),
49
+ rawAmount: BigInt(ownerOrObj.token0.rawAmount)
50
+ };
51
+ this.token1 = {
52
+ token: ownerOrObj.token1.token,
53
+ multiplier: BigInt(ownerOrObj.token1.multiplier),
54
+ rawAmount: BigInt(ownerOrObj.token1.rawAmount)
55
+ };
56
+ this.utxo = ownerOrObj.utxo;
57
+ this.confirmations = ownerOrObj.confirmations;
58
+ this.withdrawCount = ownerOrObj.withdrawCount;
59
+ this.depositCount = ownerOrObj.depositCount;
60
+ this.initialUtxo = ownerOrObj.initialUtxo;
61
+ }
62
+ }
63
+ getBalances() {
64
+ return [
65
+ { ...this.token0, scaledAmount: this.token0.rawAmount * this.token0.multiplier },
66
+ { ...this.token1, scaledAmount: this.token1.rawAmount * this.token1.multiplier }
67
+ ];
68
+ }
69
+ getConfirmations() {
70
+ return this.confirmations;
71
+ }
72
+ getOwner() {
73
+ return this.owner;
74
+ }
75
+ getTokenData() {
76
+ return [this.token0, this.token1];
77
+ }
78
+ getUtxo() {
79
+ return this.isOpened() ? this.utxo : this.initialUtxo;
80
+ }
81
+ getVaultId() {
82
+ return this.vaultId;
83
+ }
84
+ getWithdrawalCount() {
85
+ return this.withdrawCount;
86
+ }
87
+ isOpened() {
88
+ return this.utxo !== "0000000000000000000000000000000000000000000000000000000000000000:0";
89
+ }
90
+ serialize() {
91
+ return {
92
+ type: "EVM",
93
+ owner: this.owner,
94
+ vaultId: this.vaultId.toString(10),
95
+ relayContract: this.relayContract,
96
+ token0: {
97
+ token: this.token0.token,
98
+ multiplier: this.token0.multiplier.toString(10),
99
+ rawAmount: this.token0.rawAmount.toString(10)
100
+ },
101
+ token1: {
102
+ token: this.token1.token,
103
+ multiplier: this.token1.multiplier.toString(10),
104
+ rawAmount: this.token1.rawAmount.toString(10)
105
+ },
106
+ utxo: this.utxo,
107
+ confirmations: this.confirmations,
108
+ withdrawCount: this.withdrawCount,
109
+ depositCount: this.depositCount,
110
+ initialUtxo: this.initialUtxo
111
+ };
112
+ }
113
+ updateState(withdrawalTxOrEvent) {
114
+ if (withdrawalTxOrEvent instanceof base_1.SpvVaultClaimEvent) {
115
+ if (withdrawalTxOrEvent.withdrawCount <= this.withdrawCount)
116
+ return;
117
+ this.token0.rawAmount -= withdrawalTxOrEvent.amounts[0];
118
+ this.token1.rawAmount -= withdrawalTxOrEvent.amounts[1];
119
+ this.withdrawCount = withdrawalTxOrEvent.withdrawCount;
120
+ this.utxo = withdrawalTxOrEvent.btcTxId + ":0";
121
+ }
122
+ if (withdrawalTxOrEvent instanceof base_1.SpvVaultCloseEvent) {
123
+ this.token0.rawAmount = 0n;
124
+ this.token1.rawAmount = 0n;
125
+ this.utxo = "0000000000000000000000000000000000000000000000000000000000000000:0";
126
+ }
127
+ if (withdrawalTxOrEvent instanceof base_1.SpvVaultOpenEvent) {
128
+ if (this.isOpened())
129
+ return;
130
+ this.utxo = withdrawalTxOrEvent.btcTxId + ":" + withdrawalTxOrEvent.vout;
131
+ }
132
+ if (withdrawalTxOrEvent instanceof base_1.SpvVaultDepositEvent) {
133
+ if (withdrawalTxOrEvent.depositCount <= this.depositCount)
134
+ return;
135
+ this.token0.rawAmount += withdrawalTxOrEvent.amounts[0];
136
+ this.token1.rawAmount += withdrawalTxOrEvent.amounts[1];
137
+ this.depositCount = withdrawalTxOrEvent.depositCount;
138
+ }
139
+ if (withdrawalTxOrEvent instanceof EVMSpvWithdrawalData_1.EVMSpvWithdrawalData) {
140
+ if (withdrawalTxOrEvent.getSpentVaultUtxo() !== this.utxo)
141
+ return;
142
+ const amounts = withdrawalTxOrEvent.getTotalOutput();
143
+ this.token0.rawAmount -= amounts[0];
144
+ this.token1.rawAmount -= amounts[1];
145
+ this.withdrawCount++;
146
+ this.utxo = withdrawalTxOrEvent.btcTx.txid + ":0";
147
+ }
148
+ }
149
+ getDepositCount() {
150
+ return this.depositCount;
151
+ }
152
+ getVaultParamsStruct() {
153
+ return {
154
+ btcRelayContract: this.relayContract,
155
+ token0: this.token0.token,
156
+ token1: this.token1.token,
157
+ token0Multiplier: this.token0.multiplier,
158
+ token1Multiplier: this.token1.multiplier,
159
+ confirmations: this.confirmations
160
+ };
161
+ }
162
+ static randomVault() {
163
+ const spvVaultParams = {
164
+ btcRelayContract: EVMAddresses_1.EVMAddresses.randomAddress(),
165
+ token0: EVMAddresses_1.EVMAddresses.randomAddress(),
166
+ token1: EVMAddresses_1.EVMAddresses.randomAddress(),
167
+ token0Multiplier: 1n,
168
+ token1Multiplier: 1n,
169
+ confirmations: 3n,
170
+ };
171
+ return new EVMSpvVaultData(EVMAddresses_1.EVMAddresses.randomAddress(), 0n, {
172
+ spvVaultParametersCommitment: getVaultParamsCommitment(spvVaultParams),
173
+ utxoTxHash: (0, ethers_1.randomBytes)(32),
174
+ utxoVout: 0n,
175
+ openBlockheight: 0n,
176
+ withdrawCount: 0n,
177
+ depositCount: 0n,
178
+ token0Amount: 0n,
179
+ token1Amount: 0n
180
+ }, spvVaultParams);
181
+ }
182
+ }
183
+ exports.EVMSpvVaultData = EVMSpvVaultData;
184
+ base_1.SpvVaultData.deserializers["EVM"] = EVMSpvVaultData;
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { SpvWithdrawalTransactionData } from "@atomiqlabs/base";
4
+ import { Buffer } from "buffer";
5
+ import { BitcoinVaultTransactionDataStruct } from "./SpvVaultContractTypechain";
6
+ export declare class EVMSpvWithdrawalData extends SpvWithdrawalTransactionData {
7
+ private getExecutionHashWith0x;
8
+ protected fromOpReturnData(data: Buffer): {
9
+ recipient: string;
10
+ rawAmounts: bigint[];
11
+ executionHash: string;
12
+ };
13
+ isRecipient(address: string): boolean;
14
+ getFrontingId(): string;
15
+ getTxHash(): string;
16
+ getFrontingAmount(): bigint[];
17
+ serialize(): any;
18
+ serializeToStruct(): BitcoinVaultTransactionDataStruct;
19
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVMSpvWithdrawalData = void 0;
4
+ const base_1 = require("@atomiqlabs/base");
5
+ const buffer_1 = require("buffer");
6
+ const EVMSpvVaultContract_1 = require("./EVMSpvVaultContract");
7
+ const ethers_1 = require("ethers");
8
+ class EVMSpvWithdrawalData extends base_1.SpvWithdrawalTransactionData {
9
+ getExecutionHashWith0x() {
10
+ return this.executionHash == null ? ethers_1.ZeroHash : (this.executionHash.startsWith("0x") ? this.executionHash : "0x" + this.executionHash);
11
+ }
12
+ fromOpReturnData(data) {
13
+ return EVMSpvVaultContract_1.EVMSpvVaultContract.fromOpReturnData(data);
14
+ }
15
+ isRecipient(address) {
16
+ return this.getRecipient().toLowerCase() === address.toLowerCase();
17
+ }
18
+ getFrontingId() {
19
+ const callerFee = this.getCallerFee();
20
+ const frontingFee = this.getFrontingFee();
21
+ const txDataHash = (0, ethers_1.keccak256)(ethers_1.AbiCoder.defaultAbiCoder().encode(["address", "uint64", "uint64", "uint64", "uint64", "uint64", "uint64", "uint64", "bytes32", "uint256"], [this.recipient, this.rawAmounts[0], this.rawAmounts[1], callerFee[0], callerFee[1], frontingFee[0], frontingFee[1], this.getExecutionFee()[0], this.getExecutionHashWith0x(), this.executionExpiry]));
22
+ return (0, ethers_1.keccak256)(ethers_1.AbiCoder.defaultAbiCoder().encode(["bytes32", "bytes32"], [txDataHash, this.getTxHash()])).substring(2);
23
+ }
24
+ getTxHash() {
25
+ return "0x" + buffer_1.Buffer.from(this.btcTx.txid, "hex").reverse().toString("hex");
26
+ }
27
+ getFrontingAmount() {
28
+ return [this.rawAmounts[0] + this.getExecutionFee()[0], this.rawAmounts[1]];
29
+ }
30
+ serialize() {
31
+ return {
32
+ type: "EVM",
33
+ ...super.serialize()
34
+ };
35
+ }
36
+ serializeToStruct() {
37
+ const callerFee = this.getCallerFee();
38
+ const frontingFee = this.getFrontingFee();
39
+ const executionFee = this.getExecutionFee();
40
+ return {
41
+ recipient: this.recipient,
42
+ amount0: this.rawAmounts[0],
43
+ amount1: this.rawAmounts[1] ?? 0n,
44
+ callerFee0: callerFee[0],
45
+ callerFee1: callerFee[1] ?? 0n,
46
+ frontingFee0: frontingFee[0],
47
+ frontingFee1: frontingFee[1] ?? 0n,
48
+ executionHandlerFeeAmount0: executionFee[0],
49
+ executionHash: this.getExecutionHashWith0x(),
50
+ executionExpiry: BigInt(this.executionExpiry)
51
+ };
52
+ }
53
+ }
54
+ exports.EVMSpvWithdrawalData = EVMSpvWithdrawalData;
55
+ base_1.SpvWithdrawalTransactionData.deserializers["EVM"] = EVMSpvWithdrawalData;
@@ -0,0 +1,91 @@
1
+ export declare const SpvVaultContractAbi: ({
2
+ inputs: {
3
+ internalType: string;
4
+ name: string;
5
+ type: string;
6
+ }[];
7
+ stateMutability: string;
8
+ type: string;
9
+ name?: undefined;
10
+ anonymous?: undefined;
11
+ outputs?: undefined;
12
+ } | {
13
+ inputs: {
14
+ internalType: string;
15
+ name: string;
16
+ type: string;
17
+ }[];
18
+ name: string;
19
+ type: string;
20
+ stateMutability?: undefined;
21
+ anonymous?: undefined;
22
+ outputs?: undefined;
23
+ } | {
24
+ anonymous: boolean;
25
+ inputs: ({
26
+ indexed: boolean;
27
+ internalType: string;
28
+ name: string;
29
+ type: string;
30
+ components?: undefined;
31
+ } | {
32
+ components: {
33
+ internalType: string;
34
+ name: string;
35
+ type: string;
36
+ }[];
37
+ indexed: boolean;
38
+ internalType: string;
39
+ name: string;
40
+ type: string;
41
+ })[];
42
+ name: string;
43
+ type: string;
44
+ stateMutability?: undefined;
45
+ outputs?: undefined;
46
+ } | {
47
+ inputs: ({
48
+ internalType: string;
49
+ name: string;
50
+ type: string;
51
+ components?: undefined;
52
+ } | {
53
+ components: {
54
+ internalType: string;
55
+ name: string;
56
+ type: string;
57
+ }[];
58
+ internalType: string;
59
+ name: string;
60
+ type: string;
61
+ })[];
62
+ name: string;
63
+ outputs: {
64
+ internalType: string;
65
+ name: string;
66
+ type: string;
67
+ }[];
68
+ stateMutability: string;
69
+ type: string;
70
+ anonymous?: undefined;
71
+ } | {
72
+ inputs: {
73
+ internalType: string;
74
+ name: string;
75
+ type: string;
76
+ }[];
77
+ name: string;
78
+ outputs: {
79
+ components: {
80
+ internalType: string;
81
+ name: string;
82
+ type: string;
83
+ }[];
84
+ internalType: string;
85
+ name: string;
86
+ type: string;
87
+ }[];
88
+ stateMutability: string;
89
+ type: string;
90
+ anonymous?: undefined;
91
+ })[];