import { getBitcoinNetwork, toXOnly } from '@saturnbtcio/psbt'; import { SaturnSdkConfig } from '../../saturn-sdk'; import { validatePoolSdkData } from '../../util/validation'; import { hex } from '@scure/base'; import { createProtocolPda } from '../../account/pda-finder'; import { createTogglePausedProtocolMessage, TogglePausedInstruction, } from '@saturnbtcio/pool-serde-sdk'; import { TogglePausedMessageRequest } from './toggle-paused.dto'; export class TogglePaused { private readonly config: SaturnSdkConfig; constructor(config: SaturnSdkConfig) { this.config = config; } async togglePausedMessage(request: TogglePausedMessageRequest) { const scureNetwork = getBitcoinNetwork(this.config.network); validatePoolSdkData(request, scureNetwork); const togglePausedData: TogglePausedInstruction = { paused: request.paused, }; let [protocolPda, _bump] = createProtocolPda( hex.decode(this.config.programAccount), ); const message = createTogglePausedProtocolMessage( this.config.programAccount, hex.encode(toXOnly(hex.decode(request.feePayerPubkey))), hex.encode(protocolPda), togglePausedData, request.recentBlockhash, ); return message; } }