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 declare namespace MockProtocolShareReserve {
    type DistributionConfigStruct = {
        schema: PromiseOrValue<BigNumberish>;
        percentage: PromiseOrValue<BigNumberish>;
        destination: PromiseOrValue<string>;
    };
    type DistributionConfigStructOutput = [number, BigNumber, string] & {
        schema: number;
        percentage: BigNumber;
        destination: string;
    };
}
export interface MockProtocolShareReserveInterface extends utils.Interface {
    functions: {
        "CORE_POOL_COMPTROLLER()": FunctionFragment;
        "WBNB()": FunctionFragment;
        "acceptOwnership()": FunctionFragment;
        "accessControlManager()": FunctionFragment;
        "addOrUpdateDistributionConfigs((uint8,uint256,address)[])": FunctionFragment;
        "assetsReserves(address,address,uint8)": FunctionFragment;
        "distributionTargets(uint256)": FunctionFragment;
        "getUnreleasedFunds(address,uint8,address,address)": FunctionFragment;
        "initialize(address,uint256)": FunctionFragment;
        "maxLoopsLimit()": FunctionFragment;
        "owner()": FunctionFragment;
        "pendingOwner()": FunctionFragment;
        "poolRegistry()": FunctionFragment;
        "prime()": FunctionFragment;
        "releaseFunds(address,address[])": FunctionFragment;
        "renounceOwnership()": FunctionFragment;
        "setAccessControlManager(address)": FunctionFragment;
        "setPoolRegistry(address)": FunctionFragment;
        "setPrime(address)": FunctionFragment;
        "totalAssetReserve(address)": FunctionFragment;
        "totalDistributions()": FunctionFragment;
        "transferOwnership(address)": FunctionFragment;
        "updateAssetsState(address,address,uint8)": FunctionFragment;
        "vBNB()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "CORE_POOL_COMPTROLLER" | "WBNB" | "acceptOwnership" | "accessControlManager" | "addOrUpdateDistributionConfigs" | "assetsReserves" | "distributionTargets" | "getUnreleasedFunds" | "initialize" | "maxLoopsLimit" | "owner" | "pendingOwner" | "poolRegistry" | "prime" | "releaseFunds" | "renounceOwnership" | "setAccessControlManager" | "setPoolRegistry" | "setPrime" | "totalAssetReserve" | "totalDistributions" | "transferOwnership" | "updateAssetsState" | "vBNB"): FunctionFragment;
    encodeFunctionData(functionFragment: "CORE_POOL_COMPTROLLER", values?: undefined): string;
    encodeFunctionData(functionFragment: "WBNB", values?: undefined): string;
    encodeFunctionData(functionFragment: "acceptOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "accessControlManager", values?: undefined): string;
    encodeFunctionData(functionFragment: "addOrUpdateDistributionConfigs", values: [MockProtocolShareReserve.DistributionConfigStruct[]]): string;
    encodeFunctionData(functionFragment: "assetsReserves", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "distributionTargets", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "getUnreleasedFunds", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "initialize", values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "maxLoopsLimit", values?: undefined): string;
    encodeFunctionData(functionFragment: "owner", values?: undefined): string;
    encodeFunctionData(functionFragment: "pendingOwner", values?: undefined): string;
    encodeFunctionData(functionFragment: "poolRegistry", values?: undefined): string;
    encodeFunctionData(functionFragment: "prime", values?: undefined): string;
    encodeFunctionData(functionFragment: "releaseFunds", values: [PromiseOrValue<string>, PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: "renounceOwnership", values?: undefined): string;
    encodeFunctionData(functionFragment: "setAccessControlManager", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setPoolRegistry", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "setPrime", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "totalAssetReserve", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "totalDistributions", values?: undefined): string;
    encodeFunctionData(functionFragment: "transferOwnership", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "updateAssetsState", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "vBNB", values?: undefined): string;
    decodeFunctionResult(functionFragment: "CORE_POOL_COMPTROLLER", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "WBNB", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "acceptOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "accessControlManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addOrUpdateDistributionConfigs", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "assetsReserves", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "distributionTargets", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getUnreleasedFunds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "maxLoopsLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pendingOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolRegistry", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "prime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "releaseFunds", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "renounceOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setAccessControlManager", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setPoolRegistry", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setPrime", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalAssetReserve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "totalDistributions", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateAssetsState", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vBNB", data: BytesLike): Result;
    events: {
        "AssetReleased(address,address,uint8,uint256,uint256)": EventFragment;
        "AssetsReservesUpdated(address,address,uint256,uint8,uint8)": EventFragment;
        "DistributionConfigAdded(address,uint256,uint8)": EventFragment;
        "DistributionConfigUpdated(address,uint256,uint256,uint8)": EventFragment;
        "Initialized(uint8)": EventFragment;
        "MaxLoopsLimitUpdated(uint256,uint256)": EventFragment;
        "NewAccessControlManager(address,address)": EventFragment;
        "OwnershipTransferStarted(address,address)": EventFragment;
        "OwnershipTransferred(address,address)": EventFragment;
        "PoolRegistryUpdated(address,address)": EventFragment;
        "PrimeUpdated(address,address)": EventFragment;
        "ReservesUpdated(address,address,uint8,uint256,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AssetReleased"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "AssetsReservesUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "DistributionConfigAdded"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "DistributionConfigUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "MaxLoopsLimitUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "NewAccessControlManager"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferStarted"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolRegistryUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PrimeUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ReservesUpdated"): EventFragment;
}
export interface AssetReleasedEventObject {
    destination: string;
    asset: string;
    schema: number;
    percent: BigNumber;
    amount: BigNumber;
}
export type AssetReleasedEvent = TypedEvent<[
    string,
    string,
    number,
    BigNumber,
    BigNumber
], AssetReleasedEventObject>;
export type AssetReleasedEventFilter = TypedEventFilter<AssetReleasedEvent>;
export interface AssetsReservesUpdatedEventObject {
    comptroller: string;
    asset: string;
    amount: BigNumber;
    incomeType: number;
    schema: number;
}
export type AssetsReservesUpdatedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    number,
    number
], AssetsReservesUpdatedEventObject>;
export type AssetsReservesUpdatedEventFilter = TypedEventFilter<AssetsReservesUpdatedEvent>;
export interface DistributionConfigAddedEventObject {
    destination: string;
    percentage: BigNumber;
    schema: number;
}
export type DistributionConfigAddedEvent = TypedEvent<[
    string,
    BigNumber,
    number
], DistributionConfigAddedEventObject>;
export type DistributionConfigAddedEventFilter = TypedEventFilter<DistributionConfigAddedEvent>;
export interface DistributionConfigUpdatedEventObject {
    destination: string;
    oldPercentage: BigNumber;
    newPercentage: BigNumber;
    schema: number;
}
export type DistributionConfigUpdatedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    number
], DistributionConfigUpdatedEventObject>;
export type DistributionConfigUpdatedEventFilter = TypedEventFilter<DistributionConfigUpdatedEvent>;
export interface InitializedEventObject {
    version: number;
}
export type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface MaxLoopsLimitUpdatedEventObject {
    oldMaxLoopsLimit: BigNumber;
    newmaxLoopsLimit: BigNumber;
}
export type MaxLoopsLimitUpdatedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], MaxLoopsLimitUpdatedEventObject>;
export type MaxLoopsLimitUpdatedEventFilter = TypedEventFilter<MaxLoopsLimitUpdatedEvent>;
export interface NewAccessControlManagerEventObject {
    oldAccessControlManager: string;
    newAccessControlManager: string;
}
export type NewAccessControlManagerEvent = TypedEvent<[
    string,
    string
], NewAccessControlManagerEventObject>;
export type NewAccessControlManagerEventFilter = TypedEventFilter<NewAccessControlManagerEvent>;
export interface OwnershipTransferStartedEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferStartedEvent = TypedEvent<[
    string,
    string
], OwnershipTransferStartedEventObject>;
export type OwnershipTransferStartedEventFilter = TypedEventFilter<OwnershipTransferStartedEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export type OwnershipTransferredEvent = TypedEvent<[
    string,
    string
], OwnershipTransferredEventObject>;
export type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PoolRegistryUpdatedEventObject {
    oldPoolRegistry: string;
    newPoolRegistry: string;
}
export type PoolRegistryUpdatedEvent = TypedEvent<[
    string,
    string
], PoolRegistryUpdatedEventObject>;
export type PoolRegistryUpdatedEventFilter = TypedEventFilter<PoolRegistryUpdatedEvent>;
export interface PrimeUpdatedEventObject {
    oldPrime: string;
    newPrime: string;
}
export type PrimeUpdatedEvent = TypedEvent<[
    string,
    string
], PrimeUpdatedEventObject>;
export type PrimeUpdatedEventFilter = TypedEventFilter<PrimeUpdatedEvent>;
export interface ReservesUpdatedEventObject {
    comptroller: string;
    asset: string;
    schema: number;
    oldBalance: BigNumber;
    newBalance: BigNumber;
}
export type ReservesUpdatedEvent = TypedEvent<[
    string,
    string,
    number,
    BigNumber,
    BigNumber
], ReservesUpdatedEventObject>;
export type ReservesUpdatedEventFilter = TypedEventFilter<ReservesUpdatedEvent>;
export interface MockProtocolShareReserve extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: MockProtocolShareReserveInterface;
    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: {
        CORE_POOL_COMPTROLLER(overrides?: CallOverrides): Promise<[string]>;
        WBNB(overrides?: CallOverrides): Promise<[string]>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        accessControlManager(overrides?: CallOverrides): Promise<[string]>;
        addOrUpdateDistributionConfigs(configs: MockProtocolShareReserve.DistributionConfigStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        assetsReserves(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        distributionTargets(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            string
        ] & {
            schema: number;
            percentage: BigNumber;
            destination: string;
        }>;
        getUnreleasedFunds(comptroller: PromiseOrValue<string>, schema: PromiseOrValue<BigNumberish>, destination: PromiseOrValue<string>, asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        initialize(_accessControlManager: PromiseOrValue<string>, _loopsLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        maxLoopsLimit(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        pendingOwner(overrides?: CallOverrides): Promise<[string]>;
        poolRegistry(overrides?: CallOverrides): Promise<[string]>;
        prime(overrides?: CallOverrides): Promise<[string]>;
        releaseFunds(comptroller: PromiseOrValue<string>, assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPoolRegistry(_poolRegistry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPrime(_prime: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        totalAssetReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        totalDistributions(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateAssetsState(comptroller: PromiseOrValue<string>, asset: PromiseOrValue<string>, incomeType: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        vBNB(overrides?: CallOverrides): Promise<[string]>;
    };
    CORE_POOL_COMPTROLLER(overrides?: CallOverrides): Promise<string>;
    WBNB(overrides?: CallOverrides): Promise<string>;
    acceptOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    accessControlManager(overrides?: CallOverrides): Promise<string>;
    addOrUpdateDistributionConfigs(configs: MockProtocolShareReserve.DistributionConfigStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    assetsReserves(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    distributionTargets(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        number,
        BigNumber,
        string
    ] & {
        schema: number;
        percentage: BigNumber;
        destination: string;
    }>;
    getUnreleasedFunds(comptroller: PromiseOrValue<string>, schema: PromiseOrValue<BigNumberish>, destination: PromiseOrValue<string>, asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    initialize(_accessControlManager: PromiseOrValue<string>, _loopsLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    maxLoopsLimit(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    pendingOwner(overrides?: CallOverrides): Promise<string>;
    poolRegistry(overrides?: CallOverrides): Promise<string>;
    prime(overrides?: CallOverrides): Promise<string>;
    releaseFunds(comptroller: PromiseOrValue<string>, assets: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPoolRegistry(_poolRegistry: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPrime(_prime: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    totalAssetReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    totalDistributions(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateAssetsState(comptroller: PromiseOrValue<string>, asset: PromiseOrValue<string>, incomeType: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    vBNB(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        CORE_POOL_COMPTROLLER(overrides?: CallOverrides): Promise<string>;
        WBNB(overrides?: CallOverrides): Promise<string>;
        acceptOwnership(overrides?: CallOverrides): Promise<void>;
        accessControlManager(overrides?: CallOverrides): Promise<string>;
        addOrUpdateDistributionConfigs(configs: MockProtocolShareReserve.DistributionConfigStruct[], overrides?: CallOverrides): Promise<void>;
        assetsReserves(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        distributionTargets(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            number,
            BigNumber,
            string
        ] & {
            schema: number;
            percentage: BigNumber;
            destination: string;
        }>;
        getUnreleasedFunds(comptroller: PromiseOrValue<string>, schema: PromiseOrValue<BigNumberish>, destination: PromiseOrValue<string>, asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_accessControlManager: PromiseOrValue<string>, _loopsLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        maxLoopsLimit(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        pendingOwner(overrides?: CallOverrides): Promise<string>;
        poolRegistry(overrides?: CallOverrides): Promise<string>;
        prime(overrides?: CallOverrides): Promise<string>;
        releaseFunds(comptroller: PromiseOrValue<string>, assets: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPoolRegistry(_poolRegistry: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPrime(_prime: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        totalAssetReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalDistributions(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        updateAssetsState(comptroller: PromiseOrValue<string>, asset: PromiseOrValue<string>, incomeType: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        vBNB(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        "AssetReleased(address,address,uint8,uint256,uint256)"(destination?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, schema?: null, percent?: null, amount?: null): AssetReleasedEventFilter;
        AssetReleased(destination?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, schema?: null, percent?: null, amount?: null): AssetReleasedEventFilter;
        "AssetsReservesUpdated(address,address,uint256,uint8,uint8)"(comptroller?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, amount?: null, incomeType?: null, schema?: null): AssetsReservesUpdatedEventFilter;
        AssetsReservesUpdated(comptroller?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, amount?: null, incomeType?: null, schema?: null): AssetsReservesUpdatedEventFilter;
        "DistributionConfigAdded(address,uint256,uint8)"(destination?: PromiseOrValue<string> | null, percentage?: null, schema?: null): DistributionConfigAddedEventFilter;
        DistributionConfigAdded(destination?: PromiseOrValue<string> | null, percentage?: null, schema?: null): DistributionConfigAddedEventFilter;
        "DistributionConfigUpdated(address,uint256,uint256,uint8)"(destination?: PromiseOrValue<string> | null, oldPercentage?: null, newPercentage?: null, schema?: null): DistributionConfigUpdatedEventFilter;
        DistributionConfigUpdated(destination?: PromiseOrValue<string> | null, oldPercentage?: null, newPercentage?: null, schema?: null): DistributionConfigUpdatedEventFilter;
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        "MaxLoopsLimitUpdated(uint256,uint256)"(oldMaxLoopsLimit?: null, newmaxLoopsLimit?: null): MaxLoopsLimitUpdatedEventFilter;
        MaxLoopsLimitUpdated(oldMaxLoopsLimit?: null, newmaxLoopsLimit?: null): MaxLoopsLimitUpdatedEventFilter;
        "NewAccessControlManager(address,address)"(oldAccessControlManager?: null, newAccessControlManager?: null): NewAccessControlManagerEventFilter;
        NewAccessControlManager(oldAccessControlManager?: null, newAccessControlManager?: null): NewAccessControlManagerEventFilter;
        "OwnershipTransferStarted(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
        OwnershipTransferStarted(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferStartedEventFilter;
        "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        "PoolRegistryUpdated(address,address)"(oldPoolRegistry?: PromiseOrValue<string> | null, newPoolRegistry?: PromiseOrValue<string> | null): PoolRegistryUpdatedEventFilter;
        PoolRegistryUpdated(oldPoolRegistry?: PromiseOrValue<string> | null, newPoolRegistry?: PromiseOrValue<string> | null): PoolRegistryUpdatedEventFilter;
        "PrimeUpdated(address,address)"(oldPrime?: PromiseOrValue<string> | null, newPrime?: PromiseOrValue<string> | null): PrimeUpdatedEventFilter;
        PrimeUpdated(oldPrime?: PromiseOrValue<string> | null, newPrime?: PromiseOrValue<string> | null): PrimeUpdatedEventFilter;
        "ReservesUpdated(address,address,uint8,uint256,uint256)"(comptroller?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, schema?: null, oldBalance?: null, newBalance?: null): ReservesUpdatedEventFilter;
        ReservesUpdated(comptroller?: PromiseOrValue<string> | null, asset?: PromiseOrValue<string> | null, schema?: null, oldBalance?: null, newBalance?: null): ReservesUpdatedEventFilter;
    };
    estimateGas: {
        CORE_POOL_COMPTROLLER(overrides?: CallOverrides): Promise<BigNumber>;
        WBNB(overrides?: CallOverrides): Promise<BigNumber>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        accessControlManager(overrides?: CallOverrides): Promise<BigNumber>;
        addOrUpdateDistributionConfigs(configs: MockProtocolShareReserve.DistributionConfigStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        assetsReserves(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        distributionTargets(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getUnreleasedFunds(comptroller: PromiseOrValue<string>, schema: PromiseOrValue<BigNumberish>, destination: PromiseOrValue<string>, asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_accessControlManager: PromiseOrValue<string>, _loopsLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        maxLoopsLimit(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        pendingOwner(overrides?: CallOverrides): Promise<BigNumber>;
        poolRegistry(overrides?: CallOverrides): Promise<BigNumber>;
        prime(overrides?: CallOverrides): Promise<BigNumber>;
        releaseFunds(comptroller: PromiseOrValue<string>, assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPoolRegistry(_poolRegistry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPrime(_prime: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        totalAssetReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalDistributions(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateAssetsState(comptroller: PromiseOrValue<string>, asset: PromiseOrValue<string>, incomeType: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        vBNB(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        CORE_POOL_COMPTROLLER(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        WBNB(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        acceptOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        accessControlManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addOrUpdateDistributionConfigs(configs: MockProtocolShareReserve.DistributionConfigStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        assetsReserves(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<string>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        distributionTargets(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnreleasedFunds(comptroller: PromiseOrValue<string>, schema: PromiseOrValue<BigNumberish>, destination: PromiseOrValue<string>, asset: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_accessControlManager: PromiseOrValue<string>, _loopsLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        maxLoopsLimit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolRegistry(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prime(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        releaseFunds(comptroller: PromiseOrValue<string>, assets: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAccessControlManager(accessControlManager_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPoolRegistry(_poolRegistry: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPrime(_prime: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        totalAssetReserve(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalDistributions(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateAssetsState(comptroller: PromiseOrValue<string>, asset: PromiseOrValue<string>, incomeType: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        vBNB(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
