@atomiqlabs/chain-starknet 8.1.11 → 8.2.2

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 (63) hide show
  1. package/README.md +74 -0
  2. package/dist/index.d.ts +1 -2
  3. package/dist/index.js +72 -3
  4. package/dist/node/index.d.ts +10 -0
  5. package/dist/node/index.js +15 -0
  6. package/dist/starknet/StarknetInitializer.d.ts +39 -6
  7. package/dist/starknet/StarknetInitializer.js +3 -3
  8. package/dist/starknet/btcrelay/StarknetBtcRelay.d.ts +7 -6
  9. package/dist/starknet/btcrelay/StarknetBtcRelay.js +8 -8
  10. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.d.ts +2 -0
  11. package/dist/starknet/btcrelay/headers/StarknetBtcHeader.js +2 -0
  12. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.d.ts +3 -1
  13. package/dist/starknet/btcrelay/headers/StarknetBtcStoredHeader.js +3 -1
  14. package/dist/starknet/chain/StarknetAction.js +1 -1
  15. package/dist/starknet/chain/StarknetChainInterface.d.ts +25 -0
  16. package/dist/starknet/chain/StarknetChainInterface.js +7 -0
  17. package/dist/starknet/chain/modules/StarknetFees.d.ts +15 -19
  18. package/dist/starknet/chain/modules/StarknetFees.js +23 -29
  19. package/dist/starknet/chain/modules/StarknetTransactions.d.ts +32 -6
  20. package/dist/starknet/chain/modules/StarknetTransactions.js +47 -17
  21. package/dist/starknet/contract/StarknetContractBase.d.ts +12 -3
  22. package/dist/starknet/contract/StarknetContractBase.js +2 -2
  23. package/dist/starknet/contract/modules/StarknetContractEvents.js +1 -1
  24. package/dist/starknet/events/StarknetChainEvents.d.ts +3 -0
  25. package/dist/starknet/events/StarknetChainEvents.js +3 -0
  26. package/dist/starknet/events/StarknetChainEventsBrowser.d.ts +45 -7
  27. package/dist/starknet/events/StarknetChainEventsBrowser.js +20 -9
  28. package/dist/starknet/spv_swap/StarknetSpvVaultContract.js +4 -4
  29. package/dist/starknet/swaps/StarknetSwapContract.js +5 -5
  30. package/dist/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.js +1 -1
  31. package/dist/starknet/swaps/modules/StarknetSwapClaim.js +2 -2
  32. package/dist/starknet/swaps/modules/StarknetSwapRefund.js +1 -1
  33. package/dist/starknet/wallet/StarknetBrowserSigner.d.ts +9 -1
  34. package/dist/starknet/wallet/StarknetBrowserSigner.js +31 -1
  35. package/dist/starknet/wallet/StarknetSigner.d.ts +44 -3
  36. package/dist/starknet/wallet/StarknetSigner.js +52 -2
  37. package/dist/utils/Utils.d.ts +1 -1
  38. package/dist/utils/Utils.js +2 -2
  39. package/node/index.d.ts +1 -0
  40. package/node/index.js +3 -0
  41. package/package.json +5 -4
  42. package/src/index.ts +76 -2
  43. package/src/node/index.ts +10 -0
  44. package/src/starknet/StarknetInitializer.ts +40 -1
  45. package/src/starknet/btcrelay/StarknetBtcRelay.ts +19 -16
  46. package/src/starknet/btcrelay/headers/StarknetBtcHeader.ts +2 -0
  47. package/src/starknet/btcrelay/headers/StarknetBtcStoredHeader.ts +3 -1
  48. package/src/starknet/chain/StarknetAction.ts +2 -2
  49. package/src/starknet/chain/StarknetChainInterface.ts +29 -1
  50. package/src/starknet/chain/modules/StarknetFees.ts +23 -27
  51. package/src/starknet/chain/modules/StarknetTransactions.ts +59 -18
  52. package/src/starknet/contract/StarknetContractBase.ts +14 -5
  53. package/src/starknet/contract/modules/StarknetContractEvents.ts +1 -1
  54. package/src/starknet/events/StarknetChainEvents.ts +3 -0
  55. package/src/starknet/events/StarknetChainEventsBrowser.ts +51 -10
  56. package/src/starknet/spv_swap/StarknetSpvVaultContract.ts +4 -4
  57. package/src/starknet/swaps/StarknetSwapContract.ts +5 -5
  58. package/src/starknet/swaps/handlers/claim/btc/IBitcoinClaimHandler.ts +1 -1
  59. package/src/starknet/swaps/modules/StarknetSwapClaim.ts +3 -3
  60. package/src/starknet/swaps/modules/StarknetSwapRefund.ts +2 -2
  61. package/src/starknet/wallet/StarknetBrowserSigner.ts +39 -2
  62. package/src/starknet/wallet/StarknetSigner.ts +62 -3
  63. package/src/utils/Utils.ts +3 -3
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # @atomiqlabs/chain-starknet
2
+
3
+ `@atomiqlabs/chain-starknet` is the Starknet integration package for the Atomiq protocol.
4
+
5
+ Within the Atomiq stack, this library provides the Starknet-side building blocks used for Bitcoin-aware swaps and SPV-backed vault flows on Starknet. It includes:
6
+
7
+ - the `StarknetInitializer` used to register Starknet support in the Atomiq SDK
8
+ - the `StarknetChainInterface` used to talk to Starknet RPCs
9
+ - Starknet BTC relay, escrow swap, and SPV vault contract wrappers
10
+ - signer helpers for browser and programmatic Starknet integrations
11
+ - retrying RPC and websocket helpers for chain access and realtime events
12
+
13
+ This package is intended for direct protocol integrations and for higher-level Atomiq SDK layers that need Starknet chain support.
14
+
15
+ ## Installation
16
+
17
+ Install the package with its `starknet` peer dependency:
18
+
19
+ ```bash
20
+ npm install @atomiqlabs/chain-starknet starknet
21
+ ```
22
+
23
+ ## Node-only Helpers
24
+
25
+ The default package entrypoint stays browser-safe and does not export classes that depend on Node's `fs` module.
26
+
27
+ Import backend-only utilities from the dedicated `node` subpath:
28
+
29
+ ```ts
30
+ import {StarknetChainEvents, StarknetPersistentSigner} from "@atomiqlabs/chain-starknet/node";
31
+ ```
32
+
33
+ ## Supported Chains
34
+
35
+ This package exports a single Starknet initializer:
36
+
37
+ - Starknet via `StarknetInitializer`
38
+
39
+ Canonical deployments currently defined in this package:
40
+
41
+ | Chain | Canonical deployments included |
42
+ |-------|--------------------------------|
43
+ | Starknet | `MAINNET`, `TESTNET`, `TESTNET4` |
44
+
45
+ By default, `StarknetInitializer` selects `SN_MAIN` Starknet network when `bitcoinNetwork` is `BitcoinNetwork.MAINNET`, and `SN_SEPOLIA` otherwise. That means both `BitcoinNetwork.TESTNET` and `BitcoinNetwork.TESTNET4` use Starknet Sepolia by default, while the BTC relay contract switches to the matching Bitcoin-network-specific deployment.
46
+
47
+ If you need a non-canonical deployment, pass explicit, `swapContract`, `spvVaultContract`, `btcRelayContract`, or handler contract overrides in the initializer options.
48
+
49
+ ## SDK Example
50
+
51
+ Initialize the Atomiq SDK with Starknet network support:
52
+
53
+ ```ts
54
+ import {StarknetInitializer} from "@atomiqlabs/chain-starknet";
55
+ import {BitcoinNetwork, SwapperFactory, TypedSwapper} from "@atomiqlabs/sdk";
56
+
57
+ // Define chains that you want to support here
58
+ const chains = [StarknetInitializer] as const;
59
+ type SupportedChains = typeof chains;
60
+
61
+ const Factory = new SwapperFactory<SupportedChains>(chains);
62
+
63
+ const swapper: TypedSwapper<SupportedChains> = Factory.newSwapper({
64
+ chains: {
65
+ STARKNET: {
66
+ rpcUrl: starknetRpc,
67
+ wsUrl: starknetWs // Optional, but recommended for realtime event subscriptions
68
+ }
69
+ },
70
+ bitcoinNetwork: BitcoinNetwork.MAINNET // or BitcoinNetwork.TESTNET / BitcoinNetwork.TESTNET4
71
+ });
72
+ ```
73
+
74
+ If you use the lower-level initializer directly, you can also override the default Starknet chain ID and canonical contract addresses independently when you need custom deployments.
package/dist/index.d.ts CHANGED
@@ -2,8 +2,7 @@ export { StarknetBtcStoredHeader } from "./starknet/btcrelay/headers/StarknetBtc
2
2
  export { StarknetBtcHeader } from "./starknet/btcrelay/headers/StarknetBtcHeader";
3
3
  export * from "./starknet/btcrelay/StarknetBtcRelay";
4
4
  export * from "./starknet/chain/modules/StarknetFees";
5
- export { StarknetTx, SignedStarknetTx } from "./starknet/chain/modules/StarknetTransactions";
6
- export { StarknetAction } from "./starknet/chain/StarknetAction";
5
+ export { StarknetTx, SignedStarknetTx, StarknetTxInvoke, StarknetTxDeployAccount, isStarknetTxDeployAccount, isStarknetTxInvoke } from "./starknet/chain/modules/StarknetTransactions";
7
6
  export * from "./starknet/chain/StarknetChainInterface";
8
7
  export * from "./starknet/events/StarknetChainEventsBrowser";
9
8
  export * from "./starknet/provider/RpcProviderWithRetries";
package/dist/index.js CHANGED
@@ -14,7 +14,75 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.StarknetSwapData = exports.StarknetSpvVaultData = exports.StarknetAction = exports.StarknetBtcHeader = exports.StarknetBtcStoredHeader = void 0;
17
+ exports.StarknetSwapData = exports.StarknetSpvVaultData = exports.isStarknetTxInvoke = exports.isStarknetTxDeployAccount = exports.StarknetBtcHeader = exports.StarknetBtcStoredHeader = void 0;
18
+ /**
19
+ * # @atomiqlabs/chain-starknet
20
+ *
21
+ * `@atomiqlabs/chain-starknet` is the Starknet integration package for the Atomiq protocol.
22
+ *
23
+ * Within the Atomiq stack, this library provides the Starknet-side building blocks used for Bitcoin-aware swaps and SPV-backed vault flows on Starknet. It includes:
24
+ *
25
+ * - the `StarknetInitializer` used to register Starknet support in the Atomiq SDK
26
+ * - the `StarknetChainInterface` used to talk to Starknet RPCs
27
+ * - Starknet BTC relay, escrow swap, and SPV vault contract wrappers
28
+ * - signer helpers for browser and programmatic Starknet integrations
29
+ * - retrying RPC and websocket helpers for chain access and realtime events
30
+ *
31
+ * This package is intended for direct protocol integrations and for higher-level Atomiq SDK layers that need Starknet chain support.
32
+ *
33
+ * ## Installation
34
+ *
35
+ * Install the package with its `starknet` peer dependency:
36
+ *
37
+ * ```bash
38
+ * npm install @atomiqlabs/chain-starknet starknet
39
+ * ```
40
+ *
41
+ * ## Supported Chains
42
+ *
43
+ * This package exports a single Starknet initializer:
44
+ *
45
+ * - Starknet via `StarknetInitializer`
46
+ *
47
+ * Canonical deployments currently defined in this package:
48
+ *
49
+ * | Chain | Canonical deployments included |
50
+ * |-------|--------------------------------|
51
+ * | Starknet | `MAINNET`, `TESTNET`, `TESTNET4` |
52
+ *
53
+ * By default, `StarknetInitializer` selects `SN_MAIN` Starknet network when `bitcoinNetwork` is `BitcoinNetwork.MAINNET`, and `SN_SEPOLIA` otherwise. That means both `BitcoinNetwork.TESTNET` and `BitcoinNetwork.TESTNET4` use Starknet Sepolia by default, while the BTC relay contract switches to the matching Bitcoin-network-specific deployment.
54
+ *
55
+ * If you need a non-canonical deployment, pass explicit, `swapContract`, `spvVaultContract`, `btcRelayContract`, or handler contract overrides in the initializer options.
56
+ *
57
+ * ## SDK Example
58
+ *
59
+ * Initialize the Atomiq SDK with Starknet network support:
60
+ *
61
+ * ```ts
62
+ * import {StarknetInitializer} from "@atomiqlabs/chain-starknet";
63
+ * import {BitcoinNetwork, SwapperFactory, TypedSwapper} from "@atomiqlabs/sdk";
64
+ *
65
+ * // Define chains that you want to support here
66
+ * const chains = [StarknetInitializer] as const;
67
+ * type SupportedChains = typeof chains;
68
+ *
69
+ * const Factory = new SwapperFactory<SupportedChains>(chains);
70
+ *
71
+ * const swapper: TypedSwapper<SupportedChains> = Factory.newSwapper({
72
+ * chains: {
73
+ * STARKNET: {
74
+ * rpcUrl: starknetRpc,
75
+ * wsUrl: starknetWs // Optional, but recommended for realtime event subscriptions
76
+ * }
77
+ * },
78
+ * bitcoinNetwork: BitcoinNetwork.MAINNET // or BitcoinNetwork.TESTNET / BitcoinNetwork.TESTNET4
79
+ * });
80
+ * ```
81
+ *
82
+ * If you use the lower-level initializer directly, you can also override the default Starknet chain ID and canonical contract addresses independently when you need custom deployments.
83
+ *
84
+ * @packageDocumentation
85
+ */
18
86
  const WebSocket = require("ws");
19
87
  if (global.window == null)
20
88
  global.WebSocket = WebSocket;
@@ -24,8 +92,9 @@ var StarknetBtcHeader_1 = require("./starknet/btcrelay/headers/StarknetBtcHeader
24
92
  Object.defineProperty(exports, "StarknetBtcHeader", { enumerable: true, get: function () { return StarknetBtcHeader_1.StarknetBtcHeader; } });
25
93
  __exportStar(require("./starknet/btcrelay/StarknetBtcRelay"), exports);
26
94
  __exportStar(require("./starknet/chain/modules/StarknetFees"), exports);
27
- var StarknetAction_1 = require("./starknet/chain/StarknetAction");
28
- Object.defineProperty(exports, "StarknetAction", { enumerable: true, get: function () { return StarknetAction_1.StarknetAction; } });
95
+ var StarknetTransactions_1 = require("./starknet/chain/modules/StarknetTransactions");
96
+ Object.defineProperty(exports, "isStarknetTxDeployAccount", { enumerable: true, get: function () { return StarknetTransactions_1.isStarknetTxDeployAccount; } });
97
+ Object.defineProperty(exports, "isStarknetTxInvoke", { enumerable: true, get: function () { return StarknetTransactions_1.isStarknetTxInvoke; } });
29
98
  __exportStar(require("./starknet/chain/StarknetChainInterface"), exports);
30
99
  __exportStar(require("./starknet/events/StarknetChainEventsBrowser"), exports);
31
100
  __exportStar(require("./starknet/provider/RpcProviderWithRetries"), exports);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Node.js-only entrypoint for filesystem-backed Starknet helpers.
3
+ *
4
+ * Import from `@atomiqlabs/chain-starknet/node` when you need runtime features
5
+ * that depend on Node's `fs` module.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { StarknetChainEvents } from "../starknet/events/StarknetChainEvents";
10
+ export { StarknetPersistentSigner } from "../starknet/wallet/StarknetPersistentSigner";
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StarknetPersistentSigner = exports.StarknetChainEvents = void 0;
4
+ /**
5
+ * Node.js-only entrypoint for filesystem-backed Starknet helpers.
6
+ *
7
+ * Import from `@atomiqlabs/chain-starknet/node` when you need runtime features
8
+ * that depend on Node's `fs` module.
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ var StarknetChainEvents_1 = require("../starknet/events/StarknetChainEvents");
13
+ Object.defineProperty(exports, "StarknetChainEvents", { enumerable: true, get: function () { return StarknetChainEvents_1.StarknetChainEvents; } });
14
+ var StarknetPersistentSigner_1 = require("../starknet/wallet/StarknetPersistentSigner");
15
+ Object.defineProperty(exports, "StarknetPersistentSigner", { enumerable: true, get: function () { return StarknetPersistentSigner_1.StarknetPersistentSigner; } });
@@ -9,32 +9,59 @@ import { StarknetChainType } from "./StarknetChainType";
9
9
  * @category Chain Interface
10
10
  */
11
11
  export type StarknetAssetsType = BaseTokenType<"ETH" | "STRK" | "WBTC" | "TBTC" | "USDC" | "USDT" | "_TESTNET_WBTC_VESU">;
12
- /**
13
- * Default Starknet token assets configuration
14
- *
15
- * @category Chain Interface
16
- */
17
- export declare const StarknetAssets: StarknetAssetsType;
18
12
  /**
19
13
  * Configuration options for initializing Starknet chain
20
14
  *
21
15
  * @category Chain Interface
22
16
  */
23
17
  export type StarknetOptions = {
18
+ /**
19
+ * Starknet RPC URL or {@link Provider} object to use for Starknet network access
20
+ */
24
21
  rpcUrl: string | Provider;
22
+ /**
23
+ * Optional WebSocket URL or {@link WebSocketChannel} object to use for realtime events subscriptions
24
+ */
25
25
  wsUrl?: string | WebSocketChannel;
26
+ /**
27
+ * Retry policy for the RPC calls
28
+ */
26
29
  retryPolicy?: {
27
30
  maxRetries?: number;
28
31
  delay?: number;
29
32
  exponential?: boolean;
30
33
  };
34
+ /**
35
+ * Starknet chain ID: mainnet or sepolia
36
+ */
31
37
  chainId?: constants.StarknetChainId;
38
+ /**
39
+ * Contract address of the Escrow Manager contract, uses canonical deployment by default
40
+ */
32
41
  swapContract?: string;
42
+ /**
43
+ * Optional Escrow Manager contract deployment height, which acts as genesis when querying events
44
+ */
33
45
  swapContractDeploymentHeight?: number;
46
+ /**
47
+ * Contract address of the BTC Relay contract, uses canonical deployment by default
48
+ */
34
49
  btcRelayContract?: string;
50
+ /**
51
+ * Optional BTC Relay contract deployment height, which acts as genesis when querying events
52
+ */
35
53
  btcRelayContractDeploymentHeight?: number;
54
+ /**
55
+ * Contract address of the UTXO-controlled vault (SPV Vault manager) contract, uses canonical deployment by default
56
+ */
36
57
  spvVaultContract?: string;
58
+ /**
59
+ * Optional UTXO-controlled vault (SPV Vault manager) contract deployment height, which acts as genesis when querying events
60
+ */
37
61
  spvVaultContractDeploymentHeight?: number;
62
+ /**
63
+ * Contract addresses of the refund and claim handlers, uses canonical deployment by default
64
+ */
38
65
  handlerContracts?: {
39
66
  refund?: {
40
67
  timelock?: string;
@@ -43,7 +70,13 @@ export type StarknetOptions = {
43
70
  [type in ChainSwapType]?: string;
44
71
  };
45
72
  };
73
+ /**
74
+ * Starknet network fee API
75
+ */
46
76
  fees?: StarknetFees;
77
+ /**
78
+ * Starknet configuration
79
+ */
47
80
  starknetConfig?: StarknetConfig;
48
81
  };
49
82
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StarknetInitializer = exports.initializeStarknet = exports.StarknetAssets = void 0;
3
+ exports.StarknetInitializer = exports.initializeStarknet = void 0;
4
4
  const starknet_1 = require("starknet");
5
5
  const StarknetFees_1 = require("./chain/modules/StarknetFees");
6
6
  const StarknetChainInterface_1 = require("./chain/StarknetChainInterface");
@@ -19,7 +19,7 @@ const WebSocketChannelWithRetries_1 = require("./provider/WebSocketChannelWithRe
19
19
  *
20
20
  * @category Chain Interface
21
21
  */
22
- exports.StarknetAssets = {
22
+ const StarknetAssets = {
23
23
  ETH: {
24
24
  address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
25
25
  decimals: 18,
@@ -96,6 +96,6 @@ exports.StarknetInitializer = {
96
96
  chainId: "STARKNET",
97
97
  chainType: null,
98
98
  initializer: initializeStarknet,
99
- tokens: exports.StarknetAssets,
99
+ tokens: StarknetAssets,
100
100
  options: null
101
101
  };
@@ -1,5 +1,4 @@
1
1
  import { Buffer } from "buffer";
2
- import { StarknetBtcHeader } from "./headers/StarknetBtcHeader";
3
2
  import { BitcoinNetwork, BitcoinRpc, BtcBlock, BtcRelay, RelaySynchronizer } from "@atomiqlabs/base";
4
3
  import { StarknetContractBase } from "../contract/StarknetContractBase";
5
4
  import { StarknetBtcStoredHeader } from "./headers/StarknetBtcStoredHeader";
@@ -7,7 +6,6 @@ import { StarknetTx } from "../chain/modules/StarknetTransactions";
7
6
  import { StarknetSigner } from "../wallet/StarknetSigner";
8
7
  import { BtcRelayAbi } from "./BtcRelayAbi";
9
8
  import { StarknetChainInterface } from "../chain/StarknetChainInterface";
10
- import { StarknetAction } from "../chain/StarknetAction";
11
9
  /**
12
10
  * Starknet BTC Relay bitcoin light client contract representation
13
11
  *
@@ -21,7 +19,7 @@ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContra
21
19
  * @param mainHeaders New bitcoin blockheaders to submit
22
20
  * @param storedHeader Current latest committed and stored bitcoin blockheader in the light client
23
21
  */
24
- SaveMainHeaders(signer: string, mainHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
22
+ private SaveMainHeaders;
25
23
  /**
26
24
  * Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
27
25
  * forking the chain from the provided `storedHeader` param's blockheight. For a successful fork the
@@ -31,7 +29,7 @@ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContra
31
29
  * @param forkHeaders Fork bitcoin blockheaders to submit
32
30
  * @param storedHeader Committed and stored bitcoin blockheader from which to fork the light client
33
31
  */
34
- SaveShortForkHeaders(signer: string, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader): StarknetAction;
32
+ private SaveShortForkHeaders;
35
33
  /**
36
34
  * Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
37
35
  *
@@ -42,8 +40,11 @@ export declare class StarknetBtcRelay<B extends BtcBlock> extends StarknetContra
42
40
  * creating the fork), or the tip of the fork (when adding more blockheaders to the fork)
43
41
  * @param totalForkHeaders Total blockheaders in the fork - used to estimate the gas usage when re-org happens
44
42
  */
45
- SaveLongForkHeaders(signer: string, forkId: number, forkHeaders: StarknetBtcHeader[], storedHeader: StarknetBtcStoredHeader, totalForkHeaders?: number): StarknetAction;
46
- bitcoinRpc: BitcoinRpc<B>;
43
+ private SaveLongForkHeaders;
44
+ /**
45
+ * @internal
46
+ */
47
+ readonly _bitcoinRpc: BitcoinRpc<B>;
47
48
  readonly maxHeadersPerTx: number;
48
49
  readonly maxForkHeadersPerTx: number;
49
50
  readonly maxShortForkHeadersPerTx: number;
@@ -61,7 +61,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
61
61
  contractAddress: this.contract.address,
62
62
  entrypoint: "submit_main_blockheaders",
63
63
  calldata: serializeCalldata(mainHeaders, storedHeader, [])
64
- }, (0, StarknetFees_1.starknetGasMul)(GAS_PER_BLOCKHEADER, mainHeaders.length));
64
+ }, StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, mainHeaders.length));
65
65
  }
66
66
  /**
67
67
  * Returns a {@link StarknetAction} for submitting a short fork bitcoin blockheaders to the light client,
@@ -77,7 +77,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
77
77
  contractAddress: this.contract.address,
78
78
  entrypoint: "submit_short_fork_blockheaders",
79
79
  calldata: serializeCalldata(forkHeaders, storedHeader, [])
80
- }, (0, StarknetFees_1.starknetGasMul)(GAS_PER_BLOCKHEADER, forkHeaders.length));
80
+ }, StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, forkHeaders.length));
81
81
  }
82
82
  /**
83
83
  * Returns a {@link StarknetAction} for submitting a long fork of bitcoin blockheaders to the light client.
@@ -94,7 +94,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
94
94
  contractAddress: this.contract.address,
95
95
  entrypoint: "submit_fork_blockheaders",
96
96
  calldata: serializeCalldata(forkHeaders, storedHeader, [(0, Utils_1.toHex)(forkId)])
97
- }, (0, StarknetFees_1.starknetGasAdd)((0, StarknetFees_1.starknetGasMul)(GAS_PER_BLOCKHEADER, forkHeaders.length), (0, StarknetFees_1.starknetGasMul)(GAS_PER_BLOCKHEADER_FORK, totalForkHeaders)));
97
+ }, StarknetFees_1.StarknetFees.starknetGasAdd(StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER, forkHeaders.length), StarknetFees_1.StarknetFees.starknetGasMul(GAS_PER_BLOCKHEADER_FORK, totalForkHeaders)));
98
98
  }
99
99
  constructor(chainInterface, bitcoinRpc, bitcoinNetwork, contractAddress = btcRelayAddreses[bitcoinNetwork], contractDeploymentHeight) {
100
100
  if (contractAddress == null)
@@ -106,7 +106,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
106
106
  this.maxHeadersPerTx = 40;
107
107
  this.maxForkHeadersPerTx = 30;
108
108
  this.maxShortForkHeadersPerTx = 40;
109
- this.bitcoinRpc = bitcoinRpc;
109
+ this._bitcoinRpc = bitcoinRpc;
110
110
  }
111
111
  /**
112
112
  * Computes subsequent commited headers as they will appear on the blockchain when transactions
@@ -170,7 +170,7 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
170
170
  const starknetBlockHash = starknet_1.hash.computePoseidonHashOnElements((0, Utils_1.bufferToU32Array)(buffer_1.Buffer.from([...blockHash]).reverse()));
171
171
  keys.push(starknetBlockHash);
172
172
  }
173
- return this.Events.findInContractEvents(["btc_relay::events::StoreHeader", "btc_relay::events::StoreForkHeader"], keys, (event) => {
173
+ return this._Events.findInContractEvents(["btc_relay::events::StoreHeader", "btc_relay::events::StoreForkHeader"], keys, (event) => {
174
174
  return Promise.resolve([StarknetBtcStoredHeader_1.StarknetBtcStoredHeader.fromSerializedFeltArray(event.data), BigInt(event.params.commit_hash)]);
175
175
  });
176
176
  }
@@ -241,19 +241,19 @@ class StarknetBtcRelay extends StarknetContractBase_1.StarknetContractBase {
241
241
  * @inheritDoc
242
242
  */
243
243
  async retrieveLatestKnownBlockLog() {
244
- const data = await this.Events.findInContractEvents(["btc_relay::events::StoreHeader", "btc_relay::events::StoreForkHeader"], null, async (event) => {
244
+ const data = await this._Events.findInContractEvents(["btc_relay::events::StoreHeader", "btc_relay::events::StoreForkHeader"], null, async (event) => {
245
245
  const storedHeader = StarknetBtcStoredHeader_1.StarknetBtcStoredHeader.fromSerializedFeltArray(event.data);
246
246
  const blockHashHex = storedHeader.getBlockHash().toString("hex");
247
247
  const commitHash = event.params.commit_hash;
248
248
  const [isInBtcMainChain, btcRelayCommitHash] = await Promise.all([
249
- this.bitcoinRpc.isInMainChain(blockHashHex).catch(() => false),
249
+ this._bitcoinRpc.isInMainChain(blockHashHex).catch(() => false),
250
250
  this.contract.get_commit_hash(storedHeader.getBlockheight())
251
251
  ]);
252
252
  if (!isInBtcMainChain)
253
253
  return null;
254
254
  if (BigInt(commitHash) !== BigInt(btcRelayCommitHash))
255
255
  return null;
256
- const bitcoinBlockHeader = await this.bitcoinRpc.getBlockHeader(blockHashHex);
256
+ const bitcoinBlockHeader = await this._bitcoinRpc.getBlockHeader(blockHashHex);
257
257
  if (bitcoinBlockHeader == null)
258
258
  return null;
259
259
  return {
@@ -27,6 +27,8 @@ export declare class StarknetBtcHeader implements BtcHeader {
27
27
  * Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
28
28
  *
29
29
  * @param obj Struct as returned by the starknet.js lib
30
+ *
31
+ * @internal
30
32
  */
31
33
  constructor(obj: StarknetBtcHeaderType);
32
34
  /**
@@ -14,6 +14,8 @@ class StarknetBtcHeader {
14
14
  * Constructs the bitcoin blockheader from a struct as returned by the starknet.js lib
15
15
  *
16
16
  * @param obj Struct as returned by the starknet.js lib
17
+ *
18
+ * @internal
17
19
  */
18
20
  constructor(obj) {
19
21
  this.reversed_version = Number(obj.reversed_version);
@@ -26,7 +26,9 @@ export declare class StarknetBtcStoredHeader implements BtcStoredHeader<Starknet
26
26
  /**
27
27
  * Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
28
28
  *
29
- * @param obj Struct as returned by the starknet.js lib
29
+ * @param obj Struct as returned by the starknet.js
30
+ *
31
+ * @internal
30
32
  */
31
33
  constructor(obj: StarknetBtcStoredHeaderType);
32
34
  /**
@@ -16,7 +16,9 @@ class StarknetBtcStoredHeader {
16
16
  /**
17
17
  * Constructs the bitcoin stored blockheader from a struct as returned by the starknet.js lib
18
18
  *
19
- * @param obj Struct as returned by the starknet.js lib
19
+ * @param obj Struct as returned by the starknet.js
20
+ *
21
+ * @internal
20
22
  */
21
23
  constructor(obj) {
22
24
  this.blockheader = obj.blockheader instanceof StarknetBtcHeader_1.StarknetBtcHeader ? obj.blockheader : new StarknetBtcHeader_1.StarknetBtcHeader(obj.blockheader);
@@ -32,7 +32,7 @@ class StarknetAction {
32
32
  addIx(instruction, gasLimit) {
33
33
  this.instructions.push(instruction);
34
34
  if (gasLimit != null)
35
- this.gas = (0, StarknetFees_1.starknetGasAdd)(this.gas, gasLimit);
35
+ this.gas = StarknetFees_1.StarknetFees.starknetGasAdd(this.gas, gasLimit);
36
36
  }
37
37
  /**
38
38
  * Adds contract calls from another starknet action to this action, while also adding its gas limits
@@ -14,9 +14,28 @@ import { StarknetSigner } from "../wallet/StarknetSigner";
14
14
  * @category Chain Interface
15
15
  */
16
16
  export type StarknetConfig = {
17
+ /**
18
+ * Limit of the number of events retrieved by a single `starknet_getEvents` RPC call.
19
+ *
20
+ * Defaults to 100 events
21
+ */
17
22
  getLogChunkSize?: number;
23
+ /**
24
+ * When fetching events in the forward direction, sets the limit on the number of blocks
25
+ * to fetch in a single `starknet_getEvents` RPC call.
26
+ *
27
+ * Defaults to 2000 blocks
28
+ */
18
29
  getLogForwardBlockRange?: number;
30
+ /**
31
+ * Maximum numbers of keys allowed to be specified in a single `starknet_getEvents` RPC call
32
+ *
33
+ * Defaults to 64 keys
34
+ */
19
35
  maxGetLogKeys?: number;
36
+ /**
37
+ * Maximum number of parallel contract calls to execute in batch functions
38
+ */
20
39
  maxParallelCalls?: number;
21
40
  };
22
41
  /**
@@ -29,10 +48,12 @@ export declare class StarknetChainInterface implements ChainInterface<StarknetTx
29
48
  readonly starknetChainId: constants.StarknetChainId;
30
49
  /**
31
50
  * Optional websocket channel for instant notifications
51
+ * @internal
32
52
  */
33
53
  readonly wsChannel?: WebSocketChannel;
34
54
  /**
35
55
  * Underlying starknet.js provider
56
+ * @internal
36
57
  */
37
58
  readonly provider: Provider;
38
59
  Fees: StarknetFees;
@@ -96,6 +117,10 @@ export declare class StarknetChainInterface implements ChainInterface<StarknetTx
96
117
  * @inheritDoc
97
118
  */
98
119
  sendSignedAndConfirm(signedTxs: SignedStarknetTx[], waitForConfirmation?: boolean, abortSignal?: AbortSignal, parallel?: boolean, onBeforePublish?: (txId: string, rawTx: string) => Promise<void>): Promise<string[]>;
120
+ /**
121
+ * @inheritDoc
122
+ */
123
+ prepareTxs(txs: StarknetTx[]): Promise<StarknetTx[]>;
99
124
  /**
100
125
  * @inheritDoc
101
126
  */
@@ -123,6 +123,13 @@ class StarknetChainInterface {
123
123
  sendSignedAndConfirm(signedTxs, waitForConfirmation, abortSignal, parallel, onBeforePublish) {
124
124
  return this.Transactions.sendSignedAndConfirm(signedTxs, waitForConfirmation, abortSignal, parallel, onBeforePublish);
125
125
  }
126
+ /**
127
+ * @inheritDoc
128
+ */
129
+ async prepareTxs(txs) {
130
+ await this.Transactions.prepareTransactions(txs);
131
+ return txs;
132
+ }
126
133
  /**
127
134
  * @inheritDoc
128
135
  */
@@ -19,30 +19,26 @@ export type StarknetGas = {
19
19
  l2Gas: number;
20
20
  l1DataGas: number;
21
21
  };
22
- /**
23
- * Multiplies all the gas parameters by a specific scalar
24
- *
25
- * @param gas
26
- * @param scalar
27
- *
28
- * @category Chain Interface
29
- */
30
- export declare function starknetGasMul(gas: StarknetGas, scalar: number): StarknetGas;
31
- /**
32
- * Sums up all the gas parameters
33
- *
34
- * @param a
35
- * @param b
36
- *
37
- * @category Chain Interface
38
- */
39
- export declare function starknetGasAdd(a: StarknetGas, b?: StarknetGas): StarknetGas;
40
22
  /**
41
23
  * A module for starknet fee estimation
42
24
  *
43
25
  * @category Chain Interface
44
26
  */
45
27
  export declare class StarknetFees {
28
+ /**
29
+ * Multiplies all the gas parameters by a specific scalar
30
+ *
31
+ * @param gas
32
+ * @param scalar
33
+ */
34
+ static starknetGasMul(gas: StarknetGas, scalar: number): StarknetGas;
35
+ /**
36
+ * Sums up all the gas parameters
37
+ *
38
+ * @param a
39
+ * @param b
40
+ */
41
+ static starknetGasAdd(a: StarknetGas, b?: StarknetGas): StarknetGas;
46
42
  private readonly logger;
47
43
  private readonly feeDA;
48
44
  private readonly nonceDA;
@@ -54,7 +50,7 @@ export declare class StarknetFees {
54
50
  * Constructs a new Starknet fee module
55
51
  *
56
52
  * @param provider A starknet.js provider to use for fee estimation
57
- * @param maxFeeRate Fee rate limits in base units
53
+ * @param maxFeeRate Fee rate limits in base units, defaults to L1: 20 PFri, L2: 4 PFri, L1 data: 10 PFri
58
54
  * @param feeMultiplier A multiplier to use for the returned fee rates
59
55
  * @param da Data-availability mode - currently just L1
60
56
  */