@atomiqlabs/chain-evm 1.0.0-dev.75 → 1.0.0-dev.77

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 -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 +197 -197
  25. package/dist/evm/btcrelay/EVMBtcRelay.js +435 -435
  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 +74 -74
  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 +94 -94
  49. package/dist/evm/chain/modules/EVMTransactions.js +286 -286
  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 +413 -404
  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 -22
  63. package/dist/evm/providers/ReconnectingWebSocketProvider.js +87 -87
  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 +79 -79
  69. package/dist/evm/spv_swap/EVMSpvVaultContract.js +482 -482
  70. package/dist/evm/spv_swap/EVMSpvVaultData.d.ts +39 -39
  71. package/dist/evm/spv_swap/EVMSpvVaultData.js +0 -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/EVMBrowserSigner.d.ts +5 -5
  115. package/dist/evm/wallet/EVMBrowserSigner.js +11 -11
  116. package/dist/evm/wallet/EVMPersistentSigner.d.ts +29 -29
  117. package/dist/evm/wallet/EVMPersistentSigner.js +222 -222
  118. package/dist/evm/wallet/EVMSigner.d.ts +11 -11
  119. package/dist/evm/wallet/EVMSigner.js +24 -24
  120. package/dist/index.d.ts +44 -44
  121. package/dist/index.js +60 -60
  122. package/dist/utils/Utils.d.ts +17 -17
  123. package/dist/utils/Utils.js +81 -81
  124. package/package.json +39 -39
  125. package/src/chains/botanix/BotanixChainType.ts +28 -28
  126. package/src/chains/botanix/BotanixInitializer.ts +171 -171
  127. package/src/chains/citrea/CitreaBtcRelay.ts +57 -57
  128. package/src/chains/citrea/CitreaChainType.ts +28 -28
  129. package/src/chains/citrea/CitreaFees.ts +77 -77
  130. package/src/chains/citrea/CitreaInitializer.ts +178 -178
  131. package/src/chains/citrea/CitreaSpvVaultContract.ts +75 -75
  132. package/src/chains/citrea/CitreaSwapContract.ts +102 -102
  133. package/src/chains/citrea/CitreaTokens.ts +21 -21
  134. package/src/evm/btcrelay/BtcRelayAbi.ts +258 -258
  135. package/src/evm/btcrelay/BtcRelayTypechain.ts +371 -371
  136. package/src/evm/btcrelay/EVMBtcRelay.ts +537 -537
  137. package/src/evm/btcrelay/headers/EVMBtcHeader.ts +109 -109
  138. package/src/evm/btcrelay/headers/EVMBtcStoredHeader.ts +152 -152
  139. package/src/evm/chain/EVMChainInterface.ts +155 -155
  140. package/src/evm/chain/EVMModule.ts +21 -21
  141. package/src/evm/chain/modules/ERC20Abi.ts +222 -222
  142. package/src/evm/chain/modules/EVMAddresses.ts +28 -28
  143. package/src/evm/chain/modules/EVMBlocks.ts +75 -75
  144. package/src/evm/chain/modules/EVMEvents.ts +139 -139
  145. package/src/evm/chain/modules/EVMFees.ts +104 -104
  146. package/src/evm/chain/modules/EVMSignatures.ts +76 -76
  147. package/src/evm/chain/modules/EVMTokens.ts +155 -155
  148. package/src/evm/chain/modules/EVMTransactions.ts +325 -325
  149. package/src/evm/contract/EVMContractBase.ts +63 -63
  150. package/src/evm/contract/EVMContractModule.ts +16 -16
  151. package/src/evm/contract/modules/EVMContractEvents.ts +102 -102
  152. package/src/evm/events/EVMChainEvents.ts +82 -82
  153. package/src/evm/events/EVMChainEventsBrowser.ts +534 -525
  154. package/src/evm/providers/JsonRpcProviderWithRetries.ts +24 -24
  155. package/src/evm/providers/ReconnectingWebSocketProvider.ts +101 -101
  156. package/src/evm/providers/SocketProvider.ts +368 -368
  157. package/src/evm/providers/WebSocketProviderWithRetries.ts +27 -27
  158. package/src/evm/spv_swap/EVMSpvVaultContract.ts +615 -615
  159. package/src/evm/spv_swap/EVMSpvVaultData.ts +224 -224
  160. package/src/evm/spv_swap/EVMSpvWithdrawalData.ts +70 -70
  161. package/src/evm/spv_swap/SpvVaultContractAbi.ts +846 -846
  162. package/src/evm/spv_swap/SpvVaultContractTypechain.ts +685 -685
  163. package/src/evm/swaps/EVMSwapContract.ts +600 -600
  164. package/src/evm/swaps/EVMSwapData.ts +378 -378
  165. package/src/evm/swaps/EVMSwapModule.ts +16 -16
  166. package/src/evm/swaps/EscrowManagerAbi.ts +982 -982
  167. package/src/evm/swaps/EscrowManagerTypechain.ts +723 -723
  168. package/src/evm/swaps/handlers/IHandler.ts +17 -17
  169. package/src/evm/swaps/handlers/claim/ClaimHandlers.ts +20 -20
  170. package/src/evm/swaps/handlers/claim/HashlockClaimHandler.ts +46 -46
  171. package/src/evm/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +82 -82
  172. package/src/evm/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +76 -76
  173. package/src/evm/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +46 -46
  174. package/src/evm/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +115 -115
  175. package/src/evm/swaps/handlers/refund/TimelockRefundHandler.ts +37 -37
  176. package/src/evm/swaps/modules/EVMLpVault.ts +154 -154
  177. package/src/evm/swaps/modules/EVMSwapClaim.ts +172 -172
  178. package/src/evm/swaps/modules/EVMSwapInit.ts +328 -328
  179. package/src/evm/swaps/modules/EVMSwapRefund.ts +229 -229
  180. package/src/evm/typechain/common.ts +131 -131
  181. package/src/evm/wallet/EVMBrowserSigner.ts +11 -11
  182. package/src/evm/wallet/EVMPersistentSigner.ts +298 -298
  183. package/src/evm/wallet/EVMSigner.ts +31 -31
  184. package/src/index.ts +53 -53
  185. package/src/utils/Utils.ts +92 -92
@@ -1,197 +1,197 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
4
- import { EVMBtcHeader } from "./headers/EVMBtcHeader";
5
- import { EVMContractBase } from "../contract/EVMContractBase";
6
- import { BtcRelay as BtcRelayTypechain } from "./BtcRelayTypechain";
7
- import { EVMBtcStoredHeader } from "./headers/EVMBtcStoredHeader";
8
- import { EVMSigner } from "../wallet/EVMSigner";
9
- import { EVMTx } from "../chain/modules/EVMTransactions";
10
- import { EVMChainInterface } from "../chain/EVMChainInterface";
11
- export declare class EVMBtcRelay<B extends BtcBlock> extends EVMContractBase<BtcRelayTypechain> implements BtcRelay<EVMBtcStoredHeader, EVMTx, B, EVMSigner> {
12
- static GasCosts: {
13
- GAS_PER_BLOCKHEADER: number;
14
- GAS_BASE_MAIN: number;
15
- GAS_PER_BLOCKHEADER_FORK: number;
16
- GAS_PER_BLOCKHEADER_FORKED: number;
17
- GAS_BASE_FORK: number;
18
- };
19
- SaveMainHeaders(signer: string, mainHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
20
- SaveShortForkHeaders(signer: string, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
21
- SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string, totalForkHeaders?: number): Promise<EVMTx>;
22
- bitcoinRpc: BitcoinRpc<B>;
23
- readonly maxHeadersPerTx: number;
24
- readonly maxForkHeadersPerTx: number;
25
- readonly maxShortForkHeadersPerTx: number;
26
- constructor(chainInterface: EVMChainInterface<any>, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress: string, contractDeploymentHeight?: number);
27
- /**
28
- * Computes subsequent commited headers as they will appear on the blockchain when transactions
29
- * are submitted & confirmed
30
- *
31
- * @param initialStoredHeader
32
- * @param syncedHeaders
33
- * @private
34
- */
35
- private computeCommitedHeaders;
36
- /**
37
- * A common logic for submitting blockheaders in a transaction
38
- *
39
- * @param signer
40
- * @param headers headers to sync to the btc relay
41
- * @param storedHeader current latest stored block header for a given fork
42
- * @param tipWork work of the current tip in a given fork
43
- * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
44
- * @param feeRate feeRate for the transaction
45
- * @param totalForkHeaders Total number of headers in a fork
46
- * @private
47
- */
48
- private _saveHeaders;
49
- private findStoredBlockheaderInTraces;
50
- private commitHashCache;
51
- private blockHashCache;
52
- private getBlock;
53
- private getBlockHeight;
54
- /**
55
- * Returns data about current main chain tip stored in the btc relay
56
- */
57
- getTipData(): Promise<{
58
- commitHash: string;
59
- blockhash: string;
60
- chainWork: Buffer;
61
- blockheight: number;
62
- }>;
63
- /**
64
- * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
65
- * btc relay contract is not synced up to the desired blockheight
66
- *
67
- * @param blockData
68
- * @param requiredBlockheight
69
- */
70
- retrieveLogAndBlockheight(blockData: {
71
- blockhash: string;
72
- }, requiredBlockheight?: number): Promise<{
73
- header: EVMBtcStoredHeader;
74
- height: number;
75
- } | null>;
76
- /**
77
- * Retrieves blockheader data by blockheader's commit hash,
78
- *
79
- * @param commitmentHashStr
80
- * @param blockData
81
- */
82
- retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
83
- blockhash: string;
84
- }): Promise<EVMBtcStoredHeader>;
85
- /**
86
- * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
87
- */
88
- retrieveLatestKnownBlockLog(): Promise<{
89
- resultStoredHeader: EVMBtcStoredHeader;
90
- resultBitcoinHeader: B;
91
- }>;
92
- /**
93
- * Saves blockheaders as a bitcoin main chain to the btc relay
94
- *
95
- * @param signer
96
- * @param mainHeaders
97
- * @param storedHeader
98
- * @param feeRate
99
- */
100
- saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, feeRate?: string): Promise<{
101
- forkId: number;
102
- lastStoredHeader: EVMBtcStoredHeader;
103
- tx: import("ethers").TransactionRequest;
104
- computedCommitedHeaders: EVMBtcStoredHeader[];
105
- }>;
106
- /**
107
- * Creates a new long fork and submits the headers to it
108
- *
109
- * @param signer
110
- * @param forkHeaders
111
- * @param storedHeader
112
- * @param tipWork
113
- * @param feeRate
114
- */
115
- saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
116
- forkId: number;
117
- lastStoredHeader: EVMBtcStoredHeader;
118
- tx: import("ethers").TransactionRequest;
119
- computedCommitedHeaders: EVMBtcStoredHeader[];
120
- }>;
121
- /**
122
- * Continues submitting blockheaders to a given fork
123
- *
124
- * @param signer
125
- * @param forkHeaders
126
- * @param storedHeader
127
- * @param forkId
128
- * @param tipWork
129
- * @param feeRate
130
- */
131
- saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
132
- forkId: number;
133
- lastStoredHeader: EVMBtcStoredHeader;
134
- tx: import("ethers").TransactionRequest;
135
- computedCommitedHeaders: EVMBtcStoredHeader[];
136
- }>;
137
- /**
138
- * Submits short fork with given blockheaders
139
- *
140
- * @param signer
141
- * @param forkHeaders
142
- * @param storedHeader
143
- * @param tipWork
144
- * @param feeRate
145
- */
146
- saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
147
- forkId: number;
148
- lastStoredHeader: EVMBtcStoredHeader;
149
- tx: import("ethers").TransactionRequest;
150
- computedCommitedHeaders: EVMBtcStoredHeader[];
151
- }>;
152
- /**
153
- * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
154
- *
155
- * @param requiredBlockheight
156
- * @param feeRate
157
- */
158
- estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
159
- /**
160
- * Returns fee required (in native token) to synchronize a single block to btc relay
161
- *
162
- * @param feeRate
163
- */
164
- getFeePerBlock(feeRate?: string): Promise<bigint>;
165
- /**
166
- * Gets fee rate required for submitting blockheaders to the main chain
167
- */
168
- getMainFeeRate(signer: string | null): Promise<string>;
169
- /**
170
- * Gets fee rate required for submitting blockheaders to the specific fork
171
- */
172
- getForkFeeRate(signer: string, forkId: number): Promise<string>;
173
- saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<EVMTx>;
174
- /**
175
- * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
176
- * requiredConfirmations
177
- * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
178
- * current chain tip & adds them to the txs array
179
- *
180
- * @param signer
181
- * @param btcRelay
182
- * @param btcTxs
183
- * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
184
- * txns are added here
185
- * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
186
- * to the required blockheight
187
- * @param feeRate Fee rate to use for synchronization transactions
188
- * @private
189
- */
190
- static getCommitedHeadersAndSynchronize(signer: string, btcRelay: EVMBtcRelay<any>, btcTxs: {
191
- blockheight: number;
192
- requiredConfirmations: number;
193
- blockhash: string;
194
- }[], txs: EVMTx[], synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>, feeRate?: string): Promise<{
195
- [blockhash: string]: EVMBtcStoredHeader;
196
- }>;
197
- }
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
4
+ import { EVMBtcHeader } from "./headers/EVMBtcHeader";
5
+ import { EVMContractBase } from "../contract/EVMContractBase";
6
+ import { BtcRelay as BtcRelayTypechain } from "./BtcRelayTypechain";
7
+ import { EVMBtcStoredHeader } from "./headers/EVMBtcStoredHeader";
8
+ import { EVMSigner } from "../wallet/EVMSigner";
9
+ import { EVMTx } from "../chain/modules/EVMTransactions";
10
+ import { EVMChainInterface } from "../chain/EVMChainInterface";
11
+ export declare class EVMBtcRelay<B extends BtcBlock> extends EVMContractBase<BtcRelayTypechain> implements BtcRelay<EVMBtcStoredHeader, EVMTx, B, EVMSigner> {
12
+ static GasCosts: {
13
+ GAS_PER_BLOCKHEADER: number;
14
+ GAS_BASE_MAIN: number;
15
+ GAS_PER_BLOCKHEADER_FORK: number;
16
+ GAS_PER_BLOCKHEADER_FORKED: number;
17
+ GAS_BASE_FORK: number;
18
+ };
19
+ SaveMainHeaders(signer: string, mainHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
20
+ SaveShortForkHeaders(signer: string, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string): Promise<EVMTx>;
21
+ SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: EVMBtcHeader[], storedHeader: EVMBtcStoredHeader, feeRate: string, totalForkHeaders?: number): Promise<EVMTx>;
22
+ bitcoinRpc: BitcoinRpc<B>;
23
+ readonly maxHeadersPerTx: number;
24
+ readonly maxForkHeadersPerTx: number;
25
+ readonly maxShortForkHeadersPerTx: number;
26
+ constructor(chainInterface: EVMChainInterface<any>, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress: string, contractDeploymentHeight?: number);
27
+ /**
28
+ * Computes subsequent commited headers as they will appear on the blockchain when transactions
29
+ * are submitted & confirmed
30
+ *
31
+ * @param initialStoredHeader
32
+ * @param syncedHeaders
33
+ * @private
34
+ */
35
+ private computeCommitedHeaders;
36
+ /**
37
+ * A common logic for submitting blockheaders in a transaction
38
+ *
39
+ * @param signer
40
+ * @param headers headers to sync to the btc relay
41
+ * @param storedHeader current latest stored block header for a given fork
42
+ * @param tipWork work of the current tip in a given fork
43
+ * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
44
+ * @param feeRate feeRate for the transaction
45
+ * @param totalForkHeaders Total number of headers in a fork
46
+ * @private
47
+ */
48
+ private _saveHeaders;
49
+ private findStoredBlockheaderInTraces;
50
+ private commitHashCache;
51
+ private blockHashCache;
52
+ private getBlock;
53
+ private getBlockHeight;
54
+ /**
55
+ * Returns data about current main chain tip stored in the btc relay
56
+ */
57
+ getTipData(): Promise<{
58
+ commitHash: string;
59
+ blockhash: string;
60
+ chainWork: Buffer;
61
+ blockheight: number;
62
+ }>;
63
+ /**
64
+ * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
65
+ * btc relay contract is not synced up to the desired blockheight
66
+ *
67
+ * @param blockData
68
+ * @param requiredBlockheight
69
+ */
70
+ retrieveLogAndBlockheight(blockData: {
71
+ blockhash: string;
72
+ }, requiredBlockheight?: number): Promise<{
73
+ header: EVMBtcStoredHeader;
74
+ height: number;
75
+ } | null>;
76
+ /**
77
+ * Retrieves blockheader data by blockheader's commit hash,
78
+ *
79
+ * @param commitmentHashStr
80
+ * @param blockData
81
+ */
82
+ retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
83
+ blockhash: string;
84
+ }): Promise<EVMBtcStoredHeader>;
85
+ /**
86
+ * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
87
+ */
88
+ retrieveLatestKnownBlockLog(): Promise<{
89
+ resultStoredHeader: EVMBtcStoredHeader;
90
+ resultBitcoinHeader: B;
91
+ }>;
92
+ /**
93
+ * Saves blockheaders as a bitcoin main chain to the btc relay
94
+ *
95
+ * @param signer
96
+ * @param mainHeaders
97
+ * @param storedHeader
98
+ * @param feeRate
99
+ */
100
+ saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, feeRate?: string): Promise<{
101
+ forkId: number;
102
+ lastStoredHeader: EVMBtcStoredHeader;
103
+ tx: import("ethers").TransactionRequest;
104
+ computedCommitedHeaders: EVMBtcStoredHeader[];
105
+ }>;
106
+ /**
107
+ * Creates a new long fork and submits the headers to it
108
+ *
109
+ * @param signer
110
+ * @param forkHeaders
111
+ * @param storedHeader
112
+ * @param tipWork
113
+ * @param feeRate
114
+ */
115
+ saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
116
+ forkId: number;
117
+ lastStoredHeader: EVMBtcStoredHeader;
118
+ tx: import("ethers").TransactionRequest;
119
+ computedCommitedHeaders: EVMBtcStoredHeader[];
120
+ }>;
121
+ /**
122
+ * Continues submitting blockheaders to a given fork
123
+ *
124
+ * @param signer
125
+ * @param forkHeaders
126
+ * @param storedHeader
127
+ * @param forkId
128
+ * @param tipWork
129
+ * @param feeRate
130
+ */
131
+ saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
132
+ forkId: number;
133
+ lastStoredHeader: EVMBtcStoredHeader;
134
+ tx: import("ethers").TransactionRequest;
135
+ computedCommitedHeaders: EVMBtcStoredHeader[];
136
+ }>;
137
+ /**
138
+ * Submits short fork with given blockheaders
139
+ *
140
+ * @param signer
141
+ * @param forkHeaders
142
+ * @param storedHeader
143
+ * @param tipWork
144
+ * @param feeRate
145
+ */
146
+ saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: EVMBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
147
+ forkId: number;
148
+ lastStoredHeader: EVMBtcStoredHeader;
149
+ tx: import("ethers").TransactionRequest;
150
+ computedCommitedHeaders: EVMBtcStoredHeader[];
151
+ }>;
152
+ /**
153
+ * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
154
+ *
155
+ * @param requiredBlockheight
156
+ * @param feeRate
157
+ */
158
+ estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
159
+ /**
160
+ * Returns fee required (in native token) to synchronize a single block to btc relay
161
+ *
162
+ * @param feeRate
163
+ */
164
+ getFeePerBlock(feeRate?: string): Promise<bigint>;
165
+ /**
166
+ * Gets fee rate required for submitting blockheaders to the main chain
167
+ */
168
+ getMainFeeRate(signer: string | null): Promise<string>;
169
+ /**
170
+ * Gets fee rate required for submitting blockheaders to the specific fork
171
+ */
172
+ getForkFeeRate(signer: string, forkId: number): Promise<string>;
173
+ saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<EVMTx>;
174
+ /**
175
+ * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
176
+ * requiredConfirmations
177
+ * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
178
+ * current chain tip & adds them to the txs array
179
+ *
180
+ * @param signer
181
+ * @param btcRelay
182
+ * @param btcTxs
183
+ * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
184
+ * txns are added here
185
+ * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
186
+ * to the required blockheight
187
+ * @param feeRate Fee rate to use for synchronization transactions
188
+ * @private
189
+ */
190
+ static getCommitedHeadersAndSynchronize(signer: string, btcRelay: EVMBtcRelay<any>, btcTxs: {
191
+ blockheight: number;
192
+ requiredConfirmations: number;
193
+ blockhash: string;
194
+ }[], txs: EVMTx[], synchronizer?: RelaySynchronizer<EVMBtcStoredHeader, EVMTx, any>, feeRate?: string): Promise<{
195
+ [blockhash: string]: EVMBtcStoredHeader;
196
+ }>;
197
+ }