Options
All
  • Public
  • Public/Protected
  • All
Menu

@zero_one/client

Index

Enumerations

Classes

Interfaces

Type aliases

Variables

Functions

Type aliases

AssetInfo: { borrows: Decimal; borrowsApy: number; decimals: number; dustThreshold: Num; indexPrice: Num; isBorrowable: boolean; isSwappable: boolean; liqFee: number; maxDeposit: Decimal; maxRate: number; mint: PublicKey; ogFee: number; optimalRate: number; optimalUtil: number; rawBorrows: Decimal; rawSupply: Decimal; serumOpenOrders: PublicKey; supply: Decimal; supplyApy: number; symbol: string; vault: PublicKey; weight: number }
decimals
  • asset decimals
weight
  • col weight in per mille
liqfee
  • liquidation fee in per mille
isborrowable
  • is asset borrowable
optimalutil
  • optimal utilization in per mille
optimalrate
  • optimal rate in per mille
maxrate
  • max rate in per mille
ogfee
  • origination fee in bps
isswappable
  • is asset swappable
serumopenorders
  • serum open orders key
maxdeposit
  • max deposit amount in smol
dustthreshold
  • dust threshold in smol
symbol
  • symbol
indexprice
  • index price of an asset
supply
  • total supply
borrows
  • total borrows
supplyapy
  • supply apy
borrowsapy
  • borrows apy
mint
  • mint public key
vault
  • vault key

Type declaration

  • borrows: Decimal
  • borrowsApy: number
  • decimals: number
  • dustThreshold: Num
  • indexPrice: Num
  • isBorrowable: boolean
  • isSwappable: boolean
  • liqFee: number
  • maxDeposit: Decimal
  • maxRate: number
  • mint: PublicKey
  • ogFee: number
  • optimalRate: number
  • optimalUtil: number
  • rawBorrows: Decimal
  • rawSupply: Decimal
  • serumOpenOrders: PublicKey
  • supply: Decimal
  • supplyApy: number
  • symbol: string
  • vault: PublicKey
  • weight: number
CacheSchema: IdlAccounts<Zo>["cache"] & { borrowCache: BorrowCache[]; marks: MarkCache[]; oracles: OracleCache[] }
ControlSchema: IdlAccounts<Zo>["control"] & { openOrdersAgg: OpenOrdersInfo[] }
MarginSchema: Omit<IdlAccounts<Zo>["margin"], "collateral"> & { collateral: WrappedI80F48[] }
OracleType: { pyth: {} } | { switchboard: {} }
OrderType: { limit: {} } | { immediateOrCancel: {} } | { postOnly: {} } | { reduceOnlyIoc: {} } | { reduceOnlyLimit: {} } | { fillOrKill: {} }
PerpType: { future: {} } | { callOption: {} } | { putOption: {} } | { square: {} }
SpecialOrderType: { takeProfitMarket: {} } | { takeProfitLimit: {} } | { stopLossMarket: {} } | { stopLossLimit: {} }
SpecialOrdersSchema: Omit<IdlAccounts<Zo>["specialOrders"], "entries"> & { entries: SpecialOrdersInfo[] }
StateSchema: IdlAccounts<Zo>["state"] & { collaterals: CollateralInfo[]; perpMarkets: PerpMarketInfo[] }
TransactionId: string
ZammSchema: IdlAccounts<ZammIdlType>["zamm"]
Zo: { accounts: [{ name: "cache"; type: { fields: [{ name: "oracles"; type: { array: [{ defined: "OracleCache" }, 25] } }, { name: "marks"; type: { array: [{ defined: "MarkCache" }, 50] } }, { name: "fundingCache"; type: { array: ["i128", 50] } }, { name: "borrowCache"; type: { array: [{ defined: "BorrowCache" }, 25] } }]; kind: "struct" } }, { name: "control"; type: { fields: [{ name: "authority"; type: "publicKey" }, { name: "openOrdersAgg"; type: { array: [{ defined: "OpenOrdersInfo" }, 50] } }]; kind: "struct" } }, { name: "globalState"; type: { fields: [{ name: "globalNonce"; type: "u8" }, { name: "state"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 1024] } }]; kind: "struct" } }, { name: "heimdall"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "dailyWdLimit"; type: "u64" }, { name: "dailyWdStartTs"; type: "u64" }, { name: "dailyWithdrawn"; type: { array: ["u64", 25] } }, { name: "constantPrices"; type: { array: ["u64", 25] } }, { name: "padding"; type: { array: ["u8", 1024] } }]; kind: "struct" } }, { name: "margin"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "authority"; type: "publicKey" }, { name: "collateral"; type: { array: [{ defined: "WrappedI80F48" }, 25] } }, { name: "control"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 320] } }]; kind: "struct" } }, { name: "specialOrders"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "authority"; type: "publicKey" }, { name: "prevId"; type: "u16" }, { name: "entries"; type: { array: [{ defined: "SpecialOrdersInfo" }, 20] } }, { name: "padding"; type: { array: ["u8", 128] } }]; kind: "struct" } }, { name: "state"; type: { fields: [{ name: "signerNonce"; type: "u8" }, { name: "admin"; type: "publicKey" }, { name: "cache"; type: "publicKey" }, { name: "swapFeeVault"; type: "publicKey" }, { name: "insurance"; type: "u64" }, { name: "feesAccrued"; type: { array: ["u64", 25] } }, { name: "vaults"; type: { array: ["publicKey", 25] } }, { name: "collaterals"; type: { array: [{ defined: "CollateralInfo" }, 25] } }, { name: "perpMarkets"; type: { array: [{ defined: "PerpMarketInfo" }, 50] } }, { name: "totalCollaterals"; type: "u16" }, { name: "totalMarkets"; type: "u16" }, { name: "padding"; type: { array: ["u8", 1280] } }]; kind: "struct" } }]; constants: [{ name: "SPOT_INITIAL_MARGIN_REQ"; type: "u64"; value: "1_100_000" }, { name: "SPOT_MAINT_MARGIN_REQ"; type: "u64"; value: "1_030_000" }, { name: "DUST_THRESHOLD"; type: "i64"; value: "1_000" }, { name: "MAX_SPECIAL_ORDERS"; type: { defined: "usize" }; value: "20" }, { name: "SPECIAL_ORDER_FEE"; type: "u64"; value: "200_000" }, { name: "ORACLE_STALENESS_THRESH"; type: "u64"; value: "300" }, { name: "TWAP_STALENESS_THRESH"; type: "u64"; value: "60" }, { name: "TWAP_SAMPLE_DT"; type: "u64"; value: "60" }, { name: "TWAP_SAMPLES_PER_H"; type: "u64"; value: "60" }, { name: "DEFAULT_IR_MULTIPLIER"; type: "u64"; value: "1_000_000" }, { name: "MAX_ORACLE_SOURCES"; type: { defined: "usize" }; value: "3" }, { name: "MAX_COLLATERALS"; type: { defined: "usize" }; value: "25" }, { name: "MAX_MARKETS"; type: { defined: "usize" }; value: "50" }, { name: "DEBUG_LOG"; type: "string"; value: "\"DEBUG\"" }]; errors: [{ code: 6000; msg: "A math failure occured, likely due to overflow"; name: "MathFailure" }, { code: 6001; msg: "The amount you are withdrawing exceeds the available collateral"; name: "InsufficientFunds" }, { code: 6002; msg: "Unauthorized to perform the operation"; name: "Unauthorized" }, { code: 6003; msg: "Arguments passed were invalid"; name: "InvalidArgument" }, { code: 6004; msg: "Invalid mint for transaction"; name: "InvalidMint" }, { code: 6005; msg: "Everlasting account state is invalid"; name: "InvalidOrderState" }, { code: 6006; msg: "Going below Margin maintenance"; name: "BelowMarginMaintenance" }, { code: 6007; msg: "Above Margin maintenance"; name: "AboveMMF" }, { code: 6008; msg: "Couldn't calculate the position value"; name: "PositionValueCalculationFailure" }, { code: 6009; msg: "Pyth account is invalid"; name: "InvalidPythAccount" }, { code: 6010; msg: "Liquidation has not fully completed"; name: "IncompleteLiquidation" }, { code: 6011; msg: "The account has not been marked for liquidation"; name: "NotMarkedLiquidate" }, { code: 6012; msg: "Account is under liquidation"; name: "UnderLiquidation" }, { code: 6013; msg: "Failed to load dex market"; name: "LoadDexMarketFailure" }, { code: 6014; msg: "Failed to load open orders"; name: "LoadOpenOrdersFailure" }, { code: 6015; msg: "Failed to calculate margin ratio"; name: "CalculateMarginRatioFailure" }, { code: 6016; msg: "Current margin fraction is below position initial margin fraction"; name: "BelowInitialMarginFraction" }, { code: 6017; msg: "No active positions to close"; name: "NoPositionToLiquidate" }, { code: 6018; msg: "The collateral pair already exists in the collateral array"; name: "CollateralAlreadyExists" }, { code: 6019; msg: "The collateral array is at full capacity"; name: "CollateralAtCapacity" }, { code: 6020; msg: "The collateral pair does not exist in the collateral array"; name: "CollateralDoesNotExist" }, { code: 6021; msg: "The DEX Market key already exists in perp markets array"; name: "DexMarketKeyAlreadyExists" }, { code: 6022; msg: "The symbol already exists in perp markets array"; name: "SymbolAlreadyExists" }, { code: 6023; msg: "The perp markets array is at full capacity"; name: "MarketsAtCapacity" }, { code: 6024; msg: "The given vault does not match the state vault"; name: "InvalidVault" }, { code: 6025; msg: "The given DEX market key does not match any keys in the perp markets array"; name: "InvalidDexMarketKey" }, { code: 6026; msg: "The open orders account is already initialized"; name: "OpenOrdersAlreadyInitialized" }, { code: 6027; msg: "The limit price is invalid"; name: "InvalidLimitPrice" }, { code: 6028; msg: "The max base quantity is invalid"; name: "InvalidMaxBaseQuantity" }, { code: 6029; msg: "The max quote quantity is invalid"; name: "InvalidMaxQuoteQuantity" }, { code: 6030; msg: "The oracle already exists in the oracle cache"; name: "OracleAlreadyExists" }, { code: 6031; msg: "Oracle cache is at full capacity"; name: "OracleCacheFull" }, { code: 6032; msg: "The given oracle does not exist"; name: "OracleDoesNotExist" }, { code: 6033; msg: "The given oracle key is invalid"; name: "InvalidOracleKey" }, { code: 6034; msg: "The given oracle type is invalid"; name: "InvalidOracleType" }, { code: 6035; msg: "Oracle encountered an issue when fetching accurate price."; name: "PriceOracleIssue" }, { code: 6036; msg: "Pyth oracle is not in trading status."; name: "InvalidPythStatus" }, { code: 6037; msg: "The remaining accounts passed are invalid"; name: "InvalidRemainingAccounts" }, { code: 6038; msg: "Expo is different"; name: "DifferentExpo" }, { code: 6039; msg: "Insufficient funds in insurance"; name: "InsufficientInsurance" }, { code: 6040; msg: "The oracle is invalid"; name: "InvalidOracle" }, { code: 6041; msg: "Oracle last updated time is beyond the valid time since last update"; name: "OracleNeedsUpdating" }, { code: 6042; msg: "The symbol is invalid"; name: "InvalidSymbol" }, { code: 6043; msg: "Negative collateral value"; name: "NegativeCollateral" }, { code: 6044; msg: "There is nothing to repay, cannot use repay only"; name: "NothingToRepay" }, { code: 6045; msg: "There is nothing to repay, cannot use without allow borrow"; name: "NothingToWithdraw" }, { code: 6046; msg: "There is not enough liquidity in the vault to withdraw"; name: "InsufficientWithdrawalLiquidity" }, { code: 6047; msg: "There are open orders that have not been cancelled yet"; name: "UncancelledOpenOrders" }, { code: 6048; msg: "Invalid open orders key"; name: "InvalidOpenOrdersKey" }, { code: 6049; msg: "The asset is not borrowable"; name: "NotBorrowable" }, { code: 6050; msg: "The oracle symbol is invalid"; name: "InvalidOracleSymbol" }, { code: 6051; msg: "There are active positions that have not been closed"; name: "UnliquidatedActivePositions" }, { code: 6052; msg: "There are spot/ borrow positions that have not been liquidated"; name: "UnliquidatedSpotPositions" }, { code: 6053; msg: "Timestamp is invalid"; name: "InvalidTimestamp" }, { code: 6054; msg: "Collateral is already swappable"; name: "CollateralSwappable" }, { code: 6055; msg: "Collateral is not swappable"; name: "CollateralNotSwappable" }, { code: 6056; msg: "Swap did the opposite of what it should have"; name: "SwapNegative" }, { code: 6057; msg: "Can't swap to and from the same collateral"; name: "SelfSwap" }, { code: 6058; msg: "Insufficient supply"; name: "InsufficientSupply" }, { code: 6059; msg: "Oracle has not been recently updated"; name: "OracleCacheStale" }, { code: 6060; msg: "No tokens received when swapping"; name: "ZeroSwap" }, { code: 6061; msg: "Slippage tolerance exceeded"; name: "SlippageExceeded" }, { code: 6062; msg: "Reduce only order was violated"; name: "ReduceOnlyViolated" }, { code: 6063; msg: "Unimplemented"; name: "Unimplemented" }, { code: 6064; msg: "Currently bankrupt"; name: "Bankrupt" }, { code: 6065; msg: "Deposit exceeds deposit limit for the collateral"; name: "AboveDepositLimit" }, { code: 6066; msg: "Below the dust threshold"; name: "BelowDustThreshold" }, { code: 6067; msg: "The liquidation is invalid"; name: "InvalidLiquidation" }, { code: 6068; msg: "The post orders are outside the price bands"; name: "OutsidePriceBands" }, { code: 6069; msg: "The mark price is too far from the index price"; name: "MarkTooFarFromIndex" }, { code: 6070; msg: "FillOrKill order was not completely filled"; name: "FillOrKillNotFilled" }, { code: 6071; msg: "An error occurred during a Zamm operation"; name: "ZammError" }, { code: 6072; msg: "An invalid perp type was used"; name: "InvalidPerpType" }, { code: 6073; msg: "This market is disabled"; name: "DisabledMarket" }, { code: 6074; msg: "This collateral is disabled"; name: "CollateralDisabled" }, { code: 6075; msg: "The X Mint is not associated to the market"; name: "InvalidXMint" }, { code: 6076; msg: "The state key is invalid"; name: "InvalidState" }, { code: 6077; msg: "The zamm key is invalid"; name: "InvalidZamm" }, { code: 6078; msg: "The withdraw amount exceeded the global daily withdraw limit"; name: "ExceededSecurityWithdrawLimit" }, { code: 6079; msg: "Max number of special orders reached"; name: "SpecialOrdersFull" }, { code: 6080; msg: "Special order not triggered"; name: "SpecialOrderNotTriggered" }, { code: 6081; msg: "Special order does not exist"; name: "SpecialOrderNotFound" }, { code: 6082; msg: "There are uncancelled special orders"; name: "UncancelledSpecialOrders" }]; events: [{ fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "depositAmount"; type: "u64" }, { index: false; name: "marginKey"; type: "publicKey" }]; name: "DepositLog" }, { fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "withdrawAmount"; type: "u64" }, { index: false; name: "marginKey"; type: "publicKey" }]; name: "WithdrawLog" }, { fields: [{ index: false; name: "marginKey"; type: "publicKey" }, { index: false; name: "baseIndex"; type: "u8" }, { index: false; name: "quoteIndex"; type: "u8" }, { index: false; name: "baseDelta"; type: "i64" }, { index: false; name: "quoteDelta"; type: "i64" }]; name: "SwapLog" }, { fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "col"; type: { defined: "WrappedI80F48" } }]; name: "CollateralBalanceLog" }, { fields: [{ index: false; name: "cancelledBids"; type: "u64" }, { index: false; name: "cancelledAsks"; type: "u64" }]; name: "ForceCancelLog" }, { fields: [{ index: false; name: "liquidationEvent"; type: { defined: "LiquidationEvent" } }, { index: false; name: "baseSymbol"; type: "string" }, { index: false; name: "quoteSymbol"; type: { option: "string" } }, { index: false; name: "liqorMargin"; type: "publicKey" }, { index: false; name: "liqeeMargin"; type: "publicKey" }, { index: false; name: "assetsToLiqor"; type: "i64" }, { index: false; name: "quoteToLiqor"; type: "i64" }]; name: "LiquidationLog" }, { fields: [{ index: false; name: "baseSymbol"; type: "string" }, { index: false; name: "liqorMargin"; type: "publicKey" }, { index: false; name: "liqeeMargin"; type: "publicKey" }, { index: false; name: "assetsToLiqor"; type: "i64" }, { index: false; name: "quoteToLiqor"; type: "i64" }, { index: false; name: "insuranceLoss"; type: "i64" }, { index: false; name: "socializedLoss"; type: "i64" }]; name: "BankruptcyLog" }, { fields: [{ index: false; name: "symbols"; type: { vec: "string" } }, { index: false; name: "prices"; type: { vec: { defined: "WrappedI80F48" } } }, { index: false; name: "twaps"; type: { vec: { defined: "WrappedI80F48" } } }]; name: "CacheOracleLog" }, { fields: [{ index: false; name: "symbols"; type: { vec: "string" } }]; name: "CacheOracleNoops" }, { fields: [{ index: false; name: "ir"; type: { defined: "WrappedI80F48" } }, { index: false; name: "util"; type: { defined: "WrappedI80F48" } }, { index: false; name: "supMul"; type: { defined: "WrappedI80F48" } }, { index: false; name: "borMul"; type: { defined: "WrappedI80F48" } }]; name: "CacheIRLog" }, { fields: [{ index: false; name: "market"; type: "publicKey" }, { index: false; name: "takerMargin"; type: "publicKey" }, { index: false; name: "makerMargin"; type: "publicKey" }, { index: false; name: "dBase"; type: "i64" }, { index: false; name: "dQuote"; type: "i64" }]; name: "OtcFill" }, { fields: []; name: "ControlStateLog" }]; instructions: [{ accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: [{ name: "nonce"; type: "u8" }]; name: "createMargin" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "tokenAccount" }, { isMut: true; isSigner: false; name: "vault" }, { isMut: false; isSigner: false; name: "tokenProgram" }]; args: [{ name: "repayOnly"; type: "bool" }, { name: "amount"; type: "u64" }]; name: "deposit" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "tokenAccount" }, { isMut: true; isSigner: false; name: "vault" }, { isMut: false; isSigner: false; name: "tokenProgram" }, { isMut: true; isSigner: false; name: "heimdall" }]; args: [{ name: "allowBorrow"; type: "bool" }, { name: "amount"; type: "u64" }]; name: "withdraw" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: []; name: "createPerpOpenOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "isLong"; type: "bool" }, { name: "limitPrice"; type: "u64" }, { name: "maxBaseQuantity"; type: "u64" }, { name: "maxQuoteQuantity"; type: "u64" }, { name: "orderType"; type: { defined: "OrderType" } }, { name: "limit"; type: "u16" }, { name: "clientId"; type: "u64" }]; name: "placePerpOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "isLong"; type: "bool" }, { name: "limitPrice"; type: "u64" }, { name: "maxBaseQuantity"; type: "u64" }, { name: "maxQuoteQuantity"; type: "u64" }, { name: "orderType"; type: { defined: "OrderType" } }, { name: "limit"; type: "u16" }, { name: "clientId"; type: "u64" }, { name: "maxTs"; type: "i64" }]; name: "placePerpOrderWithMaxTs" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "orderId"; type: { option: "u128" } }, { name: "isLong"; type: { option: "bool" } }, { name: "clientId"; type: { option: "u64" } }]; name: "cancelPerpOrder" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "oo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "limit"; type: "u16" }]; name: "cancelAllPerpOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: []; name: "updatePerpFunding" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: []; name: "settleFunds" }, { accounts: [{ isMut: false; isSigner: true; name: "pruner" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: true; isSigner: false; name: "liqeeOo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "limit"; type: "u16" }]; name: "forceCancelAllPerpOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqorOo" }, { isMut: false; isSigner: false; name: "liqee" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: true; isSigner: false; name: "liqeeOo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "assetTransferLots"; type: "u64" }]; name: "liquidatePerpPosition" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: false; isSigner: false; name: "assetMint" }, { isMut: false; isSigner: false; name: "quoteMint" }]; args: [{ name: "assetTransferAmount"; type: "i64" }]; name: "liquidateSpotPosition" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: false; isSigner: false; name: "assetMint" }]; args: []; name: "settleBankruptcy" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "state" }, { isMut: false; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: false; isSigner: false; name: "quoteMint" }, { isMut: true; isSigner: false; name: "quoteVault" }, { isMut: false; isSigner: false; name: "assetMint" }, { isMut: true; isSigner: false; name: "assetVault" }, { isMut: true; isSigner: false; name: "swapFeeVault" }, { isMut: true; isSigner: false; name: "serumOpenOrders" }, { isMut: true; isSigner: false; name: "serumMarket" }, { isMut: true; isSigner: false; name: "serumRequestQueue" }, { isMut: true; isSigner: false; name: "serumEventQueue" }, { isMut: true; isSigner: false; name: "serumBids" }, { isMut: true; isSigner: false; name: "serumAsks" }, { isMut: true; isSigner: false; name: "serumCoinVault" }, { isMut: true; isSigner: false; name: "serumPcVault" }, { isMut: false; isSigner: false; name: "serumVaultSigner" }, { isMut: false; isSigner: false; name: "srmSpotProgram" }, { isMut: false; isSigner: false; name: "tokenProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "buy"; type: "bool" }, { name: "allowBorrow"; type: "bool" }, { name: "amount"; type: "u64" }, { name: "minRate"; type: "u64" }]; name: "swap" }, { accounts: [{ isMut: false; isSigner: true; name: "signer" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "symbols"; type: { vec: "string" } }, { name: "mockPrices"; type: { option: { vec: { option: "u64" } } } }]; name: "cacheOracle" }, { accounts: [{ isMut: false; isSigner: true; name: "signer" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }]; args: [{ name: "start"; type: "u8" }, { name: "end"; type: "u8" }]; name: "cacheInterestRates" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: true; isSigner: false; name: "market" }, { isMut: true; isSigner: false; name: "eventQueue" }]; args: [{ name: "limit"; type: "u16" }]; name: "consumeEvents" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: true; isSigner: false; name: "market" }]; args: []; name: "crankPnl" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: []; name: "createSpecialOrdersAccount" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: [{ name: "isLong"; type: "bool" }, { name: "specialOrderType"; type: { defined: "SpecialOrderType" } }, { name: "triggerPrice"; type: "u64" }, { name: "limitPrice"; type: "u64" }, { name: "size"; type: "u64" }]; name: "placeSpecialOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "dexMarket" }]; args: [{ name: "id"; type: "u16" }]; name: "cancelSpecialOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: false; isSigner: false; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "id"; type: "u16" }]; name: "executeSpecialOrder" }]; name: "zo"; types: [{ name: "AddCollateralArgs"; type: { fields: [{ name: "oracleSymbol"; type: "string" }, { name: "weight"; type: "u16" }, { name: "isBorrowable"; type: "bool" }, { name: "optimalUtil"; type: "u16" }, { name: "optimalRate"; type: "u16" }, { name: "maxRate"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "ogFee"; type: "u16" }, { name: "maxDeposit"; type: "u64" }, { name: "dustThreshold"; type: "u16" }]; kind: "struct" } }, { name: "OracleSource"; type: { fields: [{ name: "ty"; type: { defined: "OracleType" } }, { name: "key"; type: "publicKey" }]; kind: "struct" } }, { name: "OraclePrice"; type: { fields: [{ name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "WrappedI80F48" } }]; kind: "struct" } }, { name: "BorrowCache"; type: { fields: [{ name: "supply"; type: { defined: "WrappedI80F48" } }, { name: "borrows"; type: { defined: "WrappedI80F48" } }, { name: "supplyMultiplier"; type: { defined: "WrappedI80F48" } }, { name: "borrowMultiplier"; type: { defined: "WrappedI80F48" } }, { name: "lastUpdated"; type: "u64" }]; kind: "struct" } }, { name: "OracleCache"; type: { fields: [{ name: "symbol"; type: { defined: "Symbol" } }, { name: "sources"; type: { array: [{ defined: "OracleSource" }, 3] } }, { name: "lastUpdated"; type: "u64" }, { name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "WrappedI80F48" } }, { name: "baseDecimals"; type: "u8" }, { name: "quoteDecimals"; type: "u8" }]; kind: "struct" } }, { name: "MarkCache"; type: { fields: [{ name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "TwapInfo" } }]; kind: "struct" } }, { name: "TwapInfo"; type: { fields: [{ name: "cumulAvg"; type: { defined: "WrappedI80F48" } }, { name: "open"; type: { defined: "WrappedI80F48" } }, { name: "high"; type: { defined: "WrappedI80F48" } }, { name: "low"; type: { defined: "WrappedI80F48" } }, { name: "close"; type: { defined: "WrappedI80F48" } }, { name: "lastSampleStartTime"; type: "u64" }]; kind: "struct" } }, { name: "OpenOrdersInfo"; type: { fields: [{ name: "key"; type: "publicKey" }, { name: "nativePcTotal"; type: "i64" }, { name: "posSize"; type: "i64" }, { name: "realizedPnl"; type: "i64" }, { name: "coinOnBids"; type: "u64" }, { name: "coinOnAsks"; type: "u64" }, { name: "orderCount"; type: "u8" }, { name: "fundingIndex"; type: "i128" }]; kind: "struct" } }, { name: "SpecialOrdersInfo"; type: { fields: [{ name: "id"; type: "u16" }, { name: "market"; type: "publicKey" }, { name: "ty"; type: { defined: "SpecialOrderType" } }, { name: "isLong"; type: "bool" }, { name: "triggerPrice"; type: "u64" }, { name: "limitPrice"; type: "u64" }, { name: "size"; type: "u64" }, { name: "fee"; type: "u64" }]; kind: "struct" } }, { name: "CollateralInfo"; type: { fields: [{ name: "mint"; type: "publicKey" }, { name: "oracleSymbol"; type: { defined: "Symbol" } }, { name: "decimals"; type: "u8" }, { name: "weight"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "isBorrowable"; type: "bool" }, { name: "optimalUtil"; type: "u16" }, { name: "optimalRate"; type: "u16" }, { name: "maxRate"; type: "u16" }, { name: "ogFee"; type: "u16" }, { name: "isSwappable"; type: "bool" }, { name: "serumOpenOrders"; type: "publicKey" }, { name: "maxDeposit"; type: "u64" }, { name: "dustThreshold"; type: "u16" }, { name: "padding"; type: { array: ["u8", 384] } }]; kind: "struct" } }, { name: "PerpMarketInfo"; type: { fields: [{ name: "symbol"; type: { defined: "Symbol" } }, { name: "oracleSymbol"; type: { defined: "Symbol" } }, { name: "perpType"; type: { defined: "PerpType" } }, { name: "assetDecimals"; type: "u8" }, { name: "assetLotSize"; type: "u64" }, { name: "quoteLotSize"; type: "u64" }, { name: "strike"; type: "u64" }, { name: "baseImf"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "dexMarket"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 320] } }]; kind: "struct" } }, { name: "Symbol"; type: { fields: [{ name: "data"; type: { array: ["u8", 24] } }]; kind: "struct" } }, { name: "WrappedI80F48"; type: { fields: [{ name: "data"; type: "i128" }]; kind: "struct" } }, { name: "LiquidationEvent"; type: { kind: "enum"; variants: [{ name: "Perp" }, { name: "Spot" }] } }, { name: "MfReturnOption"; type: { kind: "enum"; variants: [{ name: "Imf" }, { name: "Mmf" }, { name: "Cancel" }, { name: "Both" }] } }, { name: "OracleType"; type: { kind: "enum"; variants: [{ name: "Nil" }, { name: "Pyth" }, { name: "Switchboard" }] } }, { name: "FractionType"; type: { kind: "enum"; variants: [{ name: "Maintenance" }, { name: "Initial" }, { name: "Cancel" }] } }, { name: "OrderType"; type: { kind: "enum"; variants: [{ name: "Limit" }, { name: "ImmediateOrCancel" }, { name: "PostOnly" }, { name: "ReduceOnlyIoc" }, { name: "ReduceOnlyLimit" }, { name: "FillOrKill" }] } }, { name: "SpecialOrderType"; type: { kind: "enum"; variants: [{ name: "TakeProfitMarket" }, { name: "TakeProfitLimit" }, { name: "StopLossMarket" }, { name: "StopLossLimit" }] } }, { name: "PerpType"; type: { kind: "enum"; variants: [{ name: "Future" }, { name: "CallOption" }, { name: "PutOption" }, { name: "Square" }] } }, { name: "Side"; type: { kind: "enum"; variants: [{ name: "Bid" }, { name: "Ask" }] } }]; version: "0.7.0" }

Type declaration

  • accounts: [{ name: "cache"; type: { fields: [{ name: "oracles"; type: { array: [{ defined: "OracleCache" }, 25] } }, { name: "marks"; type: { array: [{ defined: "MarkCache" }, 50] } }, { name: "fundingCache"; type: { array: ["i128", 50] } }, { name: "borrowCache"; type: { array: [{ defined: "BorrowCache" }, 25] } }]; kind: "struct" } }, { name: "control"; type: { fields: [{ name: "authority"; type: "publicKey" }, { name: "openOrdersAgg"; type: { array: [{ defined: "OpenOrdersInfo" }, 50] } }]; kind: "struct" } }, { name: "globalState"; type: { fields: [{ name: "globalNonce"; type: "u8" }, { name: "state"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 1024] } }]; kind: "struct" } }, { name: "heimdall"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "dailyWdLimit"; type: "u64" }, { name: "dailyWdStartTs"; type: "u64" }, { name: "dailyWithdrawn"; type: { array: ["u64", 25] } }, { name: "constantPrices"; type: { array: ["u64", 25] } }, { name: "padding"; type: { array: ["u8", 1024] } }]; kind: "struct" } }, { name: "margin"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "authority"; type: "publicKey" }, { name: "collateral"; type: { array: [{ defined: "WrappedI80F48" }, 25] } }, { name: "control"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 320] } }]; kind: "struct" } }, { name: "specialOrders"; type: { fields: [{ name: "nonce"; type: "u8" }, { name: "authority"; type: "publicKey" }, { name: "prevId"; type: "u16" }, { name: "entries"; type: { array: [{ defined: "SpecialOrdersInfo" }, 20] } }, { name: "padding"; type: { array: ["u8", 128] } }]; kind: "struct" } }, { name: "state"; type: { fields: [{ name: "signerNonce"; type: "u8" }, { name: "admin"; type: "publicKey" }, { name: "cache"; type: "publicKey" }, { name: "swapFeeVault"; type: "publicKey" }, { name: "insurance"; type: "u64" }, { name: "feesAccrued"; type: { array: ["u64", 25] } }, { name: "vaults"; type: { array: ["publicKey", 25] } }, { name: "collaterals"; type: { array: [{ defined: "CollateralInfo" }, 25] } }, { name: "perpMarkets"; type: { array: [{ defined: "PerpMarketInfo" }, 50] } }, { name: "totalCollaterals"; type: "u16" }, { name: "totalMarkets"; type: "u16" }, { name: "padding"; type: { array: ["u8", 1280] } }]; kind: "struct" } }]
  • constants: [{ name: "SPOT_INITIAL_MARGIN_REQ"; type: "u64"; value: "1_100_000" }, { name: "SPOT_MAINT_MARGIN_REQ"; type: "u64"; value: "1_030_000" }, { name: "DUST_THRESHOLD"; type: "i64"; value: "1_000" }, { name: "MAX_SPECIAL_ORDERS"; type: { defined: "usize" }; value: "20" }, { name: "SPECIAL_ORDER_FEE"; type: "u64"; value: "200_000" }, { name: "ORACLE_STALENESS_THRESH"; type: "u64"; value: "300" }, { name: "TWAP_STALENESS_THRESH"; type: "u64"; value: "60" }, { name: "TWAP_SAMPLE_DT"; type: "u64"; value: "60" }, { name: "TWAP_SAMPLES_PER_H"; type: "u64"; value: "60" }, { name: "DEFAULT_IR_MULTIPLIER"; type: "u64"; value: "1_000_000" }, { name: "MAX_ORACLE_SOURCES"; type: { defined: "usize" }; value: "3" }, { name: "MAX_COLLATERALS"; type: { defined: "usize" }; value: "25" }, { name: "MAX_MARKETS"; type: { defined: "usize" }; value: "50" }, { name: "DEBUG_LOG"; type: "string"; value: "\"DEBUG\"" }]
  • errors: [{ code: 6000; msg: "A math failure occured, likely due to overflow"; name: "MathFailure" }, { code: 6001; msg: "The amount you are withdrawing exceeds the available collateral"; name: "InsufficientFunds" }, { code: 6002; msg: "Unauthorized to perform the operation"; name: "Unauthorized" }, { code: 6003; msg: "Arguments passed were invalid"; name: "InvalidArgument" }, { code: 6004; msg: "Invalid mint for transaction"; name: "InvalidMint" }, { code: 6005; msg: "Everlasting account state is invalid"; name: "InvalidOrderState" }, { code: 6006; msg: "Going below Margin maintenance"; name: "BelowMarginMaintenance" }, { code: 6007; msg: "Above Margin maintenance"; name: "AboveMMF" }, { code: 6008; msg: "Couldn't calculate the position value"; name: "PositionValueCalculationFailure" }, { code: 6009; msg: "Pyth account is invalid"; name: "InvalidPythAccount" }, { code: 6010; msg: "Liquidation has not fully completed"; name: "IncompleteLiquidation" }, { code: 6011; msg: "The account has not been marked for liquidation"; name: "NotMarkedLiquidate" }, { code: 6012; msg: "Account is under liquidation"; name: "UnderLiquidation" }, { code: 6013; msg: "Failed to load dex market"; name: "LoadDexMarketFailure" }, { code: 6014; msg: "Failed to load open orders"; name: "LoadOpenOrdersFailure" }, { code: 6015; msg: "Failed to calculate margin ratio"; name: "CalculateMarginRatioFailure" }, { code: 6016; msg: "Current margin fraction is below position initial margin fraction"; name: "BelowInitialMarginFraction" }, { code: 6017; msg: "No active positions to close"; name: "NoPositionToLiquidate" }, { code: 6018; msg: "The collateral pair already exists in the collateral array"; name: "CollateralAlreadyExists" }, { code: 6019; msg: "The collateral array is at full capacity"; name: "CollateralAtCapacity" }, { code: 6020; msg: "The collateral pair does not exist in the collateral array"; name: "CollateralDoesNotExist" }, { code: 6021; msg: "The DEX Market key already exists in perp markets array"; name: "DexMarketKeyAlreadyExists" }, { code: 6022; msg: "The symbol already exists in perp markets array"; name: "SymbolAlreadyExists" }, { code: 6023; msg: "The perp markets array is at full capacity"; name: "MarketsAtCapacity" }, { code: 6024; msg: "The given vault does not match the state vault"; name: "InvalidVault" }, { code: 6025; msg: "The given DEX market key does not match any keys in the perp markets array"; name: "InvalidDexMarketKey" }, { code: 6026; msg: "The open orders account is already initialized"; name: "OpenOrdersAlreadyInitialized" }, { code: 6027; msg: "The limit price is invalid"; name: "InvalidLimitPrice" }, { code: 6028; msg: "The max base quantity is invalid"; name: "InvalidMaxBaseQuantity" }, { code: 6029; msg: "The max quote quantity is invalid"; name: "InvalidMaxQuoteQuantity" }, { code: 6030; msg: "The oracle already exists in the oracle cache"; name: "OracleAlreadyExists" }, { code: 6031; msg: "Oracle cache is at full capacity"; name: "OracleCacheFull" }, { code: 6032; msg: "The given oracle does not exist"; name: "OracleDoesNotExist" }, { code: 6033; msg: "The given oracle key is invalid"; name: "InvalidOracleKey" }, { code: 6034; msg: "The given oracle type is invalid"; name: "InvalidOracleType" }, { code: 6035; msg: "Oracle encountered an issue when fetching accurate price."; name: "PriceOracleIssue" }, { code: 6036; msg: "Pyth oracle is not in trading status."; name: "InvalidPythStatus" }, { code: 6037; msg: "The remaining accounts passed are invalid"; name: "InvalidRemainingAccounts" }, { code: 6038; msg: "Expo is different"; name: "DifferentExpo" }, { code: 6039; msg: "Insufficient funds in insurance"; name: "InsufficientInsurance" }, { code: 6040; msg: "The oracle is invalid"; name: "InvalidOracle" }, { code: 6041; msg: "Oracle last updated time is beyond the valid time since last update"; name: "OracleNeedsUpdating" }, { code: 6042; msg: "The symbol is invalid"; name: "InvalidSymbol" }, { code: 6043; msg: "Negative collateral value"; name: "NegativeCollateral" }, { code: 6044; msg: "There is nothing to repay, cannot use repay only"; name: "NothingToRepay" }, { code: 6045; msg: "There is nothing to repay, cannot use without allow borrow"; name: "NothingToWithdraw" }, { code: 6046; msg: "There is not enough liquidity in the vault to withdraw"; name: "InsufficientWithdrawalLiquidity" }, { code: 6047; msg: "There are open orders that have not been cancelled yet"; name: "UncancelledOpenOrders" }, { code: 6048; msg: "Invalid open orders key"; name: "InvalidOpenOrdersKey" }, { code: 6049; msg: "The asset is not borrowable"; name: "NotBorrowable" }, { code: 6050; msg: "The oracle symbol is invalid"; name: "InvalidOracleSymbol" }, { code: 6051; msg: "There are active positions that have not been closed"; name: "UnliquidatedActivePositions" }, { code: 6052; msg: "There are spot/ borrow positions that have not been liquidated"; name: "UnliquidatedSpotPositions" }, { code: 6053; msg: "Timestamp is invalid"; name: "InvalidTimestamp" }, { code: 6054; msg: "Collateral is already swappable"; name: "CollateralSwappable" }, { code: 6055; msg: "Collateral is not swappable"; name: "CollateralNotSwappable" }, { code: 6056; msg: "Swap did the opposite of what it should have"; name: "SwapNegative" }, { code: 6057; msg: "Can't swap to and from the same collateral"; name: "SelfSwap" }, { code: 6058; msg: "Insufficient supply"; name: "InsufficientSupply" }, { code: 6059; msg: "Oracle has not been recently updated"; name: "OracleCacheStale" }, { code: 6060; msg: "No tokens received when swapping"; name: "ZeroSwap" }, { code: 6061; msg: "Slippage tolerance exceeded"; name: "SlippageExceeded" }, { code: 6062; msg: "Reduce only order was violated"; name: "ReduceOnlyViolated" }, { code: 6063; msg: "Unimplemented"; name: "Unimplemented" }, { code: 6064; msg: "Currently bankrupt"; name: "Bankrupt" }, { code: 6065; msg: "Deposit exceeds deposit limit for the collateral"; name: "AboveDepositLimit" }, { code: 6066; msg: "Below the dust threshold"; name: "BelowDustThreshold" }, { code: 6067; msg: "The liquidation is invalid"; name: "InvalidLiquidation" }, { code: 6068; msg: "The post orders are outside the price bands"; name: "OutsidePriceBands" }, { code: 6069; msg: "The mark price is too far from the index price"; name: "MarkTooFarFromIndex" }, { code: 6070; msg: "FillOrKill order was not completely filled"; name: "FillOrKillNotFilled" }, { code: 6071; msg: "An error occurred during a Zamm operation"; name: "ZammError" }, { code: 6072; msg: "An invalid perp type was used"; name: "InvalidPerpType" }, { code: 6073; msg: "This market is disabled"; name: "DisabledMarket" }, { code: 6074; msg: "This collateral is disabled"; name: "CollateralDisabled" }, { code: 6075; msg: "The X Mint is not associated to the market"; name: "InvalidXMint" }, { code: 6076; msg: "The state key is invalid"; name: "InvalidState" }, { code: 6077; msg: "The zamm key is invalid"; name: "InvalidZamm" }, { code: 6078; msg: "The withdraw amount exceeded the global daily withdraw limit"; name: "ExceededSecurityWithdrawLimit" }, { code: 6079; msg: "Max number of special orders reached"; name: "SpecialOrdersFull" }, { code: 6080; msg: "Special order not triggered"; name: "SpecialOrderNotTriggered" }, { code: 6081; msg: "Special order does not exist"; name: "SpecialOrderNotFound" }, { code: 6082; msg: "There are uncancelled special orders"; name: "UncancelledSpecialOrders" }]
  • events: [{ fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "depositAmount"; type: "u64" }, { index: false; name: "marginKey"; type: "publicKey" }]; name: "DepositLog" }, { fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "withdrawAmount"; type: "u64" }, { index: false; name: "marginKey"; type: "publicKey" }]; name: "WithdrawLog" }, { fields: [{ index: false; name: "marginKey"; type: "publicKey" }, { index: false; name: "baseIndex"; type: "u8" }, { index: false; name: "quoteIndex"; type: "u8" }, { index: false; name: "baseDelta"; type: "i64" }, { index: false; name: "quoteDelta"; type: "i64" }]; name: "SwapLog" }, { fields: [{ index: false; name: "colIndex"; type: "u8" }, { index: false; name: "col"; type: { defined: "WrappedI80F48" } }]; name: "CollateralBalanceLog" }, { fields: [{ index: false; name: "cancelledBids"; type: "u64" }, { index: false; name: "cancelledAsks"; type: "u64" }]; name: "ForceCancelLog" }, { fields: [{ index: false; name: "liquidationEvent"; type: { defined: "LiquidationEvent" } }, { index: false; name: "baseSymbol"; type: "string" }, { index: false; name: "quoteSymbol"; type: { option: "string" } }, { index: false; name: "liqorMargin"; type: "publicKey" }, { index: false; name: "liqeeMargin"; type: "publicKey" }, { index: false; name: "assetsToLiqor"; type: "i64" }, { index: false; name: "quoteToLiqor"; type: "i64" }]; name: "LiquidationLog" }, { fields: [{ index: false; name: "baseSymbol"; type: "string" }, { index: false; name: "liqorMargin"; type: "publicKey" }, { index: false; name: "liqeeMargin"; type: "publicKey" }, { index: false; name: "assetsToLiqor"; type: "i64" }, { index: false; name: "quoteToLiqor"; type: "i64" }, { index: false; name: "insuranceLoss"; type: "i64" }, { index: false; name: "socializedLoss"; type: "i64" }]; name: "BankruptcyLog" }, { fields: [{ index: false; name: "symbols"; type: { vec: "string" } }, { index: false; name: "prices"; type: { vec: { defined: "WrappedI80F48" } } }, { index: false; name: "twaps"; type: { vec: { defined: "WrappedI80F48" } } }]; name: "CacheOracleLog" }, { fields: [{ index: false; name: "symbols"; type: { vec: "string" } }]; name: "CacheOracleNoops" }, { fields: [{ index: false; name: "ir"; type: { defined: "WrappedI80F48" } }, { index: false; name: "util"; type: { defined: "WrappedI80F48" } }, { index: false; name: "supMul"; type: { defined: "WrappedI80F48" } }, { index: false; name: "borMul"; type: { defined: "WrappedI80F48" } }]; name: "CacheIRLog" }, { fields: [{ index: false; name: "market"; type: "publicKey" }, { index: false; name: "takerMargin"; type: "publicKey" }, { index: false; name: "makerMargin"; type: "publicKey" }, { index: false; name: "dBase"; type: "i64" }, { index: false; name: "dQuote"; type: "i64" }]; name: "OtcFill" }, { fields: []; name: "ControlStateLog" }]
  • instructions: [{ accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: [{ name: "nonce"; type: "u8" }]; name: "createMargin" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "tokenAccount" }, { isMut: true; isSigner: false; name: "vault" }, { isMut: false; isSigner: false; name: "tokenProgram" }]; args: [{ name: "repayOnly"; type: "bool" }, { name: "amount"; type: "u64" }]; name: "deposit" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "tokenAccount" }, { isMut: true; isSigner: false; name: "vault" }, { isMut: false; isSigner: false; name: "tokenProgram" }, { isMut: true; isSigner: false; name: "heimdall" }]; args: [{ name: "allowBorrow"; type: "bool" }, { name: "amount"; type: "u64" }]; name: "withdraw" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: []; name: "createPerpOpenOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "isLong"; type: "bool" }, { name: "limitPrice"; type: "u64" }, { name: "maxBaseQuantity"; type: "u64" }, { name: "maxQuoteQuantity"; type: "u64" }, { name: "orderType"; type: { defined: "OrderType" } }, { name: "limit"; type: "u16" }, { name: "clientId"; type: "u64" }]; name: "placePerpOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "isLong"; type: "bool" }, { name: "limitPrice"; type: "u64" }, { name: "maxBaseQuantity"; type: "u64" }, { name: "maxQuoteQuantity"; type: "u64" }, { name: "orderType"; type: { defined: "OrderType" } }, { name: "limit"; type: "u16" }, { name: "clientId"; type: "u64" }, { name: "maxTs"; type: "i64" }]; name: "placePerpOrderWithMaxTs" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "orderId"; type: { option: "u128" } }, { name: "isLong"; type: { option: "bool" } }, { name: "clientId"; type: { option: "u64" } }]; name: "cancelPerpOrder" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "oo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "limit"; type: "u16" }]; name: "cancelAllPerpOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: []; name: "updatePerpFunding" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: []; name: "settleFunds" }, { accounts: [{ isMut: false; isSigner: true; name: "pruner" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: true; isSigner: false; name: "liqeeOo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "limit"; type: "u16" }]; name: "forceCancelAllPerpOrders" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqorOo" }, { isMut: false; isSigner: false; name: "liqee" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: true; isSigner: false; name: "liqeeOo" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "assetTransferLots"; type: "u64" }]; name: "liquidatePerpPosition" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: false; isSigner: false; name: "assetMint" }, { isMut: false; isSigner: false; name: "quoteMint" }]; args: [{ name: "assetTransferAmount"; type: "i64" }]; name: "liquidateSpotPosition" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: true; name: "liqor" }, { isMut: true; isSigner: false; name: "liqorMargin" }, { isMut: true; isSigner: false; name: "liqorControl" }, { isMut: true; isSigner: false; name: "liqeeMargin" }, { isMut: true; isSigner: false; name: "liqeeControl" }, { isMut: false; isSigner: false; name: "assetMint" }]; args: []; name: "settleBankruptcy" }, { accounts: [{ isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "state" }, { isMut: false; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: false; isSigner: false; name: "quoteMint" }, { isMut: true; isSigner: false; name: "quoteVault" }, { isMut: false; isSigner: false; name: "assetMint" }, { isMut: true; isSigner: false; name: "assetVault" }, { isMut: true; isSigner: false; name: "swapFeeVault" }, { isMut: true; isSigner: false; name: "serumOpenOrders" }, { isMut: true; isSigner: false; name: "serumMarket" }, { isMut: true; isSigner: false; name: "serumRequestQueue" }, { isMut: true; isSigner: false; name: "serumEventQueue" }, { isMut: true; isSigner: false; name: "serumBids" }, { isMut: true; isSigner: false; name: "serumAsks" }, { isMut: true; isSigner: false; name: "serumCoinVault" }, { isMut: true; isSigner: false; name: "serumPcVault" }, { isMut: false; isSigner: false; name: "serumVaultSigner" }, { isMut: false; isSigner: false; name: "srmSpotProgram" }, { isMut: false; isSigner: false; name: "tokenProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "buy"; type: "bool" }, { name: "allowBorrow"; type: "bool" }, { name: "amount"; type: "u64" }, { name: "minRate"; type: "u64" }]; name: "swap" }, { accounts: [{ isMut: false; isSigner: true; name: "signer" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: false; name: "dexProgram" }]; args: [{ name: "symbols"; type: { vec: "string" } }, { name: "mockPrices"; type: { option: { vec: { option: "u64" } } } }]; name: "cacheOracle" }, { accounts: [{ isMut: false; isSigner: true; name: "signer" }, { isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "cache" }]; args: [{ name: "start"; type: "u8" }, { name: "end"; type: "u8" }]; name: "cacheInterestRates" }, { accounts: [{ isMut: true; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: true; isSigner: false; name: "market" }, { isMut: true; isSigner: false; name: "eventQueue" }]; args: [{ name: "limit"; type: "u16" }]; name: "consumeEvents" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: true; isSigner: false; name: "market" }]; args: []; name: "crankPnl" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "rent" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: []; name: "createSpecialOrdersAccount" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "dexMarket" }, { isMut: false; isSigner: false; name: "systemProgram" }]; args: [{ name: "isLong"; type: "bool" }, { name: "specialOrderType"; type: { defined: "SpecialOrderType" } }, { name: "triggerPrice"; type: "u64" }, { name: "limitPrice"; type: "u64" }, { name: "size"; type: "u64" }]; name: "placeSpecialOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: false; isSigner: true; name: "authority" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: false; isSigner: false; name: "dexMarket" }]; args: [{ name: "id"; type: "u16" }]; name: "cancelSpecialOrder" }, { accounts: [{ isMut: false; isSigner: false; name: "state" }, { isMut: true; isSigner: false; name: "stateSigner" }, { isMut: true; isSigner: false; name: "cache" }, { isMut: true; isSigner: true; name: "payer" }, { isMut: false; isSigner: false; name: "authority" }, { isMut: true; isSigner: false; name: "margin" }, { isMut: true; isSigner: false; name: "control" }, { isMut: true; isSigner: false; name: "specialOrders" }, { isMut: true; isSigner: false; name: "openOrders" }, { isMut: true; isSigner: false; name: "dexMarket" }, { isMut: true; isSigner: false; name: "reqQ" }, { isMut: true; isSigner: false; name: "eventQ" }, { isMut: true; isSigner: false; name: "marketBids" }, { isMut: true; isSigner: false; name: "marketAsks" }, { isMut: false; isSigner: false; name: "dexProgram" }, { isMut: false; isSigner: false; name: "rent" }]; args: [{ name: "id"; type: "u16" }]; name: "executeSpecialOrder" }]
  • name: "zo"
  • types: [{ name: "AddCollateralArgs"; type: { fields: [{ name: "oracleSymbol"; type: "string" }, { name: "weight"; type: "u16" }, { name: "isBorrowable"; type: "bool" }, { name: "optimalUtil"; type: "u16" }, { name: "optimalRate"; type: "u16" }, { name: "maxRate"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "ogFee"; type: "u16" }, { name: "maxDeposit"; type: "u64" }, { name: "dustThreshold"; type: "u16" }]; kind: "struct" } }, { name: "OracleSource"; type: { fields: [{ name: "ty"; type: { defined: "OracleType" } }, { name: "key"; type: "publicKey" }]; kind: "struct" } }, { name: "OraclePrice"; type: { fields: [{ name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "WrappedI80F48" } }]; kind: "struct" } }, { name: "BorrowCache"; type: { fields: [{ name: "supply"; type: { defined: "WrappedI80F48" } }, { name: "borrows"; type: { defined: "WrappedI80F48" } }, { name: "supplyMultiplier"; type: { defined: "WrappedI80F48" } }, { name: "borrowMultiplier"; type: { defined: "WrappedI80F48" } }, { name: "lastUpdated"; type: "u64" }]; kind: "struct" } }, { name: "OracleCache"; type: { fields: [{ name: "symbol"; type: { defined: "Symbol" } }, { name: "sources"; type: { array: [{ defined: "OracleSource" }, 3] } }, { name: "lastUpdated"; type: "u64" }, { name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "WrappedI80F48" } }, { name: "baseDecimals"; type: "u8" }, { name: "quoteDecimals"; type: "u8" }]; kind: "struct" } }, { name: "MarkCache"; type: { fields: [{ name: "price"; type: { defined: "WrappedI80F48" } }, { name: "twap"; type: { defined: "TwapInfo" } }]; kind: "struct" } }, { name: "TwapInfo"; type: { fields: [{ name: "cumulAvg"; type: { defined: "WrappedI80F48" } }, { name: "open"; type: { defined: "WrappedI80F48" } }, { name: "high"; type: { defined: "WrappedI80F48" } }, { name: "low"; type: { defined: "WrappedI80F48" } }, { name: "close"; type: { defined: "WrappedI80F48" } }, { name: "lastSampleStartTime"; type: "u64" }]; kind: "struct" } }, { name: "OpenOrdersInfo"; type: { fields: [{ name: "key"; type: "publicKey" }, { name: "nativePcTotal"; type: "i64" }, { name: "posSize"; type: "i64" }, { name: "realizedPnl"; type: "i64" }, { name: "coinOnBids"; type: "u64" }, { name: "coinOnAsks"; type: "u64" }, { name: "orderCount"; type: "u8" }, { name: "fundingIndex"; type: "i128" }]; kind: "struct" } }, { name: "SpecialOrdersInfo"; type: { fields: [{ name: "id"; type: "u16" }, { name: "market"; type: "publicKey" }, { name: "ty"; type: { defined: "SpecialOrderType" } }, { name: "isLong"; type: "bool" }, { name: "triggerPrice"; type: "u64" }, { name: "limitPrice"; type: "u64" }, { name: "size"; type: "u64" }, { name: "fee"; type: "u64" }]; kind: "struct" } }, { name: "CollateralInfo"; type: { fields: [{ name: "mint"; type: "publicKey" }, { name: "oracleSymbol"; type: { defined: "Symbol" } }, { name: "decimals"; type: "u8" }, { name: "weight"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "isBorrowable"; type: "bool" }, { name: "optimalUtil"; type: "u16" }, { name: "optimalRate"; type: "u16" }, { name: "maxRate"; type: "u16" }, { name: "ogFee"; type: "u16" }, { name: "isSwappable"; type: "bool" }, { name: "serumOpenOrders"; type: "publicKey" }, { name: "maxDeposit"; type: "u64" }, { name: "dustThreshold"; type: "u16" }, { name: "padding"; type: { array: ["u8", 384] } }]; kind: "struct" } }, { name: "PerpMarketInfo"; type: { fields: [{ name: "symbol"; type: { defined: "Symbol" } }, { name: "oracleSymbol"; type: { defined: "Symbol" } }, { name: "perpType"; type: { defined: "PerpType" } }, { name: "assetDecimals"; type: "u8" }, { name: "assetLotSize"; type: "u64" }, { name: "quoteLotSize"; type: "u64" }, { name: "strike"; type: "u64" }, { name: "baseImf"; type: "u16" }, { name: "liqFee"; type: "u16" }, { name: "dexMarket"; type: "publicKey" }, { name: "padding"; type: { array: ["u8", 320] } }]; kind: "struct" } }, { name: "Symbol"; type: { fields: [{ name: "data"; type: { array: ["u8", 24] } }]; kind: "struct" } }, { name: "WrappedI80F48"; type: { fields: [{ name: "data"; type: "i128" }]; kind: "struct" } }, { name: "LiquidationEvent"; type: { kind: "enum"; variants: [{ name: "Perp" }, { name: "Spot" }] } }, { name: "MfReturnOption"; type: { kind: "enum"; variants: [{ name: "Imf" }, { name: "Mmf" }, { name: "Cancel" }, { name: "Both" }] } }, { name: "OracleType"; type: { kind: "enum"; variants: [{ name: "Nil" }, { name: "Pyth" }, { name: "Switchboard" }] } }, { name: "FractionType"; type: { kind: "enum"; variants: [{ name: "Maintenance" }, { name: "Initial" }, { name: "Cancel" }] } }, { name: "OrderType"; type: { kind: "enum"; variants: [{ name: "Limit" }, { name: "ImmediateOrCancel" }, { name: "PostOnly" }, { name: "ReduceOnlyIoc" }, { name: "ReduceOnlyLimit" }, { name: "FillOrKill" }] } }, { name: "SpecialOrderType"; type: { kind: "enum"; variants: [{ name: "TakeProfitMarket" }, { name: "TakeProfitLimit" }, { name: "StopLossMarket" }, { name: "StopLossLimit" }] } }, { name: "PerpType"; type: { kind: "enum"; variants: [{ name: "Future" }, { name: "CallOption" }, { name: "PutOption" }, { name: "Square" }] } }, { name: "Side"; type: { kind: "enum"; variants: [{ name: "Bid" }, { name: "Ask" }] } }]
  • version: "0.7.0"

Variables

ALL_HISTORY: "ALL_MARKETS" = "ALL_MARKETS"
ALL_MARKETS: "ALL_HISTORY" = "ALL_HISTORY"
BASE_IMF_DIVIDER: 1000 = 1000
CACHE_REFRESH_INTERVAL: 10000 = 10000
CONTROL_ACCOUNT_SIZE: number = ...
DEFAULT_HISTORY_ENTRIES_PER_PAGE: 5 = 5
DEFAULT_MARGINS_CLUSTER_CONFIG: MarginsClusterConfig = ...
DEV_ENDPOINT: "https://api.devnet.solana.com" = "https://api.devnet.solana.com"
DEX_IDL: { events: { fields: ({ index: boolean; name: string; type: { array: (string | number)[] } } | { index: boolean; name: string; type: string })[]; name: string }[]; instructions: never[]; name: string; version: string } = ...

Type declaration

  • events: { fields: ({ index: boolean; name: string; type: { array: (string | number)[] } } | { index: boolean; name: string; type: string })[]; name: string }[]
  • instructions: never[]
  • name: string
  • version: string
EVENT_QUEUE_HEADER: any = ...
EVENT_QUEUE_LAYOUT: { HEADER: any; NODE: any } = ...

Type declaration

  • HEADER: any
  • NODE: any
FUNDING_HISTORY: "FUNDING_HISTORY" = "FUNDING_HISTORY"
HARD_REFRESH_INTERVAL: 700000 = 700000
IDL: Zo = ...
MAINNET_ENDPOINT: "https://ssc-dao.genesysgo.net/" = "https://ssc-dao.genesysgo.net/"
MEMO_PROGRAM_ID: PublicKey = ...
MMF_MULTIPLIER: 2 = 2
RENT_PROGRAM_ID: PublicKey = ...
SERUM_DEVNET_SPOT_PROGRAM_ID: PublicKey = ...
SERUM_MAINNET_SPOT_PROGRAM_ID: PublicKey = ...
SERUM_SPOT_PROGRAM_ID: PublicKey = ...
SERUM_SWAP_PROGRAM_ID: PublicKey = ...
SYSTEM_PROGRAM_ID: PublicKey = ...
TOKEN_PROGRAM_ID: PublicKey = ...
USDC_DECIMALS: 6 = 6
USDC_DEVNET_MINT_ADDRESS: PublicKey = ...
USDC_MAINNET_MINT_ADDRESS: PublicKey = ...
USDC_SYMBOL: "USDC" = "USDC"
USD_DECIMALS: 6 = 6
WRAPPED_SOL_MINT: PublicKey = ...
ZAMM_PROGRAM_ID: PublicKey = ...
ZAMM_SOL_KEY: PublicKey = ...
ZERO_ONE_DEVNET_PROGRAM_ID: PublicKey = ...
ZERO_ONE_MAINNET_PROGRAM_ID: PublicKey = ...
ZERO_ONE_PROGRAM_ID: PublicKey = ...
ZO_DEVNET_STATE_KEY: PublicKey = ...
ZO_DEX_DEVNET_PROGRAM_ID: PublicKey = ...
ZO_DEX_MAINNET_PROGRAM_ID: PublicKey = ...
ZO_FUTURE_TAKER_FEE: 0.001 = 0.001
ZO_MAINNET_STATE_KEY: PublicKey = ...
ZO_MARK_MESSAGE: "Program log: zo-log" = "Program log: zo-log"
ZO_OPTION_TAKER_FEE: 0.001 = 0.001
ZO_SQUARE_TAKER_FEE: 0.002 = 0.002
ZO_STATE_KEY: PublicKey = ...
ZO_TAKER_FEE: 0.001 = 0.001

Functions

  • baseNumberToLots(size: number, baseDecimals: number, baseLotSize: BN): BN
  • baseNumberToSmol(size: number, baseDecimals: number): number
  • createMint(provider: AnchorProvider, authority: PublicKey, decimals: number, freezeAuthority?: PublicKey): Promise<PublicKey>
  • Parameters

    • provider: AnchorProvider
    • authority: PublicKey
    • decimals: number
    • Optional freezeAuthority: PublicKey

    Returns Promise<PublicKey>

  • createMintIxs(mint: Keypair, provider: AnchorProvider, authority: PublicKey, decimals: number, freezeAuthority?: PublicKey): Promise<TransactionInstruction[]>
  • Parameters

    • mint: Keypair
    • provider: AnchorProvider
    • authority: PublicKey
    • decimals: number
    • Optional freezeAuthority: PublicKey

    Returns Promise<TransactionInstruction[]>

  • createMintToIxs(mint: PublicKey, dest: PublicKey, authority: PublicKey, amount: number): TransactionInstruction[]
  • Parameters

    • mint: PublicKey
    • dest: PublicKey
    • authority: PublicKey
    • amount: number

    Returns TransactionInstruction[]

  • createProgram(provider: AnchorProvider, cluster: Cluster): Program<Zo>
  • createProvider(conn: Connection, wallet: Wallet, opts?: ConfirmOptions): AnchorProvider
  • createTokenAccount(provider: AnchorProvider, mint: PublicKey, owner: PublicKey): Promise<PublicKey>
  • Parameters

    • provider: AnchorProvider
    • mint: PublicKey
    • owner: PublicKey

    Returns Promise<PublicKey>

  • createTokenAccountIxs(vault: Keypair, provider: AnchorProvider, mint: PublicKey, owner: PublicKey): Promise<TransactionInstruction[]>
  • Parameters

    • vault: Keypair
    • provider: AnchorProvider
    • mint: PublicKey
    • owner: PublicKey

    Returns Promise<TransactionInstruction[]>

  • decodeEvent(msgRaw: string): null | {}
  • decodeEventsSince(buffer: Buffer, lastSeqNum: number): Event[]
  • findAssociatedTokenAddress(walletAddress: PublicKey, tokenMintAddress: PublicKey): Promise<PublicKey>
  • Parameters

    • walletAddress: PublicKey
    • tokenMintAddress: PublicKey

    Returns Promise<PublicKey>

  • findIndexOf<T>(l: readonly T[], p: (T: any) => boolean): number
  • Instead of returning -1 if the element is not found, return array.length. Much easier to use for slicing.

    Type parameters

    • T

    Parameters

    • l: readonly T[]
    • p: (T: any) => boolean
        • (T: any): boolean
        • Parameters

          • T: any

          Returns boolean

    Returns number

  • findLastIndexOf<T>(l: readonly T[], p: (T: any) => boolean): number
  • Type parameters

    • T

    Parameters

    • l: readonly T[]
    • p: (T: any) => boolean
        • (T: any): boolean
        • Parameters

          • T: any

          Returns boolean

    Returns number

  • getAssociatedTokenTransactionWithPayer(tokenMintAddress: PublicKey, associatedTokenAddress: PublicKey, owner: PublicKey): TransactionInstruction
  • Parameters

    • tokenMintAddress: PublicKey
    • associatedTokenAddress: PublicKey
    • owner: PublicKey

    Returns TransactionInstruction

  • getClusterFromZoProgram(program: Program<Zo>): Cluster
  • getConfirmedTransaction(connection: Connection, txId: string, finality: Finality): Promise<ConfirmedTransaction>
  • Parameters

    • connection: Connection
    • txId: string
    • finality: Finality

    Returns Promise<ConfirmedTransaction>

  • getCurrentSlot(connection: Connection): Promise<any>
  • getEpoch(connection: Connection): Promise<any>
  • getFilteredProgramAccounts(connection: Connection, programId: PublicKey, filters: any): Promise<{ accountInfo: AccountInfo<Buffer>; publicKey: PublicKey }[]>
  • Parameters

    • connection: Connection
    • programId: PublicKey
    • filters: any

    Returns Promise<{ accountInfo: AccountInfo<Buffer>; publicKey: PublicKey }[]>

  • getKeypairFromSecretKey(SECRET_KEY: any): Keypair
  • getMintDecimals(connection: Connection, mint: PublicKey): Promise<number>
  • getMintInfo(provider: AnchorProvider, pubkey: PublicKey): Promise<MintInfo>
  • getSignaturesForAddress(connection: Connection, address: PublicKey): Promise<any>
  • Parameters

    • connection: Connection
    • address: PublicKey

    Returns Promise<any>

  • getSignaturesForAddressRecent(connection: Connection, address: PublicKey): Promise<any>
  • Parameters

    • connection: Connection
    • address: PublicKey

    Returns Promise<any>

  • getTransaction(connection: Connection, transaction: string): Promise<any>
  • Parameters

    • connection: Connection
    • transaction: string

    Returns Promise<any>

  • getWrappedSolInstructionsAndKey(initialSmollAmount: any, provider: any): Promise<{ closeTokenAccountIx: TransactionInstruction; createTokenAccountIx: TransactionInstruction; initTokenAccountIx: TransactionInstruction; intermediary: PublicKey; intermediaryKeypair: Keypair }>
  • Parameters

    • initialSmollAmount: any
    • provider: any

    Returns Promise<{ closeTokenAccountIx: TransactionInstruction; createTokenAccountIx: TransactionInstruction; initTokenAccountIx: TransactionInstruction; intermediary: PublicKey; intermediaryKeypair: Keypair }>

  • loadSymbol(__namedParameters: { data: number[] }): string
  • loadWI80F48(__namedParameters: { data: BN }): Decimal
  • mintTo(provider: AnchorProvider, mint: PublicKey, dest: PublicKey, amount: number): Promise<void>
  • Parameters

    • provider: AnchorProvider
    • mint: PublicKey
    • dest: PublicKey
    • amount: number

    Returns Promise<void>

  • priceNumberToLots(price: number, baseDecimals: number, baseLotSize: BN, quoteDecimals: number, quoteLotSize: BN): BN
  • Parameters

    • price: number
    • baseDecimals: number
    • baseLotSize: BN
    • quoteDecimals: number
    • quoteLotSize: BN

    Returns BN

  • priceNumberToSmolPrice(price: number, baseDecimals: number, quoteDecimals: number): number
  • Parameters

    • price: number
    • baseDecimals: number
    • quoteDecimals: number

    Returns number

  • sleep(ms: number): Promise<void>
  • throwIfNull<T>(value: null | T, message?: string): T
  • Type parameters

    • T

    Parameters

    • value: null | T
    • message: string = "account not found"

    Returns T

  • walletFromKeyPair(keypair: Keypair): Wallet

Generated using TypeDoc