import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export declare namespace RariFundManager {
    type FundManagerDataStruct = {
        netDeposits: PromiseOrValue<BigNumberish>;
        rawInterestAccruedAtLastFeeRateChange: PromiseOrValue<BigNumberish>;
        interestFeesGeneratedAtLastFeeRateChange: PromiseOrValue<BigNumberish>;
        interestFeesClaimed: PromiseOrValue<BigNumberish>;
    };
    type FundManagerDataStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber] & {
        netDeposits: BigNumber;
        rawInterestAccruedAtLastFeeRateChange: BigNumber;
        interestFeesGeneratedAtLastFeeRateChange: BigNumber;
        interestFeesClaimed: BigNumber;
    };
}
export interface RariFundManagerInterface extends utils.Interface {
    functions: {
        'isOwner()': FunctionFragment;
        'owner()': FunctionFragment;
        'rariFundController()': FunctionFragment;
        'rariFundPriceConsumer()': FunctionFragment;
        'rariFundToken()': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'initialize()': FunctionFragment;
        'initialize(address)': FunctionFragment;
        'upgradeFundManager(address)': FunctionFragment;
        'authorizeFundManagerDataSource(address)': FunctionFragment;
        'setFundManagerData((int256,int256,int256,uint256))': FunctionFragment;
        'setFundController(address)': FunctionFragment;
        'forwardLostFunds(address,address)': FunctionFragment;
        'setFundToken(address)': FunctionFragment;
        'setFundProxy(address)': FunctionFragment;
        'setFundRebalancer(address)': FunctionFragment;
        'setFundPriceConsumer(address)': FunctionFragment;
        'disableFund()': FunctionFragment;
        'enableFund()': FunctionFragment;
        'getRawFundBalance()': FunctionFragment;
        'getRawFundBalance(string)': FunctionFragment;
        'getRawFundBalance(uint256[])': FunctionFragment;
        'getFundBalance()': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'getDefaultAccountBalanceLimit()': FunctionFragment;
        'setDefaultAccountBalanceLimit(uint256)': FunctionFragment;
        'getAccountBalanceLimit(address)': FunctionFragment;
        'setIndividualAccountBalanceLimit(address,int256)': FunctionFragment;
        'isCurrencyAccepted(string)': FunctionFragment;
        'getAcceptedCurrencies()': FunctionFragment;
        'setAcceptedCurrencies(string[],bool[])': FunctionFragment;
        'depositTo(address,string,uint256)': FunctionFragment;
        'deposit(string,uint256)': FunctionFragment;
        'withdraw(string,uint256)': FunctionFragment;
        'withdrawFrom(address,string[],uint256[])': FunctionFragment;
        'getRawInterestAccrued()': FunctionFragment;
        'getInterestAccrued()': FunctionFragment;
        'getInterestFeeRate()': FunctionFragment;
        'setInterestFeeRate(uint256)': FunctionFragment;
        'getInterestFeesGenerated()': FunctionFragment;
        'getInterestFeesUnclaimed()': FunctionFragment;
        'setInterestFeeMasterBeneficiary(address)': FunctionFragment;
        'depositFees()': FunctionFragment;
        'withdrawFees(string)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'isOwner' | 'owner' | 'rariFundController' | 'rariFundPriceConsumer' | 'rariFundToken' | 'renounceOwnership' | 'transferOwnership' | 'initialize()' | 'initialize(address)' | 'upgradeFundManager' | 'authorizeFundManagerDataSource' | 'setFundManagerData' | 'setFundController' | 'forwardLostFunds' | 'setFundToken' | 'setFundProxy' | 'setFundRebalancer' | 'setFundPriceConsumer' | 'disableFund' | 'enableFund' | 'getRawFundBalance()' | 'getRawFundBalance(string)' | 'getRawFundBalance(uint256[])' | 'getFundBalance' | 'balanceOf' | 'getDefaultAccountBalanceLimit' | 'setDefaultAccountBalanceLimit' | 'getAccountBalanceLimit' | 'setIndividualAccountBalanceLimit' | 'isCurrencyAccepted' | 'getAcceptedCurrencies' | 'setAcceptedCurrencies' | 'depositTo' | 'deposit' | 'withdraw' | 'withdrawFrom' | 'getRawInterestAccrued' | 'getInterestAccrued' | 'getInterestFeeRate' | 'setInterestFeeRate' | 'getInterestFeesGenerated' | 'getInterestFeesUnclaimed' | 'setInterestFeeMasterBeneficiary' | 'depositFees' | 'withdrawFees'): FunctionFragment;
    encodeFunctionData(functionFragment: 'isOwner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rariFundController', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rariFundPriceConsumer', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rariFundToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'initialize()', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize(address)', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'upgradeFundManager', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'authorizeFundManagerDataSource', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFundManagerData', values: [RariFundManager.FundManagerDataStruct]): string;
    encodeFunctionData(functionFragment: 'setFundController', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'forwardLostFunds', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFundToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFundProxy', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFundRebalancer', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFundPriceConsumer', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'disableFund', values?: undefined): string;
    encodeFunctionData(functionFragment: 'enableFund', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getRawFundBalance()', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getRawFundBalance(string)', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getRawFundBalance(uint256[])', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'getFundBalance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getDefaultAccountBalanceLimit', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setDefaultAccountBalanceLimit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getAccountBalanceLimit', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setIndividualAccountBalanceLimit', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'isCurrencyAccepted', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getAcceptedCurrencies', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setAcceptedCurrencies', values: [PromiseOrValue<string>[], PromiseOrValue<boolean>[]]): string;
    encodeFunctionData(functionFragment: 'depositTo', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdrawFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'getRawInterestAccrued', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getInterestAccrued', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getInterestFeeRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setInterestFeeRate', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getInterestFeesGenerated', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getInterestFeesUnclaimed', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setInterestFeeMasterBeneficiary', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'depositFees', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdrawFees', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'isOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rariFundController', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rariFundPriceConsumer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rariFundToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize()', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize(address)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeFundManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'authorizeFundManagerDataSource', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundManagerData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundController', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'forwardLostFunds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundProxy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundRebalancer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFundPriceConsumer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'disableFund', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enableFund', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRawFundBalance()', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRawFundBalance(string)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRawFundBalance(uint256[])', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getFundBalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getDefaultAccountBalanceLimit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setDefaultAccountBalanceLimit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAccountBalanceLimit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setIndividualAccountBalanceLimit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isCurrencyAccepted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getAcceptedCurrencies', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setAcceptedCurrencies', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRawInterestAccrued', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getInterestAccrued', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getInterestFeeRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setInterestFeeRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getInterestFeesGenerated', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getInterestFeesUnclaimed', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setInterestFeeMasterBeneficiary', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositFees', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawFees', data: BytesLike): Result;
    events: {
        'Deposit(string,address,address,uint256,uint256,uint256)': EventFragment;
        'FundControllerSet(address)': EventFragment;
        'FundDisabled()': EventFragment;
        'FundEnabled()': EventFragment;
        'FundManagerUpgraded(address)': EventFragment;
        'FundProxySet(address)': EventFragment;
        'FundRebalancerSet(address)': EventFragment;
        'FundTokenSet(address)': EventFragment;
        'InterestFeeDeposit(address,uint256)': EventFragment;
        'InterestFeeWithdrawal(address,uint256,string,uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'RariFundPriceConsumerSet(address)': EventFragment;
        'Withdrawal(string,address,address,uint256,uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundControllerSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundDisabled'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundEnabled'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundManagerUpgraded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundProxySet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundRebalancerSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundTokenSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InterestFeeDeposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InterestFeeWithdrawal'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RariFundPriceConsumerSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdrawal'): EventFragment;
}
export interface DepositEventObject {
    currencyCode: string;
    sender: string;
    payee: string;
    amount: BigNumber;
    amountUsd: BigNumber;
    rftMinted: BigNumber;
}
export declare type DepositEvent = TypedEvent<[string, string, string, BigNumber, BigNumber, BigNumber], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface FundControllerSetEventObject {
    newContract: string;
}
export declare type FundControllerSetEvent = TypedEvent<[string], FundControllerSetEventObject>;
export declare type FundControllerSetEventFilter = TypedEventFilter<FundControllerSetEvent>;
export interface FundDisabledEventObject {
}
export declare type FundDisabledEvent = TypedEvent<[], FundDisabledEventObject>;
export declare type FundDisabledEventFilter = TypedEventFilter<FundDisabledEvent>;
export interface FundEnabledEventObject {
}
export declare type FundEnabledEvent = TypedEvent<[], FundEnabledEventObject>;
export declare type FundEnabledEventFilter = TypedEventFilter<FundEnabledEvent>;
export interface FundManagerUpgradedEventObject {
    newContract: string;
}
export declare type FundManagerUpgradedEvent = TypedEvent<[string], FundManagerUpgradedEventObject>;
export declare type FundManagerUpgradedEventFilter = TypedEventFilter<FundManagerUpgradedEvent>;
export interface FundProxySetEventObject {
    newContract: string;
}
export declare type FundProxySetEvent = TypedEvent<[string], FundProxySetEventObject>;
export declare type FundProxySetEventFilter = TypedEventFilter<FundProxySetEvent>;
export interface FundRebalancerSetEventObject {
    newAddress: string;
}
export declare type FundRebalancerSetEvent = TypedEvent<[string], FundRebalancerSetEventObject>;
export declare type FundRebalancerSetEventFilter = TypedEventFilter<FundRebalancerSetEvent>;
export interface FundTokenSetEventObject {
    newContract: string;
}
export declare type FundTokenSetEvent = TypedEvent<[string], FundTokenSetEventObject>;
export declare type FundTokenSetEventFilter = TypedEventFilter<FundTokenSetEvent>;
export interface InterestFeeDepositEventObject {
    beneficiary: string;
    amountUsd: BigNumber;
}
export declare type InterestFeeDepositEvent = TypedEvent<[string, BigNumber], InterestFeeDepositEventObject>;
export declare type InterestFeeDepositEventFilter = TypedEventFilter<InterestFeeDepositEvent>;
export interface InterestFeeWithdrawalEventObject {
    beneficiary: string;
    amountUsd: BigNumber;
    currencyCode: string;
    amount: BigNumber;
}
export declare type InterestFeeWithdrawalEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber
], InterestFeeWithdrawalEventObject>;
export declare type InterestFeeWithdrawalEventFilter = TypedEventFilter<InterestFeeWithdrawalEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface RariFundPriceConsumerSetEventObject {
    newContract: string;
}
export declare type RariFundPriceConsumerSetEvent = TypedEvent<[string], RariFundPriceConsumerSetEventObject>;
export declare type RariFundPriceConsumerSetEventFilter = TypedEventFilter<RariFundPriceConsumerSetEvent>;
export interface WithdrawalEventObject {
    currencyCode: string;
    sender: string;
    payee: string;
    amount: BigNumber;
    amountUsd: BigNumber;
    rftBurned: BigNumber;
}
export declare type WithdrawalEvent = TypedEvent<[
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], WithdrawalEventObject>;
export declare type WithdrawalEventFilter = TypedEventFilter<WithdrawalEvent>;
export interface RariFundManager extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: RariFundManagerInterface;
    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: {
        isOwner(overrides?: CallOverrides): Promise<[boolean]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        rariFundController(overrides?: CallOverrides): Promise<[string]>;
        rariFundPriceConsumer(overrides?: CallOverrides): Promise<[string]>;
        rariFundToken(overrides?: CallOverrides): Promise<[string]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'initialize()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'initialize(address)'(sender: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeFundManager(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        authorizeFundManagerDataSource(authorizedFundManagerDataSource: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundManagerData(data: RariFundManager.FundManagerDataStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundController(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        forwardLostFunds(erc20Contract: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundToken(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundProxy(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundRebalancer(newAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFundPriceConsumer(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        disableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'getRawFundBalance()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'getRawFundBalance(string)'(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'getRawFundBalance(uint256[])'(pricesInUsd: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getFundBalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getDefaultAccountBalanceLimit(overrides?: CallOverrides): Promise<[BigNumber]>;
        setDefaultAccountBalanceLimit(limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getAccountBalanceLimit(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        setIndividualAccountBalanceLimit(account: PromiseOrValue<string>, limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        isCurrencyAccepted(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        getAcceptedCurrencies(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAcceptedCurrencies(currencyCodes: PromiseOrValue<string>[], accepted: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositTo(to: PromiseOrValue<string>, currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdraw(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFrom(from: PromiseOrValue<string>, currencyCodes: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getRawInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getInterestFeeRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        setInterestFeeRate(rate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getInterestFeesGenerated(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getInterestFeesUnclaimed(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setInterestFeeMasterBeneficiary(beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFees(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    isOwner(overrides?: CallOverrides): Promise<boolean>;
    owner(overrides?: CallOverrides): Promise<string>;
    rariFundController(overrides?: CallOverrides): Promise<string>;
    rariFundPriceConsumer(overrides?: CallOverrides): Promise<string>;
    rariFundToken(overrides?: CallOverrides): Promise<string>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'initialize()'(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'initialize(address)'(sender: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeFundManager(newContract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    authorizeFundManagerDataSource(authorizedFundManagerDataSource: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundManagerData(data: RariFundManager.FundManagerDataStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundController(newContract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    forwardLostFunds(erc20Contract: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundToken(newContract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundProxy(newContract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundRebalancer(newAddress: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFundPriceConsumer(newContract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    disableFund(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enableFund(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'getRawFundBalance()'(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'getRawFundBalance(string)'(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'getRawFundBalance(uint256[])'(pricesInUsd: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getFundBalance(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOf(account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getDefaultAccountBalanceLimit(overrides?: CallOverrides): Promise<BigNumber>;
    setDefaultAccountBalanceLimit(limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getAccountBalanceLimit(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    setIndividualAccountBalanceLimit(account: PromiseOrValue<string>, limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    isCurrencyAccepted(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    getAcceptedCurrencies(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAcceptedCurrencies(currencyCodes: PromiseOrValue<string>[], accepted: PromiseOrValue<boolean>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositTo(to: PromiseOrValue<string>, currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdraw(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFrom(from: PromiseOrValue<string>, currencyCodes: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getRawInterestAccrued(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getInterestAccrued(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getInterestFeeRate(overrides?: CallOverrides): Promise<BigNumber>;
    setInterestFeeRate(rate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getInterestFeesGenerated(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getInterestFeesUnclaimed(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setInterestFeeMasterBeneficiary(beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositFees(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFees(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        isOwner(overrides?: CallOverrides): Promise<boolean>;
        owner(overrides?: CallOverrides): Promise<string>;
        rariFundController(overrides?: CallOverrides): Promise<string>;
        rariFundPriceConsumer(overrides?: CallOverrides): Promise<string>;
        rariFundToken(overrides?: CallOverrides): Promise<string>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        'initialize()'(overrides?: CallOverrides): Promise<void>;
        'initialize(address)'(sender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        upgradeFundManager(newContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        authorizeFundManagerDataSource(authorizedFundManagerDataSource: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFundManagerData(data: RariFundManager.FundManagerDataStruct, overrides?: CallOverrides): Promise<void>;
        setFundController(newContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        forwardLostFunds(erc20Contract: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        setFundToken(newContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFundProxy(newContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFundRebalancer(newAddress: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFundPriceConsumer(newContract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        disableFund(overrides?: CallOverrides): Promise<void>;
        enableFund(overrides?: CallOverrides): Promise<void>;
        'getRawFundBalance()'(overrides?: CallOverrides): Promise<BigNumber>;
        'getRawFundBalance(string)'(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        'getRawFundBalance(uint256[])'(pricesInUsd: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
        getFundBalance(overrides?: CallOverrides): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getDefaultAccountBalanceLimit(overrides?: CallOverrides): Promise<BigNumber>;
        setDefaultAccountBalanceLimit(limitUsd: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        getAccountBalanceLimit(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        setIndividualAccountBalanceLimit(account: PromiseOrValue<string>, limitUsd: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        isCurrencyAccepted(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        getAcceptedCurrencies(overrides?: CallOverrides): Promise<string[]>;
        setAcceptedCurrencies(currencyCodes: PromiseOrValue<string>[], accepted: PromiseOrValue<boolean>[], overrides?: CallOverrides): Promise<void>;
        depositTo(to: PromiseOrValue<string>, currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        deposit(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdraw(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdrawFrom(from: PromiseOrValue<string>, currencyCodes: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        getRawInterestAccrued(overrides?: CallOverrides): Promise<BigNumber>;
        getInterestAccrued(overrides?: CallOverrides): Promise<BigNumber>;
        getInterestFeeRate(overrides?: CallOverrides): Promise<BigNumber>;
        setInterestFeeRate(rate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        getInterestFeesGenerated(overrides?: CallOverrides): Promise<BigNumber>;
        getInterestFeesUnclaimed(overrides?: CallOverrides): Promise<BigNumber>;
        setInterestFeeMasterBeneficiary(beneficiary: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        depositFees(overrides?: CallOverrides): Promise<void>;
        withdrawFees(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'Deposit(string,address,address,uint256,uint256,uint256)'(currencyCode?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null, payee?: PromiseOrValue<string> | null, amount?: null, amountUsd?: null, rftMinted?: null): DepositEventFilter;
        Deposit(currencyCode?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null, payee?: PromiseOrValue<string> | null, amount?: null, amountUsd?: null, rftMinted?: null): DepositEventFilter;
        'FundControllerSet(address)'(newContract?: null): FundControllerSetEventFilter;
        FundControllerSet(newContract?: null): FundControllerSetEventFilter;
        'FundDisabled()'(): FundDisabledEventFilter;
        FundDisabled(): FundDisabledEventFilter;
        'FundEnabled()'(): FundEnabledEventFilter;
        FundEnabled(): FundEnabledEventFilter;
        'FundManagerUpgraded(address)'(newContract?: null): FundManagerUpgradedEventFilter;
        FundManagerUpgraded(newContract?: null): FundManagerUpgradedEventFilter;
        'FundProxySet(address)'(newContract?: null): FundProxySetEventFilter;
        FundProxySet(newContract?: null): FundProxySetEventFilter;
        'FundRebalancerSet(address)'(newAddress?: null): FundRebalancerSetEventFilter;
        FundRebalancerSet(newAddress?: null): FundRebalancerSetEventFilter;
        'FundTokenSet(address)'(newContract?: null): FundTokenSetEventFilter;
        FundTokenSet(newContract?: null): FundTokenSetEventFilter;
        'InterestFeeDeposit(address,uint256)'(beneficiary?: null, amountUsd?: null): InterestFeeDepositEventFilter;
        InterestFeeDeposit(beneficiary?: null, amountUsd?: null): InterestFeeDepositEventFilter;
        'InterestFeeWithdrawal(address,uint256,string,uint256)'(beneficiary?: null, amountUsd?: null, currencyCode?: null, amount?: null): InterestFeeWithdrawalEventFilter;
        InterestFeeWithdrawal(beneficiary?: null, amountUsd?: null, currencyCode?: null, amount?: null): InterestFeeWithdrawalEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'RariFundPriceConsumerSet(address)'(newContract?: null): RariFundPriceConsumerSetEventFilter;
        RariFundPriceConsumerSet(newContract?: null): RariFundPriceConsumerSetEventFilter;
        'Withdrawal(string,address,address,uint256,uint256,uint256)'(currencyCode?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null, payee?: PromiseOrValue<string> | null, amount?: null, amountUsd?: null, rftBurned?: null): WithdrawalEventFilter;
        Withdrawal(currencyCode?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null, payee?: PromiseOrValue<string> | null, amount?: null, amountUsd?: null, rftBurned?: null): WithdrawalEventFilter;
    };
    estimateGas: {
        isOwner(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        rariFundController(overrides?: CallOverrides): Promise<BigNumber>;
        rariFundPriceConsumer(overrides?: CallOverrides): Promise<BigNumber>;
        rariFundToken(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'initialize()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'initialize(address)'(sender: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeFundManager(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        authorizeFundManagerDataSource(authorizedFundManagerDataSource: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundManagerData(data: RariFundManager.FundManagerDataStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundController(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        forwardLostFunds(erc20Contract: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundToken(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundProxy(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundRebalancer(newAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFundPriceConsumer(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        disableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'getRawFundBalance()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'getRawFundBalance(string)'(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'getRawFundBalance(uint256[])'(pricesInUsd: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getFundBalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getDefaultAccountBalanceLimit(overrides?: CallOverrides): Promise<BigNumber>;
        setDefaultAccountBalanceLimit(limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getAccountBalanceLimit(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        setIndividualAccountBalanceLimit(account: PromiseOrValue<string>, limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        isCurrencyAccepted(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAcceptedCurrencies(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAcceptedCurrencies(currencyCodes: PromiseOrValue<string>[], accepted: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositTo(to: PromiseOrValue<string>, currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdraw(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFrom(from: PromiseOrValue<string>, currencyCodes: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getRawInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getInterestFeeRate(overrides?: CallOverrides): Promise<BigNumber>;
        setInterestFeeRate(rate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getInterestFeesGenerated(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getInterestFeesUnclaimed(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setInterestFeeMasterBeneficiary(beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFees(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        isOwner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rariFundController(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rariFundPriceConsumer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rariFundToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'initialize()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'initialize(address)'(sender: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeFundManager(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        authorizeFundManagerDataSource(authorizedFundManagerDataSource: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundManagerData(data: RariFundManager.FundManagerDataStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundController(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        forwardLostFunds(erc20Contract: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundToken(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundProxy(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundRebalancer(newAddress: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFundPriceConsumer(newContract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        disableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enableFund(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'getRawFundBalance()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'getRawFundBalance(string)'(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'getRawFundBalance(uint256[])'(pricesInUsd: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getFundBalance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getDefaultAccountBalanceLimit(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setDefaultAccountBalanceLimit(limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getAccountBalanceLimit(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setIndividualAccountBalanceLimit(account: PromiseOrValue<string>, limitUsd: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        isCurrencyAccepted(currencyCode: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAcceptedCurrencies(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAcceptedCurrencies(currencyCodes: PromiseOrValue<string>[], accepted: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositTo(to: PromiseOrValue<string>, currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdraw(currencyCode: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFrom(from: PromiseOrValue<string>, currencyCodes: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getRawInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getInterestAccrued(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getInterestFeeRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setInterestFeeRate(rate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getInterestFeesGenerated(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getInterestFeesUnclaimed(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setInterestFeeMasterBeneficiary(beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositFees(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFees(currencyCode: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
