import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "../../../common";
import type { FunctionFragment, Result, EventFragment } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from "ethers";
export interface VRTConverterInterface extends utils.Interface {
    functions: {
        "DEAD_ADDRESS()": FunctionFragment;
        "_become(address)": FunctionFragment;
        "_notEntered()": FunctionFragment;
        "admin()": FunctionFragment;
        "conversionEndTime()": FunctionFragment;
        "conversionPeriod()": FunctionFragment;
        "conversionRatio()": FunctionFragment;
        "conversionStartTime()": FunctionFragment;
        "convert(uint256)": FunctionFragment;
        "implementation()": FunctionFragment;
        "initialize(address,address,uint256,uint256,uint256)": FunctionFragment;
        "initialized()": FunctionFragment;
        "isConversionActive()": FunctionFragment;
        "pendingAdmin()": FunctionFragment;
        "pendingImplementation()": FunctionFragment;
        "setXVSVesting(address)": FunctionFragment;
        "totalVrtConverted()": FunctionFragment;
        "vrt()": FunctionFragment;
        "vrtDecimalsMultiplier()": FunctionFragment;
        "xvs()": FunctionFragment;
        "xvsDecimalsMultiplier()": FunctionFragment;
        "xvsVesting()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "DEAD_ADDRESS" | "_become" | "_notEntered" | "admin" | "conversionEndTime" | "conversionPeriod" | "conversionRatio" | "conversionStartTime" | "convert" | "implementation" | "initialize" | "initialized" | "isConversionActive" | "pendingAdmin" | "pendingImplementation" | "setXVSVesting" | "totalVrtConverted" | "vrt" | "vrtDecimalsMultiplier" | "xvs" | "xvsDecimalsMultiplier" | "xvsVesting"): FunctionFragment;
    encodeFunctionData(functionFragment: "DEAD_ADDRESS", values?: undefined): string;
    encodeFunctionData(functionFragment: "_become", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "_notEntered", values?: undefined): string;
    encodeFunctionData(functionFragment: "admin", values?: undefined): string;
    encodeFunctionData(functionFragment: "conversionEndTime", values?: undefined): string;
    encodeFunctionData(functionFragment: "conversionPeriod", values?: undefined): string;
    encodeFunctionData(functionFragment: "conversionRatio", values?: undefined): string;
    encodeFunctionData(functionFragment: "conversionStartTime", values?: undefined): string;
    encodeFunctionData(functionFragment: "convert", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "implementation", values?: undefined): string;
    encodeFunctionData(functionFragment: "initialize", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "initialized", values?: undefined): string;
    encodeFunctionData(functionFragment: "isConversionActive", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingAdmin", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingImplementation", values?: undefined): string;
    encodeFunctionData(functionFragment: "setXVSVesting", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "totalVrtConverted", values?: undefined): string;
    encodeFunctionData(functionFragment: "vrt", values?: undefined): string;
    encodeFunctionData(functionFragment: "vrtDecimalsMultiplier", values?: undefined): string;
    encodeFunctionData(functionFragment: "xvs", values?: undefined): string;
    encodeFunctionData(functionFragment: "xvsDecimalsMultiplier", values?: undefined): string;
    encodeFunctionData(functionFragment: "xvsVesting", values?: undefined): string;
    decodeFunctionResult(functionFragment: "DEAD_ADDRESS", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_become", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "_notEntered", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "admin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "conversionEndTime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "conversionPeriod", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "conversionRatio", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "conversionStartTime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "convert", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "implementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isConversionActive", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingImplementation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setXVSVesting", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalVrtConverted", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vrt", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vrtDecimalsMultiplier", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "xvs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "xvsDecimalsMultiplier", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "xvsVesting", data: BytesLike): Result;
    events: {
        "ConversionInfoSet(uint256,uint256,uint256,uint256)": EventFragment;
        "TokenConverted(address,address,uint256,address,uint256)": EventFragment;
        "TokenWithdraw(address,address,uint256)": EventFragment;
        "XVSVestingSet(address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "ConversionInfoSet"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenConverted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokenWithdraw"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "XVSVestingSet"): EventFragment;
}
export interface ConversionInfoSetEventObject {
    conversionRatio: BigNumber;
    conversionStartTime: BigNumber;
    conversionPeriod: BigNumber;
    conversionEndTime: BigNumber;
}
export type ConversionInfoSetEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], ConversionInfoSetEventObject>;
export type ConversionInfoSetEventFilter = TypedEventFilter<ConversionInfoSetEvent>;
export interface TokenConvertedEventObject {
    reedeemer: string;
    vrtAddress: string;
    vrtAmount: BigNumber;
    xvsAddress: string;
    xvsAmount: BigNumber;
}
export type TokenConvertedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string,
    BigNumber
], TokenConvertedEventObject>;
export type TokenConvertedEventFilter = TypedEventFilter<TokenConvertedEvent>;
export interface TokenWithdrawEventObject {
    token: string;
    to: string;
    amount: BigNumber;
}
export type TokenWithdrawEvent = TypedEvent<[
    string,
    string,
    BigNumber
], TokenWithdrawEventObject>;
export type TokenWithdrawEventFilter = TypedEventFilter<TokenWithdrawEvent>;
export interface XVSVestingSetEventObject {
    xvsVestingAddress: string;
}
export type XVSVestingSetEvent = TypedEvent<[string], XVSVestingSetEventObject>;
export type XVSVestingSetEventFilter = TypedEventFilter<XVSVestingSetEvent>;
export interface VRTConverter extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: VRTConverterInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        DEAD_ADDRESS(overrides?: CallOverrides): Promise<[string]>;
        _become(vrtConverterProxy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        _notEntered(overrides?: CallOverrides): Promise<[boolean]>;
        admin(overrides?: CallOverrides): Promise<[string]>;
        conversionEndTime(overrides?: CallOverrides): Promise<[BigNumber]>;
        conversionPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
        conversionRatio(overrides?: CallOverrides): Promise<[BigNumber]>;
        conversionStartTime(overrides?: CallOverrides): Promise<[BigNumber]>;
        convert(vrtAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        implementation(overrides?: CallOverrides): Promise<[string]>;
        initialize(_vrtAddress: PromiseOrValue<string>, _xvsAddress: PromiseOrValue<string>, _conversionRatio: PromiseOrValue<BigNumberish>, _conversionStartTime: PromiseOrValue<BigNumberish>, _conversionPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialized(overrides?: CallOverrides): Promise<[boolean]>;
        isConversionActive(overrides?: CallOverrides): Promise<[boolean]>;
        pendingAdmin(overrides?: CallOverrides): Promise<[string]>;
        pendingImplementation(overrides?: CallOverrides): Promise<[string]>;
        setXVSVesting(_xvsVestingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        totalVrtConverted(overrides?: CallOverrides): Promise<[BigNumber]>;
        vrt(overrides?: CallOverrides): Promise<[string]>;
        vrtDecimalsMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>;
        xvs(overrides?: CallOverrides): Promise<[string]>;
        xvsDecimalsMultiplier(overrides?: CallOverrides): Promise<[BigNumber]>;
        xvsVesting(overrides?: CallOverrides): Promise<[string]>;
    };
    DEAD_ADDRESS(overrides?: CallOverrides): Promise<string>;
    _become(vrtConverterProxy: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    _notEntered(overrides?: CallOverrides): Promise<boolean>;
    admin(overrides?: CallOverrides): Promise<string>;
    conversionEndTime(overrides?: CallOverrides): Promise<BigNumber>;
    conversionPeriod(overrides?: CallOverrides): Promise<BigNumber>;
    conversionRatio(overrides?: CallOverrides): Promise<BigNumber>;
    conversionStartTime(overrides?: CallOverrides): Promise<BigNumber>;
    convert(vrtAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    implementation(overrides?: CallOverrides): Promise<string>;
    initialize(_vrtAddress: PromiseOrValue<string>, _xvsAddress: PromiseOrValue<string>, _conversionRatio: PromiseOrValue<BigNumberish>, _conversionStartTime: PromiseOrValue<BigNumberish>, _conversionPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialized(overrides?: CallOverrides): Promise<boolean>;
    isConversionActive(overrides?: CallOverrides): Promise<boolean>;
    pendingAdmin(overrides?: CallOverrides): Promise<string>;
    pendingImplementation(overrides?: CallOverrides): Promise<string>;
    setXVSVesting(_xvsVestingAddress: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    totalVrtConverted(overrides?: CallOverrides): Promise<BigNumber>;
    vrt(overrides?: CallOverrides): Promise<string>;
    vrtDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
    xvs(overrides?: CallOverrides): Promise<string>;
    xvsDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
    xvsVesting(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        DEAD_ADDRESS(overrides?: CallOverrides): Promise<string>;
        _become(vrtConverterProxy: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        _notEntered(overrides?: CallOverrides): Promise<boolean>;
        admin(overrides?: CallOverrides): Promise<string>;
        conversionEndTime(overrides?: CallOverrides): Promise<BigNumber>;
        conversionPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        conversionRatio(overrides?: CallOverrides): Promise<BigNumber>;
        conversionStartTime(overrides?: CallOverrides): Promise<BigNumber>;
        convert(vrtAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        implementation(overrides?: CallOverrides): Promise<string>;
        initialize(_vrtAddress: PromiseOrValue<string>, _xvsAddress: PromiseOrValue<string>, _conversionRatio: PromiseOrValue<BigNumberish>, _conversionStartTime: PromiseOrValue<BigNumberish>, _conversionPeriod: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        initialized(overrides?: CallOverrides): Promise<boolean>;
        isConversionActive(overrides?: CallOverrides): Promise<boolean>;
        pendingAdmin(overrides?: CallOverrides): Promise<string>;
        pendingImplementation(overrides?: CallOverrides): Promise<string>;
        setXVSVesting(_xvsVestingAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        totalVrtConverted(overrides?: CallOverrides): Promise<BigNumber>;
        vrt(overrides?: CallOverrides): Promise<string>;
        vrtDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
        xvs(overrides?: CallOverrides): Promise<string>;
        xvsDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
        xvsVesting(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "ConversionInfoSet(uint256,uint256,uint256,uint256)"(conversionRatio?: null, conversionStartTime?: null, conversionPeriod?: null, conversionEndTime?: null): ConversionInfoSetEventFilter;
        ConversionInfoSet(conversionRatio?: null, conversionStartTime?: null, conversionPeriod?: null, conversionEndTime?: null): ConversionInfoSetEventFilter;
        "TokenConverted(address,address,uint256,address,uint256)"(reedeemer?: null, vrtAddress?: null, vrtAmount?: null, xvsAddress?: null, xvsAmount?: null): TokenConvertedEventFilter;
        TokenConverted(reedeemer?: null, vrtAddress?: null, vrtAmount?: null, xvsAddress?: null, xvsAmount?: null): TokenConvertedEventFilter;
        "TokenWithdraw(address,address,uint256)"(token?: null, to?: null, amount?: null): TokenWithdrawEventFilter;
        TokenWithdraw(token?: null, to?: null, amount?: null): TokenWithdrawEventFilter;
        "XVSVestingSet(address)"(xvsVestingAddress?: null): XVSVestingSetEventFilter;
        XVSVestingSet(xvsVestingAddress?: null): XVSVestingSetEventFilter;
    };
    estimateGas: {
        DEAD_ADDRESS(overrides?: CallOverrides): Promise<BigNumber>;
        _become(vrtConverterProxy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        _notEntered(overrides?: CallOverrides): Promise<BigNumber>;
        admin(overrides?: CallOverrides): Promise<BigNumber>;
        conversionEndTime(overrides?: CallOverrides): Promise<BigNumber>;
        conversionPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        conversionRatio(overrides?: CallOverrides): Promise<BigNumber>;
        conversionStartTime(overrides?: CallOverrides): Promise<BigNumber>;
        convert(vrtAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        implementation(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_vrtAddress: PromiseOrValue<string>, _xvsAddress: PromiseOrValue<string>, _conversionRatio: PromiseOrValue<BigNumberish>, _conversionStartTime: PromiseOrValue<BigNumberish>, _conversionPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialized(overrides?: CallOverrides): Promise<BigNumber>;
        isConversionActive(overrides?: CallOverrides): Promise<BigNumber>;
        pendingAdmin(overrides?: CallOverrides): Promise<BigNumber>;
        pendingImplementation(overrides?: CallOverrides): Promise<BigNumber>;
        setXVSVesting(_xvsVestingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        totalVrtConverted(overrides?: CallOverrides): Promise<BigNumber>;
        vrt(overrides?: CallOverrides): Promise<BigNumber>;
        vrtDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
        xvs(overrides?: CallOverrides): Promise<BigNumber>;
        xvsDecimalsMultiplier(overrides?: CallOverrides): Promise<BigNumber>;
        xvsVesting(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        DEAD_ADDRESS(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        _become(vrtConverterProxy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        _notEntered(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        admin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        conversionEndTime(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        conversionPeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        conversionRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        conversionStartTime(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        convert(vrtAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        implementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_vrtAddress: PromiseOrValue<string>, _xvsAddress: PromiseOrValue<string>, _conversionRatio: PromiseOrValue<BigNumberish>, _conversionStartTime: PromiseOrValue<BigNumberish>, _conversionPeriod: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialized(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isConversionActive(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingAdmin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingImplementation(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setXVSVesting(_xvsVestingAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        totalVrtConverted(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vrt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vrtDecimalsMultiplier(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        xvs(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        xvsDecimalsMultiplier(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        xvsVesting(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
