@dahlia-labs/stableswap-sdk
Version:
SDK for Mobius's StableSwap program.
63 lines (56 loc) • 1.47 kB
text/typescript
import type { Token, TokenAmount } from "@dahlia-labs/token-utils";
import { Percent } from "@dahlia-labs/token-utils";
import JSBI from "jsbi";
export type Fees = {
trade: Percent;
admin: Percent;
deposit: Percent;
withdraw: Percent;
};
const recommendedFeesRaw = {
adminFeeNumerator: "50",
adminFeeDenominator: "100",
depositFeeNumerator: "50",
depositFeeDenominator: "100",
tradeFeeNumerator: "20",
tradeFeeDenominator: "10000",
withdrawFeeNumerator: "50",
withdrawFeeDenominator: "10000",
};
export const RECOMMENDED_FEES: Fees = {
trade: new Percent(
recommendedFeesRaw.tradeFeeNumerator,
recommendedFeesRaw.tradeFeeDenominator
),
withdraw: new Percent(
recommendedFeesRaw.withdrawFeeNumerator,
recommendedFeesRaw.withdrawFeeDenominator
),
admin: new Percent(
recommendedFeesRaw.adminFeeNumerator,
recommendedFeesRaw.adminFeeDenominator
),
deposit: new Percent(
recommendedFeesRaw.depositFeeNumerator,
recommendedFeesRaw.depositFeeDenominator
),
};
export const RECOMMENDED_AMP = JSBI.BigInt("100");
/**
* Static definition of an exchange.
*/
export interface IExchange {
address: string;
lpToken: Token;
tokens: readonly [Token, Token];
}
/**
* Info loaded from the exchange. This is used by the calculator.
*/
export interface IExchangeInfo {
ampFactor: JSBI;
paused: boolean;
fees: Fees;
lpTotalSupply: TokenAmount;
reserves: readonly [TokenAmount, TokenAmount];
}