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 BluebitChefInterface extends utils.Interface {
    functions: {
        'bluebitToken()': FunctionFragment;
        'factorWeight()': FunctionFragment;
        'feeDistributor()': FunctionFragment;
        'locked()': FunctionFragment;
        'manager()': FunctionFragment;
        'owner()': FunctionFragment;
        'paused()': FunctionFragment;
        'pools(uint256)': FunctionFragment;
        'rewardPerBlock()': FunctionFragment;
        'setManager(address)': FunctionFragment;
        'setOwner(address)': FunctionFragment;
        'setPaused(bool)': FunctionFragment;
        'totalAllocPoint()': FunctionFragment;
        'users(uint256,address)': FunctionFragment;
        'veToken()': FunctionFragment;
        'setveToken(address)': FunctionFragment;
        'setBluebitToken(address)': FunctionFragment;
        'setPool(address,uint256)': FunctionFragment;
        'migratePool(uint256,address)': FunctionFragment;
        'setFactorWeight(uint256)': FunctionFragment;
        'setRewardPerBlock(uint256)': FunctionFragment;
        'setFeeDistributor(address)': FunctionFragment;
        'poolLength()': FunctionFragment;
        'poolRewards(uint256,uint256)': FunctionFragment;
        'pendingRewards(uint256,address)': FunctionFragment;
        'deposit(uint256,uint256)': FunctionFragment;
        'withdraw(uint256,uint256)': FunctionFragment;
        'harvest(uint256)': FunctionFragment;
        'harvests()': FunctionFragment;
        'compound(uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'bluebitToken' | 'factorWeight' | 'feeDistributor' | 'locked' | 'manager' | 'owner' | 'paused' | 'pools' | 'rewardPerBlock' | 'setManager' | 'setOwner' | 'setPaused' | 'totalAllocPoint' | 'users' | 'veToken' | 'setveToken' | 'setBluebitToken' | 'setPool' | 'migratePool' | 'setFactorWeight' | 'setRewardPerBlock' | 'setFeeDistributor' | 'poolLength' | 'poolRewards' | 'pendingRewards' | 'deposit' | 'withdraw' | 'harvest' | 'harvests' | 'compound'): FunctionFragment;
    encodeFunctionData(functionFragment: 'bluebitToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'factorWeight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'feeDistributor', values?: undefined): string;
    encodeFunctionData(functionFragment: 'locked', values?: undefined): string;
    encodeFunctionData(functionFragment: 'manager', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pools', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'rewardPerBlock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setManager', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setOwner', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setPaused', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'totalAllocPoint', values?: undefined): string;
    encodeFunctionData(functionFragment: 'users', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'veToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setveToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setBluebitToken', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setPool', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'migratePool', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setFactorWeight', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRewardPerBlock', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setFeeDistributor', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'poolLength', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolRewards', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'pendingRewards', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'harvest', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'harvests', values?: undefined): string;
    encodeFunctionData(functionFragment: 'compound', values: [PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'bluebitToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'factorWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'feeDistributor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'locked', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'manager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pools', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardPerBlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setManager', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setOwner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPaused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalAllocPoint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'users', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'veToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setveToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setBluebitToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'migratePool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFactorWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRewardPerBlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setFeeDistributor', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolLength', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'harvest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'harvests', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'compound', data: BytesLike): Result;
    events: {
        'BluebitTokenChanged(address,address)': EventFragment;
        'Compound(uint256,uint256,uint256)': EventFragment;
        'Deposited(address,uint256,uint256)': EventFragment;
        'FactorWeightChanged(uint256,uint256)': EventFragment;
        'FeeDistributorChanged(address,address)': EventFragment;
        'Harvest(address,uint256,uint256)': EventFragment;
        'Harvests(address,uint256)': EventFragment;
        'ManagerChanged(address,address)': EventFragment;
        'OwnerChanged(address,address)': EventFragment;
        'PauseChanged(bool,bool)': EventFragment;
        'PoolChange(address,uint256,uint256)': EventFragment;
        'RewardPerBlockChanged(uint256,uint256)': EventFragment;
        'Withdrawn(address,uint256,uint256)': EventFragment;
        'veTokenChanged(address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'BluebitTokenChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Compound'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FactorWeightChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FeeDistributorChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Harvest'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Harvests'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ManagerChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnerChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PauseChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PoolChange'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardPerBlockChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdrawn'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'veTokenChanged'): EventFragment;
}
export interface BluebitTokenChangedEventObject {
    previousValue: string;
    newValue: string;
}
export declare type BluebitTokenChangedEvent = TypedEvent<[string, string], BluebitTokenChangedEventObject>;
export declare type BluebitTokenChangedEventFilter = TypedEventFilter<BluebitTokenChangedEvent>;
export interface CompoundEventObject {
    pid: BigNumber;
    totalShares: BigNumber;
    totalSupply: BigNumber;
}
export declare type CompoundEvent = TypedEvent<[BigNumber, BigNumber, BigNumber], CompoundEventObject>;
export declare type CompoundEventFilter = TypedEventFilter<CompoundEvent>;
export interface DepositedEventObject {
    account: string;
    pid: BigNumber;
    amount: BigNumber;
}
export declare type DepositedEvent = TypedEvent<[string, BigNumber, BigNumber], DepositedEventObject>;
export declare type DepositedEventFilter = TypedEventFilter<DepositedEvent>;
export interface FactorWeightChangedEventObject {
    previousValue: BigNumber;
    newValue: BigNumber;
}
export declare type FactorWeightChangedEvent = TypedEvent<[BigNumber, BigNumber], FactorWeightChangedEventObject>;
export declare type FactorWeightChangedEventFilter = TypedEventFilter<FactorWeightChangedEvent>;
export interface FeeDistributorChangedEventObject {
    previousValue: string;
    newValue: string;
}
export declare type FeeDistributorChangedEvent = TypedEvent<[string, string], FeeDistributorChangedEventObject>;
export declare type FeeDistributorChangedEventFilter = TypedEventFilter<FeeDistributorChangedEvent>;
export interface HarvestEventObject {
    account: string;
    pid: BigNumber;
    amount: BigNumber;
}
export declare type HarvestEvent = TypedEvent<[string, BigNumber, BigNumber], HarvestEventObject>;
export declare type HarvestEventFilter = TypedEventFilter<HarvestEvent>;
export interface HarvestsEventObject {
    account: string;
    amount: BigNumber;
}
export declare type HarvestsEvent = TypedEvent<[string, BigNumber], HarvestsEventObject>;
export declare type HarvestsEventFilter = TypedEventFilter<HarvestsEvent>;
export interface ManagerChangedEventObject {
    previousValue: string;
    newValue: string;
}
export declare type ManagerChangedEvent = TypedEvent<[string, string], ManagerChangedEventObject>;
export declare type ManagerChangedEventFilter = TypedEventFilter<ManagerChangedEvent>;
export interface OwnerChangedEventObject {
    previousValue: string;
    newValue: string;
}
export declare type OwnerChangedEvent = TypedEvent<[string, string], OwnerChangedEventObject>;
export declare type OwnerChangedEventFilter = TypedEventFilter<OwnerChangedEvent>;
export interface PauseChangedEventObject {
    previousValue: boolean;
    newValue: boolean;
}
export declare type PauseChangedEvent = TypedEvent<[boolean, boolean], PauseChangedEventObject>;
export declare type PauseChangedEventFilter = TypedEventFilter<PauseChangedEvent>;
export interface PoolChangeEventObject {
    vault: string;
    pid: BigNumber;
    allocPoint: BigNumber;
}
export declare type PoolChangeEvent = TypedEvent<[string, BigNumber, BigNumber], PoolChangeEventObject>;
export declare type PoolChangeEventFilter = TypedEventFilter<PoolChangeEvent>;
export interface RewardPerBlockChangedEventObject {
    previousValue: BigNumber;
    newValue: BigNumber;
}
export declare type RewardPerBlockChangedEvent = TypedEvent<[BigNumber, BigNumber], RewardPerBlockChangedEventObject>;
export declare type RewardPerBlockChangedEventFilter = TypedEventFilter<RewardPerBlockChangedEvent>;
export interface WithdrawnEventObject {
    account: string;
    pid: BigNumber;
    amount: BigNumber;
}
export declare type WithdrawnEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawnEventObject>;
export declare type WithdrawnEventFilter = TypedEventFilter<WithdrawnEvent>;
export interface veTokenChangedEventObject {
    previousValue: string;
    newValue: string;
}
export declare type veTokenChangedEvent = TypedEvent<[string, string], veTokenChangedEventObject>;
export declare type veTokenChangedEventFilter = TypedEventFilter<veTokenChangedEvent>;
export interface BluebitChef extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: BluebitChefInterface;
    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: {
        bluebitToken(overrides?: CallOverrides): Promise<[string]>;
        factorWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
        feeDistributor(overrides?: CallOverrides): Promise<[string]>;
        locked(overrides?: CallOverrides): Promise<[boolean]>;
        manager(overrides?: CallOverrides): Promise<[string]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        pools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            vault: string;
            shares: BigNumber;
            weights: BigNumber;
            allocPoint: BigNumber;
            rewardPerWeight: BigNumber;
            lastRewardBlock: BigNumber;
            interestRatePerBlock: BigNumber;
            lastCompoundBlock: BigNumber;
        }>;
        rewardPerBlock(overrides?: CallOverrides): Promise<[BigNumber]>;
        setManager(_manager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPaused(_paused: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        totalAllocPoint(overrides?: CallOverrides): Promise<[BigNumber]>;
        users(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            shares: BigNumber;
            weights: BigNumber;
            rewardDebt: BigNumber;
            lastDepositedTime: BigNumber;
            lastDepositedAmount: BigNumber;
        }>;
        veToken(overrides?: CallOverrides): Promise<[string]>;
        setveToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setBluebitToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPool(vault: PromiseOrValue<string>, allocPoint: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        migratePool(pid: PromiseOrValue<BigNumberish>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFactorWeight(weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRewardPerBlock(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setFeeDistributor(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        poolLength(overrides?: CallOverrides): Promise<[BigNumber]>;
        poolRewards(pid: PromiseOrValue<BigNumberish>, bluebitTokenTotalSupply: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            rewards: BigNumber;
            fee: BigNumber;
        }>;
        pendingRewards(pid: PromiseOrValue<BigNumberish>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        deposit(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdraw(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        harvest(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        harvests(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        compound(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    bluebitToken(overrides?: CallOverrides): Promise<string>;
    factorWeight(overrides?: CallOverrides): Promise<BigNumber>;
    feeDistributor(overrides?: CallOverrides): Promise<string>;
    locked(overrides?: CallOverrides): Promise<boolean>;
    manager(overrides?: CallOverrides): Promise<string>;
    owner(overrides?: CallOverrides): Promise<string>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    pools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        vault: string;
        shares: BigNumber;
        weights: BigNumber;
        allocPoint: BigNumber;
        rewardPerWeight: BigNumber;
        lastRewardBlock: BigNumber;
        interestRatePerBlock: BigNumber;
        lastCompoundBlock: BigNumber;
    }>;
    rewardPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
    setManager(_manager: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPaused(_paused: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    totalAllocPoint(overrides?: CallOverrides): Promise<BigNumber>;
    users(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        shares: BigNumber;
        weights: BigNumber;
        rewardDebt: BigNumber;
        lastDepositedTime: BigNumber;
        lastDepositedAmount: BigNumber;
    }>;
    veToken(overrides?: CallOverrides): Promise<string>;
    setveToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setBluebitToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPool(vault: PromiseOrValue<string>, allocPoint: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    migratePool(pid: PromiseOrValue<BigNumberish>, vault: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFactorWeight(weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRewardPerBlock(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setFeeDistributor(_address: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    poolLength(overrides?: CallOverrides): Promise<BigNumber>;
    poolRewards(pid: PromiseOrValue<BigNumberish>, bluebitTokenTotalSupply: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        rewards: BigNumber;
        fee: BigNumber;
    }>;
    pendingRewards(pid: PromiseOrValue<BigNumberish>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    deposit(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdraw(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    harvest(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    harvests(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    compound(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        bluebitToken(overrides?: CallOverrides): Promise<string>;
        factorWeight(overrides?: CallOverrides): Promise<BigNumber>;
        feeDistributor(overrides?: CallOverrides): Promise<string>;
        locked(overrides?: CallOverrides): Promise<boolean>;
        manager(overrides?: CallOverrides): Promise<string>;
        owner(overrides?: CallOverrides): Promise<string>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        pools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            string,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            vault: string;
            shares: BigNumber;
            weights: BigNumber;
            allocPoint: BigNumber;
            rewardPerWeight: BigNumber;
            lastRewardBlock: BigNumber;
            interestRatePerBlock: BigNumber;
            lastCompoundBlock: BigNumber;
        }>;
        rewardPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        setManager(_manager: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPaused(_paused: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        totalAllocPoint(overrides?: CallOverrides): Promise<BigNumber>;
        users(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            shares: BigNumber;
            weights: BigNumber;
            rewardDebt: BigNumber;
            lastDepositedTime: BigNumber;
            lastDepositedAmount: BigNumber;
        }>;
        veToken(overrides?: CallOverrides): Promise<string>;
        setveToken(_address: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setBluebitToken(_address: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setPool(vault: PromiseOrValue<string>, allocPoint: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        migratePool(pid: PromiseOrValue<BigNumberish>, vault: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setFactorWeight(weight: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRewardPerBlock(_value: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setFeeDistributor(_address: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        poolLength(overrides?: CallOverrides): Promise<BigNumber>;
        poolRewards(pid: PromiseOrValue<BigNumberish>, bluebitTokenTotalSupply: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            rewards: BigNumber;
            fee: BigNumber;
        }>;
        pendingRewards(pid: PromiseOrValue<BigNumberish>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deposit(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdraw(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        harvest(pid: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        harvests(overrides?: CallOverrides): Promise<void>;
        compound(pid: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'BluebitTokenChanged(address,address)'(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): BluebitTokenChangedEventFilter;
        BluebitTokenChanged(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): BluebitTokenChangedEventFilter;
        'Compound(uint256,uint256,uint256)'(pid?: null, totalShares?: null, totalSupply?: null): CompoundEventFilter;
        Compound(pid?: null, totalShares?: null, totalSupply?: null): CompoundEventFilter;
        'Deposited(address,uint256,uint256)'(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): DepositedEventFilter;
        Deposited(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): DepositedEventFilter;
        'FactorWeightChanged(uint256,uint256)'(previousValue?: PromiseOrValue<BigNumberish> | null, newValue?: PromiseOrValue<BigNumberish> | null): FactorWeightChangedEventFilter;
        FactorWeightChanged(previousValue?: PromiseOrValue<BigNumberish> | null, newValue?: PromiseOrValue<BigNumberish> | null): FactorWeightChangedEventFilter;
        'FeeDistributorChanged(address,address)'(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): FeeDistributorChangedEventFilter;
        FeeDistributorChanged(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): FeeDistributorChangedEventFilter;
        'Harvest(address,uint256,uint256)'(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): HarvestEventFilter;
        Harvest(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): HarvestEventFilter;
        'Harvests(address,uint256)'(account?: PromiseOrValue<string> | null, amount?: null): HarvestsEventFilter;
        Harvests(account?: PromiseOrValue<string> | null, amount?: null): HarvestsEventFilter;
        'ManagerChanged(address,address)'(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): ManagerChangedEventFilter;
        ManagerChanged(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): ManagerChangedEventFilter;
        'OwnerChanged(address,address)'(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): OwnerChangedEventFilter;
        OwnerChanged(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): OwnerChangedEventFilter;
        'PauseChanged(bool,bool)'(previousValue?: PromiseOrValue<boolean> | null, newValue?: PromiseOrValue<boolean> | null): PauseChangedEventFilter;
        PauseChanged(previousValue?: PromiseOrValue<boolean> | null, newValue?: PromiseOrValue<boolean> | null): PauseChangedEventFilter;
        'PoolChange(address,uint256,uint256)'(vault?: PromiseOrValue<string> | null, pid?: null, allocPoint?: null): PoolChangeEventFilter;
        PoolChange(vault?: PromiseOrValue<string> | null, pid?: null, allocPoint?: null): PoolChangeEventFilter;
        'RewardPerBlockChanged(uint256,uint256)'(previousValue?: PromiseOrValue<BigNumberish> | null, newValue?: PromiseOrValue<BigNumberish> | null): RewardPerBlockChangedEventFilter;
        RewardPerBlockChanged(previousValue?: PromiseOrValue<BigNumberish> | null, newValue?: PromiseOrValue<BigNumberish> | null): RewardPerBlockChangedEventFilter;
        'Withdrawn(address,uint256,uint256)'(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): WithdrawnEventFilter;
        Withdrawn(account?: PromiseOrValue<string> | null, pid?: null, amount?: null): WithdrawnEventFilter;
        'veTokenChanged(address,address)'(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): veTokenChangedEventFilter;
        veTokenChanged(previousValue?: PromiseOrValue<string> | null, newValue?: PromiseOrValue<string> | null): veTokenChangedEventFilter;
    };
    estimateGas: {
        bluebitToken(overrides?: CallOverrides): Promise<BigNumber>;
        factorWeight(overrides?: CallOverrides): Promise<BigNumber>;
        feeDistributor(overrides?: CallOverrides): Promise<BigNumber>;
        locked(overrides?: CallOverrides): Promise<BigNumber>;
        manager(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        pools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        rewardPerBlock(overrides?: CallOverrides): Promise<BigNumber>;
        setManager(_manager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPaused(_paused: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        totalAllocPoint(overrides?: CallOverrides): Promise<BigNumber>;
        users(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        veToken(overrides?: CallOverrides): Promise<BigNumber>;
        setveToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setBluebitToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPool(vault: PromiseOrValue<string>, allocPoint: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        migratePool(pid: PromiseOrValue<BigNumberish>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFactorWeight(weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRewardPerBlock(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setFeeDistributor(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        poolLength(overrides?: CallOverrides): Promise<BigNumber>;
        poolRewards(pid: PromiseOrValue<BigNumberish>, bluebitTokenTotalSupply: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        pendingRewards(pid: PromiseOrValue<BigNumberish>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        deposit(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdraw(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        harvest(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        harvests(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        compound(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        bluebitToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        factorWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        feeDistributor(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        locked(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        manager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pools(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardPerBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setManager(_manager: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setOwner(_owner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPaused(_paused: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        totalAllocPoint(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        users(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        veToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setveToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setBluebitToken(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPool(vault: PromiseOrValue<string>, allocPoint: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        migratePool(pid: PromiseOrValue<BigNumberish>, vault: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFactorWeight(weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRewardPerBlock(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setFeeDistributor(_address: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        poolLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolRewards(pid: PromiseOrValue<BigNumberish>, bluebitTokenTotalSupply: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingRewards(pid: PromiseOrValue<BigNumberish>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdraw(pid: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        harvest(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        harvests(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        compound(pid: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
