import React, { type Dispatch, type ReactNode } from 'react';
import { type PaymentMethodInfo } from '../domains/paymentMethods';
import type { FunkitCheckoutQuoteResult } from '../domains/quote';
import { type FunkitActiveCheckoutItem } from './FunkitCheckoutContext';
export type CheckoutQuoteError = {
    maxTargetAssetAmount?: number;
    minTargetAssetAmount?: number;
    reason: 'insufficientBalance';
} | {
    maxTargetAssetAmount?: number;
    minTargetAssetAmount?: number;
    minTargetUsdAmount?: number;
    reason: 'insufficientAmount';
} | {
    originalError: Error;
    reason: 'internal';
};
export type CheckoutQuoteResult = {
    success: true;
} | {
    error: CheckoutQuoteError;
    success: false;
};
type GetCheckoutQuoteResponse = CheckoutQuoteResult & {
    shellCheckoutItemWithNextQuote: FunkitActiveCheckoutItem;
    quoteState: CheckoutQuoteState;
};
interface CheckoutQuoteState {
    /** Whether the checkout quote is being fetched **/
    isQuoting: boolean;
    /** Latest checkout estimated fees and time **/
    latestQuote: null | FunkitCheckoutQuoteResult;
    /** The quotation step message **/
    quoteStepMessage: string;
    /** Error messages associated with checkout quote **/
    quoteErrorMessage: string;
}
interface FunkitQuoteContextInterface extends CheckoutQuoteState {
    clearCheckoutQuoteMessages: () => void;
    getCheckoutQuote: (sponsorInitialTransferGasLimit: number, newPaymentMethodInfo: PaymentMethodInfo, disableInformationStreaming?: boolean) => Promise<GetCheckoutQuoteResponse>;
    setCheckoutQuote: Dispatch<React.SetStateAction<FunkitCheckoutQuoteResult | null>>;
    setQuoteProgress: (state: Omit<CheckoutQuoteState, 'latestQuote'>) => void;
}
export declare function FunkitQuoteProvider({ children }: {
    children: ReactNode;
}): React.JSX.Element;
export declare function useQuoteContext(): FunkitQuoteContextInterface;
export {};
