import { BigNumberable, Signer, SuiClient } from "../types";
import { Address, ID, NumStr } from "../types";
export type RFQuote = {
    vault: ID;
    id: string;
    taker: Address;
    token_in_amount: NumStr;
    token_out_amount: NumStr;
    token_in_type: string;
    token_out_type: string;
    expires_at: NumStr;
    created_at: NumStr;
};
export declare const BcsQuote: import("@mysten/sui/bcs").BcsType<{
    vault: string;
    id: string;
    taker: string;
    token_in_amount: string;
    token_out_amount: string;
    token_in_type: string;
    token_out_type: string;
    expires_at: string;
    created_at: string;
}, {
    vault: any;
    id: string;
    taker: any;
    token_in_amount: string | number | bigint;
    token_out_amount: string | number | bigint;
    token_in_type: string;
    token_out_type: string;
    expires_at: string | number | bigint;
    created_at: string | number | bigint;
}>;
export declare const Signature: import("@mysten/sui/bcs").BcsType<{
    sig: number[];
    pk: number[];
    scheme: number;
}, {
    sig: Iterable<number> & {
        length: number;
    };
    pk: Iterable<number> & {
        length: number;
    };
    scheme: number;
}>;
export declare class Quote {
    readonly quote: RFQuote;
    constructor(quote: RFQuote);
    /**
     *
     * @param vault The id of the vault for which the quote is fo
     * @param account The account for which the quote is being created
     * @param token_in_amount The amount of token that will be going into the vault
     * @param token_out_amount The amount of output token the user will get (excludes protocol fee)
     * @param token_in_type The token/coin type of the input token
     * @param token_out_type The token/coin type of the output token
     * @param options optional arguments
     * @returns Quote
     */
    static new(vault: ID | Address, taker: Address, token_in_amount: BigNumberable, token_out_amount: BigNumberable, token_in_type: string, token_out_type: string, options?: {
        id?: string;
        expires_at?: NumStr;
        created_at?: NumStr;
    }): Quote;
    /**
     * Bcs serializes the quote and returns its BCS representation
     * @returns BCS serialized Uint8Array of the quote
     */
    serialize(): Uint8Array;
    /**
     * Signs the quote
     * @param signer The manager of the vault. Must be ED25519 or Secp wallet, other
     * wallets are not supported like Multisig, ZK
     * @returns Returns a base64 representation of signature containing:
     *  1. scheme (1 byte),
     *  2. signature (64 bytes)
     *  3. public key (32/33 bytes)
     */
    sign(signer: Signer): Promise<string>;
    /**
     * Validates if the signature is for the provided quote
     * @param signature The base64 signature
     * @param signer The expected address of the signer
     * @returns True if the signature is created on the given quote and the sig creator is the one provided
     */
    verify(signature: string, signer: Address): Promise<boolean>;
    /**
     * Performs a dry run contract call to verify the signature on-chain
     * @param signature The signature to be verified
     * @param client The Sui client
     * @param pkg The contract pkg to be used
     * @param verbose optional
     * @returns boolean
     */
    onChainVerify(signature: string, client: SuiClient, pkg: string, verbose?: boolean): Promise<boolean>;
}
