@atomiqlabs/chain-starknet 4.0.0-dev.22 → 4.0.0-dev.24

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 (154) hide show
  1. package/LICENSE +201 -201
  2. package/dist/index.d.ts +39 -38
  3. package/dist/index.js +55 -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 +28 -28
  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 +54 -59
  19. package/dist/starknet/chain/StarknetChainInterface.js +97 -97
  20. package/dist/starknet/chain/StarknetModule.d.ts +9 -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 +82 -77
  33. package/dist/starknet/chain/modules/StarknetFees.js +121 -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 -102
  38. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +110 -93
  39. package/dist/starknet/chain/modules/StarknetTransactions.js +351 -261
  40. package/dist/starknet/contract/StarknetContractBase.d.ts +13 -13
  41. package/dist/starknet/contract/StarknetContractBase.js +20 -20
  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 +84 -89
  49. package/dist/starknet/events/StarknetChainEventsBrowser.js +307 -307
  50. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +41 -41
  51. package/dist/starknet/provider/RpcProviderWithRetries.js +70 -70
  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 +89 -94
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +477 -477
  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 +197 -197
  63. package/dist/starknet/swaps/StarknetSwapContract.js +440 -440
  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 -94
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.js +235 -235
  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/StarknetBrowserSigner.d.ts +5 -0
  93. package/dist/starknet/wallet/StarknetBrowserSigner.js +11 -0
  94. package/dist/starknet/wallet/StarknetKeypairWallet.d.ts +7 -7
  95. package/dist/starknet/wallet/StarknetKeypairWallet.js +35 -35
  96. package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +33 -0
  97. package/dist/starknet/wallet/StarknetPersistentSigner.js +243 -0
  98. package/dist/starknet/wallet/StarknetSigner.d.ts +18 -12
  99. package/dist/starknet/wallet/StarknetSigner.js +69 -47
  100. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +7 -0
  101. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +35 -0
  102. package/dist/utils/Utils.d.ts +39 -37
  103. package/dist/utils/Utils.js +264 -260
  104. package/package.json +45 -43
  105. package/src/index.ts +48 -47
  106. package/src/starknet/StarknetChainType.ts +28 -28
  107. package/src/starknet/StarknetInitializer.ts +110 -110
  108. package/src/starknet/btcrelay/BtcRelayAbi.ts +338 -338
  109. package/src/starknet/btcrelay/StarknetBtcRelay.ts +494 -494
  110. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +100 -100
  111. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +141 -141
  112. package/src/starknet/chain/StarknetAction.ts +85 -85
  113. package/src/starknet/chain/StarknetChainInterface.ts +165 -165
  114. package/src/starknet/chain/StarknetModule.ts +19 -19
  115. package/src/starknet/chain/modules/ERC20Abi.ts +1029 -1029
  116. package/src/starknet/chain/modules/StarknetAccounts.ts +25 -25
  117. package/src/starknet/chain/modules/StarknetAddresses.ts +22 -22
  118. package/src/starknet/chain/modules/StarknetBlocks.ts +75 -75
  119. package/src/starknet/chain/modules/StarknetEvents.ts +104 -104
  120. package/src/starknet/chain/modules/StarknetFees.ts +162 -154
  121. package/src/starknet/chain/modules/StarknetSignatures.ts +91 -91
  122. package/src/starknet/chain/modules/StarknetTokens.ts +120 -120
  123. package/src/starknet/chain/modules/StarknetTransactions.ts +392 -285
  124. package/src/starknet/contract/StarknetContractBase.ts +30 -30
  125. package/src/starknet/contract/StarknetContractModule.ts +16 -16
  126. package/src/starknet/contract/modules/StarknetContractEvents.ts +134 -134
  127. package/src/starknet/events/StarknetChainEvents.ts +67 -67
  128. package/src/starknet/events/StarknetChainEventsBrowser.ts +420 -420
  129. package/src/starknet/provider/RpcProviderWithRetries.ts +83 -83
  130. package/src/starknet/spv_swap/SpvVaultContractAbi.ts +656 -656
  131. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +591 -591
  132. package/src/starknet/spv_swap/StarknetSpvVaultData.ts +195 -195
  133. package/src/starknet/spv_swap/StarknetSpvWithdrawalData.ts +79 -79
  134. package/src/starknet/swaps/EscrowManagerAbi.ts +582 -582
  135. package/src/starknet/swaps/StarknetSwapContract.ts +668 -668
  136. package/src/starknet/swaps/StarknetSwapData.ts +455 -455
  137. package/src/starknet/swaps/StarknetSwapModule.ts +17 -17
  138. package/src/starknet/swaps/handlers/IHandler.ts +20 -20
  139. package/src/starknet/swaps/handlers/claim/ClaimHandlers.ts +23 -23
  140. package/src/starknet/swaps/handlers/claim/HashlockClaimHandler.ts +53 -53
  141. package/src/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.ts +73 -73
  142. package/src/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.ts +67 -67
  143. package/src/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.ts +50 -50
  144. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +102 -102
  145. package/src/starknet/swaps/handlers/refund/TimelockRefundHandler.ts +38 -38
  146. package/src/starknet/swaps/modules/StarknetLpVault.ts +147 -147
  147. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +141 -141
  148. package/src/starknet/swaps/modules/StarknetSwapInit.ts +300 -300
  149. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +196 -196
  150. package/src/starknet/wallet/StarknetBrowserSigner.ts +12 -0
  151. package/src/starknet/wallet/StarknetPersistentSigner.ts +311 -0
  152. package/src/starknet/wallet/StarknetSigner.ts +84 -55
  153. package/src/starknet/wallet/{StarknetKeypairWallet.ts → accounts/StarknetKeypairWallet.ts} +44 -44
  154. package/src/utils/Utils.ts +262 -251
@@ -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
- }>;
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
+ }>;
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
+ }