@atomiqlabs/chain-starknet 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/LICENSE +201 -0
  2. package/dist/get_serialized_block.d.ts +1 -0
  3. package/dist/get_serialized_block.js +28 -0
  4. package/dist/index.d.ts +34 -0
  5. package/dist/index.js +50 -0
  6. package/dist/starknet/StarknetChainType.d.ts +9 -0
  7. package/dist/starknet/StarknetChainType.js +2 -0
  8. package/dist/starknet/StarknetInitializer.d.ts +18 -0
  9. package/dist/starknet/StarknetInitializer.js +49 -0
  10. package/dist/starknet/base/StarknetAction.d.ts +27 -0
  11. package/dist/starknet/base/StarknetAction.js +73 -0
  12. package/dist/starknet/base/StarknetBase.d.ts +34 -0
  13. package/dist/starknet/base/StarknetBase.js +29 -0
  14. package/dist/starknet/base/StarknetModule.d.ts +14 -0
  15. package/dist/starknet/base/StarknetModule.js +13 -0
  16. package/dist/starknet/base/modules/ERC20Abi.d.ts +755 -0
  17. package/dist/starknet/base/modules/ERC20Abi.js +1032 -0
  18. package/dist/starknet/base/modules/StarknetAccounts.d.ts +6 -0
  19. package/dist/starknet/base/modules/StarknetAccounts.js +24 -0
  20. package/dist/starknet/base/modules/StarknetAddresses.d.ts +9 -0
  21. package/dist/starknet/base/modules/StarknetAddresses.js +26 -0
  22. package/dist/starknet/base/modules/StarknetBlocks.d.ts +19 -0
  23. package/dist/starknet/base/modules/StarknetBlocks.js +49 -0
  24. package/dist/starknet/base/modules/StarknetEvents.d.ts +44 -0
  25. package/dist/starknet/base/modules/StarknetEvents.js +88 -0
  26. package/dist/starknet/base/modules/StarknetFees.d.ts +55 -0
  27. package/dist/starknet/base/modules/StarknetFees.js +102 -0
  28. package/dist/starknet/base/modules/StarknetSignatures.d.ts +30 -0
  29. package/dist/starknet/base/modules/StarknetSignatures.js +71 -0
  30. package/dist/starknet/base/modules/StarknetTokens.d.ts +67 -0
  31. package/dist/starknet/base/modules/StarknetTokens.js +97 -0
  32. package/dist/starknet/base/modules/StarknetTransactions.d.ts +87 -0
  33. package/dist/starknet/base/modules/StarknetTransactions.js +226 -0
  34. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -0
  35. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -0
  36. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +166 -0
  37. package/dist/starknet/btcrelay/StarknetBtcRelay.js +323 -0
  38. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +32 -0
  39. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -0
  40. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +52 -0
  41. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -0
  42. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -0
  43. package/dist/starknet/contract/StarknetContractBase.js +18 -0
  44. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +40 -0
  45. package/dist/starknet/contract/modules/StarknetContractEvents.js +77 -0
  46. package/dist/starknet/events/StarknetChainEvents.d.ts +19 -0
  47. package/dist/starknet/events/StarknetChainEvents.js +51 -0
  48. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +73 -0
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +210 -0
  50. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +445 -0
  51. package/dist/starknet/swaps/EscrowManagerAbi.js +601 -0
  52. package/dist/starknet/swaps/StarknetSwapContract.d.ts +215 -0
  53. package/dist/starknet/swaps/StarknetSwapContract.js +452 -0
  54. package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -0
  55. package/dist/starknet/swaps/StarknetSwapData.js +316 -0
  56. package/dist/starknet/swaps/StarknetSwapModule.d.ts +9 -0
  57. package/dist/starknet/swaps/StarknetSwapModule.js +12 -0
  58. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -0
  59. package/dist/starknet/swaps/handlers/IHandler.js +2 -0
  60. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -0
  61. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -0
  62. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +22 -0
  63. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -0
  64. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +25 -0
  65. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -0
  66. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +26 -0
  67. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -0
  68. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -0
  69. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +29 -0
  70. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +64 -0
  71. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +86 -0
  72. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -0
  73. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -0
  74. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +69 -0
  75. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -0
  76. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -0
  77. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -0
  78. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +84 -0
  79. package/dist/starknet/swaps/modules/StarknetSwapInit.js +164 -0
  80. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +64 -0
  81. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +131 -0
  82. package/dist/starknet/swaps/modules/SwapClaim.d.ts +54 -0
  83. package/dist/starknet/swaps/modules/SwapClaim.js +115 -0
  84. package/dist/starknet/swaps/modules/SwapInit.d.ts +79 -0
  85. package/dist/starknet/swaps/modules/SwapInit.js +174 -0
  86. package/dist/starknet/swaps/modules/SwapRefund.d.ts +63 -0
  87. package/dist/starknet/swaps/modules/SwapRefund.js +149 -0
  88. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +6 -0
  89. package/dist/starknet/wallet/StarknetKeypairWallet.js +26 -0
  90. package/dist/starknet/wallet/StarknetSigner.d.ts +12 -0
  91. package/dist/starknet/wallet/StarknetSigner.js +46 -0
  92. package/dist/utils/Utils.d.ts +38 -0
  93. package/dist/utils/Utils.js +255 -0
  94. package/package.json +39 -0
  95. package/src/index.ts +41 -0
  96. package/src/starknet/StarknetChainType.ts +20 -0
  97. package/src/starknet/StarknetInitializer.ts +75 -0
  98. package/src/starknet/base/StarknetAction.ts +90 -0
  99. package/src/starknet/base/StarknetBase.ts +56 -0
  100. package/src/starknet/base/StarknetModule.ts +20 -0
  101. package/src/starknet/base/modules/ERC20Abi.ts +1029 -0
  102. package/src/starknet/base/modules/StarknetAccounts.ts +26 -0
  103. package/src/starknet/base/modules/StarknetAddresses.ts +23 -0
  104. package/src/starknet/base/modules/StarknetBlocks.ts +59 -0
  105. package/src/starknet/base/modules/StarknetEvents.ts +105 -0
  106. package/src/starknet/base/modules/StarknetFees.ts +136 -0
  107. package/src/starknet/base/modules/StarknetSignatures.ts +91 -0
  108. package/src/starknet/base/modules/StarknetTokens.ts +116 -0
  109. package/src/starknet/base/modules/StarknetTransactions.ts +254 -0
  110. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -0
  111. package/src/starknet/btcrelay/StarknetBtcRelay.ts +415 -0
  112. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +101 -0
  113. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +142 -0
  114. package/src/starknet/contract/StarknetContractBase.ts +29 -0
  115. package/src/starknet/contract/modules/StarknetContractEvents.ts +108 -0
  116. package/src/starknet/events/StarknetChainEvents.ts +63 -0
  117. package/src/starknet/events/StarknetChainEventsBrowser.ts +289 -0
  118. package/src/starknet/swaps/EscrowManagerAbi.ts +600 -0
  119. package/src/starknet/swaps/StarknetSwapContract.ts +694 -0
  120. package/src/starknet/swaps/StarknetSwapData.ts +441 -0
  121. package/src/starknet/swaps/StarknetSwapModule.ts +17 -0
  122. package/src/starknet/swaps/handlers/IHandler.ts +20 -0
  123. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -0
  124. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +54 -0
  125. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -0
  126. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -0
  127. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +49 -0
  128. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +151 -0
  129. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +39 -0
  130. package/src/starknet/swaps/modules/StarknetLpVault.ts +148 -0
  131. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +142 -0
  132. package/src/starknet/swaps/modules/StarknetSwapInit.ts +226 -0
  133. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +202 -0
  134. package/src/starknet/wallet/StarknetKeypairWallet.ts +34 -0
  135. package/src/starknet/wallet/StarknetSigner.ts +55 -0
  136. package/src/utils/Utils.ts +247 -0
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BtcRelayAbi = void 0;
4
+ exports.BtcRelayAbi = [
5
+ {
6
+ "type": "impl",
7
+ "name": "BtcRelayImpl",
8
+ "interface_name": "btc_relay::IBtcRelay"
9
+ },
10
+ {
11
+ "type": "struct",
12
+ "name": "btc_relay::structs::blockheader::BlockHeader",
13
+ "members": [
14
+ {
15
+ "name": "reversed_version",
16
+ "type": "core::integer::u32"
17
+ },
18
+ {
19
+ "name": "previous_blockhash",
20
+ "type": "[core::integer::u32; 8]"
21
+ },
22
+ {
23
+ "name": "merkle_root",
24
+ "type": "[core::integer::u32; 8]"
25
+ },
26
+ {
27
+ "name": "reversed_timestamp",
28
+ "type": "core::integer::u32"
29
+ },
30
+ {
31
+ "name": "nbits",
32
+ "type": "core::integer::u32"
33
+ },
34
+ {
35
+ "name": "nonce",
36
+ "type": "core::integer::u32"
37
+ }
38
+ ]
39
+ },
40
+ {
41
+ "type": "struct",
42
+ "name": "core::array::Span::<btc_relay::structs::blockheader::BlockHeader>",
43
+ "members": [
44
+ {
45
+ "name": "snapshot",
46
+ "type": "@core::array::Array::<btc_relay::structs::blockheader::BlockHeader>"
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "type": "struct",
52
+ "name": "core::integer::u256",
53
+ "members": [
54
+ {
55
+ "name": "low",
56
+ "type": "core::integer::u128"
57
+ },
58
+ {
59
+ "name": "high",
60
+ "type": "core::integer::u128"
61
+ }
62
+ ]
63
+ },
64
+ {
65
+ "type": "struct",
66
+ "name": "btc_relay::structs::stored_blockheader::StoredBlockHeader",
67
+ "members": [
68
+ {
69
+ "name": "blockheader",
70
+ "type": "btc_relay::structs::blockheader::BlockHeader"
71
+ },
72
+ {
73
+ "name": "block_hash",
74
+ "type": "[core::integer::u32; 8]"
75
+ },
76
+ {
77
+ "name": "chain_work",
78
+ "type": "core::integer::u256"
79
+ },
80
+ {
81
+ "name": "block_height",
82
+ "type": "core::integer::u32"
83
+ },
84
+ {
85
+ "name": "last_diff_adjustment",
86
+ "type": "core::integer::u32"
87
+ },
88
+ {
89
+ "name": "prev_block_timestamps",
90
+ "type": "[core::integer::u32; 10]"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "type": "interface",
96
+ "name": "btc_relay::IBtcRelay",
97
+ "items": [
98
+ {
99
+ "type": "function",
100
+ "name": "submit_main_blockheaders",
101
+ "inputs": [
102
+ {
103
+ "name": "block_headers",
104
+ "type": "core::array::Span::<btc_relay::structs::blockheader::BlockHeader>"
105
+ },
106
+ {
107
+ "name": "stored_header",
108
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader"
109
+ }
110
+ ],
111
+ "outputs": [],
112
+ "state_mutability": "external"
113
+ },
114
+ {
115
+ "type": "function",
116
+ "name": "submit_short_fork_blockheaders",
117
+ "inputs": [
118
+ {
119
+ "name": "block_headers",
120
+ "type": "core::array::Span::<btc_relay::structs::blockheader::BlockHeader>"
121
+ },
122
+ {
123
+ "name": "stored_header",
124
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader"
125
+ }
126
+ ],
127
+ "outputs": [],
128
+ "state_mutability": "external"
129
+ },
130
+ {
131
+ "type": "function",
132
+ "name": "submit_fork_blockheaders",
133
+ "inputs": [
134
+ {
135
+ "name": "fork_id",
136
+ "type": "core::felt252"
137
+ },
138
+ {
139
+ "name": "block_headers",
140
+ "type": "core::array::Span::<btc_relay::structs::blockheader::BlockHeader>"
141
+ },
142
+ {
143
+ "name": "stored_header",
144
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader"
145
+ }
146
+ ],
147
+ "outputs": [],
148
+ "state_mutability": "external"
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "type": "impl",
154
+ "name": "BtcRelayReadOnlyImpl",
155
+ "interface_name": "btc_relay::IBtcRelayReadOnly"
156
+ },
157
+ {
158
+ "type": "interface",
159
+ "name": "btc_relay::IBtcRelayReadOnly",
160
+ "items": [
161
+ {
162
+ "type": "function",
163
+ "name": "get_chainwork",
164
+ "inputs": [],
165
+ "outputs": [
166
+ {
167
+ "type": "core::integer::u256"
168
+ }
169
+ ],
170
+ "state_mutability": "view"
171
+ },
172
+ {
173
+ "type": "function",
174
+ "name": "get_blockheight",
175
+ "inputs": [],
176
+ "outputs": [
177
+ {
178
+ "type": "core::integer::u32"
179
+ }
180
+ ],
181
+ "state_mutability": "view"
182
+ },
183
+ {
184
+ "type": "function",
185
+ "name": "verify_blockheader",
186
+ "inputs": [
187
+ {
188
+ "name": "stored_header",
189
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader"
190
+ }
191
+ ],
192
+ "outputs": [
193
+ {
194
+ "type": "core::integer::u32"
195
+ }
196
+ ],
197
+ "state_mutability": "view"
198
+ },
199
+ {
200
+ "type": "function",
201
+ "name": "get_commit_hash",
202
+ "inputs": [
203
+ {
204
+ "name": "height",
205
+ "type": "core::integer::u32"
206
+ }
207
+ ],
208
+ "outputs": [
209
+ {
210
+ "type": "core::felt252"
211
+ }
212
+ ],
213
+ "state_mutability": "view"
214
+ },
215
+ {
216
+ "type": "function",
217
+ "name": "get_tip_commit_hash",
218
+ "inputs": [],
219
+ "outputs": [
220
+ {
221
+ "type": "core::felt252"
222
+ }
223
+ ],
224
+ "state_mutability": "view"
225
+ }
226
+ ]
227
+ },
228
+ {
229
+ "type": "constructor",
230
+ "name": "constructor",
231
+ "inputs": [
232
+ {
233
+ "name": "stored_header",
234
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader"
235
+ }
236
+ ]
237
+ },
238
+ {
239
+ "type": "event",
240
+ "name": "btc_relay::events::StoreHeader",
241
+ "kind": "struct",
242
+ "members": [
243
+ {
244
+ "name": "commit_hash",
245
+ "type": "core::felt252",
246
+ "kind": "key"
247
+ },
248
+ {
249
+ "name": "block_hash_poseidon",
250
+ "type": "core::felt252",
251
+ "kind": "key"
252
+ },
253
+ {
254
+ "name": "header",
255
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader",
256
+ "kind": "data"
257
+ }
258
+ ]
259
+ },
260
+ {
261
+ "type": "event",
262
+ "name": "btc_relay::events::StoreForkHeader",
263
+ "kind": "struct",
264
+ "members": [
265
+ {
266
+ "name": "commit_hash",
267
+ "type": "core::felt252",
268
+ "kind": "key"
269
+ },
270
+ {
271
+ "name": "block_hash_poseidon",
272
+ "type": "core::felt252",
273
+ "kind": "key"
274
+ },
275
+ {
276
+ "name": "fork_id",
277
+ "type": "core::felt252",
278
+ "kind": "key"
279
+ },
280
+ {
281
+ "name": "header",
282
+ "type": "btc_relay::structs::stored_blockheader::StoredBlockHeader",
283
+ "kind": "data"
284
+ }
285
+ ]
286
+ },
287
+ {
288
+ "type": "event",
289
+ "name": "btc_relay::events::ChainReorg",
290
+ "kind": "struct",
291
+ "members": [
292
+ {
293
+ "name": "fork_submitter",
294
+ "type": "core::starknet::contract_address::ContractAddress",
295
+ "kind": "key"
296
+ },
297
+ {
298
+ "name": "fork_id",
299
+ "type": "core::felt252",
300
+ "kind": "key"
301
+ },
302
+ {
303
+ "name": "tip_block_hash_poseidon",
304
+ "type": "core::felt252",
305
+ "kind": "key"
306
+ },
307
+ {
308
+ "name": "tip_commit_hash",
309
+ "type": "core::felt252",
310
+ "kind": "key"
311
+ },
312
+ {
313
+ "name": "start_height",
314
+ "type": "core::felt252",
315
+ "kind": "data"
316
+ }
317
+ ]
318
+ },
319
+ {
320
+ "type": "event",
321
+ "name": "btc_relay::BtcRelay::Event",
322
+ "kind": "enum",
323
+ "variants": [
324
+ {
325
+ "name": "StoreHeader",
326
+ "type": "btc_relay::events::StoreHeader",
327
+ "kind": "nested"
328
+ },
329
+ {
330
+ "name": "StoreForkHeader",
331
+ "type": "btc_relay::events::StoreForkHeader",
332
+ "kind": "nested"
333
+ },
334
+ {
335
+ "name": "ChainReorg",
336
+ "type": "btc_relay::events::ChainReorg",
337
+ "kind": "nested"
338
+ }
339
+ ]
340
+ }
341
+ ];
@@ -0,0 +1,166 @@
1
+ /// <reference types="node" />
2
+ import { Buffer } from "buffer";
3
+ import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
4
+ import { BitcoinRpc, BtcBlock, BtcRelay } from "@atomiqlabs/base";
5
+ import { StarknetContractBase } from "../contract/StarknetContractBase";
6
+ import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
7
+ import { StarknetTx } from "../base/modules/StarknetTransactions";
8
+ import { StarknetSigner } from "../wallet/StarknetSigner";
9
+ import { BtcRelayAbi } from "./BtcRelayAbi";
10
+ import { constants, Provider } from "starknet";
11
+ import { StarknetFees } from "../base/modules/StarknetFees";
12
+ import { StarknetRetryPolicy } from "../base/StarknetBase";
13
+ import { StarknetAction } from "../base/StarknetAction";
14
+ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
15
+ SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
16
+ SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
17
+ SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
18
+ bitcoinRpc: BitcoinRpc<B>;
19
+ readonly maxHeadersPerTx: number;
20
+ readonly maxForkHeadersPerTx: number;
21
+ readonly maxShortForkHeadersPerTx: number;
22
+ constructor(chainId: constants.StarknetChainId, provider: Provider, bitcoinRpc: BitcoinRpc<B>, contractAddress?: string, retryPolicy?: StarknetRetryPolicy, solanaFeeEstimator?: StarknetFees);
23
+ /**
24
+ * Computes subsequent commited headers as they will appear on the blockchain when transactions
25
+ * are submitted & confirmed
26
+ *
27
+ * @param initialStoredHeader
28
+ * @param syncedHeaders
29
+ * @private
30
+ */
31
+ private computeCommitedHeaders;
32
+ /**
33
+ * A common logic for submitting blockheaders in a transaction
34
+ *
35
+ * @param signer
36
+ * @param headers headers to sync to the btc relay
37
+ * @param storedHeader current latest stored block header for a given fork
38
+ * @param tipWork work of the current tip in a given fork
39
+ * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
40
+ * @param feeRate feeRate for the transaction
41
+ * @private
42
+ */
43
+ private _saveHeaders;
44
+ private getBlock;
45
+ private getBlockHeight;
46
+ /**
47
+ * Returns data about current main chain tip stored in the btc relay
48
+ */
49
+ getTipData(): Promise<{
50
+ commitHash: string;
51
+ blockhash: string;
52
+ chainWork: Buffer;
53
+ blockheight: number;
54
+ }>;
55
+ /**
56
+ * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
57
+ * btc relay contract is not synced up to the desired blockheight
58
+ *
59
+ * @param blockData
60
+ * @param requiredBlockheight
61
+ */
62
+ retrieveLogAndBlockheight(blockData: {
63
+ blockhash: string;
64
+ }, requiredBlockheight?: number): Promise<{
65
+ header: StarknetBtcStoredHeader;
66
+ height: number;
67
+ } | null>;
68
+ /**
69
+ * Retrieves blockheader data by blockheader's commit hash,
70
+ *
71
+ * @param commitmentHashStr
72
+ * @param blockData
73
+ */
74
+ retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
75
+ blockhash: string;
76
+ }): Promise<StarknetBtcStoredHeader>;
77
+ /**
78
+ * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
79
+ */
80
+ retrieveLatestKnownBlockLog(): Promise<{
81
+ resultStoredHeader: StarknetBtcStoredHeader;
82
+ resultBitcoinHeader: B;
83
+ }>;
84
+ /**
85
+ * Saves blockheaders as a bitcoin main chain to the btc relay
86
+ *
87
+ * @param signer
88
+ * @param mainHeaders
89
+ * @param storedHeader
90
+ * @param feeRate
91
+ */
92
+ saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
93
+ forkId: number;
94
+ lastStoredHeader: StarknetBtcStoredHeader;
95
+ tx: StarknetTx;
96
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
97
+ }>;
98
+ /**
99
+ * Creates a new long fork and submits the headers to it
100
+ *
101
+ * @param signer
102
+ * @param forkHeaders
103
+ * @param storedHeader
104
+ * @param tipWork
105
+ * @param feeRate
106
+ */
107
+ saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
108
+ forkId: number;
109
+ lastStoredHeader: StarknetBtcStoredHeader;
110
+ tx: StarknetTx;
111
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
112
+ }>;
113
+ /**
114
+ * Continues submitting blockheaders to a given fork
115
+ *
116
+ * @param signer
117
+ * @param forkHeaders
118
+ * @param storedHeader
119
+ * @param forkId
120
+ * @param tipWork
121
+ * @param feeRate
122
+ */
123
+ saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
124
+ forkId: number;
125
+ lastStoredHeader: StarknetBtcStoredHeader;
126
+ tx: StarknetTx;
127
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
128
+ }>;
129
+ /**
130
+ * Submits short fork with given blockheaders
131
+ *
132
+ * @param signer
133
+ * @param forkHeaders
134
+ * @param storedHeader
135
+ * @param tipWork
136
+ * @param feeRate
137
+ */
138
+ saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
139
+ forkId: number;
140
+ lastStoredHeader: StarknetBtcStoredHeader;
141
+ tx: StarknetTx;
142
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
143
+ }>;
144
+ /**
145
+ * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
146
+ *
147
+ * @param requiredBlockheight
148
+ * @param feeRate
149
+ */
150
+ estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
151
+ /**
152
+ * Returns fee required (in SOL) to synchronize a single block to btc relay
153
+ *
154
+ * @param feeRate
155
+ */
156
+ getFeePerBlock(feeRate?: string): Promise<bigint>;
157
+ /**
158
+ * Gets fee rate required for submitting blockheaders to the main chain
159
+ */
160
+ getMainFeeRate(signer: string | null): Promise<string>;
161
+ /**
162
+ * Gets fee rate required for submitting blockheaders to the specific fork
163
+ */
164
+ getForkFeeRate(signer: string, forkId: number): Promise<string>;
165
+ saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
166
+ }