@drift-labs/sdk
Version:
SDK for Drift Protocol
119 lines (95 loc) • 4.53 kB
text/typescript
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;