import type { ApiFunkitCheckoutQuoteResult, CheckoutQuoteResponse } from '@funkit/utils';
import type { Address } from 'viem';
import type { Config } from 'wagmi';
import type { FunkitActiveCheckoutItem } from '~/providers/FunkitCheckoutContext';
import type { LoginType } from '~/providers/GeneralWalletProvider';
import type { FunkitDirectExecutionInfo } from '~/hooks/useCheckoutDirectExecution';
import { type BrokerageDetails, type CheckoutFees } from './fees';
import { type PaymentMethodInfo } from './paymentMethods';
export interface FunkitCheckoutQuoteResult extends Omit<ApiFunkitCheckoutQuoteResult, 'finalFeesBreakdown'> {
    finalSpreadUsd: string;
    finalFeesBreakdown: CheckoutFees;
}
export declare function getCheckoutBaseQuote(checkoutItem: FunkitActiveCheckoutItem, userId: string, walletAddress: Address, apiKey: string, sponsorInitialTransferGasLimit: number, wagmiConfig: Config, directExecutionInfo: FunkitDirectExecutionInfo): Promise<CheckoutQuoteResponse>;
export declare function getQuoteFinalEstimation(baseQuote: CheckoutQuoteResponse, checkoutItem: FunkitActiveCheckoutItem, newPaymentMethodInfo: PaymentMethodInfo, wagmiConfig: Config, apiKey: string, loginType: LoginType, enableFrogProxyServer?: boolean): Promise<{
    finalEstimation: FunkitCheckoutQuoteResult;
    brokerage?: BrokerageDetails;
}>;
export interface CheckedAssetAmount {
    isAboveMaximum: boolean;
    isBelowMinimum: boolean;
    maxTargetAssetAmount?: number;
    minTargetAssetAmount?: number;
}
export declare function checkAssetAmount(checkoutItem: FunkitActiveCheckoutItem, newPaymentMethodInfo: PaymentMethodInfo, finalEstimation: FunkitCheckoutQuoteResult, wagmiConfig: Config, walletAddress: Address, brokerage?: BrokerageDetails): Promise<CheckedAssetAmount>;
export interface CheckoutQuoteParams {
    checkoutItem: FunkitActiveCheckoutItem;
    userId: string;
    walletAddress: Address;
    apiKey: string;
    sponsorInitialTransferGasLimit: number;
    newPaymentMethodInfo: PaymentMethodInfo;
    wagmiConfig: Config;
    loginType: LoginType;
    enableFrogProxyServer?: boolean;
    directExecutionInfo: FunkitDirectExecutionInfo;
}
export declare function getQuoteAndEstimation({ checkoutItem, userId, walletAddress, apiKey, sponsorInitialTransferGasLimit, newPaymentMethodInfo, wagmiConfig, loginType, enableFrogProxyServer, directExecutionInfo, }: CheckoutQuoteParams): Promise<{
    baseQuote: CheckoutQuoteResponse;
    checkedAssetAmount: CheckedAssetAmount;
    finalEstimation: FunkitCheckoutQuoteResult;
}>;
