@algofi/js-sdk
Version:
The official Algofi JavaScript SDK
82 lines (81 loc) • 3.5 kB
TypeScript
import { Algodv2, Indexer, Transaction, LogicSigAccount } from "algosdk";
import AlgofiUser from "../../algofiUser";
import ParsedTransaction, { TxnLoadMode } from "../../parsedTransaction";
import AssetDataClient from "../../assetData/assetDataClient";
import { PoolType } from "./ammConfig";
import PoolConfig from "./poolConfig";
import AMMClient from "./ammClient";
export declare enum PoolQuoteType {
EMPTY_POOL = 0,
POOL = 1,
BURN = 2,
SWAP_EXACT_FOR = 3,
SWAP_FOR_EXACT = 4,
ZAP = 5
}
export declare class PoolQuote {
quoteType: PoolQuoteType;
asset1Delta: number;
asset2Delta: number;
lpDelta: number;
iterations: number;
zapAsset1Swap: number;
zapAsset2Swap: number;
zapBonus: number;
constructor(quoteType: PoolQuoteType, asset1Delta: number, asset2Delta: number, lpDelta: number, iterations: number, zapAsset1Swap?: number, zapAsset2Swap?: number, zapBonus?: number);
}
export default class Pool {
algod: Algodv2;
indexer: Indexer;
ammClient: AMMClient;
assetDataClient: AssetDataClient;
appId: number;
asset1Id: number;
asset2Id: number;
poolType: PoolType;
logicSig: LogicSigAccount;
address: string;
managerAppId: number;
lpAssetId: number;
balance1: number;
balance2: number;
lpCirculation: number;
tvl: number;
apr: number;
initialAmplificationFactor: number;
futureAmplificationFactor: number;
initialAmplificationFactorTime: number;
futureAmplificationFactorTime: number;
ramp_amplification_factor: number;
targetRatioAdjustmentStartTime: number;
targetRatioAdjustmentEndTime: number;
initialTargetAsset1ToAsset2Ratio: number;
currentTargetAsset1ToAsset2Ratio: number;
goalTargetAsset1ToAsset2Ratio: number;
swapFee: number;
transactions: ParsedTransaction[];
constructor(algod: Algodv2, ammClient: AMMClient, poolConfig: PoolConfig, tvl?: number, apr?: number);
loadState(): Promise<void>;
getTVL(): number;
getAPR(): number;
isCreated(): boolean;
getAmplificationFactor(): number;
getTargetRatio(): number;
isNanoPool(): boolean;
scaleAsset1(input: number): number;
unscaleAsset1(input: number): number;
binarySearch(lower: any, upper: any, objective: any): any;
getEmptyPoolQuote(asset1PooledAmount: number, asset2PooledAmount: number): PoolQuote;
getPoolQuote(assetId: number, assetAmount: number): PoolQuote;
getBurnQuote(lpAmount: number): PoolQuote;
getSwapExactForQuote(swapInAssetId: number, swapInAmount: number): PoolQuote;
getSwapForExactQuote(swapOutAssetId: number, swapOutAmount: number): PoolQuote;
getZapQuote(assetAID: number, assetAAmount: number, assetBAmount?: number): PoolQuote;
getCreatePoolTxns(user: AlgofiUser): Promise<Transaction[]>;
getInitializePoolTxns(user: AlgofiUser, poolAppId: number): Promise<Transaction[]>;
getPoolTxns(user: AlgofiUser, quote: PoolQuote, maximumSlippage: number, addToUserCollateral?: boolean): Promise<Transaction[]>;
getBurnTxns(user: AlgofiUser, quote: PoolQuote): Promise<Transaction[]>;
getSwapTxns(user: AlgofiUser, quote: PoolQuote, maxSlippage?: number): Promise<Transaction[]>;
getZapTxns(user: AlgofiUser, quote: PoolQuote, maxSlippage?: number, addToUserCollateral?: boolean): Promise<Transaction[]>;
getTransactionHistory(mode: TxnLoadMode): Promise<void>;
}