import { BigNumber, ethers, PopulatedTransaction } from "ethers";
import { PermitSignature, RoutePools, SwapRoute } from "./router/types";
import { Token } from "./tokens/token";
export * from "./sdkHelper";
export interface TokenPermitData {
    nonce: BigNumber;
    name: string;
    version: string;
    chainId: BigNumber;
}
type SyncSwapSDKConfig = {
    network?: string;
    enablePaymaster?: boolean;
    allowUniswapV3Pools?: boolean;
    aquaPoolOnly?: boolean;
    enableHops?: boolean;
    enableSplits?: boolean;
    slidePage?: number | "auto";
};
export default class SyncSwapSDK {
    private initialized;
    private config;
    private tokenPermitCache;
    constructor(config: SyncSwapSDKConfig);
    updateConfig(config: Partial<SyncSwapSDKConfig>): void;
    initialize(provider: ethers.providers.Provider | ethers.Signer): Promise<void>;
    initializeSyncSwapSDKContracts(): Promise<void>;
    fetchAllPools(): Promise<void>;
    setProviderOrSigner(providerOrSigner: ethers.providers.Provider | ethers.Signer): Promise<void>;
    fetchSyncSwapRouteData(tokenAddressA: string, tokenAddressB: string, userAccount?: string, routeCommonBaseTokenAddresses?: string[]): Promise<RoutePools | null>;
    calculateSyncSwapRoute(routePools: RoutePools, tokenAddressIn: string, tokenAddressOut: string, tokenAmountIn: ethers.BigNumber): Promise<SwapRoute>;
    checkApproval(tokenAddress: string, amount: BigNumber, spender?: string): Promise<boolean>;
    approve(tokenAddress: string, amount: BigNumber, spender?: string): Promise<PopulatedTransaction>;
    getTokenPermitData(tokenAddress: string): Promise<TokenPermitData | null>;
    signPermit(tokenAddress: string, amount: BigNumber, spender?: string, deadline?: BigNumber): Promise<PermitSignature | null>;
    swapExactInput(route: SwapRoute, signature: PermitSignature | null, to: string): Promise<PopulatedTransaction>;
    /**
     * Get all registered tokens
     * @returns Array containing all registered tokens
     */
    getAllTokens(): Token[];
    /**
     * Get all verified tokens (including tokens from default token list)
     * @returns Array containing all verified tokens, including ETH
     */
    getVerifiedTokens(): Token[];
    /**
     * Get all indexed tokens (tokens displayed in UI)
     * @returns Array containing all indexed tokens, including ETH
     */
    getIndexedTokens(): Token[];
    /**
     * Get hidden listed tokens
     * @returns Array containing hidden listed tokens
     */
    getHiddenListedTokens(): Token[];
    /**
     * Get token by address
     * @param address Token address
     * @returns Token object, or null if not found
     */
    getTokenByAddress(address: string): Token | null;
    /**
     * Get token by symbol
     * @param symbol Token symbol
     * @returns Token object, or null if not found
     */
    getTokenBySymbol(symbol: string): Token | null;
    /**
     * Check if token is verified
     * @param address Token address
     * @returns True if token is verified
     */
    isTokenVerified(address: string): boolean;
    /**
     * Check if token is indexed (displayed in UI)
     * @param address Token address
     * @returns True if token is indexed
     */
    isTokenIndexed(address: string): boolean;
    /**
     * Lookup and register token from blockchain
     * @param address Token address
     * @param shouldRegister Whether to register in registry
     * @param isIndexed Whether to mark as indexed
     * @returns [Token object or null, whether it's newly fetched]
     */
    lookupTokenByAddress(address: string, shouldRegister?: boolean, isIndexed?: boolean): Promise<[Token | null, boolean]>;
    /**
     * Get route tokens list (base tokens used for routing calculation)
     * @returns Array containing route token addresses
     */
    getRouteTokens(): string[];
    /**
     * Get wETH address for current network
     * @returns wETH token address
     */
    getWETHAddress(): string;
}
//# sourceMappingURL=index.d.ts.map