@atomiqlabs/chain-starknet 4.0.0-dev.12 → 4.0.0-dev.13

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 (146) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +38 -38
  3. package/dist/index.js +54 -54
  4. package/dist/starknet/StarknetChainType.d.ts +13 -13
  5. package/dist/starknet/StarknetChainType.js +2 -2
  6. package/dist/starknet/StarknetInitializer.d.ts +27 -27
  7. package/dist/starknet/StarknetInitializer.js +69 -69
  8. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  9. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +186 -186
  11. package/dist/starknet/btcrelay/StarknetBtcRelay.js +379 -379
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +31 -31
  13. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +74 -74
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +51 -51
  15. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +113 -113
  16. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  17. package/dist/starknet/chain/StarknetAction.js +73 -73
  18. package/dist/starknet/chain/StarknetChainInterface.d.ts +52 -52
  19. package/dist/starknet/chain/StarknetChainInterface.js +91 -91
  20. package/dist/starknet/chain/StarknetModule.d.ts +14 -14
  21. package/dist/starknet/chain/StarknetModule.js +13 -13
  22. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  23. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  24. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  25. package/dist/starknet/chain/modules/StarknetAccounts.js +24 -24
  26. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +9 -9
  27. package/dist/starknet/chain/modules/StarknetAddresses.js +26 -26
  28. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +20 -20
  29. package/dist/starknet/chain/modules/StarknetBlocks.js +64 -64
  30. package/dist/starknet/chain/modules/StarknetEvents.d.ts +44 -44
  31. package/dist/starknet/chain/modules/StarknetEvents.js +88 -88
  32. package/dist/starknet/chain/modules/StarknetFees.d.ts +77 -77
  33. package/dist/starknet/chain/modules/StarknetFees.js +114 -114
  34. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  35. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  36. package/dist/starknet/chain/modules/StarknetTokens.d.ts +69 -69
  37. package/dist/starknet/chain/modules/StarknetTokens.js +102 -98
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +93 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +261 -260
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +20 -16
  42. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  43. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  44. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +51 -51
  45. package/dist/starknet/contract/modules/StarknetContractEvents.js +97 -97
  46. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  47. package/dist/starknet/events/StarknetChainEvents.js +52 -52
  48. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +89 -90
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +296 -294
  50. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +21 -21
  51. package/dist/starknet/provider/RpcProviderWithRetries.js +32 -32
  52. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  54. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +66 -66
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +382 -382
  56. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +49 -49
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +145 -145
  58. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +25 -25
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +72 -72
  60. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
  61. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
  62. package/dist/starknet/swaps/StarknetSwapContract.d.ts +191 -191
  63. package/dist/starknet/swaps/StarknetSwapContract.js +424 -424
  64. package/dist/starknet/swaps/StarknetSwapData.d.ts +74 -74
  65. package/dist/starknet/swaps/StarknetSwapData.js +325 -325
  66. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  67. package/dist/starknet/swaps/StarknetSwapModule.js +11 -11
  68. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  69. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  70. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  72. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  74. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  80. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +45 -45
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +52 -52
  82. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  84. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +69 -69
  85. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  86. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +53 -53
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +100 -100
  88. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -87
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -225
  90. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +62 -62
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +128 -128
  92. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
  93. package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -30
  94. package/dist/starknet/wallet/StarknetSigner.d.ts +12 -12
  95. package/dist/starknet/wallet/StarknetSigner.js +47 -46
  96. package/dist/utils/Utils.d.ts +37 -37
  97. package/dist/utils/Utils.js +260 -261
  98. package/package.json +43 -37
  99. package/src/index.ts +47 -47
  100. package/src/starknet/StarknetChainType.ts +28 -28
  101. package/src/starknet/StarknetInitializer.ts +108 -108
  102. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
  103. package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
  104. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
  105. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
  106. package/src/starknet/chain/StarknetAction.ts +85 -85
  107. package/src/starknet/chain/StarknetChainInterface.ts +149 -149
  108. package/src/starknet/chain/StarknetModule.ts +19 -19
  109. package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
  110. package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
  111. package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
  112. package/src/starknet/chain/modules/StarknetBlocks.ts +75 -74
  113. package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
  114. package/src/starknet/chain/modules/StarknetFees.ts +154 -154
  115. package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
  116. package/src/starknet/chain/modules/StarknetTokens.ts +120 -116
  117. package/src/starknet/chain/modules/StarknetTransactions.ts +285 -283
  118. package/src/starknet/contract/StarknetContractBase.ts +30 -26
  119. package/src/starknet/contract/StarknetContractModule.ts +16 -16
  120. package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
  121. package/src/starknet/events/StarknetChainEvents.ts +67 -67
  122. package/src/starknet/events/StarknetChainEventsBrowser.ts +411 -411
  123. package/src/starknet/provider/RpcProviderWithRetries.ts +43 -43
  124. package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
  125. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +483 -483
  126. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
  127. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
  128. package/src/starknet/swaps/EscrowManagerAbi.ts +582 -582
  129. package/src/starknet/swaps/StarknetSwapContract.ts +647 -647
  130. package/src/starknet/swaps/StarknetSwapData.ts +455 -455
  131. package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
  132. package/src/starknet/swaps/handlers/IHandler.ts +20 -20
  133. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
  134. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
  135. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
  136. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
  137. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
  138. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
  139. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
  140. package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
  141. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
  142. package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -287
  143. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  144. package/src/starknet/wallet/StarknetKeypairWallet.ts +44 -39
  145. package/src/starknet/wallet/StarknetSigner.ts +55 -55
  146. package/src/utils/Utils.ts +251 -252
@@ -1,186 +1,186 @@
1
- import { Buffer } from "buffer";
2
- import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
3
- import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
4
- import { StarknetContractBase } from "../contract/StarknetContractBase";
5
- import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
6
- import { StarknetTx } from "../chain/modules/StarknetTransactions";
7
- import { StarknetSigner } from "../wallet/StarknetSigner";
8
- import { BtcRelayAbi } from "./BtcRelayAbi";
9
- import { StarknetChainInterface } from "../chain/StarknetChainInterface";
10
- import { StarknetAction } from "../chain/StarknetAction";
11
- export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
12
- SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
13
- SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
14
- SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
15
- bitcoinRpc: BitcoinRpc<B>;
16
- readonly maxHeadersPerTx: number;
17
- readonly maxForkHeadersPerTx: number;
18
- readonly maxShortForkHeadersPerTx: number;
19
- constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string);
20
- /**
21
- * Computes subsequent commited headers as they will appear on the blockchain when transactions
22
- * are submitted & confirmed
23
- *
24
- * @param initialStoredHeader
25
- * @param syncedHeaders
26
- * @private
27
- */
28
- private computeCommitedHeaders;
29
- /**
30
- * A common logic for submitting blockheaders in a transaction
31
- *
32
- * @param signer
33
- * @param headers headers to sync to the btc relay
34
- * @param storedHeader current latest stored block header for a given fork
35
- * @param tipWork work of the current tip in a given fork
36
- * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
37
- * @param feeRate feeRate for the transaction
38
- * @private
39
- */
40
- private _saveHeaders;
41
- private getBlock;
42
- private getBlockHeight;
43
- /**
44
- * Returns data about current main chain tip stored in the btc relay
45
- */
46
- getTipData(): Promise<{
47
- commitHash: string;
48
- blockhash: string;
49
- chainWork: Buffer;
50
- blockheight: number;
51
- }>;
52
- /**
53
- * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
54
- * btc relay contract is not synced up to the desired blockheight
55
- *
56
- * @param blockData
57
- * @param requiredBlockheight
58
- */
59
- retrieveLogAndBlockheight(blockData: {
60
- blockhash: string;
61
- }, requiredBlockheight?: number): Promise<{
62
- header: StarknetBtcStoredHeader;
63
- height: number;
64
- } | null>;
65
- /**
66
- * Retrieves blockheader data by blockheader's commit hash,
67
- *
68
- * @param commitmentHashStr
69
- * @param blockData
70
- */
71
- retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
72
- blockhash: string;
73
- }): Promise<StarknetBtcStoredHeader>;
74
- /**
75
- * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
76
- */
77
- retrieveLatestKnownBlockLog(): Promise<{
78
- resultStoredHeader: StarknetBtcStoredHeader;
79
- resultBitcoinHeader: B;
80
- }>;
81
- /**
82
- * Saves blockheaders as a bitcoin main chain to the btc relay
83
- *
84
- * @param signer
85
- * @param mainHeaders
86
- * @param storedHeader
87
- * @param feeRate
88
- */
89
- saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
90
- forkId: number;
91
- lastStoredHeader: StarknetBtcStoredHeader;
92
- tx: StarknetTx;
93
- computedCommitedHeaders: StarknetBtcStoredHeader[];
94
- }>;
95
- /**
96
- * Creates a new long fork and submits the headers to it
97
- *
98
- * @param signer
99
- * @param forkHeaders
100
- * @param storedHeader
101
- * @param tipWork
102
- * @param feeRate
103
- */
104
- saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
105
- forkId: number;
106
- lastStoredHeader: StarknetBtcStoredHeader;
107
- tx: StarknetTx;
108
- computedCommitedHeaders: StarknetBtcStoredHeader[];
109
- }>;
110
- /**
111
- * Continues submitting blockheaders to a given fork
112
- *
113
- * @param signer
114
- * @param forkHeaders
115
- * @param storedHeader
116
- * @param forkId
117
- * @param tipWork
118
- * @param feeRate
119
- */
120
- saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
121
- forkId: number;
122
- lastStoredHeader: StarknetBtcStoredHeader;
123
- tx: StarknetTx;
124
- computedCommitedHeaders: StarknetBtcStoredHeader[];
125
- }>;
126
- /**
127
- * Submits short fork with given blockheaders
128
- *
129
- * @param signer
130
- * @param forkHeaders
131
- * @param storedHeader
132
- * @param tipWork
133
- * @param feeRate
134
- */
135
- saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
136
- forkId: number;
137
- lastStoredHeader: StarknetBtcStoredHeader;
138
- tx: StarknetTx;
139
- computedCommitedHeaders: StarknetBtcStoredHeader[];
140
- }>;
141
- /**
142
- * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
143
- *
144
- * @param requiredBlockheight
145
- * @param feeRate
146
- */
147
- estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
148
- /**
149
- * Returns fee required (in SOL) to synchronize a single block to btc relay
150
- *
151
- * @param feeRate
152
- */
153
- getFeePerBlock(feeRate?: string): Promise<bigint>;
154
- /**
155
- * Gets fee rate required for submitting blockheaders to the main chain
156
- */
157
- getMainFeeRate(signer: string | null): Promise<string>;
158
- /**
159
- * Gets fee rate required for submitting blockheaders to the specific fork
160
- */
161
- getForkFeeRate(signer: string, forkId: number): Promise<string>;
162
- saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
163
- /**
164
- * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
165
- * requiredConfirmations
166
- * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
167
- * current chain tip & adds them to the txs array
168
- *
169
- * @param signer
170
- * @param btcRelay
171
- * @param btcTxs
172
- * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
173
- * txns are added here
174
- * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
175
- * to the required blockheight
176
- * @param feeRate Fee rate to use for synchronization transactions
177
- * @private
178
- */
179
- static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
180
- blockheight: number;
181
- requiredConfirmations: number;
182
- blockhash: string;
183
- }[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
184
- [blockhash: string]: StarknetBtcStoredHeader;
185
- }>;
186
- }
1
+ import { Buffer } from "buffer";
2
+ import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
3
+ import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
4
+ import { StarknetContractBase } from "../contract/StarknetContractBase";
5
+ import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
6
+ import { StarknetTx } from "../chain/modules/StarknetTransactions";
7
+ import { StarknetSigner } from "../wallet/StarknetSigner";
8
+ import { BtcRelayAbi } from "./BtcRelayAbi";
9
+ import { StarknetChainInterface } from "../chain/StarknetChainInterface";
10
+ import { StarknetAction } from "../chain/StarknetAction";
11
+ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
12
+ SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
13
+ SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
14
+ SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
15
+ bitcoinRpc: BitcoinRpc<B>;
16
+ readonly maxHeadersPerTx: number;
17
+ readonly maxForkHeadersPerTx: number;
18
+ readonly maxShortForkHeadersPerTx: number;
19
+ constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string);
20
+ /**
21
+ * Computes subsequent commited headers as they will appear on the blockchain when transactions
22
+ * are submitted & confirmed
23
+ *
24
+ * @param initialStoredHeader
25
+ * @param syncedHeaders
26
+ * @private
27
+ */
28
+ private computeCommitedHeaders;
29
+ /**
30
+ * A common logic for submitting blockheaders in a transaction
31
+ *
32
+ * @param signer
33
+ * @param headers headers to sync to the btc relay
34
+ * @param storedHeader current latest stored block header for a given fork
35
+ * @param tipWork work of the current tip in a given fork
36
+ * @param forkId forkId to submit to, forkId=0 means main chain, forkId=-1 means short fork
37
+ * @param feeRate feeRate for the transaction
38
+ * @private
39
+ */
40
+ private _saveHeaders;
41
+ private getBlock;
42
+ private getBlockHeight;
43
+ /**
44
+ * Returns data about current main chain tip stored in the btc relay
45
+ */
46
+ getTipData(): Promise<{
47
+ commitHash: string;
48
+ blockhash: string;
49
+ chainWork: Buffer;
50
+ blockheight: number;
51
+ }>;
52
+ /**
53
+ * Retrieves blockheader with a specific blockhash, returns null if requiredBlockheight is provided and
54
+ * btc relay contract is not synced up to the desired blockheight
55
+ *
56
+ * @param blockData
57
+ * @param requiredBlockheight
58
+ */
59
+ retrieveLogAndBlockheight(blockData: {
60
+ blockhash: string;
61
+ }, requiredBlockheight?: number): Promise<{
62
+ header: StarknetBtcStoredHeader;
63
+ height: number;
64
+ } | null>;
65
+ /**
66
+ * Retrieves blockheader data by blockheader's commit hash,
67
+ *
68
+ * @param commitmentHashStr
69
+ * @param blockData
70
+ */
71
+ retrieveLogByCommitHash(commitmentHashStr: string, blockData: {
72
+ blockhash: string;
73
+ }): Promise<StarknetBtcStoredHeader>;
74
+ /**
75
+ * Retrieves latest known stored blockheader & blockheader from bitcoin RPC that is in the main chain
76
+ */
77
+ retrieveLatestKnownBlockLog(): Promise<{
78
+ resultStoredHeader: StarknetBtcStoredHeader;
79
+ resultBitcoinHeader: B;
80
+ }>;
81
+ /**
82
+ * Saves blockheaders as a bitcoin main chain to the btc relay
83
+ *
84
+ * @param signer
85
+ * @param mainHeaders
86
+ * @param storedHeader
87
+ * @param feeRate
88
+ */
89
+ saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
90
+ forkId: number;
91
+ lastStoredHeader: StarknetBtcStoredHeader;
92
+ tx: StarknetTx;
93
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
94
+ }>;
95
+ /**
96
+ * Creates a new long fork and submits the headers to it
97
+ *
98
+ * @param signer
99
+ * @param forkHeaders
100
+ * @param storedHeader
101
+ * @param tipWork
102
+ * @param feeRate
103
+ */
104
+ saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
105
+ forkId: number;
106
+ lastStoredHeader: StarknetBtcStoredHeader;
107
+ tx: StarknetTx;
108
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
109
+ }>;
110
+ /**
111
+ * Continues submitting blockheaders to a given fork
112
+ *
113
+ * @param signer
114
+ * @param forkHeaders
115
+ * @param storedHeader
116
+ * @param forkId
117
+ * @param tipWork
118
+ * @param feeRate
119
+ */
120
+ saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
121
+ forkId: number;
122
+ lastStoredHeader: StarknetBtcStoredHeader;
123
+ tx: StarknetTx;
124
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
125
+ }>;
126
+ /**
127
+ * Submits short fork with given blockheaders
128
+ *
129
+ * @param signer
130
+ * @param forkHeaders
131
+ * @param storedHeader
132
+ * @param tipWork
133
+ * @param feeRate
134
+ */
135
+ saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
136
+ forkId: number;
137
+ lastStoredHeader: StarknetBtcStoredHeader;
138
+ tx: StarknetTx;
139
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
140
+ }>;
141
+ /**
142
+ * Estimate required synchronization fee (worst case) to synchronize btc relay to the required blockheight
143
+ *
144
+ * @param requiredBlockheight
145
+ * @param feeRate
146
+ */
147
+ estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
148
+ /**
149
+ * Returns fee required (in SOL) to synchronize a single block to btc relay
150
+ *
151
+ * @param feeRate
152
+ */
153
+ getFeePerBlock(feeRate?: string): Promise<bigint>;
154
+ /**
155
+ * Gets fee rate required for submitting blockheaders to the main chain
156
+ */
157
+ getMainFeeRate(signer: string | null): Promise<string>;
158
+ /**
159
+ * Gets fee rate required for submitting blockheaders to the specific fork
160
+ */
161
+ getForkFeeRate(signer: string, forkId: number): Promise<string>;
162
+ saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
163
+ /**
164
+ * Gets committed header, identified by blockhash & blockheight, determines required BTC relay blockheight based on
165
+ * requiredConfirmations
166
+ * If synchronizer is passed & blockhash is not found, it produces transactions to sync up the btc relay to the
167
+ * current chain tip & adds them to the txs array
168
+ *
169
+ * @param signer
170
+ * @param btcRelay
171
+ * @param btcTxs
172
+ * @param txs solana transaction array, in case we need to synchronize the btc relay ourselves the synchronization
173
+ * txns are added here
174
+ * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
175
+ * to the required blockheight
176
+ * @param feeRate Fee rate to use for synchronization transactions
177
+ * @private
178
+ */
179
+ static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
180
+ blockheight: number;
181
+ requiredConfirmations: number;
182
+ blockhash: string;
183
+ }[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
184
+ [blockhash: string]: StarknetBtcStoredHeader;
185
+ }>;
186
+ }