import { Connection, PublicKey } from "@solana/web3.js";
import * as wasm from "../wasm/gfx_ssl_wasm";
export declare function deserializeAccount(account: any): any;
export interface Quote {
    amountIn: bigint;
    fee: bigint;
    amountOut: bigint;
    impact: number;
    swapPrice: number;
    instantPrice: number;
    oraclePrice: number;
}
export declare class Swap {
    connection: Connection;
    controller: PublicKey;
    programId: PublicKey;
    constructor(connection: Connection, controller?: PublicKey, programId?: PublicKey);
    getWasm(): Promise<typeof wasm>;
    getWasmSync(): typeof wasm;
    getPairAddress: (tokenA: PublicKey, tokenB: PublicKey) => PublicKey;
    getQuoterSync: (tokenIn: PublicKey, tokenOut: PublicKey) => Quoter;
    getQuoter: (tokenIn: PublicKey, tokenOut: PublicKey) => Promise<Quoter>;
    getQuote: (tokenIn: PublicKey, tokenOut: PublicKey, inTokenAmount: bigint) => Promise<Quote>;
    getMinimumQuote: (tokenA: PublicKey, tokenB: PublicKey, inTokenAmount: bigint, slippage: number) => Promise<bigint>;
}
declare class Quoter {
    connection: Connection;
    programId: PublicKey;
    controller: PublicKey;
    tokenIn: PublicKey;
    tokenOut: PublicKey;
    wasm: any;
    private prepared;
    constructor(connection: Connection, programId: PublicKey, controller: PublicKey, tokenIn: PublicKey, tokenOut: PublicKey, wasm: any);
    getAccountsForUpdate(pairData: any): any[];
    prepareSync(parsedAccounts: any[]): void;
    prepare(): Promise<void>;
    isSuspended(): boolean;
    quote(inTokenAmount: bigint, silent?: boolean): Quote;
    getPairAddress: (tokenA: PublicKey, tokenB: PublicKey) => PublicKey;
}
export {};
