UNPKG

@symmetry-hq/baskets-sdk

Version:

Software Development Kit for interacting with Symmetry Baskets Program

74 lines (73 loc) 3.4 kB
import { Program } from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; import { Rule, CreateBasketParams } from "./config"; import { BasketsIDL } from "./basketsIDL"; export interface DataPoint { price: number; circulatingSupply: number; volume: number; } export interface BasketState { currentCompToken: number[]; currentCompAmount: number[]; currentCompWeight: number[]; targetWeight: number[]; numOfTokens: number; weightSum: number; basketWorth: number; lastRefilterTime: number; lastReweightTime: number; lastRebalanceTime: number; singleRuleAssets: number[][]; ruleAssets: number[]; ruleWeights: number[]; numRuleTokens: number; } export interface TokenStats { stats: Stats[][]; } export interface Stats { days: number; performance: number; volume: number; mcap: number; } export declare function fetchDatabase(program: Program<BasketsIDL>, database: PublicKey): Promise<DataPoint[][]>; export declare function defaultBasketState(): { currentCompToken: number[]; currentCompAmount: number[]; currentCompWeight: never[] & number[]; targetWeight: never[] & number[]; numOfTokens: number; weightSum: number; basketWorth: number; lastRefilterTime: number; lastReweightTime: number; lastRebalanceTime: number; singleRuleAssets: any[]; ruleWeights: never[] & number[]; ruleAssets: never[] & number[]; numRuleTokens: number; }; export declare function calculateStats(data: DataPoint[], days: number, index: number): number[]; export declare function updateTokenStats(data: DataPoint[][], index: number): TokenStats; export declare function selectTokens(createBasketParams: CreateBasketParams, rule: Rule, tokenStats: TokenStats): any[]; export declare function refilter(createBasketParams: CreateBasketParams, tokenStats: TokenStats, basketState: BasketState): void; export declare function calculateWeight(rawWeight: number, expo: number, weightBy: number): number; export declare function generateWeights(tokenStats: TokenStats, rule: Rule, ruleAssets: any): { token: any; assetWeight: number; }[]; export declare function combineRules(basketState: BasketState, ruleAssets: any, createBasketParams: CreateBasketParams): void; export declare function addTargetAssets(basketState: BasketState): void; export declare function removeTargetAssets(basketState: BasketState): void; export declare function updateTargetAssets(basketState: BasketState): void; export declare function reweight(createBasketParams: CreateBasketParams, tokenStats: TokenStats, basketState: BasketState): void; export declare function rebalance(createBasketParams: CreateBasketParams, basketState: BasketState, data: DataPoint[][], day: number, tokenList: any): void; export declare function updateBasketState(createBasketParams: CreateBasketParams, basketState: BasketState, tokenStats: TokenStats, database: DataPoint[][], day: number, tokenList: any): void; export declare function updateCurrentWeights(data: DataPoint[][], day: number, basketState: BasketState, tokenList: any): void; export declare function simulate(program: Program<BasketsIDL>, database: PublicKey, tokenList: PublicKey, createBasketParams: CreateBasketParams, simulationDays: number): Promise<{ price: number; currentCompAmount: number[]; currentCompToken: number[]; }[]>;