UNPKG

@atomiqlabs/chain-starknet

Version:
104 lines (96 loc) 4.42 kB
/** * # @atomiqlabs/chain-starknet * * `@atomiqlabs/chain-starknet` is the Starknet integration package for the Atomiq protocol. * * 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: * * - the `StarknetInitializer` used to register Starknet support in the Atomiq SDK * - the `StarknetChainInterface` used to talk to Starknet RPCs * - Starknet BTC relay, escrow swap, and SPV vault contract wrappers * - signer helpers for browser and programmatic Starknet integrations * - retrying RPC and websocket helpers for chain access and realtime events * * This package is intended for direct protocol integrations and for higher-level Atomiq SDK layers that need Starknet chain support. * * ## Installation * * Install the package with its `starknet` peer dependency: * * ```bash * npm install @atomiqlabs/chain-starknet starknet * ``` * * ## Supported Chains * * This package exports a single Starknet initializer: * * - Starknet via `StarknetInitializer` * * Canonical deployments currently defined in this package: * * | Chain | Canonical deployments included | * |-------|--------------------------------| * | Starknet | `MAINNET`, `TESTNET`, `TESTNET4` | * * 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. * * If you need a non-canonical deployment, pass explicit, `swapContract`, `spvVaultContract`, `btcRelayContract`, or handler contract overrides in the initializer options. * * ## SDK Example * * Initialize the Atomiq SDK with Starknet network support: * * ```ts * import {StarknetInitializer} from "@atomiqlabs/chain-starknet"; * import {BitcoinNetwork, SwapperFactory, TypedSwapper} from "@atomiqlabs/sdk"; * * // Define chains that you want to support here * const chains = [StarknetInitializer] as const; * type SupportedChains = typeof chains; * * const Factory = new SwapperFactory<SupportedChains>(chains); * * const swapper: TypedSwapper<SupportedChains> = Factory.newSwapper({ * chains: { * STARKNET: { * rpcUrl: starknetRpc, * wsUrl: starknetWs // Optional, but recommended for realtime event subscriptions * } * }, * bitcoinNetwork: BitcoinNetwork.MAINNET // or BitcoinNetwork.TESTNET / BitcoinNetwork.TESTNET4 * }); * ``` * * 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. * * @packageDocumentation */ import * as WebSocket from "ws"; if(global.window==null) global.WebSocket = WebSocket as any; export {StarknetBtcStoredHeader} from "./starknet/btcrelay/headers/StarknetBtcStoredHeader"; export {StarknetBtcHeader} from "./starknet/btcrelay/headers/StarknetBtcHeader"; export * from "./starknet/btcrelay/StarknetBtcRelay"; export * from "./starknet/chain/modules/StarknetFees"; export { StarknetTx, SignedStarknetTx, StarknetTxInvoke, StarknetTxDeployAccount, isStarknetTxDeployAccount, isStarknetTxInvoke } from "./starknet/chain/modules/StarknetTransactions"; export * from "./starknet/chain/StarknetChainInterface"; export * from "./starknet/events/StarknetChainEventsBrowser"; export * from "./starknet/provider/RpcProviderWithRetries"; export * from "./starknet/provider/WebSocketChannelWithRetries"; export * from "./starknet/spv_swap/StarknetSpvVaultContract"; export {StarknetSpvVaultData} from "./starknet/spv_swap/StarknetSpvVaultData"; export * from "./starknet/spv_swap/StarknetSpvWithdrawalData"; export * from "./starknet/swaps/StarknetSwapContract"; export {StarknetSuccessAction, StarknetSwapData} from "./starknet/swaps/StarknetSwapData"; export * from "./starknet/wallet/StarknetSigner"; export * from "./starknet/wallet/StarknetBrowserSigner"; export * from "./starknet/wallet/accounts/StarknetKeypairWallet"; export * from "./starknet/StarknetChainType"; export * from "./starknet/StarknetInitializer";