UNPKG

@symmetry-hq/baskets-sdk

Version:

Software Development Kit for interacting with Symmetry Baskets Program

278 lines (277 loc) 7.31 kB
import { AddressLookupTableAccount, PublicKey, TransactionInstruction, TransactionSignature } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; export declare const BASKETS_PROGRAM_ID: PublicKey; export declare const BASKETS_PROGRAM_PDA: PublicKey; export declare const BASKETS_LOOKUP_TABLE_1: PublicKey; export declare const BASKETS_LOOKUP_TABLE_2: PublicKey; export declare const TOKEN_LIST_ADDRESS: PublicKey; export declare const TOKEN_STATS_ADDRESS: PublicKey; export declare const DATABASE_ADDESS: PublicKey; export declare const CURVE_DATA_ADDRESS: PublicKey; export declare const CREATE_FEE_ACCOUNT: PublicKey; export declare const BUY_FEE_ACCOUNT: PublicKey; export declare const BUY_FEE_WALLET: PublicKey; export declare const REBALANCE_FEE_WALLET: PublicKey; export declare const REBALANCE_FEE_ACCOUNT: PublicKey; export declare const SWAP_FEE_ACCOUNT: PublicKey; export declare const PRISM_AGGREGATOR: PublicKey; export declare const JUP_AGGREGATOR: PublicKey; export declare const BEYOND_LST_BASKET: PublicKey; export declare const SWB_PID: PublicKey; export declare const NUM_OF_DAYS_IN_DATABASE = 460; export declare const COMBINED_TOKENS_IN_A_BASKET = 15; export declare const NUM_OF_TOKENS_IN_BASKET = 20; export declare const NUM_OF_TOKENS_IN_ASSET_POOL = 200; export declare const WEIGHT_MULTIPLIER = 10000; export declare const EXPO_DIVIDER = 100; export declare const BPS_DIVIDER = 10000; export declare const ADDITIONAL_FEE = 15000; export declare const ADDITIONAL_UNITS = 1000000; export declare class BasketError extends Error { txId: TransactionSignature; constructor(message: string, txId?: TransactionSignature); } export type BasketFilter = "manager" | "host"; export type FilterOption = { filterType: BasketFilter; filterPubkey: PublicKey; }; export declare enum FilterType { Fixed = 0, MarketCap = 1, Volume = 2, Performance = 3 } export declare enum WeightType { Fixed = 0, MarketCap = 1, Volume = 2, Performance = 3 } export declare enum FilterTime { Day = 0, Week = 1, Month = 2, Quarter = 3, HalfYear = 4, Year = 5 } export declare enum WeightTime { Day = 0, Week = 1, Month = 2, Quarter = 3, HalfYear = 4, Year = 5 } export declare enum SortBy { DescendingOrder = 0, AscendingOrder = 1 } export type Rule = { filterBy: FilterType; filterDays: FilterTime; sortBy: SortBy; totalWeight: number; fixedAsset: number; numAssets: number; weightBy: WeightType; weightDays: WeightTime; weightExpo: number; excludeAssets: number[]; ruleAssets?: number[]; }; export type CreateBasketParams = { name: string; symbol: string; uri: string; hostPlatform: PublicKey; hostPlatformFee: number; manager: PublicKey; managerFee: number; activelyManaged: number; assetPool: number[]; refilterInterval: number; reweightInterval: number; rebalanceInterval: number; rebalanceThreshold: number; rebalanceSlippage: number; lpOffsetThreshold: number; disableRebalance: boolean; disableLp: boolean; rules: Rule[]; }; export type SimpleCreateParams = { name: string; symbol: string; uri: string; hostPlatform: PublicKey; hostPlatformFee: number; manager: PublicKey; managerFee: number; activelyManaged: number; rebalanceInterval: number; rebalanceThreshold: number; rebalanceSlippage: number; lpOffsetThreshold: number; disableRebalance: boolean; disableLp: boolean; composition: { token: PublicKey; weight: number; }[]; feeDelegate?: PublicKey; }; export type SimpleEditParams = { managerFee: number; rebalanceInterval: number; rebalanceThreshold: number; rebalanceSlippage: number; lpOffsetThreshold: number; disableRebalance: boolean; disableLp: boolean; composition: { token: PublicKey; weight: number; }[]; feeDelegate?: PublicKey; }; export type BasketStateChainData = { version: BN; manager: PublicKey; fundToken: PublicKey; managerFee: BN; supplyOutstanding: BN; activelyManaged: BN; activeBuyStates: BN; sellState: BN; rebalanceSellState: BN; hostPubkey: PublicKey; hostFee: BN; numOfTokens: BN; currentCompToken: BN[]; currentCompAmount: BN[]; lastRebalanceTime: BN[]; targetWeight: BN[]; weightSum: BN; currentWeight: BN[]; fundWorth: BN; lastUpdateTime: BN; refilterInterval: BN; reweightInterval: BN; rebalanceInterval: BN; rebalanceThreshold: BN; rebalanceSlippage: BN; lpOffsetThreshold: BN; lastRefilterTime: BN; lastReweightTime: BN; rulesReady: BN; assetPool: BN[]; numOfRules: BN; rules: { filterBy: BN; filterDays: BN; sortBy: BN; totalWeight: BN; fixedAsset: BN; numAssets: BN; weightBy: BN; weightDays: BN; weightExpo: BN; excludeNum: BN; excludeAssets: BN[]; ruleAssets: BN[]; }[]; numRuleTokens: BN; ruleTokens: BN[]; ruleTokenWeights: BN[]; messageDigestFive: number[]; disableRebalance: BN; disableLp: BN; allowMultiAssetContribution: number; symbolLength: number; symbol: number[]; nameLength: number; name: number[]; uriLength: number; uri: number[]; feeDelegate: PublicKey; extraBytes: number[]; }; export type BuyStateChainData = { fund: PublicKey; buyer: PublicKey; fundManager: PublicKey; hostPlatform: PublicKey; buyerFundTokenAccount: PublicKey; usdcContributed: BN; usdcLeft: BN; token: BN[]; amountToSpend: BN[]; amountBought: BN[]; creationTimestamp: BN; contributedValue: BN; }; export type TokenSettings = { id: number; symbol: string; name: string; tokenMint: string; decimals: number; coingeckoId: string; pdaTokenAccount: string; oracleType: string; oracleAccount: string; oracleIndex: number; oracleConfidencePct: number; fixedConfidenceBps: number; tokenSwapFeeBeforeTwBps: number; tokenSwapFeeAfterTwBps: number; isLive: boolean; lpOn: boolean; useCurveData: boolean; additionalData: number[]; }; export type JupSwapData = { type: String; programId: PublicKey; accounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean; }[]; firstIxEnd: number; firstIxAccounts: number; dataLength: number; data: Buffer; fromTokenId: number; midTokenPda: string; toTokenId: number; fromAmount: number; toAmount: number; slippageBps: number; feeBps: number; lookupTableAccounts: AddressLookupTableAccount[]; }; export declare enum Side { To = 0, From = 1 } export type RebalanceInfo = { tokenId: number; tokenAccountFrom: string; mintFrom: string; oracleFrom: string; tokenAccountTo: string; mintTo: string; oracleTo: string; amountFrom: number; decimals: number; volume: number; side: Side; }; export type TransactionToSend = { payerKey: PublicKey; instructions: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[]; };