import { ExternalProvider, JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core';
import type { Slippage } from 'hooks/useSlippage';
import { PriceImpact } from 'hooks/useUSDCPriceImpact';
import { PropsWithChildren } from 'react';
import { InterfaceTrade, TradeState } from 'state/routing/types';
import { Field } from 'state/swap';
/**
 * @param {CurrencyAmount} brydgeFee - Amount in input currency terms representing the amount Brydge takes in for the trade (applicable only on Field.INPUT object)
 * @param {CurrencyAmount} brydgeFeeUSDC - brydgeFee in USDC (applicable only on Field.INPUT object)
 * @param {CurrencyAmount} lpFee - Amount in input currency terms representing the liquidity provider fee for the swap/trade (applicable only on Field.INPUT object)
 * @param {CurrencyAmount} lpFeeUSDC - lpFee in USDC (applicable only on Field.INPUT object)
 * @param {CurrencyAmount} totalAmount - Amount in input currency terms representing amountIn + brydge fee + lpFee (applicable only on Field.INPUT object)
 * @param {CurrencyAmount} totalAmountUSDC - totalAmount in USDC (applicable only on Field.INPUT object)
 */
interface SwapField {
    currency?: Currency;
    amount?: CurrencyAmount<Currency>;
    balance?: CurrencyAmount<Currency>;
    usdc?: CurrencyAmount<Currency>;
    brydgeFee?: CurrencyAmount<Currency>;
    brydgeFeeUSDC?: CurrencyAmount<Currency>;
    lpFeeUSDC?: CurrencyAmount<Currency>;
    totalAmount?: CurrencyAmount<Currency>;
    totalAmountUSDC?: CurrencyAmount<Currency>;
}
interface SwapInfo {
    [Field.INPUT]: SwapField;
    [Field.OUTPUT]: SwapField;
    tradeSource: {
        trade?: InterfaceTrade<Currency, Currency, TradeType>;
        state: TradeState;
    };
    tradeDest: {
        trade?: InterfaceTrade<Currency, Currency, TradeType>;
        state: TradeState;
    };
    sourceSlippage: Slippage;
    destSlippage: Slippage;
    impact?: PriceImpact;
    usdc?: CurrencyAmount<Currency>;
    isCrossChain: boolean;
    isDoNothing: boolean;
    isSourceTradeRequired: boolean;
    isDestTradeRequired: boolean;
    stargateFeeUSDC?: CurrencyAmount<Currency>;
    layerZeroFeeUSDC?: CurrencyAmount<Currency>;
}
export declare type EQFeeStruct = {
    amount: number;
    eqFee: number;
    eqReward: number;
    lkbRemove: number;
    lpFee: number;
    protocolFee: number;
};
export declare function getEQFeeForChain(sourceChain: number, destChain: number, amount: CurrencyAmount<Currency> | undefined, library?: (JsonRpcProvider & {
    provider?: ExternalProvider;
}) | Web3Provider): Promise<CurrencyAmount<Currency> | undefined>;
export declare function useStargateCurrencies(sourceChain: number, destChain: number): [Currency | undefined | null, Currency | undefined | null];
export declare function useCombineLPFees(lpFeeSource: CurrencyAmount<Currency> | undefined | null, lpFeeDest: CurrencyAmount<Currency> | undefined | null, isCrossChain: boolean): CurrencyAmount<Currency> | undefined;
export declare function useComputeFeeAmounts(amount: CurrencyAmount<Currency> | undefined, currency: Currency | null | undefined, sourceChain: number, destChain: number, library: Web3Provider | (JsonRpcProvider & {
    provider?: ExternalProvider | undefined;
}) | undefined, isCrossChain: boolean): [
    CurrencyAmount<Currency> | undefined,
    CurrencyAmount<Currency> | undefined,
    CurrencyAmount<Currency> | undefined,
    CurrencyAmount<Currency> | undefined
];
export declare function SwapInfoProvider({ children, disabled }: PropsWithChildren<{
    disabled?: boolean;
}>): JSX.Element;
/** Requires that SwapInfoUpdater be installed in the DOM tree. **/
export default function useSwapInfo(): SwapInfo;
export {};
