UNPKG

@drift-labs/sdk

Version:
225 lines (224 loc) • 8.03 kB
/// <reference types="node" /> /// <reference types="node" /> /// <reference types="bn.js" /> import type { AccountMeta, Connection, PublicKey, TransactionInstruction } from '@solana/web3.js'; import * as pdas from '../addresses/pda'; import * as constants from '../constants'; import { CustomBorshCoder } from '../decode/customCoder'; import type { Drift } from '../idl/drift'; import type { UserAccount } from '../types'; import type { DriftProgram } from '../config'; import type { BN } from '@coral-xyz/anchor'; import * as remainingAccounts from './remainingAccounts'; import * as signedMsg from './signedMsg'; export type DriftCoreContext = { /** Drift program id. */ programId: PublicKey; /** Anchor IDL json for Drift (defaults to bundled `idl/drift.json`). */ idl?: Drift; }; /** * DriftCore is the minimal, core SDK surface: * - No subscriptions / polling / websockets. * - Pure helpers for PDAs, decoding, constants, and instruction building. * * Transaction/instruction builders will be progressively moved here from `DriftClient`. */ export declare class DriftCore { /** Re-export PDA helpers (pure). */ static readonly pdas: typeof pdas; /** Re-export SDK constants (market configs, numeric constants, etc). */ static readonly constants: typeof constants; /** Re-export remaining-accounts logic (pure). */ static readonly remainingAccounts: typeof remainingAccounts; static readonly signedMsg: typeof signedMsg; static defaultIdl(): Drift; static coder(idl?: Drift): CustomBorshCoder; /** Decode a Drift `User` account buffer without creating a Program. */ static decodeUserAccount(buffer: Buffer): UserAccount; /** Fetch and decode a Drift `User` account. */ static fetchUserAccount(connection: Connection, userAccountPublicKey: PublicKey): Promise<UserAccount | null>; static buildDepositInstruction(args: { program: DriftProgram; marketIndex: number; amount: BN; reduceOnly: boolean; state: PublicKey; spotMarket: PublicKey; spotMarketVault: PublicKey; user: PublicKey; userStats: PublicKey; userTokenAccount: PublicKey; authority: PublicKey; tokenProgram: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildWithdrawInstruction(args: { program: DriftProgram; marketIndex: number; amount: BN; reduceOnly: boolean; state: PublicKey; spotMarket: PublicKey; spotMarketVault: PublicKey; driftSigner: PublicKey; user: PublicKey; userStats: PublicKey; userTokenAccount: PublicKey; authority: PublicKey; tokenProgram: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildPlaceOrdersInstruction(args: { program: DriftProgram; formattedParams: any[]; state: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildCancelOrdersInstruction(args: { program: DriftProgram; marketType: any; marketIndex: number | null; direction: any; user: PublicKey; state: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildFillPerpOrderInstruction(args: { program: DriftProgram; orderId: number | null; state: PublicKey; filler: PublicKey; fillerStats: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildTriggerOrderInstruction(args: { program: DriftProgram; orderId: number; state: PublicKey; filler: PublicKey; user: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildSettlePnlInstruction(args: { program: DriftProgram; marketIndex: number; state: PublicKey; authority: PublicKey; user: PublicKey; spotMarketVault: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildLiquidatePerpInstruction(args: { program: DriftProgram; marketIndex: number; maxBaseAssetAmount: any; limitPrice: any | null; state: PublicKey; authority: PublicKey; user: PublicKey; userStats: PublicKey; liquidator: PublicKey; liquidatorStats: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildPlacePerpOrderInstruction(args: { program: DriftProgram; orderParams: any; state: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildPlaceAndTakePerpOrderInstruction(args: { program: DriftProgram; orderParams: any; optionalParams: number | null; state: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildPlaceAndMakePerpOrderInstruction(args: { program: DriftProgram; orderParams: any; takerOrderId: number; state: PublicKey; user: PublicKey; userStats: PublicKey; taker: PublicKey; takerStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildCancelOrderInstruction(args: { program: DriftProgram; orderId: number | null; state: PublicKey; user: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildCancelOrderByUserIdInstruction(args: { program: DriftProgram; userOrderId: number; state: PublicKey; user: PublicKey; authority: PublicKey; oracle: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildCancelOrdersByIdsInstruction(args: { program: DriftProgram; orderIds: number[] | undefined; state: PublicKey; user: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildModifyOrderInstruction(args: { program: DriftProgram; orderId: number; modifyParams: any; state: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildModifyOrderByUserIdInstruction(args: { program: DriftProgram; userOrderId: number; modifyParams: any; state: PublicKey; user: PublicKey; userStats: PublicKey; authority: PublicKey; remainingAccounts: AccountMeta[]; }): Promise<TransactionInstruction>; static buildUpdateFundingRateInstruction(args: { program: DriftProgram; perpMarketIndex: number; state: PublicKey; perpMarket: PublicKey; oracle: PublicKey; }): Promise<TransactionInstruction>; /** * Placeholder for instruction builders. * * In follow-up refactors, DriftClient methods like `getDepositInstruction`, * `getPlaceOrdersIx`, etc. will be moved here as pure builders. */ static buildInstructions(_ctx: DriftCoreContext): TransactionInstruction[]; }