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 interface AnglePoolManagerInterface extends utils.Interface {
    functions: {
        'BASE_PARAMS()': FunctionFragment;
        'BASE_TOKENS()': FunctionFragment;
        'DEFAULT_ADMIN_ROLE()': FunctionFragment;
        'GOVERNOR_ROLE()': FunctionFragment;
        'GUARDIAN_ROLE()': FunctionFragment;
        'STABLEMASTER_ROLE()': FunctionFragment;
        'STRATEGY_ROLE()': FunctionFragment;
        'addGovernor(address)': FunctionFragment;
        'addStrategy(address,uint256)': FunctionFragment;
        'adminDebt()': FunctionFragment;
        'creditAvailable()': FunctionFragment;
        'debtOutstanding()': FunctionFragment;
        'debtRatio()': FunctionFragment;
        'deployCollateral(address[],address,address,address,address)': FunctionFragment;
        'estimatedAPR()': FunctionFragment;
        'feeManager()': FunctionFragment;
        'getBalance()': FunctionFragment;
        'getRoleAdmin(bytes32)': FunctionFragment;
        'getTotalAsset()': FunctionFragment;
        'grantRole(bytes32,address)': FunctionFragment;
        'hasRole(bytes32,address)': FunctionFragment;
        'initialize(address,address)': FunctionFragment;
        'interestsAccumulated()': FunctionFragment;
        'interestsForSurplus()': FunctionFragment;
        'perpetualManager()': FunctionFragment;
        'pushSurplus()': FunctionFragment;
        'recoverERC20(address,address,uint256)': FunctionFragment;
        'removeGovernor(address)': FunctionFragment;
        'renounceRole(bytes32,address)': FunctionFragment;
        'report(uint256,uint256,uint256)': FunctionFragment;
        'revokeGuardian(address)': FunctionFragment;
        'revokeRole(bytes32,address)': FunctionFragment;
        'revokeStrategy(address)': FunctionFragment;
        'setFeeManager(address)': FunctionFragment;
        'setGuardian(address,address)': FunctionFragment;
        'setInterestsForSurplus(uint64)': FunctionFragment;
        'setStrategyEmergencyExit(address)': FunctionFragment;
        'setSurplusConverter(address)': FunctionFragment;
        'stableMaster()': FunctionFragment;
        'strategies(address)': FunctionFragment;
        'strategyList(uint256)': FunctionFragment;
        'surplusConverter()': FunctionFragment;
        'token()': FunctionFragment;
        'totalDebt()': FunctionFragment;
        'updateStrategyDebtRatio(address,uint256)': FunctionFragment;
        'withdrawFromStrategy(address,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'BASE_PARAMS' | 'BASE_TOKENS' | 'DEFAULT_ADMIN_ROLE' | 'GOVERNOR_ROLE' | 'GUARDIAN_ROLE' | 'STABLEMASTER_ROLE' | 'STRATEGY_ROLE' | 'addGovernor' | 'addStrategy' | 'adminDebt' | 'creditAvailable' | 'debtOutstanding' | 'debtRatio' | 'deployCollateral' | 'estimatedAPR' | 'feeManager' | 'getBalance' | 'getRoleAdmin' | 'getTotalAsset' | 'grantRole' | 'hasRole' | 'initialize' | 'interestsAccumulated' | 'interestsForSurplus' | 'perpetualManager' | 'pushSurplus' | 'recoverERC20' | 'removeGovernor' | 'renounceRole' | 'report' | 'revokeGuardian' | 'revokeRole' | 'revokeStrategy' | 'setFeeManager' | 'setGuardian' | 'setInterestsForSurplus' | 'setStrategyEmergencyExit' | 'setSurplusConverter' | 'stableMaster' | 'strategies' | 'strategyList' | 'surplusConverter' | 'token' | 'totalDebt' | 'updateStrategyDebtRatio' | 'withdrawFromStrategy'): FunctionFragment;
    encodeFunctionData(functionFragment: 'BASE_PARAMS', values?: undefined): string;
    encodeFunctionData(functionFragment: 'BASE_TOKENS', values?: undefined): string;
    encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'GOVERNOR_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'GUARDIAN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'STABLEMASTER_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'STRATEGY_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'addGovernor', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addStrategy', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'adminDebt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'creditAvailable', values?: undefined): string;
    encodeFunctionData(functionFragment: 'debtOutstanding', values?: undefined): string;
    encodeFunctionData(functionFragment: 'debtRatio', values?: undefined): string;
    encodeFunctionData(functionFragment: 'deployCollateral', values: [
        PromiseOrValue<string>[],
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: 'estimatedAPR', values?: undefined): string;
    encodeFunctionData(functionFragment: 'feeManager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getBalance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'getTotalAsset', values?: undefined): string;
    encodeFunctionData(functionFragment: 'grantRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'interestsAccumulated', values?: undefined): string;
    encodeFunctionData(functionFragment: 'interestsForSurplus', values?: undefined): string;
    encodeFunctionData(functionFragment: 'perpetualManager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pushSurplus', values?: undefined): string;
    encodeFunctionData(functionFragment: 'recoverERC20', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'removeGovernor', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'renounceRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'report', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'revokeGuardian', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeStrategy', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFeeManager', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setGuardian', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setInterestsForSurplus', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setStrategyEmergencyExit', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setSurplusConverter', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'stableMaster', values?: undefined): string;
    encodeFunctionData(functionFragment: 'strategies', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'strategyList', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'surplusConverter', values?: undefined): string;
    encodeFunctionData(functionFragment: 'token', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalDebt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'updateStrategyDebtRatio', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdrawFromStrategy', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'BASE_PARAMS', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'BASE_TOKENS', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'GOVERNOR_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'GUARDIAN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'STABLEMASTER_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'STRATEGY_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addGovernor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addStrategy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'adminDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'creditAvailable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'debtOutstanding', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'debtRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deployCollateral', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'estimatedAPR', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'feeManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getBalance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getTotalAsset', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestsAccumulated', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'interestsForSurplus', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'perpetualManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pushSurplus', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'recoverERC20', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeGovernor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'report', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeGuardian', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeStrategy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFeeManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setGuardian', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setInterestsForSurplus', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setStrategyEmergencyExit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setSurplusConverter', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stableMaster', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'strategies', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'strategyList', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'surplusConverter', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'token', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalDebt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateStrategyDebtRatio', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdrawFromStrategy', data: BytesLike): Result;
    events: {
        'FeesDistributed(uint256)': EventFragment;
        'InterestsForSurplusUpdated(uint64)': EventFragment;
        'Recovered(address,address,uint256)': EventFragment;
        'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment;
        'RoleGranted(bytes32,address,address)': EventFragment;
        'RoleRevoked(bytes32,address,address)': EventFragment;
        'StrategyAdded(address,uint256)': EventFragment;
        'StrategyReported(address,uint256,uint256,uint256,uint256)': EventFragment;
        'StrategyRevoked(address)': EventFragment;
        'SurplusConverterUpdated(address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'FeesDistributed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'InterestsForSurplusUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Recovered'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'StrategyAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'StrategyReported'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'StrategyRevoked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SurplusConverterUpdated'): EventFragment;
}
export interface FeesDistributedEventObject {
    amountDistributed: BigNumber;
}
export declare type FeesDistributedEvent = TypedEvent<[BigNumber], FeesDistributedEventObject>;
export declare type FeesDistributedEventFilter = TypedEventFilter<FeesDistributedEvent>;
export interface InterestsForSurplusUpdatedEventObject {
    _interestsForSurplus: BigNumber;
}
export declare type InterestsForSurplusUpdatedEvent = TypedEvent<[BigNumber], InterestsForSurplusUpdatedEventObject>;
export declare type InterestsForSurplusUpdatedEventFilter = TypedEventFilter<InterestsForSurplusUpdatedEvent>;
export interface RecoveredEventObject {
    token: string;
    to: string;
    amount: BigNumber;
}
export declare type RecoveredEvent = TypedEvent<[string, string, BigNumber], RecoveredEventObject>;
export declare type RecoveredEventFilter = TypedEventFilter<RecoveredEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export declare type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>;
export declare type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>;
export declare type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>;
export declare type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface StrategyAddedEventObject {
    strategy: string;
    debtRatio: BigNumber;
}
export declare type StrategyAddedEvent = TypedEvent<[string, BigNumber], StrategyAddedEventObject>;
export declare type StrategyAddedEventFilter = TypedEventFilter<StrategyAddedEvent>;
export interface StrategyReportedEventObject {
    strategy: string;
    gain: BigNumber;
    loss: BigNumber;
    debtPayment: BigNumber;
    totalDebt: BigNumber;
}
export declare type StrategyReportedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], StrategyReportedEventObject>;
export declare type StrategyReportedEventFilter = TypedEventFilter<StrategyReportedEvent>;
export interface StrategyRevokedEventObject {
    strategy: string;
}
export declare type StrategyRevokedEvent = TypedEvent<[string], StrategyRevokedEventObject>;
export declare type StrategyRevokedEventFilter = TypedEventFilter<StrategyRevokedEvent>;
export interface SurplusConverterUpdatedEventObject {
    newSurplusConverter: string;
    oldSurplusConverter: string;
}
export declare type SurplusConverterUpdatedEvent = TypedEvent<[string, string], SurplusConverterUpdatedEventObject>;
export declare type SurplusConverterUpdatedEventFilter = TypedEventFilter<SurplusConverterUpdatedEvent>;
export interface AnglePoolManager extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: AnglePoolManagerInterface;
    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: {
        BASE_PARAMS(overrides?: CallOverrides): Promise<[BigNumber]>;
        BASE_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        GOVERNOR_ROLE(overrides?: CallOverrides): Promise<[string]>;
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        STABLEMASTER_ROLE(overrides?: CallOverrides): Promise<[string]>;
        STRATEGY_ROLE(overrides?: CallOverrides): Promise<[string]>;
        addGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addStrategy(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        adminDebt(overrides?: CallOverrides): Promise<[BigNumber]>;
        creditAvailable(overrides?: CallOverrides): Promise<[BigNumber]>;
        debtOutstanding(overrides?: CallOverrides): Promise<[BigNumber]>;
        debtRatio(overrides?: CallOverrides): Promise<[BigNumber]>;
        deployCollateral(governorList: PromiseOrValue<string>[], guardian: PromiseOrValue<string>, _perpetualManager: PromiseOrValue<string>, _feeManager: PromiseOrValue<string>, _oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        estimatedAPR(overrides?: CallOverrides): Promise<[BigNumber] & {
            apr: BigNumber;
        }>;
        feeManager(overrides?: CallOverrides): Promise<[string]>;
        getBalance(overrides?: CallOverrides): Promise<[BigNumber]>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        getTotalAsset(overrides?: CallOverrides): Promise<[BigNumber]>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        initialize(_token: PromiseOrValue<string>, _stableMaster: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        interestsAccumulated(overrides?: CallOverrides): Promise<[BigNumber]>;
        interestsForSurplus(overrides?: CallOverrides): Promise<[BigNumber]>;
        perpetualManager(overrides?: CallOverrides): Promise<[string]>;
        pushSurplus(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        recoverERC20(tokenAddress: PromiseOrValue<string>, to: PromiseOrValue<string>, amountToRecover: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        report(gain: PromiseOrValue<BigNumberish>, loss: PromiseOrValue<BigNumberish>, debtPayment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeGuardian(guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeStrategy(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFeeManager(_feeManager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setGuardian(_guardian: PromiseOrValue<string>, guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setInterestsForSurplus(_interestsForSurplus: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setStrategyEmergencyExit(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSurplusConverter(newSurplusConverter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stableMaster(overrides?: CallOverrides): Promise<[string]>;
        strategies(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            lastReport: BigNumber;
            totalStrategyDebt: BigNumber;
            debtRatio: BigNumber;
        }>;
        strategyList(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        surplusConverter(overrides?: CallOverrides): Promise<[string]>;
        token(overrides?: CallOverrides): Promise<[string]>;
        totalDebt(overrides?: CallOverrides): Promise<[BigNumber]>;
        updateStrategyDebtRatio(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFromStrategy(strategy: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    BASE_PARAMS(overrides?: CallOverrides): Promise<BigNumber>;
    BASE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    GOVERNOR_ROLE(overrides?: CallOverrides): Promise<string>;
    GUARDIAN_ROLE(overrides?: CallOverrides): Promise<string>;
    STABLEMASTER_ROLE(overrides?: CallOverrides): Promise<string>;
    STRATEGY_ROLE(overrides?: CallOverrides): Promise<string>;
    addGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addStrategy(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    adminDebt(overrides?: CallOverrides): Promise<BigNumber>;
    creditAvailable(overrides?: CallOverrides): Promise<BigNumber>;
    debtOutstanding(overrides?: CallOverrides): Promise<BigNumber>;
    debtRatio(overrides?: CallOverrides): Promise<BigNumber>;
    deployCollateral(governorList: PromiseOrValue<string>[], guardian: PromiseOrValue<string>, _perpetualManager: PromiseOrValue<string>, _feeManager: PromiseOrValue<string>, _oracle: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    estimatedAPR(overrides?: CallOverrides): Promise<BigNumber>;
    feeManager(overrides?: CallOverrides): Promise<string>;
    getBalance(overrides?: CallOverrides): Promise<BigNumber>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    getTotalAsset(overrides?: CallOverrides): Promise<BigNumber>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    initialize(_token: PromiseOrValue<string>, _stableMaster: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    interestsAccumulated(overrides?: CallOverrides): Promise<BigNumber>;
    interestsForSurplus(overrides?: CallOverrides): Promise<BigNumber>;
    perpetualManager(overrides?: CallOverrides): Promise<string>;
    pushSurplus(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    recoverERC20(tokenAddress: PromiseOrValue<string>, to: PromiseOrValue<string>, amountToRecover: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    report(gain: PromiseOrValue<BigNumberish>, loss: PromiseOrValue<BigNumberish>, debtPayment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeGuardian(guardian: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeStrategy(strategy: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFeeManager(_feeManager: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setGuardian(_guardian: PromiseOrValue<string>, guardian: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setInterestsForSurplus(_interestsForSurplus: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setStrategyEmergencyExit(strategy: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSurplusConverter(newSurplusConverter: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stableMaster(overrides?: CallOverrides): Promise<string>;
    strategies(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        lastReport: BigNumber;
        totalStrategyDebt: BigNumber;
        debtRatio: BigNumber;
    }>;
    strategyList(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    surplusConverter(overrides?: CallOverrides): Promise<string>;
    token(overrides?: CallOverrides): Promise<string>;
    totalDebt(overrides?: CallOverrides): Promise<BigNumber>;
    updateStrategyDebtRatio(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFromStrategy(strategy: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        BASE_PARAMS(overrides?: CallOverrides): Promise<BigNumber>;
        BASE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        GOVERNOR_ROLE(overrides?: CallOverrides): Promise<string>;
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<string>;
        STABLEMASTER_ROLE(overrides?: CallOverrides): Promise<string>;
        STRATEGY_ROLE(overrides?: CallOverrides): Promise<string>;
        addGovernor(_governor: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addStrategy(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        adminDebt(overrides?: CallOverrides): Promise<BigNumber>;
        creditAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        debtOutstanding(overrides?: CallOverrides): Promise<BigNumber>;
        debtRatio(overrides?: CallOverrides): Promise<BigNumber>;
        deployCollateral(governorList: PromiseOrValue<string>[], guardian: PromiseOrValue<string>, _perpetualManager: PromiseOrValue<string>, _feeManager: PromiseOrValue<string>, _oracle: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        estimatedAPR(overrides?: CallOverrides): Promise<BigNumber>;
        feeManager(overrides?: CallOverrides): Promise<string>;
        getBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        getTotalAsset(overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        initialize(_token: PromiseOrValue<string>, _stableMaster: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        interestsAccumulated(overrides?: CallOverrides): Promise<BigNumber>;
        interestsForSurplus(overrides?: CallOverrides): Promise<BigNumber>;
        perpetualManager(overrides?: CallOverrides): Promise<string>;
        pushSurplus(overrides?: CallOverrides): Promise<void>;
        recoverERC20(tokenAddress: PromiseOrValue<string>, to: PromiseOrValue<string>, amountToRecover: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        removeGovernor(_governor: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        report(gain: PromiseOrValue<BigNumberish>, loss: PromiseOrValue<BigNumberish>, debtPayment: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        revokeGuardian(guardian: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeStrategy(strategy: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFeeManager(_feeManager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setGuardian(_guardian: PromiseOrValue<string>, guardian: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setInterestsForSurplus(_interestsForSurplus: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setStrategyEmergencyExit(strategy: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setSurplusConverter(newSurplusConverter: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        stableMaster(overrides?: CallOverrides): Promise<string>;
        strategies(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            lastReport: BigNumber;
            totalStrategyDebt: BigNumber;
            debtRatio: BigNumber;
        }>;
        strategyList(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        surplusConverter(overrides?: CallOverrides): Promise<string>;
        token(overrides?: CallOverrides): Promise<string>;
        totalDebt(overrides?: CallOverrides): Promise<BigNumber>;
        updateStrategyDebtRatio(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdrawFromStrategy(strategy: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'FeesDistributed(uint256)'(amountDistributed?: null): FeesDistributedEventFilter;
        FeesDistributed(amountDistributed?: null): FeesDistributedEventFilter;
        'InterestsForSurplusUpdated(uint64)'(_interestsForSurplus?: null): InterestsForSurplusUpdatedEventFilter;
        InterestsForSurplusUpdated(_interestsForSurplus?: null): InterestsForSurplusUpdatedEventFilter;
        'Recovered(address,address,uint256)'(token?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): RecoveredEventFilter;
        Recovered(token?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null): RecoveredEventFilter;
        'RoleAdminChanged(bytes32,bytes32,bytes32)'(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        'RoleGranted(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        RoleGranted(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        'RoleRevoked(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        RoleRevoked(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        'StrategyAdded(address,uint256)'(strategy?: PromiseOrValue<string> | null, debtRatio?: null): StrategyAddedEventFilter;
        StrategyAdded(strategy?: PromiseOrValue<string> | null, debtRatio?: null): StrategyAddedEventFilter;
        'StrategyReported(address,uint256,uint256,uint256,uint256)'(strategy?: PromiseOrValue<string> | null, gain?: null, loss?: null, debtPayment?: null, totalDebt?: null): StrategyReportedEventFilter;
        StrategyReported(strategy?: PromiseOrValue<string> | null, gain?: null, loss?: null, debtPayment?: null, totalDebt?: null): StrategyReportedEventFilter;
        'StrategyRevoked(address)'(strategy?: PromiseOrValue<string> | null): StrategyRevokedEventFilter;
        StrategyRevoked(strategy?: PromiseOrValue<string> | null): StrategyRevokedEventFilter;
        'SurplusConverterUpdated(address,address)'(newSurplusConverter?: PromiseOrValue<string> | null, oldSurplusConverter?: PromiseOrValue<string> | null): SurplusConverterUpdatedEventFilter;
        SurplusConverterUpdated(newSurplusConverter?: PromiseOrValue<string> | null, oldSurplusConverter?: PromiseOrValue<string> | null): SurplusConverterUpdatedEventFilter;
    };
    estimateGas: {
        BASE_PARAMS(overrides?: CallOverrides): Promise<BigNumber>;
        BASE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GOVERNOR_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        STABLEMASTER_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        STRATEGY_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        addGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addStrategy(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        adminDebt(overrides?: CallOverrides): Promise<BigNumber>;
        creditAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        debtOutstanding(overrides?: CallOverrides): Promise<BigNumber>;
        debtRatio(overrides?: CallOverrides): Promise<BigNumber>;
        deployCollateral(governorList: PromiseOrValue<string>[], guardian: PromiseOrValue<string>, _perpetualManager: PromiseOrValue<string>, _feeManager: PromiseOrValue<string>, _oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        estimatedAPR(overrides?: CallOverrides): Promise<BigNumber>;
        feeManager(overrides?: CallOverrides): Promise<BigNumber>;
        getBalance(overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getTotalAsset(overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_token: PromiseOrValue<string>, _stableMaster: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        interestsAccumulated(overrides?: CallOverrides): Promise<BigNumber>;
        interestsForSurplus(overrides?: CallOverrides): Promise<BigNumber>;
        perpetualManager(overrides?: CallOverrides): Promise<BigNumber>;
        pushSurplus(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        recoverERC20(tokenAddress: PromiseOrValue<string>, to: PromiseOrValue<string>, amountToRecover: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        report(gain: PromiseOrValue<BigNumberish>, loss: PromiseOrValue<BigNumberish>, debtPayment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeGuardian(guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeStrategy(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFeeManager(_feeManager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setGuardian(_guardian: PromiseOrValue<string>, guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setInterestsForSurplus(_interestsForSurplus: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setStrategyEmergencyExit(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSurplusConverter(newSurplusConverter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stableMaster(overrides?: CallOverrides): Promise<BigNumber>;
        strategies(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        strategyList(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        surplusConverter(overrides?: CallOverrides): Promise<BigNumber>;
        token(overrides?: CallOverrides): Promise<BigNumber>;
        totalDebt(overrides?: CallOverrides): Promise<BigNumber>;
        updateStrategyDebtRatio(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFromStrategy(strategy: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        BASE_PARAMS(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        BASE_TOKENS(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GOVERNOR_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GUARDIAN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        STABLEMASTER_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        STRATEGY_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addStrategy(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        adminDebt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        creditAvailable(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debtOutstanding(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        debtRatio(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deployCollateral(governorList: PromiseOrValue<string>[], guardian: PromiseOrValue<string>, _perpetualManager: PromiseOrValue<string>, _feeManager: PromiseOrValue<string>, _oracle: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        estimatedAPR(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feeManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getBalance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalAsset(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_token: PromiseOrValue<string>, _stableMaster: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        interestsAccumulated(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        interestsForSurplus(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        perpetualManager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pushSurplus(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        recoverERC20(tokenAddress: PromiseOrValue<string>, to: PromiseOrValue<string>, amountToRecover: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeGovernor(_governor: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        report(gain: PromiseOrValue<BigNumberish>, loss: PromiseOrValue<BigNumberish>, debtPayment: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeGuardian(guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeStrategy(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFeeManager(_feeManager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setGuardian(_guardian: PromiseOrValue<string>, guardian: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setInterestsForSurplus(_interestsForSurplus: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setStrategyEmergencyExit(strategy: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSurplusConverter(newSurplusConverter: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stableMaster(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        strategies(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        strategyList(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        surplusConverter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        token(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalDebt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        updateStrategyDebtRatio(strategy: PromiseOrValue<string>, _debtRatio: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFromStrategy(strategy: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
