four-flap-meme-sdk
Version:
SDK for Flap bonding curve and four.meme TokenManager
193 lines (192 loc) • 5.24 kB
TypeScript
import { Contract } from 'ethers';
export declare enum TokenStatus {
Invalid = 0,
Tradable = 1,
InDuel = 2,
Killed = 3,
DEX = 4
}
export declare enum TokenVersion {
TOKEN_LEGACY_MINT_NO_PERMIT = 0,
TOKEN_LEGACY_MINT_NO_PERMIT_DUPLICATE = 1,
TOKEN_V2_PERMIT = 2,
TOKEN_GOPLUS = 3,
TOKEN_TAXED = 4
}
export declare enum DexThreshType {
TWO_THIRDS = 0,
FOUR_FIFTHS = 1,
HALF = 2,
_95_PERCENT = 3,
_81_PERCENT = 4,
_1_PERCENT = 5
}
export declare enum MigratorType {
V3_MIGRATOR = 0,
V2_MIGRATOR = 1
}
export type TokenStateV2 = {
status: number;
reserve: bigint;
circulatingSupply: bigint;
price: bigint;
tokenVersion: number;
r: bigint;
dexSupplyThresh: bigint;
};
export type TokenStateV3 = {
status: number;
reserve: bigint;
circulatingSupply: bigint;
price: bigint;
tokenVersion: number;
r: bigint;
dexSupplyThresh: bigint;
quoteTokenAddress: string;
nativeToQuoteSwapEnabled: boolean;
};
export type TokenStateV4 = {
status: number;
reserve: bigint;
circulatingSupply: bigint;
price: bigint;
tokenVersion: number;
r: bigint;
dexSupplyThresh: bigint;
quoteTokenAddress: string;
nativeToQuoteSwapEnabled: boolean;
extensionID: `0x${string}`;
};
export type TokenStateV5 = {
status: number;
reserve: bigint;
circulatingSupply: bigint;
price: bigint;
tokenVersion: number;
r: bigint;
h: bigint;
k: bigint;
dexSupplyThresh: bigint;
quoteTokenAddress: string;
nativeToQuoteSwapEnabled: boolean;
extensionID: `0x${string}`;
};
/**
* Flap Portal 支持的链
*/
export type FlapChain = 'BSC' | 'BASE' | 'XLAYER' | 'MORPH' | 'MONAD';
/**
* Flap Portal 配置
*/
export type PortalConfig = {
chain: FlapChain;
rpcUrl: string;
addressOverride?: string;
buyFeeRate?: number;
sellFeeRate?: number;
};
export type QuoteExactInputParams = {
inputToken: string;
outputToken: string;
inputAmount: bigint;
};
export type ExactInputParams = {
inputToken: string;
outputToken: string;
inputAmount: bigint;
minOutputAmount: bigint;
permitData?: string;
};
export type ExactInputV3Params = {
inputToken: string;
outputToken: string;
inputAmount: bigint;
minOutputAmount: bigint;
permitData?: string;
extensionData?: string;
};
export type NewTokenV3Params = {
name: string;
symbol: string;
meta: string;
dexThresh: number;
salt: string;
taxRate: number;
migratorType: number;
quoteToken: string;
quoteAmt: bigint;
beneficiary: string;
permitData?: string;
extensionID: string;
extensionData?: string;
};
export declare class FlapPortal {
private rpcUrl;
protected portal: string;
protected contract: Contract;
private buyFeeRate;
private sellFeeRate;
constructor(cfg: PortalConfig);
getTokenV2(token: string): Promise<TokenStateV2>;
getTokenV3(token: string): Promise<TokenStateV3>;
getTokenV4(token: string): Promise<TokenStateV4>;
getTokenV5(token: string): Promise<TokenStateV5>;
computePriceAndProgress(state: TokenStateV5): {
price: string;
progress: string;
};
quoteBuy(state: TokenStateV5, inputEth: string): string;
quoteSell(state: TokenStateV5, inputToken: string): string;
previewBuy(token: string, ethAmount: bigint): Promise<bigint>;
previewSell(token: string, tokenAmount: bigint): Promise<bigint>;
quoteExactInput(params: QuoteExactInputParams): Promise<bigint>;
getFeeRate(): Promise<{
buyFeeRate: bigint;
sellFeeRate: bigint;
}>;
nonce(): Promise<bigint>;
version(): Promise<string>;
getLocks(token: string): Promise<bigint[]>;
}
export declare class FlapPortalWriter extends FlapPortal {
private wallet;
constructor(cfg: PortalConfig, privateKey: string);
buy(token: string, to: string, minAmount: bigint, msgValue: bigint): Promise<any>;
sell(token: string, amount: bigint, minEth: bigint): Promise<any>;
swapExactInput(params: ExactInputParams, msgValue?: bigint): Promise<any>;
swapExactInputBuy(params: ExactInputParams, msgValue?: bigint): Promise<any>;
swapExactInputSell(params: ExactInputParams): Promise<any>;
swapExactInputV3(params: ExactInputV3Params, msgValue?: bigint): Promise<any>;
newTokenV2(args: {
name: string;
symbol: string;
meta: string;
dexThresh: number;
salt: string;
taxRate: number;
migratorType: number;
quoteToken: string;
quoteAmt: bigint;
beneficiary: string;
permitData?: string;
msgValue?: bigint;
}): Promise<any>;
newTokenV3(args: NewTokenV3Params & {
msgValue?: bigint;
}): Promise<any>;
claim(token: string): Promise<{
txHash: string;
tokenAmount: bigint;
ethAmount: bigint;
}>;
delegateClaim(token: string): Promise<{
txHash: string;
tokenAmount: bigint;
ethAmount: bigint;
}>;
/**
* 获取当前使用的 Portal 合约地址
* 用于事件监听等场景
*/
getContractAddress(): string;
}