UNPKG

@symmetry-hq/baskets-v2-sdk

Version:

Symmetry Baskets V2 SDK

147 lines (146 loc) 4.56 kB
import { PublicKey } from "@solana/web3.js"; import { BN, Program } from "@coral-xyz/anchor"; import { BasketsProgram } from "../idl/types"; import { OraclePrice } from "../utils/oracle"; export declare const BASKETS_STATE_SIZE = 28189; export interface BasketState { version: number; ownAddress: PublicKey; basketType: number; basketPda: PublicKey; mint: PublicKey; supplyOutstanding: BN; lastPrice: BN; startingPrice: BN; highestPrice: BN; creator: PublicKey; creatorDepositFeeBps: number; creatorManagementFeeBps: number; creatorPerformanceFeeBps: number; host: PublicKey; hostDepositFeeBps: number; hostManagementFeeBps: number; hostPerformanceFeeBps: number; managers: PublicKey[]; managersWeightBps: number[]; managersAuthority: number[]; managersDepositFeeBps: number; managersPerformanceFeeBps: number; managersManagementFeeBps: number; basketDepositFeeBps: number; basketWithdrawFeeBps: number; rebalanceIntervalSeconds: BN; rebalanceThresholdBps: number; rebalanceSlippageBps: number; lpThresholdBps: number; allowAutomation: number; allowLp: number; lamportsForAutomation: BN; symbolLength: number; symbol: number[]; nameLength: number; name: number[]; uriLength: number; uri: number[]; metadataAccount: PublicKey; lookupTable1: PublicKey; lookupTable2: PublicKey; otherLookupTable1: PublicKey; otherLookupTable2: PublicKey; writeVersion: BN; numTokens: number; compositionMints: PublicKey[]; compositionDecimals: number[]; compositionOracleType: number[]; compositionOracle1: PublicKey[]; compositionOracle2: PublicKey[]; compositionTargetWeights: number[]; compositionAmounts: BN[]; tokenPrices: BN[]; tokenPriceUpdateTimestamps: BN[]; lastRebalanceTimestamp: BN[]; extraData: PublicKey[]; } export interface ParsedBasketState { version: number; ownAddress: string; basketType: number; basketPda: string; mint: string; supplyOutstanding: number; lastPrice: number; startingPrice: number; highestPrice: number; creator: string; creatorDepositFeeBps: number; creatorManagementFeeBps: number; creatorPerformanceFeeBps: number; host: string; hostDepositFeeBps: number; hostManagementFeeBps: number; hostPerformanceFeeBps: number; managers: string[]; managersWeightBps: number[]; managersAuthority: number[]; managersDepositFeeBps: number; managersPerformanceFeeBps: number; managersManagementFeeBps: number; basketDepositFeeBps: number; basketWithdrawFeeBps: number; rebalanceIntervalSeconds: number; rebalanceThresholdBps: number; rebalanceSlippageBps: number; lpThresholdBps: number; allowAutomation: number; allowLp: number; lamportsForAutomation: number; metadataAccount: string; lookupTable1: string; lookupTable2: string; otherLookupTable1: string; otherLookupTable2: string; writeVersion: number; numTokens: number; compositionMints: string[]; compositionDecimals: number[]; compositionOracleType: number[]; compositionOracle1: string[]; compositionOracle2: string[]; compositionTargetWeights: number[]; compositionAmounts: number[]; tokenPrices: number[]; tokenPriceUpdateTimestamps: number[]; lastRebalanceTimestamp: number[]; metadata: any; tvl: any; tokenValues: any; } export declare function fetchBasketState(program: Program<BasketsProgram>, basket: PublicKey): Promise<BasketState>; export declare function parseBasketState(basketState: BasketState): ParsedBasketState; export declare function getBasketTokenPrices(program: Program<BasketsProgram>, basketState: BasketState): Promise<OraclePrice[]>; export interface RebalanceInfo { token: PublicKey; tokenDecimals: number; tokenPrice: number; index: number; currentAmount: number; currentWeight: number; currentValue: number; targetWeight: number; targetValue: number; valueDiff: number; maxSpendAmount: number; } export declare function computeRebalanceInfos(params: { basketState: BasketState; oraclePrices: OraclePrice[]; }): { tvl: number; tokenValues: any[]; rebalanceInfos: RebalanceInfo[]; }; export declare function getBasketTvl(program: Program<BasketsProgram>, basketState: BasketState): Promise<{ tvl: number; tokenValues: any[]; rebalanceInfos: RebalanceInfo[]; }>;