import type { FiatTransactionHistory, HistoryTransaction, SendTransactionHistory, SwapTransactionHistory, TxTypeToTransactionMap } from "../../core/types/history";
import { HistoryTxType } from "../../core/types/history";
interface HistoryStoreState {
    transactions: HistoryTransaction[];
}
export type ReplaceTransactionStatusParams = ({
    txType: HistoryTxType.SWAP;
} & Pick<SwapTransactionHistory, "statusResponse" | "status" | "transactionId">) | ({
    txType: HistoryTxType.SEND;
} & Pick<SendTransactionHistory, "hash" | "status">) | ({
    txType: HistoryTxType.BUY;
} & Pick<FiatTransactionHistory, "status" | "transactionHash" | "orderId">);
interface HistoryStore extends HistoryStoreState {
    persistTransaction: (tx: HistoryTransaction) => void;
    replaceTransactionStatus: ({}: ReplaceTransactionStatusParams) => void;
    removeTransaction: ({}: {
        txType: HistoryTxType;
        transactionId: string;
    }) => void;
    replaceTransactionAtNonce: ({}: {
        nonce: number;
        fromAddress: string;
        newTx: HistoryTransaction;
    }) => void;
    findTransaction: <T extends HistoryTxType>({}: {
        txType: T;
        transactionId: string | undefined;
    }) => TxTypeToTransactionMap[T] | undefined;
}
export declare const useHistoryStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<HistoryStore>, "persist"> & {
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<HistoryStore, HistoryStoreState>>) => void;
        clearStorage: () => void;
        rehydrate: () => void | Promise<void>;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: HistoryStore) => void) => () => void;
        onFinishHydration: (fn: (state: HistoryStore) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<HistoryStore, HistoryStoreState>>;
    };
}>;
export {};
