@algofi/amm-v0
Version:
The official JavaScript SDK for the Algofi AMM
54 lines (53 loc) • 3.54 kB
TypeScript
import { Algodv2, LogicSigAccount, Transaction } from "algosdk";
import BalanceDelta from "./balanceDelta";
import { Network, PoolType, PoolStatus } from "./config";
export default class Pool {
algod: Algodv2;
network: Network;
poolType: PoolType;
managerApplicationId: number;
asset1Id: number;
asset2Id: number;
validatorIndex: number;
logicSig: LogicSigAccount;
poolStatus: PoolStatus;
applicationId: number;
address: string;
lpAssetId: number;
asset1Balance: number;
asset2Balance: number;
lpCirculation: number;
swapFee: number;
private initialAmplificationFactor;
private initialAmplificationFactorTime;
private futureAmplificationFactor;
private futureAmplificationFactorTime;
private t;
constructor(algod: Algodv2, network: Network, poolType: PoolType, asset1Id: number, asset2Id: number);
loadState(): Promise<PoolStatus>;
getPoolPrice(assetId: number): Promise<number>;
signTxnWithLogicSig(txn: Transaction): Promise<{
txID: string;
blob: Uint8Array;
}>;
getCreatePoolTxn(sender: string): Promise<Transaction>;
getInitializePoolTxns(sender: string, poolApplicationID: number): Promise<Transaction[]>;
getLPTokenOptInTxn(sender: string): Promise<Transaction[]>;
getPoolTxns(sender: string, asset1Amount: number, asset2Amount: number, maximumSlippage: number, doOptIn?: boolean, assignGroup?: boolean, fee?: number): Promise<Transaction[]>;
getBurnTxns(sender: string, burnAmount: number, assignGroup?: boolean): Promise<Transaction[]>;
getSwapExactForTxns(sender: string, swapInAsset: number, swapInAmount: number, minAmountToReceive: number, doOptIn?: boolean, assignGroup?: boolean, fee?: number): Promise<Transaction[]>;
getSwapForExactTxns(sender: string, swapInAsset: number, swapInAmount: number, amountToReceive: number, doOptIn?: boolean, assignGroup?: boolean, fee?: number): Promise<Transaction[]>;
getZapLPTransactions(sender: string, zapInAsset: number, zapInAmount: number, maximumSlippageSwap: number, doOptIn?: boolean, doOptInLP?: boolean, assignGroup?: boolean, maximumSlippageLP?: number): Promise<Transaction[]>;
getNanoZapTransactions(sender: string, asset1InputAmount: number, asset2InputAmount: number, maximumSlippageSwap: number, doOptIn?: boolean, doOptInLP?: boolean, assignGroup?: boolean, maximumSlippageLP?: number): Promise<Transaction[]>;
getNanoUnzapTxns(sender: string, assetId: number, assetAmount: number, lpTokenAmount: number, maximumSlippage: number, doOptIn?: boolean, assignGroup?: boolean, fee?: number): Promise<Transaction[]>;
getEmptyPoolQuote(asset1PooledAmount: number, asset2PooledAmount: number): Promise<BalanceDelta>;
getPoolQuote(assetId: number, assetAmount: number, whatIfDelta1?: number, whatIfDelta2?: number): BalanceDelta;
getBurnQuote(lpAmount: number): Promise<BalanceDelta>;
getSwapExactForQuote(swapInAssetId: number, swapInAmount: number): BalanceDelta;
getSwapForExactQuote(swapOutAssetId: number, swapOutAmount: number): BalanceDelta;
getAmplificationFactor(): number;
binarySearch(lower: any, upper: any, objective: any): any;
getNanoZapQuote(asset1InputAmount: number, asset2InputAmount: number): Promise<BalanceDelta>;
getNanoUnzapQuote(assetId: number, assetAmount: number, lpTokenAmount: number): Promise<BalanceDelta>;
getMaxNanoUnzapQuote(assetId: number, lpTokenAmount: number): Promise<BalanceDelta>;
}