import { WalletProps } from "@coin-voyage/crypto/types/wallet";
import { DepositPayOrderParams } from "@coin-voyage/shared/api";
import { ChainType, CurrencyWithAmount, PayOrder } from "@coin-voyage/shared/common";
import { ROUTES } from "../types/routes";
import { usePayOrderQuotes } from "./usePayOrderQuotes";
/** Loads a PayOrder + manages the corresponding modal. */
export interface PaymentState {
    setPayId: (id: string | null) => Promise<void>;
    createDepositPayOrder: (payOrderParams: DepositPayOrderParams, onError?: (message: string) => void) => Promise<void>;
    copyDepositPayOrder: () => Promise<void>;
    resetPayOrder: () => void;
    payOrder: PayOrder | 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>;
    selectedTokenOption: CurrencyWithAmount | undefined;
    setSelectedTokenOption: (option: CurrencyWithAmount | undefined) => void;
    payWithToken: (tokenAmount: CurrencyWithAmount) => Promise<string | undefined>;
    refreshOrder: () => Promise<void>;
    senderEnsName: string | undefined;
}
export declare function usePaymentState({ payOrder, setPayOrder, setRoute, log, apiKey, }: {
    payOrder: PayOrder | undefined;
    setPayOrder: (o: PayOrder) => void;
    setRoute: React.Dispatch<React.SetStateAction<ROUTES>>;
    log: (...args: any[]) => void;
    apiKey: string;
}): PaymentState;
