import { ChainId } from '@envanik/sdk';
export declare enum Field {
    INPUT = "INPUT",
    OUTPUT = "OUTPUT"
}
export declare enum LimitField {
    INPUT = "input",
    OUTPUT = "output",
    PRICE = "price"
}
export declare enum LimitNewField {
    INPUT = "INPUT",
    OUTPUT = "OUTPUT",
    PRICE = "PRICE"
}
export declare enum LimitRate {
    MUL = "MUL",
    DIV = "DIV"
}
export interface FeeInfo {
    feePartner: number;
    feeProtocol: number;
    feeTotal: number;
    feeCut: number;
    initialized: boolean;
}
export interface SwapParams {
    readonly independentField: Field;
    readonly typedValue: string;
    readonly [Field.INPUT]: {
        readonly currencyId: string | undefined;
    };
    readonly [Field.OUTPUT]: {
        readonly currencyId: string | undefined;
    };
    readonly recipient: string | null;
}
export interface DefaultSwapState extends SwapParams {
    readonly feeTo: string;
    readonly feeInfo: FeeInfo;
}
interface ReplaceSwapState {
    typedValue: string;
    recipient: string | null;
    field: Field;
    inputCurrencyId: string;
    outputCurrencyId: string;
    chainId: ChainId;
}
export declare type SwapState = {
    [chainId in ChainId]: DefaultSwapState;
};
export declare const useSwapState: () => {
    swapState: SwapState;
    replaceSwapState: ({ typedValue, recipient, field, inputCurrencyId, outputCurrencyId, chainId }: ReplaceSwapState) => void;
    selectCurrency: ({ currencyId, field, chainId }: {
        currencyId: string;
        field: Field;
        chainId: ChainId;
    }) => void;
    switchCurrencies: ({ chainId }: {
        chainId: ChainId;
    }) => void;
    typeInput: ({ field, typedValue, chainId }: {
        field: Field;
        typedValue: string;
        chainId: ChainId;
    }) => void;
    setRecipient: ({ recipient, chainId }: {
        recipient: string | null;
        chainId: ChainId;
    }) => void;
    updateFeeTo: ({ feeTo, chainId }: {
        feeTo: string;
        chainId: ChainId;
    }) => void;
    updateFeeInfo: ({ feeInfo, chainId }: {
        feeInfo: FeeInfo;
        chainId: ChainId;
    }) => void;
};
export {};
