import { SubPeggedVersionE, Version } from './types';
import { TokenInfo } from '../../../hooks/Token';
export interface StateProps {
    /** The pegged type is created in 5 steps, and the other types are created in 3 steps. */
    currentStep: 0 | 1 | 2 | 3 | 4;
    selectedVersion: Version;
    selectedSubPeggedVersion?: SubPeggedVersionE;
    baseToken: TokenInfo | null;
    quoteToken: TokenInfo | null;
    baseAmount: string;
    quoteAmount: string;
    /**
     * Whether to fix the exchange rate fixedRatioPrice to the current legal currency price, true means no modification is allowed
     * single-token is not fixed by default and cannot be fixed, and can be modified
     * After fixing, when modifying the quantity, standard needs to keep the ratio of baseAmount, quoteAmount, fixedRatioPrice unchanged. Pegged needs to be linked regardless of whether it is fixed or not. dpp does not need to, and the three can be modified independently.
     */
    isFixedRatio: boolean;
    /**
     * PmmState.i
     * The value of standard pool is always DEFAULT_INIT_PRICE_STANDARD
     * Other types can be modified, the initial value is DEFAULT_INIT_PRICE
     * The value of this field for single-token, pegged and dpp types is synchronized with fixedRatioPrice
     */
    initPrice: string;
    /**
     * Exchange rate, price, exchange ratio, price ratio
     * Except for single-token types, use the initial fiat price to initialize this field
     * single-token defaults to empty, others default to 1
     */
    fixedRatioPrice: string;
    /** The token on the left side of the exchange rate input box */
    leftTokenAddress: TokenInfo['address'] | undefined;
    slippageCoefficient: string;
    isSlippageCoefficientCustomized: boolean;
    feeRate: string | '0.01' | '0.3' | '1';
    isFeeRateCustomized: boolean;
    /** pegged type base token liquidity ratio */
    peggedBaseTokenRatio: string;
    /** pegged type quote token liquidity ratio */
    peggedQuoteTokenRatio: string;
}
type Pool = any;
export declare enum Types {
    SetCurrentStep = 1,
    SelectNewVersion = 2,
    SelectNewSubPeggedVersion = 3,
    UpdateBaseToken = 4,
    UpdateQuoteToken = 5,
    SwitchTokens = 6,
    UpdateBaseAmount = 7,
    UpdateQuoteAmount = 8,
    UpdateIsFixedRatio = 9,
    UpdateFixedRatioPrice = 10,
    InitFixedRatioPrice = 11,
    ToggleLeftToken = 12,
    UpdateSlippageCoefficient = 13,
    UpdateIsSlippageCoefficientCustomized = 14,
    UpdateFeeRate = 15,
    UpdateIsFeeRateCustomized = 16,
    InitEditParameters = 17,
    UpdatePeggedBaseTokenRatio = 18,
    UpdatePeggedQuoteTokenRatio = 19
}
type Payload = {
    [Types.SetCurrentStep]: StateProps['currentStep'];
    [Types.SelectNewVersion]: Version;
    [Types.SelectNewSubPeggedVersion]: SubPeggedVersionE;
    [Types.UpdateBaseToken]: TokenInfo;
    [Types.UpdateQuoteToken]: TokenInfo;
    [Types.SwitchTokens]: undefined;
    [Types.UpdateBaseAmount]: string;
    [Types.UpdateQuoteAmount]: string;
    [Types.UpdateIsFixedRatio]: boolean;
    [Types.UpdateFixedRatioPrice]: string;
    [Types.InitFixedRatioPrice]: {
        baseTokenFiatPrice: number | undefined;
        quoteTokenFiatPrice: number | undefined;
    };
    [Types.ToggleLeftToken]: undefined;
    [Types.UpdateSlippageCoefficient]: string;
    [Types.UpdateIsSlippageCoefficientCustomized]: boolean;
    [Types.UpdateFeeRate]: StateProps['feeRate'];
    [Types.UpdateIsFeeRateCustomized]: boolean;
    [Types.InitEditParameters]: Pool;
    [Types.UpdatePeggedBaseTokenRatio]: string;
    [Types.UpdatePeggedQuoteTokenRatio]: string;
};
export type Actions = ActionMap<Payload>[keyof ActionMap<Payload>];
export declare function reducer(state: StateProps, action: Actions): StateProps;
export {};
