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 FixedPointMath {
    type Uq192x64Struct = {
        x: PromiseOrValue<BigNumberish>;
    };
    type Uq192x64StructOutput = [BigNumber] & {
        x: BigNumber;
    };
}
export declare namespace Pool {
    type ViewDataStruct = {
        token: PromiseOrValue<string>;
        totalDeposited: PromiseOrValue<BigNumberish>;
        rewardWeight: PromiseOrValue<BigNumberish>;
        accumulatedRewardWeight: FixedPointMath.Uq192x64Struct;
        lastUpdatedBlock: PromiseOrValue<BigNumberish>;
        escrowPercentage: PromiseOrValue<BigNumberish>;
        exitFeePercentage: PromiseOrValue<BigNumberish>;
        rewardRate: PromiseOrValue<BigNumberish>;
        userDeposited: PromiseOrValue<BigNumberish>;
        userUnclaimed: PromiseOrValue<BigNumberish>;
        userTokenBalance: PromiseOrValue<BigNumberish>;
        userTokenApproval: PromiseOrValue<BigNumberish>;
    };
    type ViewDataStructOutput = [
        string,
        BigNumber,
        BigNumber,
        FixedPointMath.Uq192x64StructOutput,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        token: string;
        totalDeposited: BigNumber;
        rewardWeight: BigNumber;
        accumulatedRewardWeight: FixedPointMath.Uq192x64StructOutput;
        lastUpdatedBlock: BigNumber;
        escrowPercentage: BigNumber;
        exitFeePercentage: BigNumber;
        rewardRate: BigNumber;
        userDeposited: BigNumber;
        userUnclaimed: BigNumber;
        userTokenBalance: BigNumber;
        userTokenApproval: BigNumber;
    };
}
export interface PieDaoStakingInterface extends utils.Interface {
    functions: {
        'acceptGovernance()': FunctionFragment;
        'claim(uint256)': FunctionFragment;
        'claimReferralRewards()': FunctionFragment;
        'createPool(address)': FunctionFragment;
        'deposit(uint256,uint256)': FunctionFragment;
        'depositReferred(uint256,uint256,address)': FunctionFragment;
        'emergencyExit(uint256)': FunctionFragment;
        'exit(uint256)': FunctionFragment;
        'exitFeeReceiver()': FunctionFragment;
        'getPoolEscrowPercentage(uint256)': FunctionFragment;
        'getPoolExitFeePercentage(uint256)': FunctionFragment;
        'getPoolRewardRate(uint256)': FunctionFragment;
        'getPoolRewardWeight(uint256)': FunctionFragment;
        'getPoolToken(uint256)': FunctionFragment;
        'getPoolTotalDeposited(uint256)': FunctionFragment;
        'getPools(address)': FunctionFragment;
        'getStakeTotalDeposited(address,uint256)': FunctionFragment;
        'getStakeTotalUnclaimed(address,uint256)': FunctionFragment;
        'governance()': FunctionFragment;
        'initialize(address,address,address,address,address)': FunctionFragment;
        'pendingGovernance()': FunctionFragment;
        'poolCount()': FunctionFragment;
        'referralEscrowPercentageOf(address)': FunctionFragment;
        'referralPercentageOf(address)': FunctionFragment;
        'referrerBalanceOf(address)': FunctionFragment;
        'referrerOf(address)': FunctionFragment;
        'reward()': FunctionFragment;
        'rewardRate()': FunctionFragment;
        'rewardSource()': FunctionFragment;
        'saveEth(address,uint256)': FunctionFragment;
        'saveToken(address,address,uint256)': FunctionFragment;
        'setEscrowPercentages(uint256[])': FunctionFragment;
        'setExitFeePercentages(uint256[])': FunctionFragment;
        'setExitFeeReceiver(address)': FunctionFragment;
        'setPendingGovernance(address)': FunctionFragment;
        'setReferrerValues(address,uint256,uint256)': FunctionFragment;
        'setRewardRate(uint256)': FunctionFragment;
        'setRewardWeights(uint256[])': FunctionFragment;
        'tokenPoolIds(address)': FunctionFragment;
        'totalRewardWeight()': FunctionFragment;
        'withdraw(uint256,uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'acceptGovernance' | 'claim' | 'claimReferralRewards' | 'createPool' | 'deposit' | 'depositReferred' | 'emergencyExit' | 'exit' | 'exitFeeReceiver' | 'getPoolEscrowPercentage' | 'getPoolExitFeePercentage' | 'getPoolRewardRate' | 'getPoolRewardWeight' | 'getPoolToken' | 'getPoolTotalDeposited' | 'getPools' | 'getStakeTotalDeposited' | 'getStakeTotalUnclaimed' | 'governance' | 'initialize' | 'pendingGovernance' | 'poolCount' | 'referralEscrowPercentageOf' | 'referralPercentageOf' | 'referrerBalanceOf' | 'referrerOf' | 'reward' | 'rewardRate' | 'rewardSource' | 'saveEth' | 'saveToken' | 'setEscrowPercentages' | 'setExitFeePercentages' | 'setExitFeeReceiver' | 'setPendingGovernance' | 'setReferrerValues' | 'setRewardRate' | 'setRewardWeights' | 'tokenPoolIds' | 'totalRewardWeight' | 'withdraw'): FunctionFragment;
    encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'claim', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'claimReferralRewards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'createPool', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'depositReferred', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'emergencyExit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'exit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'exitFeeReceiver', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getPoolEscrowPercentage', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolExitFeePercentage', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolRewardRate', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolRewardWeight', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolToken', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPoolTotalDeposited', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getPools', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getStakeTotalDeposited', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getStakeTotalUnclaimed', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'governance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'referralEscrowPercentageOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'referralPercentageOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'referrerBalanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'referrerOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'reward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardRate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardSource', values?: undefined): string;
    encodeFunctionData(functionFragment: 'saveEth', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'saveToken', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setEscrowPercentages', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'setExitFeePercentages', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'setExitFeeReceiver', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setPendingGovernance', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setReferrerValues', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRewardRate', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRewardWeights', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'tokenPoolIds', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'totalRewardWeight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimReferralRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'createPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositReferred', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'emergencyExit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'exitFeeReceiver', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolEscrowPercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolExitFeePercentage', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolRewardRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolRewardWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPoolTotalDeposited', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getPools', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getStakeTotalDeposited', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getStakeTotalUnclaimed', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'referralEscrowPercentageOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'referralPercentageOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'referrerBalanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'referrerOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'reward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardSource', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'saveEth', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'saveToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setEscrowPercentages', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setExitFeePercentages', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setExitFeeReceiver', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setReferrerValues', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRewardRate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRewardWeights', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenPoolIds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalRewardWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    events: {
        'ExitFeeReceiverUpdated(address)': EventFragment;
        'GovernanceUpdated(address)': EventFragment;
        'PendingGovernanceUpdated(address)': EventFragment;
        'PoolCreated(uint256,address)': EventFragment;
        'PoolEscrowPercentageUpdated(uint256,uint256)': EventFragment;
        'PoolExitFeePercentageUpdated(uint256,uint256)': EventFragment;
        'PoolRewardWeightUpdated(uint256,uint256)': EventFragment;
        'ReferrerClaimed(address,uint256)': EventFragment;
        'ReferrerPaid(address,address,uint256)': EventFragment;
        'ReferrerSet(address,address)': EventFragment;
        'RewardRateUpdated(uint256)': EventFragment;
        'TokensClaimed(address,uint256,uint256)': EventFragment;
        'TokensDeposited(address,uint256,uint256)': EventFragment;
        'TokensWithdrawn(address,uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'ExitFeeReceiverUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'GovernanceUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PendingGovernanceUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolCreated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolEscrowPercentageUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolExitFeePercentageUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolRewardWeightUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReferrerClaimed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReferrerPaid'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ReferrerSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardRateUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokensClaimed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokensDeposited'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokensWithdrawn'): EventFragment;
}
export interface ExitFeeReceiverUpdatedEventObject {
    exitFeeReceiver: string;
}
export declare type ExitFeeReceiverUpdatedEvent = TypedEvent<[string], ExitFeeReceiverUpdatedEventObject>;
export declare type ExitFeeReceiverUpdatedEventFilter = TypedEventFilter<ExitFeeReceiverUpdatedEvent>;
export interface GovernanceUpdatedEventObject {
    governance: string;
}
export declare type GovernanceUpdatedEvent = TypedEvent<[string], GovernanceUpdatedEventObject>;
export declare type GovernanceUpdatedEventFilter = TypedEventFilter<GovernanceUpdatedEvent>;
export interface PendingGovernanceUpdatedEventObject {
    pendingGovernance: string;
}
export declare type PendingGovernanceUpdatedEvent = TypedEvent<[string], PendingGovernanceUpdatedEventObject>;
export declare type PendingGovernanceUpdatedEventFilter = TypedEventFilter<PendingGovernanceUpdatedEvent>;
export interface PoolCreatedEventObject {
    poolId: BigNumber;
    token: string;
}
export declare type PoolCreatedEvent = TypedEvent<[BigNumber, string], PoolCreatedEventObject>;
export declare type PoolCreatedEventFilter = TypedEventFilter<PoolCreatedEvent>;
export interface PoolEscrowPercentageUpdatedEventObject {
    poolId: BigNumber;
    escrowPercentage: BigNumber;
}
export declare type PoolEscrowPercentageUpdatedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], PoolEscrowPercentageUpdatedEventObject>;
export declare type PoolEscrowPercentageUpdatedEventFilter = TypedEventFilter<PoolEscrowPercentageUpdatedEvent>;
export interface PoolExitFeePercentageUpdatedEventObject {
    poolId: BigNumber;
    exitFeePercentage: BigNumber;
}
export declare type PoolExitFeePercentageUpdatedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], PoolExitFeePercentageUpdatedEventObject>;
export declare type PoolExitFeePercentageUpdatedEventFilter = TypedEventFilter<PoolExitFeePercentageUpdatedEvent>;
export interface PoolRewardWeightUpdatedEventObject {
    poolId: BigNumber;
    rewardWeight: BigNumber;
}
export declare type PoolRewardWeightUpdatedEvent = TypedEvent<[BigNumber, BigNumber], PoolRewardWeightUpdatedEventObject>;
export declare type PoolRewardWeightUpdatedEventFilter = TypedEventFilter<PoolRewardWeightUpdatedEvent>;
export interface ReferrerClaimedEventObject {
    referrer: string;
    amount: BigNumber;
}
export declare type ReferrerClaimedEvent = TypedEvent<[string, BigNumber], ReferrerClaimedEventObject>;
export declare type ReferrerClaimedEventFilter = TypedEventFilter<ReferrerClaimedEvent>;
export interface ReferrerPaidEventObject {
    user: string;
    referrer: string;
    amount: BigNumber;
}
export declare type ReferrerPaidEvent = TypedEvent<[string, string, BigNumber], ReferrerPaidEventObject>;
export declare type ReferrerPaidEventFilter = TypedEventFilter<ReferrerPaidEvent>;
export interface ReferrerSetEventObject {
    user: string;
    referrer: string;
}
export declare type ReferrerSetEvent = TypedEvent<[string, string], ReferrerSetEventObject>;
export declare type ReferrerSetEventFilter = TypedEventFilter<ReferrerSetEvent>;
export interface RewardRateUpdatedEventObject {
    rewardRate: BigNumber;
}
export declare type RewardRateUpdatedEvent = TypedEvent<[BigNumber], RewardRateUpdatedEventObject>;
export declare type RewardRateUpdatedEventFilter = TypedEventFilter<RewardRateUpdatedEvent>;
export interface TokensClaimedEventObject {
    user: string;
    poolId: BigNumber;
    amount: BigNumber;
}
export declare type TokensClaimedEvent = TypedEvent<[string, BigNumber, BigNumber], TokensClaimedEventObject>;
export declare type TokensClaimedEventFilter = TypedEventFilter<TokensClaimedEvent>;
export interface TokensDepositedEventObject {
    user: string;
    poolId: BigNumber;
    amount: BigNumber;
}
export declare type TokensDepositedEvent = TypedEvent<[string, BigNumber, BigNumber], TokensDepositedEventObject>;
export declare type TokensDepositedEventFilter = TypedEventFilter<TokensDepositedEvent>;
export interface TokensWithdrawnEventObject {
    user: string;
    poolId: BigNumber;
    amount: BigNumber;
}
export declare type TokensWithdrawnEvent = TypedEvent<[string, BigNumber, BigNumber], TokensWithdrawnEventObject>;
export declare type TokensWithdrawnEventFilter = TypedEventFilter<TokensWithdrawnEvent>;
export interface PieDaoStaking extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PieDaoStakingInterface;
    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: {
        acceptGovernance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claim(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimReferralRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createPool(_token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        deposit(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositReferred(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, _referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        emergencyExit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        exitFeeReceiver(overrides?: CallOverrides): Promise<[string]>;
        getPoolEscrowPercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPoolExitFeePercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPoolRewardRate(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPoolRewardWeight(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPoolToken(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        getPoolTotalDeposited(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getPools(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[Pool.ViewDataStructOutput[]]>;
        getStakeTotalDeposited(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getStakeTotalUnclaimed(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        governance(overrides?: CallOverrides): Promise<[string]>;
        initialize(_reward: PromiseOrValue<string>, _rewardSource: PromiseOrValue<string>, _exitFeeReceiver: PromiseOrValue<string>, _rewardEscrow: PromiseOrValue<string>, _governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pendingGovernance(overrides?: CallOverrides): Promise<[string]>;
        poolCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        referralEscrowPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        referralPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        referrerBalanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        referrerOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[string]>;
        reward(overrides?: CallOverrides): Promise<[string]>;
        rewardRate(overrides?: CallOverrides): Promise<[BigNumber]>;
        rewardSource(overrides?: CallOverrides): Promise<[string]>;
        saveEth(_to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        saveToken(_token: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setEscrowPercentages(_escrowPercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setExitFeePercentages(_exitFeePercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setExitFeeReceiver(_exitFeeReceiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPendingGovernance(_pendingGovernance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setReferrerValues(_referrer: PromiseOrValue<string>, _referralPercentage: PromiseOrValue<BigNumberish>, _referralEscrowPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRewardRate(_rewardRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRewardWeights(_rewardWeights: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        tokenPoolIds(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        totalRewardWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
        withdraw(_poolId: PromiseOrValue<BigNumberish>, _withdrawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    acceptGovernance(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claim(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimReferralRewards(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createPool(_token: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    deposit(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositReferred(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, _referrer: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    emergencyExit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    exitFeeReceiver(overrides?: CallOverrides): Promise<string>;
    getPoolEscrowPercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getPoolExitFeePercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getPoolRewardRate(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getPoolRewardWeight(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getPoolToken(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    getPoolTotalDeposited(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getPools(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<Pool.ViewDataStructOutput[]>;
    getStakeTotalDeposited(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getStakeTotalUnclaimed(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    governance(overrides?: CallOverrides): Promise<string>;
    initialize(_reward: PromiseOrValue<string>, _rewardSource: PromiseOrValue<string>, _exitFeeReceiver: PromiseOrValue<string>, _rewardEscrow: PromiseOrValue<string>, _governance: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pendingGovernance(overrides?: CallOverrides): Promise<string>;
    poolCount(overrides?: CallOverrides): Promise<BigNumber>;
    referralEscrowPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    referralPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    referrerBalanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    referrerOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
    reward(overrides?: CallOverrides): Promise<string>;
    rewardRate(overrides?: CallOverrides): Promise<BigNumber>;
    rewardSource(overrides?: CallOverrides): Promise<string>;
    saveEth(_to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    saveToken(_token: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setEscrowPercentages(_escrowPercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setExitFeePercentages(_exitFeePercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setExitFeeReceiver(_exitFeeReceiver: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPendingGovernance(_pendingGovernance: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setReferrerValues(_referrer: PromiseOrValue<string>, _referralPercentage: PromiseOrValue<BigNumberish>, _referralEscrowPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRewardRate(_rewardRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRewardWeights(_rewardWeights: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    tokenPoolIds(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    totalRewardWeight(overrides?: CallOverrides): Promise<BigNumber>;
    withdraw(_poolId: PromiseOrValue<BigNumberish>, _withdrawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        acceptGovernance(overrides?: CallOverrides): Promise<void>;
        claim(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        claimReferralRewards(overrides?: CallOverrides): Promise<void>;
        createPool(_token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deposit(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        depositReferred(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, _referrer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        emergencyExit(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        exit(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        exitFeeReceiver(overrides?: CallOverrides): Promise<string>;
        getPoolEscrowPercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolExitFeePercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolRewardRate(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolRewardWeight(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolToken(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        getPoolTotalDeposited(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPools(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<Pool.ViewDataStructOutput[]>;
        getStakeTotalDeposited(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getStakeTotalUnclaimed(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        governance(overrides?: CallOverrides): Promise<string>;
        initialize(_reward: PromiseOrValue<string>, _rewardSource: PromiseOrValue<string>, _exitFeeReceiver: PromiseOrValue<string>, _rewardEscrow: PromiseOrValue<string>, _governance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        pendingGovernance(overrides?: CallOverrides): Promise<string>;
        poolCount(overrides?: CallOverrides): Promise<BigNumber>;
        referralEscrowPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referralPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referrerBalanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referrerOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<string>;
        reward(overrides?: CallOverrides): Promise<string>;
        rewardRate(overrides?: CallOverrides): Promise<BigNumber>;
        rewardSource(overrides?: CallOverrides): Promise<string>;
        saveEth(_to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        saveToken(_token: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setEscrowPercentages(_escrowPercentages: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        setExitFeePercentages(_exitFeePercentages: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        setExitFeeReceiver(_exitFeeReceiver: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPendingGovernance(_pendingGovernance: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setReferrerValues(_referrer: PromiseOrValue<string>, _referralPercentage: PromiseOrValue<BigNumberish>, _referralEscrowPercentage: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRewardRate(_rewardRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRewardWeights(_rewardWeights: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        tokenPoolIds(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalRewardWeight(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(_poolId: PromiseOrValue<BigNumberish>, _withdrawAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'ExitFeeReceiverUpdated(address)'(exitFeeReceiver?: PromiseOrValue<string> | null): ExitFeeReceiverUpdatedEventFilter;
        ExitFeeReceiverUpdated(exitFeeReceiver?: PromiseOrValue<string> | null): ExitFeeReceiverUpdatedEventFilter;
        'GovernanceUpdated(address)'(governance?: null): GovernanceUpdatedEventFilter;
        GovernanceUpdated(governance?: null): GovernanceUpdatedEventFilter;
        'PendingGovernanceUpdated(address)'(pendingGovernance?: null): PendingGovernanceUpdatedEventFilter;
        PendingGovernanceUpdated(pendingGovernance?: null): PendingGovernanceUpdatedEventFilter;
        'PoolCreated(uint256,address)'(poolId?: PromiseOrValue<BigNumberish> | null, token?: PromiseOrValue<string> | null): PoolCreatedEventFilter;
        PoolCreated(poolId?: PromiseOrValue<BigNumberish> | null, token?: PromiseOrValue<string> | null): PoolCreatedEventFilter;
        'PoolEscrowPercentageUpdated(uint256,uint256)'(poolId?: PromiseOrValue<BigNumberish> | null, escrowPercentage?: null): PoolEscrowPercentageUpdatedEventFilter;
        PoolEscrowPercentageUpdated(poolId?: PromiseOrValue<BigNumberish> | null, escrowPercentage?: null): PoolEscrowPercentageUpdatedEventFilter;
        'PoolExitFeePercentageUpdated(uint256,uint256)'(poolId?: PromiseOrValue<BigNumberish> | null, exitFeePercentage?: null): PoolExitFeePercentageUpdatedEventFilter;
        PoolExitFeePercentageUpdated(poolId?: PromiseOrValue<BigNumberish> | null, exitFeePercentage?: null): PoolExitFeePercentageUpdatedEventFilter;
        'PoolRewardWeightUpdated(uint256,uint256)'(poolId?: PromiseOrValue<BigNumberish> | null, rewardWeight?: null): PoolRewardWeightUpdatedEventFilter;
        PoolRewardWeightUpdated(poolId?: PromiseOrValue<BigNumberish> | null, rewardWeight?: null): PoolRewardWeightUpdatedEventFilter;
        'ReferrerClaimed(address,uint256)'(referrer?: PromiseOrValue<string> | null, amount?: null): ReferrerClaimedEventFilter;
        ReferrerClaimed(referrer?: PromiseOrValue<string> | null, amount?: null): ReferrerClaimedEventFilter;
        'ReferrerPaid(address,address,uint256)'(user?: PromiseOrValue<string> | null, referrer?: PromiseOrValue<string> | null, amount?: null): ReferrerPaidEventFilter;
        ReferrerPaid(user?: PromiseOrValue<string> | null, referrer?: PromiseOrValue<string> | null, amount?: null): ReferrerPaidEventFilter;
        'ReferrerSet(address,address)'(user?: PromiseOrValue<string> | null, referrer?: PromiseOrValue<string> | null): ReferrerSetEventFilter;
        ReferrerSet(user?: PromiseOrValue<string> | null, referrer?: PromiseOrValue<string> | null): ReferrerSetEventFilter;
        'RewardRateUpdated(uint256)'(rewardRate?: null): RewardRateUpdatedEventFilter;
        RewardRateUpdated(rewardRate?: null): RewardRateUpdatedEventFilter;
        'TokensClaimed(address,uint256,uint256)'(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensClaimedEventFilter;
        TokensClaimed(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensClaimedEventFilter;
        'TokensDeposited(address,uint256,uint256)'(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensDepositedEventFilter;
        TokensDeposited(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensDepositedEventFilter;
        'TokensWithdrawn(address,uint256,uint256)'(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensWithdrawnEventFilter;
        TokensWithdrawn(user?: PromiseOrValue<string> | null, poolId?: PromiseOrValue<BigNumberish> | null, amount?: null): TokensWithdrawnEventFilter;
    };
    estimateGas: {
        acceptGovernance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claim(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimReferralRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createPool(_token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        deposit(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositReferred(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, _referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        emergencyExit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        exitFeeReceiver(overrides?: CallOverrides): Promise<BigNumber>;
        getPoolEscrowPercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolExitFeePercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolRewardRate(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolRewardWeight(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolToken(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPoolTotalDeposited(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getPools(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getStakeTotalDeposited(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getStakeTotalUnclaimed(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        governance(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_reward: PromiseOrValue<string>, _rewardSource: PromiseOrValue<string>, _exitFeeReceiver: PromiseOrValue<string>, _rewardEscrow: PromiseOrValue<string>, _governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pendingGovernance(overrides?: CallOverrides): Promise<BigNumber>;
        poolCount(overrides?: CallOverrides): Promise<BigNumber>;
        referralEscrowPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referralPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referrerBalanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        referrerOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        reward(overrides?: CallOverrides): Promise<BigNumber>;
        rewardRate(overrides?: CallOverrides): Promise<BigNumber>;
        rewardSource(overrides?: CallOverrides): Promise<BigNumber>;
        saveEth(_to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        saveToken(_token: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setEscrowPercentages(_escrowPercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setExitFeePercentages(_exitFeePercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setExitFeeReceiver(_exitFeeReceiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPendingGovernance(_pendingGovernance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setReferrerValues(_referrer: PromiseOrValue<string>, _referralPercentage: PromiseOrValue<BigNumberish>, _referralEscrowPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRewardRate(_rewardRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRewardWeights(_rewardWeights: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        tokenPoolIds(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        totalRewardWeight(overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(_poolId: PromiseOrValue<BigNumberish>, _withdrawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        acceptGovernance(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claim(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimReferralRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createPool(_token: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        deposit(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositReferred(_poolId: PromiseOrValue<BigNumberish>, _depositAmount: PromiseOrValue<BigNumberish>, _referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        emergencyExit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exit(_poolId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        exitFeeReceiver(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolEscrowPercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolExitFeePercentage(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolRewardRate(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolRewardWeight(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolToken(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPoolTotalDeposited(_poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getPools(_account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getStakeTotalDeposited(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getStakeTotalUnclaimed(_account: PromiseOrValue<string>, _poolId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        governance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_reward: PromiseOrValue<string>, _rewardSource: PromiseOrValue<string>, _exitFeeReceiver: PromiseOrValue<string>, _rewardEscrow: PromiseOrValue<string>, _governance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pendingGovernance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        referralEscrowPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        referralPercentageOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        referrerBalanceOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        referrerOf(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        reward(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardRate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardSource(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        saveEth(_to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        saveToken(_token: PromiseOrValue<string>, _to: PromiseOrValue<string>, _amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setEscrowPercentages(_escrowPercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setExitFeePercentages(_exitFeePercentages: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setExitFeeReceiver(_exitFeeReceiver: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPendingGovernance(_pendingGovernance: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setReferrerValues(_referrer: PromiseOrValue<string>, _referralPercentage: PromiseOrValue<BigNumberish>, _referralEscrowPercentage: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRewardRate(_rewardRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRewardWeights(_rewardWeights: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        tokenPoolIds(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalRewardWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(_poolId: PromiseOrValue<BigNumberish>, _withdrawAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
