import { Network } from '@saturnbtcio/psbt'; import { DecreaseLiquidity } from './instructions/decrease-liquidity/decrease-liquidity'; import { IncreaseLiquidity } from './instructions/increase-liquidity/increase-liquidity'; import { AddPoolShards } from './instructions/manage-pool/add-pool-shards'; import { CreateAccounts } from './instructions/manage-pool/create-accounts'; import { InitializePool } from './instructions/manage-pool/initialize-pool'; import { OneToZeroSwap } from './instructions/swap/one-to-zero'; import { SwapDetails } from './instructions/swap/swap-details'; import { ZeroToOneSwap } from './instructions/swap/zero-to-one'; import { CollectProtocolFees } from './instructions/manage-pool/collect-protocol-fees'; import { IArchProvider } from './providers/arch.provider'; import { IBitcoinProvider } from './providers/bitcoin.provider'; import { IPoolIndexerProvider } from './providers/pool-indexer.provider'; import { validateSaturnConfigData } from './util/validation'; import { InitializeProtocol } from './instructions/admin/initialize-protocol'; import { SetOwner } from './instructions/admin/set-owner'; import { SetFeeTiers } from './instructions/admin/set-fee-tiers'; import { TogglePaused } from './instructions/admin/toggle-paused'; export interface SaturnSdkConfig { programAddress: string; network: Network; programAccount: string; mempoolInfoOracleAccount: string; feeRateOracleAccount: string; maxTxSize: number; indexerProvider: IPoolIndexerProvider; bitcoinProvider: IBitcoinProvider; archProvider: IArchProvider; } export class SaturnSdk { public readonly createAccounts: CreateAccounts; public readonly addPoolShards: AddPoolShards; public readonly initializePool: InitializePool; public readonly increaseLiquidity: IncreaseLiquidity; public readonly decreaseLiquidity: DecreaseLiquidity; public readonly zeroToOneSwap: ZeroToOneSwap; public readonly oneToZeroSwap: OneToZeroSwap; public readonly swapDetails: SwapDetails; public readonly collectProtocolFees: CollectProtocolFees; public readonly initializeProtocol: InitializeProtocol; public readonly setOwner: SetOwner; public readonly setFeeTiers: SetFeeTiers; public readonly togglePaused: TogglePaused; constructor(config: SaturnSdkConfig) { validateSaturnConfigData(config); this.createAccounts = new CreateAccounts(config); this.addPoolShards = new AddPoolShards(config); this.initializePool = new InitializePool(config); this.increaseLiquidity = new IncreaseLiquidity(config); this.decreaseLiquidity = new DecreaseLiquidity(config); this.zeroToOneSwap = new ZeroToOneSwap(config); this.oneToZeroSwap = new OneToZeroSwap(config); this.swapDetails = new SwapDetails(config); this.collectProtocolFees = new CollectProtocolFees(config); this.initializeProtocol = new InitializeProtocol(config); this.setOwner = new SetOwner(config); this.setFeeTiers = new SetFeeTiers(config); this.togglePaused = new TogglePaused(config); } }