@atomiqlabs/chain-starknet 8.0.13 → 8.1.10

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 (119) hide show
  1. package/dist/index.d.ts +18 -18
  2. package/dist/index.js +42 -42
  3. package/dist/starknet/StarknetChainType.d.ts +19 -19
  4. package/dist/starknet/StarknetChainType.js +2 -2
  5. package/dist/starknet/StarknetInitializer.d.ts +66 -63
  6. package/dist/starknet/StarknetInitializer.js +101 -101
  7. package/dist/starknet/btcrelay/BtcRelayAbi.d.ts +250 -250
  8. package/dist/starknet/btcrelay/BtcRelayAbi.js +341 -341
  9. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +196 -196
  10. package/dist/starknet/btcrelay/StarknetBtcRelay.js +419 -411
  11. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +70 -70
  12. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +115 -115
  13. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +91 -91
  14. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +155 -155
  15. package/dist/starknet/chain/StarknetAction.d.ts +19 -19
  16. package/dist/starknet/chain/StarknetAction.js +74 -74
  17. package/dist/starknet/chain/StarknetChainInterface.d.ts +142 -143
  18. package/dist/starknet/chain/StarknetChainInterface.js +198 -199
  19. package/dist/starknet/chain/StarknetModule.d.ts +8 -8
  20. package/dist/starknet/chain/StarknetModule.js +12 -12
  21. package/dist/starknet/chain/modules/ERC20Abi.d.ts +755 -755
  22. package/dist/starknet/chain/modules/ERC20Abi.js +1032 -1032
  23. package/dist/starknet/chain/modules/StarknetAccounts.d.ts +6 -6
  24. package/dist/starknet/chain/modules/StarknetAccounts.js +26 -26
  25. package/dist/starknet/chain/modules/StarknetAddresses.d.ts +10 -10
  26. package/dist/starknet/chain/modules/StarknetAddresses.js +27 -27
  27. package/dist/starknet/chain/modules/StarknetBlocks.d.ts +27 -27
  28. package/dist/starknet/chain/modules/StarknetBlocks.js +82 -82
  29. package/dist/starknet/chain/modules/StarknetEvents.d.ts +47 -47
  30. package/dist/starknet/chain/modules/StarknetEvents.js +90 -90
  31. package/dist/starknet/chain/modules/StarknetFees.d.ts +118 -104
  32. package/dist/starknet/chain/modules/StarknetFees.js +150 -146
  33. package/dist/starknet/chain/modules/StarknetSignatures.d.ts +29 -29
  34. package/dist/starknet/chain/modules/StarknetSignatures.js +72 -72
  35. package/dist/starknet/chain/modules/StarknetTokens.d.ts +66 -66
  36. package/dist/starknet/chain/modules/StarknetTokens.js +99 -99
  37. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +122 -115
  38. package/dist/starknet/chain/modules/StarknetTransactions.js +633 -612
  39. package/dist/starknet/contract/StarknetContractBase.d.ts +14 -13
  40. package/dist/starknet/contract/StarknetContractBase.js +21 -20
  41. package/dist/starknet/contract/StarknetContractModule.d.ts +8 -8
  42. package/dist/starknet/contract/StarknetContractModule.js +11 -11
  43. package/dist/starknet/contract/modules/StarknetContractEvents.d.ts +56 -57
  44. package/dist/starknet/contract/modules/StarknetContractEvents.js +111 -111
  45. package/dist/starknet/events/StarknetChainEvents.d.ts +21 -21
  46. package/dist/starknet/events/StarknetChainEvents.js +61 -61
  47. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +178 -190
  48. package/dist/starknet/events/StarknetChainEventsBrowser.js +523 -582
  49. package/dist/starknet/provider/RpcProviderWithRetries.d.ts +49 -53
  50. package/dist/starknet/provider/RpcProviderWithRetries.js +94 -94
  51. package/dist/starknet/provider/WebSocketChannelWithRetries.d.ts +21 -21
  52. package/dist/starknet/provider/WebSocketChannelWithRetries.js +46 -46
  53. package/dist/starknet/spv_swap/SpvVaultContractAbi.d.ts +488 -488
  54. package/dist/starknet/spv_swap/SpvVaultContractAbi.js +656 -656
  55. package/dist/starknet/spv_swap/StarknetSpvVaultContract.d.ts +225 -219
  56. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +663 -621
  57. package/dist/starknet/spv_swap/StarknetSpvVaultData.d.ts +108 -108
  58. package/dist/starknet/spv_swap/StarknetSpvVaultData.js +190 -190
  59. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.d.ts +56 -56
  60. package/dist/starknet/spv_swap/StarknetSpvWithdrawalData.js +103 -103
  61. package/dist/starknet/swaps/EscrowManagerAbi.d.ts +431 -431
  62. package/dist/starknet/swaps/EscrowManagerAbi.js +583 -583
  63. package/dist/starknet/swaps/StarknetSwapContract.d.ts +309 -278
  64. package/dist/starknet/swaps/StarknetSwapContract.js +755 -579
  65. package/dist/starknet/swaps/StarknetSwapData.d.ts +234 -234
  66. package/dist/starknet/swaps/StarknetSwapData.js +474 -474
  67. package/dist/starknet/swaps/StarknetSwapModule.d.ts +10 -10
  68. package/dist/starknet/swaps/StarknetSwapModule.js +12 -12
  69. package/dist/starknet/swaps/handlers/IHandler.d.ts +13 -13
  70. package/dist/starknet/swaps/handlers/IHandler.js +2 -2
  71. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.d.ts +13 -13
  72. package/dist/starknet/swaps/handlers/claim/ClaimHandlers.js +13 -13
  73. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.d.ts +21 -21
  74. package/dist/starknet/swaps/handlers/claim/HashlockClaimHandler.js +44 -44
  75. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.d.ts +24 -24
  76. package/dist/starknet/swaps/handlers/claim/btc/BitcoinNoncedOutputClaimHandler.js +48 -48
  77. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.d.ts +25 -25
  78. package/dist/starknet/swaps/handlers/claim/btc/BitcoinOutputClaimHandler.js +40 -40
  79. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.d.ts +20 -20
  80. package/dist/starknet/swaps/handlers/claim/btc/BitcoinTxIdClaimHandler.js +30 -30
  81. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.d.ts +42 -45
  82. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +50 -54
  83. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.d.ts +17 -17
  84. package/dist/starknet/swaps/handlers/refund/TimelockRefundHandler.js +27 -27
  85. package/dist/starknet/swaps/modules/StarknetLpVault.d.ts +67 -67
  86. package/dist/starknet/swaps/modules/StarknetLpVault.js +122 -122
  87. package/dist/starknet/swaps/modules/StarknetSwapClaim.d.ts +52 -52
  88. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +99 -99
  89. package/dist/starknet/swaps/modules/StarknetSwapInit.d.ts +94 -94
  90. package/dist/starknet/swaps/modules/StarknetSwapInit.js +239 -239
  91. package/dist/starknet/swaps/modules/StarknetSwapRefund.d.ts +60 -60
  92. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +126 -126
  93. package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +11 -11
  94. package/dist/starknet/wallet/StarknetBrowserSigner.js +17 -17
  95. package/dist/starknet/wallet/StarknetPersistentSigner.d.ts +76 -76
  96. package/dist/starknet/wallet/StarknetPersistentSigner.js +291 -291
  97. package/dist/starknet/wallet/StarknetSigner.d.ts +72 -72
  98. package/dist/starknet/wallet/StarknetSigner.js +114 -114
  99. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.d.ts +18 -18
  100. package/dist/starknet/wallet/accounts/StarknetKeypairWallet.js +45 -45
  101. package/dist/utils/Utils.d.ts +77 -77
  102. package/dist/utils/Utils.js +304 -303
  103. package/package.json +2 -2
  104. package/src/starknet/StarknetInitializer.ts +6 -3
  105. package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -6
  106. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +7 -7
  107. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +6 -6
  108. package/src/starknet/chain/StarknetAction.ts +1 -0
  109. package/src/starknet/chain/StarknetChainInterface.ts +0 -2
  110. package/src/starknet/chain/modules/StarknetFees.ts +15 -2
  111. package/src/starknet/chain/modules/StarknetTransactions.ts +24 -0
  112. package/src/starknet/contract/StarknetContractBase.ts +7 -4
  113. package/src/starknet/contract/StarknetContractModule.ts +1 -1
  114. package/src/starknet/contract/modules/StarknetContractEvents.ts +7 -7
  115. package/src/starknet/events/StarknetChainEventsBrowser.ts +2 -64
  116. package/src/starknet/provider/RpcProviderWithRetries.ts +1 -1
  117. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +84 -18
  118. package/src/starknet/swaps/StarknetSwapContract.ts +242 -6
  119. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +0 -4
@@ -1,196 +1,196 @@
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
- /**
12
- * Starknet BTC Relay bitcoin light client contract representation
13
- *
14
- * @category BTC Relay
15
- */
16
- export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
17
- /**
18
- * Returns a {@link StarknetAction} that submits new main chain bitcoin blockheaders to the light client
19
- *
20
- * @param signer Starknet signer's address
21
- * @param mainHeaders New bitcoin blockheaders to submit
22
- * @param storedHeader Current latest committed and stored bitcoin blockheader in the light client
23
- */
24
- SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
25
- /**
26
- * Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
27
- * forking the chain from the provided `storedHeader` param's blockheight. For a successful fork the
28
- * submitted chain needs to have higher total chainwork than the current cannonical chain
29
- *
30
- * @param signer Starknet signer's address
31
- * @param forkHeaders Fork bitcoin blockheaders to submit
32
- * @param storedHeader Committed and stored bitcoin blockheader from which to fork the light client
33
- */
34
- SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
35
- /**
36
- * Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
37
- *
38
- * @param signer Starknet signer's address
39
- * @param forkId Fork ID to submit the fork blockheaders to
40
- * @param forkHeaders Fork bitcoin blockheaders to submit
41
- * @param storedHeader Either a committed and stored bitcoin blockheader from which to fork the light client (when
42
- * creating the fork), or the tip of the fork (when adding more blockheaders to the fork)
43
- * @param totalForkHeaders Total blockheaders in the fork - used to estimate the gas usage when re-org happens
44
- */
45
- SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
46
- bitcoinRpc: BitcoinRpc<B>;
47
- readonly maxHeadersPerTx: number;
48
- readonly maxForkHeadersPerTx: number;
49
- readonly maxShortForkHeadersPerTx: number;
50
- constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string | undefined);
51
- /**
52
- * Computes subsequent commited headers as they will appear on the blockchain when transactions
53
- * are submitted & confirmed
54
- *
55
- * @param initialStoredHeader
56
- * @param syncedHeaders
57
- * @private
58
- */
59
- private computeCommitedHeaders;
60
- /**
61
- * A common logic for submitting blockheaders in a transaction
62
- *
63
- * @param signer Starknet signer's address
64
- * @param headers Bitcoin blockheaders to submit to the btc relay
65
- * @param storedHeader Current latest stored block header for a given fork or main chain
66
- * @param forkId Fork ID to submit to, `forkId`=0 means main chain, `forkId`=-1 means short fork
67
- * @param feeRate Fee rate for the transaction
68
- * @private
69
- */
70
- private _saveHeaders;
71
- /**
72
- * Returns a committed bitcoin blockheader based on the provided `commitHash` or `blockHash`
73
- *
74
- * @param commitHash Commitment hash of the stored blockheader
75
- * @param blockHash Block's hash
76
- * @private
77
- */
78
- private getBlock;
79
- /**
80
- * Returns the current main chain blockheight of the BTC Relay
81
- *
82
- * @private
83
- */
84
- private getBlockHeight;
85
- /**
86
- * @inheritDoc
87
- */
88
- getTipData(): Promise<{
89
- commitHash: string;
90
- blockhash: string;
91
- chainWork: Buffer;
92
- blockheight: number;
93
- } | null>;
94
- /**
95
- * @inheritDoc
96
- */
97
- retrieveLogAndBlockheight(blockData: {
98
- blockhash: string;
99
- }, requiredBlockheight?: number): Promise<{
100
- header: StarknetBtcStoredHeader;
101
- height: number;
102
- } | null>;
103
- /**
104
- * @inheritDoc
105
- */
106
- retrieveLogByCommitHash(commitmentHash: string, blockData: {
107
- blockhash: string;
108
- }): Promise<StarknetBtcStoredHeader | null>;
109
- /**
110
- * @inheritDoc
111
- */
112
- retrieveLatestKnownBlockLog(): Promise<{
113
- resultStoredHeader: StarknetBtcStoredHeader;
114
- resultBitcoinHeader: B;
115
- } | null>;
116
- /**
117
- * @inheritDoc
118
- */
119
- saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
120
- forkId: number;
121
- lastStoredHeader: StarknetBtcStoredHeader;
122
- tx: StarknetTx;
123
- computedCommitedHeaders: StarknetBtcStoredHeader[];
124
- }>;
125
- /**
126
- * @inheritDoc
127
- */
128
- saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
129
- forkId: number;
130
- lastStoredHeader: StarknetBtcStoredHeader;
131
- tx: StarknetTx;
132
- computedCommitedHeaders: StarknetBtcStoredHeader[];
133
- }>;
134
- /**
135
- * @inheritDoc
136
- */
137
- saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
138
- forkId: number;
139
- lastStoredHeader: StarknetBtcStoredHeader;
140
- tx: StarknetTx;
141
- computedCommitedHeaders: StarknetBtcStoredHeader[];
142
- }>;
143
- /**
144
- * @inheritDoc
145
- */
146
- saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
147
- forkId: number;
148
- lastStoredHeader: StarknetBtcStoredHeader;
149
- tx: StarknetTx;
150
- computedCommitedHeaders: StarknetBtcStoredHeader[];
151
- }>;
152
- /**
153
- * @inheritDoc
154
- */
155
- estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
156
- /**
157
- * @inheritDoc
158
- */
159
- getFeePerBlock(feeRate?: string): Promise<bigint>;
160
- /**
161
- * @inheritDoc
162
- */
163
- getMainFeeRate(signer: string | null): Promise<string>;
164
- /**
165
- * @inheritDoc
166
- */
167
- getForkFeeRate(signer: string, forkId: number): Promise<string>;
168
- /**
169
- * @inheritDoc
170
- */
171
- saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
172
- /**
173
- * Gets committed headers, identified by blockhash & blockheight, determines required BTC relay blockheight based on
174
- * requiredConfirmations.
175
- * If synchronizer is passed & some blockhash is not found (or blockhash doesn't have enough confirmations),
176
- * it produces transactions to sync up the btc relay to the current chain tip & adds them to the passed txs array.
177
- *
178
- * @param signer A signer's address to use for the transactions
179
- * @param btcRelay BtcRelay contract to use for retrieving committed headers
180
- * @param btcTxs Bitcoin transactions to fetch the stored blockheaders for
181
- * @param txs Transactions array, in case we need to synchronize the btc relay ourselves the synchronization
182
- * txns are added here
183
- * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
184
- * to the required blockheight
185
- * @param feeRate Fee rate to use for synchronization transactions
186
- *
187
- * @private
188
- */
189
- static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
190
- blockheight: number;
191
- requiredConfirmations: number;
192
- blockhash: string;
193
- }[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
194
- [blockhash: string]: StarknetBtcStoredHeader;
195
- } | null>;
196
- }
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
+ /**
12
+ * Starknet BTC Relay bitcoin light client contract representation
13
+ *
14
+ * @category BTC Relay
15
+ */
16
+ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContractBase<typeof BtcRelayAbi> implements BtcRelay<StarknetBtcStoredHeader, StarknetTx, B, StarknetSigner> {
17
+ /**
18
+ * Returns a {@link StarknetAction} that submits new main chain bitcoin blockheaders to the light client
19
+ *
20
+ * @param signer Starknet signer's address
21
+ * @param mainHeaders New bitcoin blockheaders to submit
22
+ * @param storedHeader Current latest committed and stored bitcoin blockheader in the light client
23
+ */
24
+ SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
25
+ /**
26
+ * Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
27
+ * forking the chain from the provided `storedHeader` param's blockheight. For a successful fork the
28
+ * submitted chain needs to have higher total chainwork than the current cannonical chain
29
+ *
30
+ * @param signer Starknet signer's address
31
+ * @param forkHeaders Fork bitcoin blockheaders to submit
32
+ * @param storedHeader Committed and stored bitcoin blockheader from which to fork the light client
33
+ */
34
+ SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
35
+ /**
36
+ * Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
37
+ *
38
+ * @param signer Starknet signer's address
39
+ * @param forkId Fork ID to submit the fork blockheaders to
40
+ * @param forkHeaders Fork bitcoin blockheaders to submit
41
+ * @param storedHeader Either a committed and stored bitcoin blockheader from which to fork the light client (when
42
+ * creating the fork), or the tip of the fork (when adding more blockheaders to the fork)
43
+ * @param totalForkHeaders Total blockheaders in the fork - used to estimate the gas usage when re-org happens
44
+ */
45
+ SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
46
+ bitcoinRpc: BitcoinRpc<B>;
47
+ readonly maxHeadersPerTx: number;
48
+ readonly maxForkHeadersPerTx: number;
49
+ readonly maxShortForkHeadersPerTx: number;
50
+ constructor(chainInterface: StarknetChainInterface, bitcoinRpc: BitcoinRpc<B>, bitcoinNetwork: BitcoinNetwork, contractAddress?: string | undefined, contractDeploymentHeight?: number);
51
+ /**
52
+ * Computes subsequent commited headers as they will appear on the blockchain when transactions
53
+ * are submitted & confirmed
54
+ *
55
+ * @param initialStoredHeader
56
+ * @param syncedHeaders
57
+ * @private
58
+ */
59
+ private computeCommitedHeaders;
60
+ /**
61
+ * A common logic for submitting blockheaders in a transaction
62
+ *
63
+ * @param signer Starknet signer's address
64
+ * @param headers Bitcoin blockheaders to submit to the btc relay
65
+ * @param storedHeader Current latest stored block header for a given fork or main chain
66
+ * @param forkId Fork ID to submit to, `forkId`=0 means main chain, `forkId`=-1 means short fork
67
+ * @param feeRate Fee rate for the transaction
68
+ * @private
69
+ */
70
+ private _saveHeaders;
71
+ /**
72
+ * Returns a committed bitcoin blockheader based on the provided `commitHash` or `blockHash`
73
+ *
74
+ * @param commitHash Commitment hash of the stored blockheader
75
+ * @param blockHash Block's hash
76
+ * @private
77
+ */
78
+ private getBlock;
79
+ /**
80
+ * Returns the current main chain blockheight of the BTC Relay
81
+ *
82
+ * @private
83
+ */
84
+ private getBlockHeight;
85
+ /**
86
+ * @inheritDoc
87
+ */
88
+ getTipData(): Promise<{
89
+ commitHash: string;
90
+ blockhash: string;
91
+ chainWork: Buffer;
92
+ blockheight: number;
93
+ } | null>;
94
+ /**
95
+ * @inheritDoc
96
+ */
97
+ retrieveLogAndBlockheight(blockData: {
98
+ blockhash: string;
99
+ }, requiredBlockheight?: number): Promise<{
100
+ header: StarknetBtcStoredHeader;
101
+ height: number;
102
+ } | null>;
103
+ /**
104
+ * @inheritDoc
105
+ */
106
+ retrieveLogByCommitHash(commitmentHash: string, blockData: {
107
+ blockhash: string;
108
+ }): Promise<StarknetBtcStoredHeader | null>;
109
+ /**
110
+ * @inheritDoc
111
+ */
112
+ retrieveLatestKnownBlockLog(): Promise<{
113
+ resultStoredHeader: StarknetBtcStoredHeader;
114
+ resultBitcoinHeader: B;
115
+ } | null>;
116
+ /**
117
+ * @inheritDoc
118
+ */
119
+ saveMainHeaders(signer: string, mainHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, feeRate?: string): Promise<{
120
+ forkId: number;
121
+ lastStoredHeader: StarknetBtcStoredHeader;
122
+ tx: StarknetTx;
123
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
124
+ }>;
125
+ /**
126
+ * @inheritDoc
127
+ */
128
+ saveNewForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
129
+ forkId: number;
130
+ lastStoredHeader: StarknetBtcStoredHeader;
131
+ tx: StarknetTx;
132
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
133
+ }>;
134
+ /**
135
+ * @inheritDoc
136
+ */
137
+ saveForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{
138
+ forkId: number;
139
+ lastStoredHeader: StarknetBtcStoredHeader;
140
+ tx: StarknetTx;
141
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
142
+ }>;
143
+ /**
144
+ * @inheritDoc
145
+ */
146
+ saveShortForkHeaders(signer: string, forkHeaders: BtcBlock[], storedHeader: StarknetBtcStoredHeader, tipWork: Buffer, feeRate?: string): Promise<{
147
+ forkId: number;
148
+ lastStoredHeader: StarknetBtcStoredHeader;
149
+ tx: StarknetTx;
150
+ computedCommitedHeaders: StarknetBtcStoredHeader[];
151
+ }>;
152
+ /**
153
+ * @inheritDoc
154
+ */
155
+ estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
156
+ /**
157
+ * @inheritDoc
158
+ */
159
+ getFeePerBlock(feeRate?: string): Promise<bigint>;
160
+ /**
161
+ * @inheritDoc
162
+ */
163
+ getMainFeeRate(signer: string | null): Promise<string>;
164
+ /**
165
+ * @inheritDoc
166
+ */
167
+ getForkFeeRate(signer: string, forkId: number): Promise<string>;
168
+ /**
169
+ * @inheritDoc
170
+ */
171
+ saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<StarknetTx>;
172
+ /**
173
+ * Gets committed headers, identified by blockhash & blockheight, determines required BTC relay blockheight based on
174
+ * requiredConfirmations.
175
+ * If synchronizer is passed & some blockhash is not found (or blockhash doesn't have enough confirmations),
176
+ * it produces transactions to sync up the btc relay to the current chain tip & adds them to the passed txs array.
177
+ *
178
+ * @param signer A signer's address to use for the transactions
179
+ * @param btcRelay BtcRelay contract to use for retrieving committed headers
180
+ * @param btcTxs Bitcoin transactions to fetch the stored blockheaders for
181
+ * @param txs Transactions array, in case we need to synchronize the btc relay ourselves the synchronization
182
+ * txns are added here
183
+ * @param synchronizer optional synchronizer to use to synchronize the btc relay in case it is not yet synchronized
184
+ * to the required blockheight
185
+ * @param feeRate Fee rate to use for synchronization transactions
186
+ *
187
+ * @private
188
+ */
189
+ static getCommitedHeadersAndSynchronize(signer: string, btcRelay: StarknetBtcRelay<any>, btcTxs: {
190
+ blockheight: number;
191
+ requiredConfirmations: number;
192
+ blockhash: string;
193
+ }[], txs: StarknetTx[], synchronizer?: RelaySynchronizer<StarknetBtcStoredHeader, StarknetTx, any>, feeRate?: string): Promise<{
194
+ [blockhash: string]: StarknetBtcStoredHeader;
195
+ } | null>;
196
+ }