UNPKG

@drift-labs/sdk

Version:
119 lines (95 loc) 4.53 kB
import { LAMPORTS_PER_SOL } from '@solana/web3.js'; import { BN } from '@coral-xyz/anchor'; export const ZERO = new BN(0); export const ONE = new BN(1); export const TWO = new BN(2); export const THREE = new BN(3); export const FOUR = new BN(4); export const FIVE = new BN(5); export const SIX = new BN(6); export const SEVEN = new BN(7); export const EIGHT = new BN(8); export const NINE = new BN(9); export const TEN = new BN(10); export const TEN_THOUSAND = new BN(10000); export const BN_MAX = new BN(Number.MAX_SAFE_INTEGER); export const TEN_MILLION = TEN_THOUSAND.mul(TEN_THOUSAND); export const MAX_LEVERAGE = new BN(5); export const MAX_LEVERAGE_ORDER_SIZE = new BN('18446744073709551615'); export const PERCENTAGE_PRECISION_EXP = new BN(6); export const PERCENTAGE_PRECISION = new BN(10).pow(PERCENTAGE_PRECISION_EXP); export const CONCENTRATION_PRECISION = PERCENTAGE_PRECISION; export const QUOTE_PRECISION_EXP = new BN(6); export const FUNDING_RATE_BUFFER_PRECISION_EXP = new BN(3); export const PRICE_PRECISION_EXP = new BN(6); export const FUNDING_RATE_PRECISION_EXP = PRICE_PRECISION_EXP.add( FUNDING_RATE_BUFFER_PRECISION_EXP ); export const PEG_PRECISION_EXP = new BN(6); export const AMM_RESERVE_PRECISION_EXP = new BN(9); export const SPOT_MARKET_RATE_PRECISION_EXP = new BN(6); export const SPOT_MARKET_RATE_PRECISION = new BN(10).pow( SPOT_MARKET_RATE_PRECISION_EXP ); export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new BN(10); export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new BN(10).pow( SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP ); export const SPOT_MARKET_UTILIZATION_PRECISION_EXP = new BN(6); export const SPOT_MARKET_UTILIZATION_PRECISION = new BN(10).pow( SPOT_MARKET_UTILIZATION_PRECISION_EXP ); export const SPOT_MARKET_WEIGHT_PRECISION = new BN(10000); export const SPOT_MARKET_BALANCE_PRECISION_EXP = new BN(9); export const SPOT_MARKET_BALANCE_PRECISION = new BN(10).pow( SPOT_MARKET_BALANCE_PRECISION_EXP ); export const SPOT_MARKET_IMF_PRECISION_EXP = new BN(6); export const SPOT_MARKET_IMF_PRECISION = new BN(10).pow( SPOT_MARKET_IMF_PRECISION_EXP ); export const LIQUIDATION_FEE_PRECISION = new BN(1000000); export const QUOTE_PRECISION = new BN(10).pow(QUOTE_PRECISION_EXP); export const PRICE_PRECISION = new BN(10).pow(PRICE_PRECISION_EXP); export const FUNDING_RATE_PRECISION = new BN(10).pow( FUNDING_RATE_PRECISION_EXP ); export const FUNDING_RATE_BUFFER_PRECISION = new BN(10).pow( FUNDING_RATE_BUFFER_PRECISION_EXP ); export const PEG_PRECISION = new BN(10).pow(PEG_PRECISION_EXP); export const AMM_RESERVE_PRECISION = new BN(10).pow(AMM_RESERVE_PRECISION_EXP); export const BASE_PRECISION = AMM_RESERVE_PRECISION; export const BASE_PRECISION_EXP = AMM_RESERVE_PRECISION_EXP; export const AMM_TO_QUOTE_PRECISION_RATIO = AMM_RESERVE_PRECISION.div(QUOTE_PRECISION); // 10^3 export const PRICE_DIV_PEG = PRICE_PRECISION.div(PEG_PRECISION); //10^1 export const PRICE_TO_QUOTE_PRECISION = PRICE_PRECISION.div(QUOTE_PRECISION); // 10^1 export const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = AMM_RESERVE_PRECISION.mul(PEG_PRECISION).div(QUOTE_PRECISION); // 10^9 export const MARGIN_PRECISION = TEN_THOUSAND; export const BID_ASK_SPREAD_PRECISION = new BN(1000000); // 10^6 export const LIQUIDATION_PCT_PRECISION = TEN_THOUSAND; export const FUNDING_RATE_OFFSET_DENOMINATOR = new BN(5000); export const PRICE_TIMES_AMM_TO_QUOTE_PRECISION_RATIO = PRICE_PRECISION.mul( AMM_TO_QUOTE_PRECISION_RATIO ); export const FIVE_MINUTE = new BN(60 * 5); export const ONE_HOUR = new BN(60 * 60); export const ONE_YEAR = new BN(31536000); export const QUOTE_SPOT_MARKET_INDEX = 0; export const GOV_SPOT_MARKET_INDEX = 15; export const LAMPORTS_PRECISION = new BN(LAMPORTS_PER_SOL); export const LAMPORTS_EXP = new BN(Math.log10(LAMPORTS_PER_SOL)); export const OPEN_ORDER_MARGIN_REQUIREMENT = QUOTE_PRECISION.div(new BN(100)); export const DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT = new BN( -25 ).mul(QUOTE_PRECISION); export const ACCOUNT_AGE_DELETION_CUTOFF_SECONDS = 60 * 60 * 24 * 13; // 13 days export const IDLE_TIME_SLOTS = 9000; export const SLOT_TIME_ESTIMATE_MS = 400; export const DUST_POSITION_SIZE = QUOTE_PRECISION.divn(100); // Dust position is any position smaller than 1c export const FUEL_WINDOW = new BN(60 * 60 * 24 * 28); // 28 days export const FUEL_START_TS = new BN(1723147200); // unix timestamp export const MAX_PREDICTION_PRICE = PRICE_PRECISION; export const GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE = 99;