import { TransactionReceipt, TransactionResponse } from '@ethersproject/abstract-provider';
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core';
export declare enum TransactionType {
    APPROVAL = 0,
    SWAP = 1,
    WRAP = 2
}
interface BaseTransactionInfo {
    type: TransactionType;
    response: TransactionResponse;
}
export interface ApprovalTransactionInfo extends BaseTransactionInfo {
    type: TransactionType.APPROVAL;
    tokenAddress: string;
    spenderAddress: string;
}
export interface SwapTransactionInfo extends BaseTransactionInfo {
    type: TransactionType.SWAP;
    tradeType: TradeType;
    inputCurrencyAmount: CurrencyAmount<Currency>;
    outputCurrencyAmount: CurrencyAmount<Currency>;
}
export interface InputSwapTransactionInfo extends SwapTransactionInfo {
    tradeType: TradeType.EXACT_INPUT;
    expectedOutputCurrencyAmount: string;
    minimumOutputCurrencyAmount: string;
}
export interface OutputSwapTransactionInfo extends SwapTransactionInfo {
    tradeType: TradeType.EXACT_OUTPUT;
    expectedInputCurrencyAmount: string;
    maximumInputCurrencyAmount: string;
}
export interface WrapTransactionInfo extends BaseTransactionInfo {
    type: TransactionType.WRAP;
    unwrapped: boolean;
    currencyAmountRaw: string;
    chainId?: number;
}
export declare type TransactionInfo = ApprovalTransactionInfo | SwapTransactionInfo | WrapTransactionInfo;
export interface Transaction<T extends TransactionInfo = TransactionInfo> {
    addedTime: number;
    lastCheckedBlockNumber?: number;
    receipt?: TransactionReceipt;
    info: T;
}
export declare const transactionsAtom: import("jotai").WritableAtom<{
    [chainId: string]: {
        [hash: string]: Transaction<TransactionInfo>;
    };
}, {
    [chainId: string]: {
        [hash: string]: Transaction<TransactionInfo>;
    };
} | ((draft: import("immer/dist/internal").WritableDraft<{
    [chainId: string]: {
        [hash: string]: Transaction<TransactionInfo>;
    };
}>) => void), void>;
export {};
