import { FormattedQuoteData } from '../../utils/getQuoteData';
import { Token } from '../../Providers/ConfigProvider';

export declare const useFetchQuote: () => {
    data: FormattedQuoteData;
    isLoading: boolean;
    isRefetching: boolean;
    refetch: (options?: import('@tanstack/react-query').RefetchOptions | undefined) => Promise<import('@tanstack/react-query').QueryObserverResult<any, Error>>;
    noData: boolean;
};
export interface EndPoint {
    token: Token;
    chainId: number;
    priceInUsd: number;
    amount: string;
    slippageAdjustedAmount?: string;
    valueInUsd?: number;
}
export interface BoosterItemType {
    id: string;
    label: string;
    description: string;
    icon: string;
}
export interface Boosters {
    coupons: BoosterItemType[];
}
export interface ComparisonRoute {
    bridgeName: string;
    displayName: string;
    serviceTime: number;
    icon: string;
    feesInUsd: number;
}
export type RequestType = "SWAP_REQUEST" | "SINGLE_OUTPUT_REQUEST";
export type TxData = {
    data: `0x${string}`;
    to: `0x${string}`;
    value: bigint;
};
export type RebateDetails = {
    token: Token;
    amount: string;
    chainId: number;
};
export interface Quote {
    requestType: RequestType;
    requestHash: string;
    deadline: number;
    sender: string;
    receiver: string;
    delegate: string;
    settler: string;
    switchboardId: string;
    nonce: number;
    input: EndPoint[];
    output: EndPoint[];
    affiliateFee: {
        affiliateFeeInBps: string;
        feeInBps: number;
        affiliateFeeTaker: string;
        token: Token;
        amount: string;
        chainId: number;
        valueInUsd: number;
        priceInUsd: number;
    };
    receiverExecution: {
        receiver: string;
        receiverCalldata: string;
        receiverMinGasLimit: string;
    };
    estimatedFulfilTime: number;
    suggestedSlippage: string;
    boosters?: Boosters;
    comparisionRoutes?: ComparisonRoute[];
    signTypedData: SignTypeData;
    txData?: TxData;
    rebateDetails: RebateDetails;
}
export interface SignTypeData {
    domain: {
        name: string;
        chainId: number;
        verifyingContract: `0x${string}`;
    };
    types: {
        PermitWitnessTransferFrom: {
            name: string;
            type: string;
        }[];
        TokenPermissions: {
            name: string;
            type: string;
        }[];
        Request: {
            name: string;
            type: string;
        }[];
        BasicRequest: {
            name: string;
            type: string;
        }[];
        SingleOutputRequest: {
            name: string;
            type: string;
        }[];
        SwapRequest: {
            name: string;
            type: string;
        }[];
    };
    values: {
        permitted: {
            token: string;
            amount: string;
        };
        spender: string;
        nonce: number;
        deadline: number;
        witness: {
            basicReq: {
                originChainId?: number;
                destinationChainId?: number;
                chainId?: number;
                deadline: number;
                nonce: number;
                sender: string;
                receiver: string;
                delegate?: string;
                bungeeGateway: string;
                switchboardId?: number;
                inputToken: string;
                inputAmount: string;
                outputToken?: string;
                outputTokens?: string[];
                minOutputAmount?: string;
                minOutputAmounts?: string[];
                refuelAmount?: string;
            };
            swapOutputToken?: string;
            minSwapOutput?: string;
            exclusiveTransmitters?: string[];
            minDestGas?: number;
            destinationPayload?: string;
            metadata: string;
            affiliateFees: string;
        };
    };
}
