import { PublicKey, TransactionInstruction } from "@solana/web3.js"; import type { PitProgram } from "../program.js"; import { getMarketAddress } from "../accounts/pda.js"; /** * Parameters for creating pause/unpause market instructions */ interface PauseMarketParams { /** Week number of the market */ weekNumber: number; /** Operator's public key (must be market's operator) */ operator: PublicKey; } /** * Create a pause_market instruction to halt trading * * This instruction is operator-only. When paused: * - Trading is blocked * - mark_extreme is blocked * - Settlement and redemption still work * * @param program - Anchor Program instance * @param params - Pause market parameters * @returns Promise resolving to TransactionInstruction * * @example * ```typescript * import { createProgram, createPauseMarketInstruction } from "@pit-protocol/sdk"; * * const program = createProgram(provider); * const ix = await createPauseMarketInstruction(program, { * weekNumber: 1, * operator: operatorKeypair.publicKey, * }); * * const tx = new Transaction().add(ix); * await sendAndConfirmTransaction(connection, tx, [operatorKeypair]); * ``` */ export async function createPauseMarketInstruction( program: PitProgram, params: PauseMarketParams ): Promise { const { weekNumber, operator } = params; const marketState = getMarketAddress(weekNumber); return await program.methods .pauseMarket() .accountsPartial({ marketState, operator, }) .instruction(); } /** * Create an unpause_market instruction to resume trading * * This instruction is operator-only. * * @param program - Anchor Program instance * @param params - Unpause market parameters * @returns Promise resolving to TransactionInstruction * * @example * ```typescript * import { createProgram, createUnpauseMarketInstruction } from "@pit-protocol/sdk"; * * const program = createProgram(provider); * const ix = await createUnpauseMarketInstruction(program, { * weekNumber: 1, * operator: operatorKeypair.publicKey, * }); * * const tx = new Transaction().add(ix); * await sendAndConfirmTransaction(connection, tx, [operatorKeypair]); * ``` */ export async function createUnpauseMarketInstruction( program: PitProgram, params: PauseMarketParams ): Promise { const { weekNumber, operator } = params; const marketState = getMarketAddress(weekNumber); return await program.methods .unpauseMarket() .accountsPartial({ marketState, operator, }) .instruction(); }