import { ethers } from 'ethers'; import { ChainConfig, EstimateAmountOutParams, INativeToken, TokenAccount } from '../types'; import { AbstractChain } from './abstract'; export declare class BSC extends AbstractChain { static readonly WBNB_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; static readonly USD1_ADDRESS = "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d"; static readonly PANCAKESWAP_FACTORY_CA = "0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865"; static readonly PANCAKESWAP_V2_ROUTER = "0x10ED43C718714eb63d5aA57B78B54704E256024E"; static readonly FOURMEME_TOKEN_MANAGER_V3 = "0x5c952063c7fc8610FFDB798152D69F0B9550762b"; static readonly FOURMEME_TOKEN_HELPER = "0xF251F83e40a78868FcfA3FA4599Dad6494E46034"; static readonly QUOTER_V2_ROUTER_CONTRACT_ADDRESS = "0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997"; static readonly MULTICALL3_CONTRACT_ADDRESS = "0xcA11bde05977b3631167028862bE2a173976CA11"; static readonly BNB: INativeToken; static readonly POOL_ABI: string[]; static readonly FACTORY_ABI: string[]; static readonly PANCAKESWAP_V2_ROUTER_ABI: string[]; static readonly FOURMEME_SLIPPAGE_MULTIPLIER: bigint; static readonly FOURMEME_SLIPPAGE_DENOMINATOR: bigint; static readonly DEFAULT_SQRT_PRICE_LIMIT = 0; private readonly rpc; private readonly provider; private readonly programConfig; evmChainId: number; constructor({ rpcConfig, gasFeeConfig, programConfig }: ChainConfig); /** * Gets balances for multiple addresses * @param addresses Array of addresses to check balances for * @returns Promise Array of balance strings */ getBalances(addresses: string[]): Promise; /** * Gets token accounts for multiple addresses * @param addresses Array of addresses to check token balances for * @returns Promise>> Array of token accounts */ getAccountOwnedTokens(addresses: string[]): Promise>>; estimateAmountOut(params: EstimateAmountOutParams): Promise; /** * Normalizes token addresses by converting zero address to WBNB */ private normalizeTokens; /** * Calculates amount out for bonding curve trades * Handles both buy and sell operations with slippage calculation */ calculateBondingCurveAmount(tokenA: string, tokenB: string, amountInWei: bigint): Promise; /** * Calculates amount out for pool trades */ calculatePancakeV3Amount(tokenA: string, tokenB: string, amountInWei: bigint, poolAddress: string): Promise; /** * Calculates amount out for PancakeSwap V2 pool trades * Uses the V2 router to get amounts out directly */ calculatePancakeV2Amount(tokenA: string, tokenB: string, amountInWei: bigint): Promise; /** * Gets metadata for a token * @param tokenAddress Address of the token * @returns Promise Token metadata or null if not found */ getTokenMetadata(tokenAddress: string): Promise<{ tokenAddress: string; name: any; symbol: any; decimals: number; iconUrl: string; chainId: string; } | null>; deposit(receiver: string, amount: string, senderAddress: string): Promise; }