import { WalletProps } from "@coin-voyage/crypto/types/wallet";
import { ChainId, ChainType, Currency, CurrencyBase, type PayOrder } from "@coin-voyage/shared/types";
import { PaymentDetails, PayOrderParams } from "@coin-voyage/shared/types/api";
import { PaymentMethod } from "../types/enums";
import { ROUTES } from "../types/routes";
import { CurrencyAndQuoteID } from "../types/state";
import { usePayOrderQuotes } from "./usePayOrderQuotes";
/** Loads a PayOrder + manages the corresponding modal. */
export interface PaymentState {
    setPayId: (id: string | null) => Promise<void>;
    createDepositPayOrder: (params: PayOrderParams, onError?: (message: string) => void) => Promise<void>;
    copyDepositPayOrder: () => Promise<void>;
    clearUserSelection: () => void;
    payOrder: PayOrder | undefined;
    paymentMethod: PaymentMethod | undefined;
    setPaymentMethod: React.Dispatch<React.SetStateAction<PaymentMethod | undefined>>;
    connectorChainType: ChainType | undefined;
    setConnectorChainType: React.Dispatch<React.SetStateAction<ChainType | undefined>>;
    selectedWallet: WalletProps | undefined;
    setSelectedWallet: React.Dispatch<React.SetStateAction<WalletProps | undefined>>;
    payOrderQuotes: ReturnType<typeof usePayOrderQuotes>;
    selectedCurrencyOption: CurrencyAndQuoteID | undefined;
    setSelectedCurrencyOption: (option: CurrencyAndQuoteID | undefined) => void;
    payFromWallet: (currency: CurrencyAndQuoteID) => Promise<string | undefined>;
    payToAddress: (currency: CurrencyBase) => Promise<PaymentDetails | undefined>;
    refreshOrder: () => Promise<void>;
    senderEnsName: string | undefined;
    payToAddressChainId: ChainId | undefined;
    setPayToAddressChainId: React.Dispatch<React.SetStateAction<ChainId | undefined>>;
    payToAddressCurrency: Currency | undefined;
    setPayToAddressCurrency: React.Dispatch<React.SetStateAction<Currency | undefined>>;
}
export declare function usePaymentState({ payOrder, setPayOrder, setRoute, log, }: {
    payOrder: PayOrder | undefined;
    setPayOrder: (o: PayOrder) => void;
    setRoute: React.Dispatch<React.SetStateAction<ROUTES>>;
    log: (...args: unknown[]) => void;
}): PaymentState;
