@symmetry-hq/liquidity-sdk
Version:
Exchange functionality using symmetry funds liquidity
119 lines (118 loc) • 2.99 kB
TypeScript
import { AccountMeta, PublicKey } from "@solana/web3.js";
import { BN } from "@coral-xyz/anchor";
export declare const FUNDS_PROGRAM_ID: PublicKey;
export declare const FUNDS_PROGRAM_PDA: PublicKey;
export declare const TOKEN_LIST_ADDRESS: PublicKey;
export declare const CURVE_DATA_ADDRESS: PublicKey;
export declare const SWAP_FEE_ACCOUNT: PublicKey;
export type FundStateChainData = {
version: BN;
manager: PublicKey;
fundToken: PublicKey;
managerFee: BN;
supplyOutsanding: 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: BN[];
fundLpFee: BN;
symmetryLpFee: BN;
extraBytes: 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 OraclePrice = {
avg_price: number;
sell_price: number;
buy_price: number;
};
export type RouteData = {
fromAmount: number;
toAmount: number;
fromTokenId: number;
toTokenId: number;
feePct: number;
priceImpactPct: number;
swapAccounts: {
program: PublicKey;
fundState: PublicKey;
authority: PublicKey;
source: PublicKey;
destination: PublicKey;
fees: {
smfWallet: PublicKey;
hostWallet: PublicKey;
managerWallet: PublicKey;
feeTokenMint: PublicKey;
};
tokenList: PublicKey;
curveData: PublicKey;
remainingAccounts: AccountMeta[];
};
};
export type CurveChainData = {
buy: TokenPriceData[];
sell: TokenPriceData[];
};
export type TokenPriceData = {
amount: BN[];
price: BN[];
};