import { PublicKey, Transaction } from "@solana/web3.js"; /** * Market status enum matching on-chain representation */ export declare enum MarketStatus { Pending = 0, Active = 1, Resolved = 2, Cancelled = 3 } /** * Order side enum * BID = buyer wants base tokens (pays quote) * ASK = seller offers base tokens (receives quote) */ export declare enum OrderSide { BID = 0, ASK = 1 } /** * Exchange account - singleton central state * PDA: ["central_state"] * Size: 212 bytes */ export interface Exchange { discriminator: Buffer; authority: PublicKey; operator: PublicKey; manager: PublicKey; marketCount: bigint; paused: boolean; bump: number; depositTokenCount: number; feeReceiver: PublicKey; } /** * Market account * PDA: ["market", market_id (u64)] * Size: 212 bytes */ export interface Market { discriminator: Buffer; marketId: bigint; numOutcomes: number; status: MarketStatus; bump: number; makerFeeBps: number; takerFeeBps: number; oracle: PublicKey; questionId: Buffer; conditionId: Buffer; payoutNumerators: PayoutNumerators; payoutDenominator: number; } export type PayoutNumerators = [number, number, number, number, number, number]; /** * Order status account - tracks partial fills and cancellations * PDA: ["order_status", order_hash (32 bytes)] * Size: 32 bytes */ export interface OrderStatus { discriminator: Buffer; remaining: bigint; baseRemaining: bigint; isCancelled: boolean; } /** * User nonce account - replay protection * PDA: ["user_nonce", user_pubkey (32 bytes)] * Size: 16 bytes */ export interface UserNonce { discriminator: Buffer; nonce: bigint; } /** * Position account - user's state in a market * PDA: ["position", owner (32 bytes), market (32 bytes)] * Size: 80 bytes */ export interface Position { discriminator: Buffer; owner: PublicKey; market: PublicKey; bump: number; } /** * Orderbook account - links market to token pair and lookup table * PDA: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)] * Size: 144 bytes */ export interface Orderbook { discriminator: Buffer; market: PublicKey; mintA: PublicKey; mintB: PublicKey; lookupTable: PublicKey; baseIndex: number; bump: number; } /** * GlobalDepositToken whitelist account. * PDA: ["global_deposit", mint] * Size: 48 bytes */ export interface GlobalDepositToken { discriminator: Buffer; mint: PublicKey; active: boolean; bump: number; index: number; } /** * Signed order format (233 bytes) * Full order with all fields for submission, cancellation, and hashing */ export interface SignedOrder { nonce: number; salt: bigint; maker: PublicKey; market: PublicKey; baseMint: PublicKey; quoteMint: PublicKey; side: OrderSide; amountIn: bigint; amountOut: bigint; expiration: bigint; signature: Buffer; } /** * Alias matching Rust v2 naming. */ export type OrderPayload = SignedOrder; /** * Compact order format (37 bytes) * Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA) */ export interface Order { nonce: number; salt: bigint; side: OrderSide; amountIn: bigint; amountOut: bigint; expiration: bigint; } /** * Parameters for initialize instruction */ export interface InitializeParams { authority: PublicKey; } /** * Parameters for createMarket instruction */ export interface CreateMarketParams { manager: PublicKey; numOutcomes: number; oracle: PublicKey; questionId: Buffer; makerFeeBps: number; takerFeeBps: number; } /** * Parameters for addDepositMint instruction */ export interface AddDepositMintParams { manager: PublicKey; depositMint: PublicKey; } /** * Parameters for deposit (mint complete set) instruction. */ export interface BuildDepositParams { user: PublicKey; market: PublicKey; depositMint: PublicKey; amount: bigint; } /** * Parameters for merge (merge complete set) instruction. */ export interface BuildMergeParams { user: PublicKey; market: PublicKey; depositMint: PublicKey; amount: bigint; } /** * Parameters for cancelOrder instruction */ export interface CancelOrderParams { operator: PublicKey; market: PublicKey; order: SignedOrder; } /** * Parameters for incrementNonce instruction */ export interface IncrementNonceParams { user: PublicKey; } /** * Parameters for settleMarket instruction */ export interface SettleMarketParams { oracle: PublicKey; marketId: bigint; payoutNumerators: number[]; } /** * Integer fixed-point metadata for two-sided scalar settlement. */ export interface ScalarResolutionParams { minValue: bigint; maxValue: bigint; resolvedValue: bigint; lowerOutcomeIndex: number; upperOutcomeIndex: number; numOutcomes: number; } /** * Parameters for redeemWinnings instruction */ export interface RedeemWinningsParams { user: PublicKey; market: PublicKey; depositMint: PublicKey; amount: bigint; } /** * Parameters for setPaused instruction */ export interface SetPausedParams { authority: PublicKey; paused: boolean; } /** * Parameters for setOperator instruction */ export interface SetOperatorParams { authority: PublicKey; newOperator: PublicKey; } /** * Parameters for withdrawFromPosition instruction */ export interface WithdrawFromPositionParams { user: PublicKey; market: PublicKey; mint: PublicKey; amount: bigint; outcomeIndex: number; } /** * Parameters for activateMarket instruction */ export interface ActivateMarketParams { manager: PublicKey; marketId: bigint; } /** * Parameters for matchOrdersMulti instruction */ export interface MatchOrdersMultiParams { operator: PublicKey; market: PublicKey; baseMint: PublicKey; quoteMint: PublicKey; feeReceiver: PublicKey; takerOrder: SignedOrder; makerOrders: SignedOrder[]; makerFillAmounts: bigint[]; takerFillAmounts: bigint[]; fullFillBitmask: number; } /** * Parameters for setAuthority instruction */ export interface SetAuthorityParams { currentAuthority: PublicKey; newAuthority: PublicKey; } /** * Parameters for createOrderbook instruction */ export interface CreateOrderbookParams { manager: PublicKey; market: PublicKey; mintA: PublicKey; mintB: PublicKey; feeReceiver: PublicKey; mintADepositMint: PublicKey; mintBDepositMint: PublicKey; recentSlot: bigint; baseIndex: number; mintAOutcomeIndex: number; mintBOutcomeIndex: number; } /** * Parameters for setManager instruction */ export interface SetManagerParams { authority: PublicKey; newManager: PublicKey; } /** * One per-market fee update. */ export interface MarketFeeUpdate { market: PublicKey; makerFeeBps: number; takerFeeBps: number; } /** * Parameters for setMarketFees instruction. */ export interface SetMarketFeesParams { manager: PublicKey; updates: MarketFeeUpdate[]; } /** * Parameters for setFeeReceiver instruction. */ export interface SetFeeReceiverParams { authority: PublicKey; newFeeReceiver: PublicKey; } /** * Parameters for create/update conditional mint metadata instructions. */ export interface ConditionalMetadataParams { manager: PublicKey; market: PublicKey; depositMint: PublicKey; outcomeIndex: number; name: string; symbol: string; uri: string; } /** * Parameters for whitelistDepositToken instruction */ export interface WhitelistDepositTokenParams { authority: PublicKey; mint: PublicKey; } /** * Parameters for depositToGlobal instruction */ export interface DepositToGlobalParams { user: PublicKey; mint: PublicKey; amount: bigint; } /** * Optional ALT behavior for depositToGlobal. */ export type DepositToGlobalAltContext = { kind: "create"; recentSlot: bigint; } | { kind: "extend"; lookupTable: PublicKey; }; /** * Parameters for globalToMarketDeposit instruction */ export interface GlobalToMarketDepositParams { user: PublicKey; market: PublicKey; depositMint: PublicKey; amount: bigint; } /** * Parameters for initPositionTokens instruction */ export interface InitPositionTokensParams { payer: PublicKey; user: PublicKey; market: PublicKey; depositMints: PublicKey[]; recentSlot: bigint; } /** * Parameters for depositAndSwap instruction */ /** * Parameters for extendPositionTokens instruction */ export interface ExtendPositionTokensParams { operator: PublicKey; user: PublicKey; market: PublicKey; lookupTable: PublicKey; depositMints: PublicKey[]; } export interface MakerFill { order: SignedOrder; makerFillAmount: bigint; takerFillAmount: bigint; isFullFill: boolean; isDeposit: boolean; depositMint: PublicKey; } export interface DepositAndSwapParams { operator: PublicKey; market: PublicKey; baseMint: PublicKey; quoteMint: PublicKey; feeReceiver: PublicKey; takerOrder: SignedOrder; takerIsFullFill: boolean; takerIsDeposit: boolean; takerDepositMint: PublicKey; numOutcomes: number; makers: MakerFill[]; } /** * Parameters for withdrawFromGlobal instruction */ export interface WithdrawFromGlobalParams { user: PublicKey; mint: PublicKey; amount: bigint; } /** * Parameters for closePositionAlt instruction. */ export interface ClosePositionAltParams { operator: PublicKey; position: PublicKey; market: PublicKey; lookupTable: PublicKey; } /** * Parameters for closeOrderStatus instruction. */ export interface CloseOrderStatusParams { operator: PublicKey; orderHash: Buffer; } /** * Parameters for closePositionTokenAccounts instruction. */ export interface ClosePositionTokenAccountsParams { operator: PublicKey; market: PublicKey; position: PublicKey; depositMints: PublicKey[]; } /** * Parameters for closeOrderbookAlt instruction. */ export interface CloseOrderbookAltParams { operator: PublicKey; orderbook: PublicKey; market: PublicKey; lookupTable: PublicKey; } /** * Parameters for closeOrderbook instruction. */ export interface CloseOrderbookParams { operator: PublicKey; orderbook: PublicKey; market: PublicKey; lookupTable: PublicKey; } /** * Result from transaction builders */ export interface BuildResult> { /** Unsigned transaction ready for signing */ transaction: Transaction; /** Key accounts involved in the transaction */ accounts: T; /** Serialize transaction to base64 */ serialize: () => string; } /** * Accounts returned from initialize */ export interface InitializeAccounts { exchange: PublicKey; } /** * Accounts returned from createMarket */ export interface CreateMarketAccounts { exchange: PublicKey; market: PublicKey; conditionTombstone: PublicKey; } /** * Accounts returned from addDepositMint */ export interface AddDepositMintAccounts { exchange: PublicKey; market: PublicKey; vault: PublicKey; mintAuthority: PublicKey; globalDepositToken: PublicKey; conditionalMints: PublicKey[]; } /** * Accounts returned from mintCompleteSet */ export interface MintCompleteSetAccounts { position: PublicKey; vault: PublicKey; conditionalMints: PublicKey[]; } /** * Accounts returned from mergeCompleteSet */ export interface MergeCompleteSetAccounts { position: PublicKey; vault: PublicKey; conditionalMints: PublicKey[]; } /** * Accounts returned from cancelOrder */ export interface CancelOrderAccounts { exchange: PublicKey; market: PublicKey; orderStatus: PublicKey; } /** * Accounts returned from incrementNonce */ export interface IncrementNonceAccounts { userNonce: PublicKey; } /** * Accounts returned from settleMarket */ export interface SettleMarketAccounts { exchange: PublicKey; market: PublicKey; } /** * Accounts returned from redeemWinnings */ export interface RedeemWinningsAccounts { position: PublicKey; vault: PublicKey; winningMint: PublicKey; } /** * Accounts returned from activateMarket */ export interface ActivateMarketAccounts { exchange: PublicKey; market: PublicKey; } /** * Accounts returned from matchOrdersMulti */ export interface MatchOrdersMultiAccounts { orderbook: PublicKey; takerOrderStatus: PublicKey; takerPosition: PublicKey; makerOrderStatuses: PublicKey[]; makerPositions: PublicKey[]; } /** * Parameters for creating a bid order */ export interface BidOrderParams { nonce: number; salt?: bigint; maker: PublicKey; market: PublicKey; baseMint: PublicKey; quoteMint: PublicKey; amountIn: bigint; amountOut: bigint; expiration?: bigint; } /** * Parameters for creating an ask order */ export interface AskOrderParams { nonce: number; salt?: bigint; maker: PublicKey; market: PublicKey; baseMint: PublicKey; quoteMint: PublicKey; amountIn: bigint; amountOut: bigint; expiration?: bigint; } //# sourceMappingURL=types.d.ts.map