import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, 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 Stake {
    type DataStruct = {
        value: PromiseOrValue<BigNumberish>;
        lockedFrom: PromiseOrValue<BigNumberish>;
        lockedUntil: PromiseOrValue<BigNumberish>;
        isYield: PromiseOrValue<boolean>;
    };
    type DataStructOutput = [BigNumber, BigNumber, BigNumber, boolean] & {
        value: BigNumber;
        lockedFrom: BigNumber;
        lockedUntil: BigNumber;
        isYield: boolean;
    };
}
export declare namespace CorePool {
    type UnstakeParameterStruct = {
        stakeId: PromiseOrValue<BigNumberish>;
        value: PromiseOrValue<BigNumberish>;
    };
    type UnstakeParameterStructOutput = [BigNumber, BigNumber] & {
        stakeId: BigNumber;
        value: BigNumber;
    };
}
export interface IlluviumIlvPoolV2Interface extends utils.Interface {
    functions: {
        'balanceOf(address)': FunctionFragment;
        'blacklistUsers(address[])': FunctionFragment;
        'claimAllRewards(bool)': FunctionFragment;
        'claimVaultRewards()': FunctionFragment;
        'claimVaultRewardsMultiple(address[])': FunctionFragment;
        'claimYieldRewards(bool)': FunctionFragment;
        'claimYieldRewardsMultiple(address[],bool[])': FunctionFragment;
        'executeMigration(bytes32[],uint256,uint248,uint256,bool,uint256[])': FunctionFragment;
        'getStake(address,uint256)': FunctionFragment;
        'getStakesLength(address)': FunctionFragment;
        'getTotalReserves()': FunctionFragment;
        'getV1StakeId(address,uint256)': FunctionFragment;
        'getV1StakePosition(address,uint256)': FunctionFragment;
        'globalWeight()': FunctionFragment;
        'hasMigratedYield(uint256)': FunctionFragment;
        'initialize(address,address,address,address,uint64,uint32,address,uint256)': FunctionFragment;
        'isBlacklisted(address)': FunctionFragment;
        'isFlashPool()': FunctionFragment;
        'lastYieldDistribution()': FunctionFragment;
        'merkleRoot()': FunctionFragment;
        'migrateLockedStakes(uint256[])': FunctionFragment;
        'mintV1YieldMultiple(uint256[])': FunctionFragment;
        'moveFundsFromWallet(address)': FunctionFragment;
        'pause(bool)': FunctionFragment;
        'paused()': FunctionFragment;
        'pendingRewards(address)': FunctionFragment;
        'poolToken()': FunctionFragment;
        'poolTokenReserve()': FunctionFragment;
        'receiveVaultRewards(uint256)': FunctionFragment;
        'setMerkleRoot(bytes32)': FunctionFragment;
        'setV1GlobalWeight(uint256)': FunctionFragment;
        'setV1PoolTokenReserve(uint256)': FunctionFragment;
        'setVault(address)': FunctionFragment;
        'setWeight(uint32)': FunctionFragment;
        'stake(uint256,uint64)': FunctionFragment;
        'stakeAsPool(address,uint256)': FunctionFragment;
        'sync()': FunctionFragment;
        'unstake(uint256,uint256)': FunctionFragment;
        'unstakeMultiple((uint256,uint256)[],bool)': FunctionFragment;
        'upgradeTo(address)': FunctionFragment;
        'upgradeToAndCall(address,bytes)': FunctionFragment;
        'users(address)': FunctionFragment;
        'v1GlobalWeight()': FunctionFragment;
        'v1PoolTokenReserve()': FunctionFragment;
        'v1StakesWeights(address,uint256)': FunctionFragment;
        'v1YieldMinted(address,uint256)': FunctionFragment;
        'vaultRewardsPerWeight()': FunctionFragment;
        'weight()': FunctionFragment;
        'yieldRewardsPerWeight()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'balanceOf' | 'blacklistUsers' | 'claimAllRewards' | 'claimVaultRewards' | 'claimVaultRewardsMultiple' | 'claimYieldRewards' | 'claimYieldRewardsMultiple' | 'executeMigration' | 'getStake' | 'getStakesLength' | 'getTotalReserves' | 'getV1StakeId' | 'getV1StakePosition' | 'globalWeight' | 'hasMigratedYield' | 'initialize' | 'isBlacklisted' | 'isFlashPool' | 'lastYieldDistribution' | 'merkleRoot' | 'migrateLockedStakes' | 'mintV1YieldMultiple' | 'moveFundsFromWallet' | 'pause' | 'paused' | 'pendingRewards' | 'poolToken' | 'poolTokenReserve' | 'receiveVaultRewards' | 'setMerkleRoot' | 'setV1GlobalWeight' | 'setV1PoolTokenReserve' | 'setVault' | 'setWeight' | 'stake' | 'stakeAsPool' | 'sync' | 'unstake' | 'unstakeMultiple' | 'upgradeTo' | 'upgradeToAndCall' | 'users' | 'v1GlobalWeight' | 'v1PoolTokenReserve' | 'v1StakesWeights' | 'v1YieldMinted' | 'vaultRewardsPerWeight' | 'weight' | 'yieldRewardsPerWeight'): FunctionFragment;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'blacklistUsers', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'claimAllRewards', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'claimVaultRewards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'claimVaultRewardsMultiple', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'claimYieldRewards', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'claimYieldRewardsMultiple', values: [PromiseOrValue<string>[], PromiseOrValue<boolean>[]]): string;
    encodeFunctionData(functionFragment: 'executeMigration', values: [
        PromiseOrValue<BytesLike>[],
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<boolean>,
        PromiseOrValue<BigNumberish>[]
    ]): string;
    encodeFunctionData(functionFragment: 'getStake', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getStakesLength', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getTotalReserves', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getV1StakeId', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getV1StakePosition', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'globalWeight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'hasMigratedYield', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'isBlacklisted', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'isFlashPool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lastYieldDistribution', values?: undefined): string;
    encodeFunctionData(functionFragment: 'merkleRoot', values?: undefined): string;
    encodeFunctionData(functionFragment: 'migrateLockedStakes', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'mintV1YieldMultiple', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'moveFundsFromWallet', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'pause', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'pendingRewards', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'poolToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolTokenReserve', values?: undefined): string;
    encodeFunctionData(functionFragment: 'receiveVaultRewards', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setMerkleRoot', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'setV1GlobalWeight', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setV1PoolTokenReserve', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setVault', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setWeight', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'stake', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'stakeAsPool', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'sync', values?: undefined): string;
    encodeFunctionData(functionFragment: 'unstake', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'unstakeMultiple', values: [CorePool.UnstakeParameterStruct[], PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'upgradeTo', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'upgradeToAndCall', values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'users', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'v1GlobalWeight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'v1PoolTokenReserve', values?: undefined): string;
    encodeFunctionData(functionFragment: 'v1StakesWeights', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'v1YieldMinted', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'vaultRewardsPerWeight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'weight', values?: undefined): string;
    encodeFunctionData(functionFragment: 'yieldRewardsPerWeight', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'blacklistUsers', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimAllRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimVaultRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimVaultRewardsMultiple', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimYieldRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimYieldRewardsMultiple', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'executeMigration', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getStake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getStakesLength', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getTotalReserves', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getV1StakeId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getV1StakePosition', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'globalWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasMigratedYield', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isBlacklisted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isFlashPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastYieldDistribution', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'merkleRoot', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'migrateLockedStakes', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mintV1YieldMultiple', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'moveFundsFromWallet', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolTokenReserve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'receiveVaultRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setMerkleRoot', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setV1GlobalWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setV1PoolTokenReserve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setVault', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stakeAsPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'sync', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unstake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unstakeMultiple', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeToAndCall', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'users', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'v1GlobalWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'v1PoolTokenReserve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'v1StakesWeights', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'v1YieldMinted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'vaultRewardsPerWeight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'weight', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'yieldRewardsPerWeight', data: BytesLike): Result;
    events: {
        'AdminChanged(address,address)': EventFragment;
        'BeaconUpgraded(address)': EventFragment;
        'LogClaimVaultRewards(address,address,uint256)': EventFragment;
        'LogClaimYieldRewards(address,address,bool,uint256)': EventFragment;
        'LogMigrateLockedStakes(address,uint256)': EventFragment;
        'LogMigratePendingRewards(address,uint256,bool)': EventFragment;
        'LogMigrateYieldWeight(address,uint256)': EventFragment;
        'LogMoveFundsFromWallet(address,address,uint248,uint248,uint128,uint128,uint128,uint128)': EventFragment;
        'LogReceiveVaultRewards(address,uint256)': EventFragment;
        'LogSetVault(address,address,address)': EventFragment;
        'LogStake(address,address,uint256,uint256,uint64)': EventFragment;
        'LogSync(address,uint256,uint64)': EventFragment;
        'LogUnstakeLocked(address,uint256,uint256,bool)': EventFragment;
        'LogUnstakeLockedMultiple(address,uint256,bool)': EventFragment;
        'LogUpdateRewards(address,address,uint256,uint256)': EventFragment;
        'LogV1YieldMintedMultiple(address,uint256)': EventFragment;
        'Paused(address)': EventFragment;
        'Unpaused(address)': EventFragment;
        'Upgraded(address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BeaconUpgraded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogClaimVaultRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogClaimYieldRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogMigrateLockedStakes'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogMigratePendingRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogMigrateYieldWeight'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogMoveFundsFromWallet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogReceiveVaultRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogSetVault'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogStake'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogSync'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogUnstakeLocked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogUnstakeLockedMultiple'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogUpdateRewards'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'LogV1YieldMintedMultiple'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Upgraded'): EventFragment;
}
export interface AdminChangedEventObject {
    previousAdmin: string;
    newAdmin: string;
}
export declare type AdminChangedEvent = TypedEvent<[string, string], AdminChangedEventObject>;
export declare type AdminChangedEventFilter = TypedEventFilter<AdminChangedEvent>;
export interface BeaconUpgradedEventObject {
    beacon: string;
}
export declare type BeaconUpgradedEvent = TypedEvent<[string], BeaconUpgradedEventObject>;
export declare type BeaconUpgradedEventFilter = TypedEventFilter<BeaconUpgradedEvent>;
export interface LogClaimVaultRewardsEventObject {
    by: string;
    from: string;
    value: BigNumber;
}
export declare type LogClaimVaultRewardsEvent = TypedEvent<[string, string, BigNumber], LogClaimVaultRewardsEventObject>;
export declare type LogClaimVaultRewardsEventFilter = TypedEventFilter<LogClaimVaultRewardsEvent>;
export interface LogClaimYieldRewardsEventObject {
    by: string;
    from: string;
    sILV: boolean;
    value: BigNumber;
}
export declare type LogClaimYieldRewardsEvent = TypedEvent<[
    string,
    string,
    boolean,
    BigNumber
], LogClaimYieldRewardsEventObject>;
export declare type LogClaimYieldRewardsEventFilter = TypedEventFilter<LogClaimYieldRewardsEvent>;
export interface LogMigrateLockedStakesEventObject {
    from: string;
    totalV1WeightAdded: BigNumber;
}
export declare type LogMigrateLockedStakesEvent = TypedEvent<[string, BigNumber], LogMigrateLockedStakesEventObject>;
export declare type LogMigrateLockedStakesEventFilter = TypedEventFilter<LogMigrateLockedStakesEvent>;
export interface LogMigratePendingRewardsEventObject {
    from: string;
    pendingRewardsMigrated: BigNumber;
    useSILV: boolean;
}
export declare type LogMigratePendingRewardsEvent = TypedEvent<[
    string,
    BigNumber,
    boolean
], LogMigratePendingRewardsEventObject>;
export declare type LogMigratePendingRewardsEventFilter = TypedEventFilter<LogMigratePendingRewardsEvent>;
export interface LogMigrateYieldWeightEventObject {
    from: string;
    yieldWeightMigrated: BigNumber;
}
export declare type LogMigrateYieldWeightEvent = TypedEvent<[string, BigNumber], LogMigrateYieldWeightEventObject>;
export declare type LogMigrateYieldWeightEventFilter = TypedEventFilter<LogMigrateYieldWeightEvent>;
export interface LogMoveFundsFromWalletEventObject {
    from: string;
    to: string;
    previousTotalWeight: BigNumber;
    newTotalWeight: BigNumber;
    previousYield: BigNumber;
    newYield: BigNumber;
    previousRevDis: BigNumber;
    newRevDis: BigNumber;
}
export declare type LogMoveFundsFromWalletEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], LogMoveFundsFromWalletEventObject>;
export declare type LogMoveFundsFromWalletEventFilter = TypedEventFilter<LogMoveFundsFromWalletEvent>;
export interface LogReceiveVaultRewardsEventObject {
    by: string;
    value: BigNumber;
}
export declare type LogReceiveVaultRewardsEvent = TypedEvent<[string, BigNumber], LogReceiveVaultRewardsEventObject>;
export declare type LogReceiveVaultRewardsEventFilter = TypedEventFilter<LogReceiveVaultRewardsEvent>;
export interface LogSetVaultEventObject {
    by: string;
    previousVault: string;
    newVault: string;
}
export declare type LogSetVaultEvent = TypedEvent<[string, string, string], LogSetVaultEventObject>;
export declare type LogSetVaultEventFilter = TypedEventFilter<LogSetVaultEvent>;
export interface LogStakeEventObject {
    by: string;
    from: string;
    stakeId: BigNumber;
    value: BigNumber;
    lockUntil: BigNumber;
}
export declare type LogStakeEvent = TypedEvent<[string, string, BigNumber, BigNumber, BigNumber], LogStakeEventObject>;
export declare type LogStakeEventFilter = TypedEventFilter<LogStakeEvent>;
export interface LogSyncEventObject {
    by: string;
    yieldRewardsPerWeight: BigNumber;
    lastYieldDistribution: BigNumber;
}
export declare type LogSyncEvent = TypedEvent<[string, BigNumber, BigNumber], LogSyncEventObject>;
export declare type LogSyncEventFilter = TypedEventFilter<LogSyncEvent>;
export interface LogUnstakeLockedEventObject {
    to: string;
    stakeId: BigNumber;
    value: BigNumber;
    isYield: boolean;
}
export declare type LogUnstakeLockedEvent = TypedEvent<[string, BigNumber, BigNumber, boolean], LogUnstakeLockedEventObject>;
export declare type LogUnstakeLockedEventFilter = TypedEventFilter<LogUnstakeLockedEvent>;
export interface LogUnstakeLockedMultipleEventObject {
    to: string;
    totalValue: BigNumber;
    unstakingYield: boolean;
}
export declare type LogUnstakeLockedMultipleEvent = TypedEvent<[
    string,
    BigNumber,
    boolean
], LogUnstakeLockedMultipleEventObject>;
export declare type LogUnstakeLockedMultipleEventFilter = TypedEventFilter<LogUnstakeLockedMultipleEvent>;
export interface LogUpdateRewardsEventObject {
    by: string;
    from: string;
    yieldValue: BigNumber;
    revDisValue: BigNumber;
}
export declare type LogUpdateRewardsEvent = TypedEvent<[string, string, BigNumber, BigNumber], LogUpdateRewardsEventObject>;
export declare type LogUpdateRewardsEventFilter = TypedEventFilter<LogUpdateRewardsEvent>;
export interface LogV1YieldMintedMultipleEventObject {
    from: string;
    value: BigNumber;
}
export declare type LogV1YieldMintedMultipleEvent = TypedEvent<[string, BigNumber], LogV1YieldMintedMultipleEventObject>;
export declare type LogV1YieldMintedMultipleEventFilter = TypedEventFilter<LogV1YieldMintedMultipleEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface UpgradedEventObject {
    implementation: string;
}
export declare type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>;
export declare type UpgradedEventFilter = TypedEventFilter<UpgradedEvent>;
export interface IlluviumIlvPoolV2 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IlluviumIlvPoolV2Interface;
    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: {
        balanceOf(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber] & {
            balance: BigNumber;
        }>;
        blacklistUsers(_users: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimAllRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimVaultRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimVaultRewardsMultiple(_pools: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimYieldRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        claimYieldRewardsMultiple(_pools: PromiseOrValue<string>[], _useSILV: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        executeMigration(_proof: PromiseOrValue<BytesLike>[], _index: PromiseOrValue<BigNumberish>, _yieldWeight: PromiseOrValue<BigNumberish>, _pendingV1Rewards: PromiseOrValue<BigNumberish>, _useSILV: PromiseOrValue<boolean>, _stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getStake(_user: PromiseOrValue<string>, _stakeId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[Stake.DataStructOutput]>;
        getStakesLength(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getTotalReserves(overrides?: CallOverrides): Promise<[BigNumber] & {
            totalReserves: BigNumber;
        }>;
        getV1StakeId(_user: PromiseOrValue<string>, _position: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getV1StakePosition(_user: PromiseOrValue<string>, _desiredId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            position: BigNumber;
        }>;
        globalWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
        hasMigratedYield(_index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean]>;
        initialize(ilv_: PromiseOrValue<string>, silv_: PromiseOrValue<string>, _poolToken: PromiseOrValue<string>, factory_: PromiseOrValue<string>, _initTime: PromiseOrValue<BigNumberish>, _weight: PromiseOrValue<BigNumberish>, _corePoolV1: PromiseOrValue<string>, v1StakeMaxPeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        isBlacklisted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isFlashPool(overrides?: CallOverrides): Promise<[boolean]>;
        lastYieldDistribution(overrides?: CallOverrides): Promise<[BigNumber]>;
        merkleRoot(overrides?: CallOverrides): Promise<[string]>;
        migrateLockedStakes(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        mintV1YieldMultiple(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        moveFundsFromWallet(_to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pause(_shouldPause: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        pendingRewards(_staker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            pendingYield: BigNumber;
            pendingRevDis: BigNumber;
        }>;
        poolToken(overrides?: CallOverrides): Promise<[string]>;
        poolTokenReserve(overrides?: CallOverrides): Promise<[BigNumber]>;
        receiveVaultRewards(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setMerkleRoot(_merkleRoot: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setV1GlobalWeight(_v1GlobalWeight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setV1PoolTokenReserve(_v1PoolTokenReserve: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setVault(vault_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setWeight(_weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stake(_value: PromiseOrValue<BigNumberish>, _lockDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        stakeAsPool(_staker: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        sync(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unstake(_stakeId: PromiseOrValue<BigNumberish>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unstakeMultiple(_stakes: CorePool.UnstakeParameterStruct[], _unstakingYield: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            number,
            BigNumber,
            BigNumber
        ] & {
            pendingYield: BigNumber;
            pendingRevDis: BigNumber;
            totalWeight: BigNumber;
            v1IdsLength: number;
            yieldRewardsPerWeightPaid: BigNumber;
            vaultRewardsPerWeightPaid: BigNumber;
        }>;
        v1GlobalWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
        v1PoolTokenReserve(overrides?: CallOverrides): Promise<[BigNumber]>;
        v1StakesWeights(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        v1YieldMinted(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean]>;
        vaultRewardsPerWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
        weight(overrides?: CallOverrides): Promise<[number]>;
        yieldRewardsPerWeight(overrides?: CallOverrides): Promise<[BigNumber]>;
    };
    balanceOf(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    blacklistUsers(_users: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimAllRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimVaultRewards(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimVaultRewardsMultiple(_pools: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimYieldRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    claimYieldRewardsMultiple(_pools: PromiseOrValue<string>[], _useSILV: PromiseOrValue<boolean>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    executeMigration(_proof: PromiseOrValue<BytesLike>[], _index: PromiseOrValue<BigNumberish>, _yieldWeight: PromiseOrValue<BigNumberish>, _pendingV1Rewards: PromiseOrValue<BigNumberish>, _useSILV: PromiseOrValue<boolean>, _stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getStake(_user: PromiseOrValue<string>, _stakeId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<Stake.DataStructOutput>;
    getStakesLength(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getTotalReserves(overrides?: CallOverrides): Promise<BigNumber>;
    getV1StakeId(_user: PromiseOrValue<string>, _position: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getV1StakePosition(_user: PromiseOrValue<string>, _desiredId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    globalWeight(overrides?: CallOverrides): Promise<BigNumber>;
    hasMigratedYield(_index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    initialize(ilv_: PromiseOrValue<string>, silv_: PromiseOrValue<string>, _poolToken: PromiseOrValue<string>, factory_: PromiseOrValue<string>, _initTime: PromiseOrValue<BigNumberish>, _weight: PromiseOrValue<BigNumberish>, _corePoolV1: PromiseOrValue<string>, v1StakeMaxPeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    isBlacklisted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isFlashPool(overrides?: CallOverrides): Promise<boolean>;
    lastYieldDistribution(overrides?: CallOverrides): Promise<BigNumber>;
    merkleRoot(overrides?: CallOverrides): Promise<string>;
    migrateLockedStakes(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    mintV1YieldMultiple(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    moveFundsFromWallet(_to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pause(_shouldPause: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    pendingRewards(_staker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber
    ] & {
        pendingYield: BigNumber;
        pendingRevDis: BigNumber;
    }>;
    poolToken(overrides?: CallOverrides): Promise<string>;
    poolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
    receiveVaultRewards(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setMerkleRoot(_merkleRoot: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setV1GlobalWeight(_v1GlobalWeight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setV1PoolTokenReserve(_v1PoolTokenReserve: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setVault(vault_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setWeight(_weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stake(_value: PromiseOrValue<BigNumberish>, _lockDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    stakeAsPool(_staker: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    sync(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unstake(_stakeId: PromiseOrValue<BigNumberish>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unstakeMultiple(_stakes: CorePool.UnstakeParameterStruct[], _unstakingYield: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        number,
        BigNumber,
        BigNumber
    ] & {
        pendingYield: BigNumber;
        pendingRevDis: BigNumber;
        totalWeight: BigNumber;
        v1IdsLength: number;
        yieldRewardsPerWeightPaid: BigNumber;
        vaultRewardsPerWeightPaid: BigNumber;
    }>;
    v1GlobalWeight(overrides?: CallOverrides): Promise<BigNumber>;
    v1PoolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
    v1StakesWeights(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    v1YieldMinted(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    vaultRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
    weight(overrides?: CallOverrides): Promise<number>;
    yieldRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
    callStatic: {
        balanceOf(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        blacklistUsers(_users: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        claimAllRewards(_useSILV: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        claimVaultRewards(overrides?: CallOverrides): Promise<void>;
        claimVaultRewardsMultiple(_pools: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        claimYieldRewards(_useSILV: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        claimYieldRewardsMultiple(_pools: PromiseOrValue<string>[], _useSILV: PromiseOrValue<boolean>[], overrides?: CallOverrides): Promise<void>;
        executeMigration(_proof: PromiseOrValue<BytesLike>[], _index: PromiseOrValue<BigNumberish>, _yieldWeight: PromiseOrValue<BigNumberish>, _pendingV1Rewards: PromiseOrValue<BigNumberish>, _useSILV: PromiseOrValue<boolean>, _stakeIds: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        getStake(_user: PromiseOrValue<string>, _stakeId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<Stake.DataStructOutput>;
        getStakesLength(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getTotalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        getV1StakeId(_user: PromiseOrValue<string>, _position: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getV1StakePosition(_user: PromiseOrValue<string>, _desiredId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        globalWeight(overrides?: CallOverrides): Promise<BigNumber>;
        hasMigratedYield(_index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        initialize(ilv_: PromiseOrValue<string>, silv_: PromiseOrValue<string>, _poolToken: PromiseOrValue<string>, factory_: PromiseOrValue<string>, _initTime: PromiseOrValue<BigNumberish>, _weight: PromiseOrValue<BigNumberish>, _corePoolV1: PromiseOrValue<string>, v1StakeMaxPeriod_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        isBlacklisted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isFlashPool(overrides?: CallOverrides): Promise<boolean>;
        lastYieldDistribution(overrides?: CallOverrides): Promise<BigNumber>;
        merkleRoot(overrides?: CallOverrides): Promise<string>;
        migrateLockedStakes(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        mintV1YieldMultiple(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        moveFundsFromWallet(_to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        pause(_shouldPause: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        pendingRewards(_staker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            pendingYield: BigNumber;
            pendingRevDis: BigNumber;
        }>;
        poolToken(overrides?: CallOverrides): Promise<string>;
        poolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
        receiveVaultRewards(_value: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setMerkleRoot(_merkleRoot: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        setV1GlobalWeight(_v1GlobalWeight: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setV1PoolTokenReserve(_v1PoolTokenReserve: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setVault(vault_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setWeight(_weight: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        stake(_value: PromiseOrValue<BigNumberish>, _lockDuration: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        stakeAsPool(_staker: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        sync(overrides?: CallOverrides): Promise<void>;
        unstake(_stakeId: PromiseOrValue<BigNumberish>, _value: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        unstakeMultiple(_stakes: CorePool.UnstakeParameterStruct[], _unstakingYield: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            number,
            BigNumber,
            BigNumber
        ] & {
            pendingYield: BigNumber;
            pendingRevDis: BigNumber;
            totalWeight: BigNumber;
            v1IdsLength: number;
            yieldRewardsPerWeightPaid: BigNumber;
            vaultRewardsPerWeightPaid: BigNumber;
        }>;
        v1GlobalWeight(overrides?: CallOverrides): Promise<BigNumber>;
        v1PoolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
        v1StakesWeights(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        v1YieldMinted(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        vaultRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
        weight(overrides?: CallOverrides): Promise<number>;
        yieldRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
    };
    filters: {
        'AdminChanged(address,address)'(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        AdminChanged(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        'BeaconUpgraded(address)'(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        BeaconUpgraded(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        'LogClaimVaultRewards(address,address,uint256)'(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, value?: null): LogClaimVaultRewardsEventFilter;
        LogClaimVaultRewards(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, value?: null): LogClaimVaultRewardsEventFilter;
        'LogClaimYieldRewards(address,address,bool,uint256)'(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, sILV?: null, value?: null): LogClaimYieldRewardsEventFilter;
        LogClaimYieldRewards(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, sILV?: null, value?: null): LogClaimYieldRewardsEventFilter;
        'LogMigrateLockedStakes(address,uint256)'(from?: PromiseOrValue<string> | null, totalV1WeightAdded?: null): LogMigrateLockedStakesEventFilter;
        LogMigrateLockedStakes(from?: PromiseOrValue<string> | null, totalV1WeightAdded?: null): LogMigrateLockedStakesEventFilter;
        'LogMigratePendingRewards(address,uint256,bool)'(from?: PromiseOrValue<string> | null, pendingRewardsMigrated?: null, useSILV?: null): LogMigratePendingRewardsEventFilter;
        LogMigratePendingRewards(from?: PromiseOrValue<string> | null, pendingRewardsMigrated?: null, useSILV?: null): LogMigratePendingRewardsEventFilter;
        'LogMigrateYieldWeight(address,uint256)'(from?: PromiseOrValue<string> | null, yieldWeightMigrated?: null): LogMigrateYieldWeightEventFilter;
        LogMigrateYieldWeight(from?: PromiseOrValue<string> | null, yieldWeightMigrated?: null): LogMigrateYieldWeightEventFilter;
        'LogMoveFundsFromWallet(address,address,uint248,uint248,uint128,uint128,uint128,uint128)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, previousTotalWeight?: null, newTotalWeight?: null, previousYield?: null, newYield?: null, previousRevDis?: null, newRevDis?: null): LogMoveFundsFromWalletEventFilter;
        LogMoveFundsFromWallet(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, previousTotalWeight?: null, newTotalWeight?: null, previousYield?: null, newYield?: null, previousRevDis?: null, newRevDis?: null): LogMoveFundsFromWalletEventFilter;
        'LogReceiveVaultRewards(address,uint256)'(by?: PromiseOrValue<string> | null, value?: null): LogReceiveVaultRewardsEventFilter;
        LogReceiveVaultRewards(by?: PromiseOrValue<string> | null, value?: null): LogReceiveVaultRewardsEventFilter;
        'LogSetVault(address,address,address)'(by?: PromiseOrValue<string> | null, previousVault?: null, newVault?: null): LogSetVaultEventFilter;
        LogSetVault(by?: PromiseOrValue<string> | null, previousVault?: null, newVault?: null): LogSetVaultEventFilter;
        'LogStake(address,address,uint256,uint256,uint64)'(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, stakeId?: null, value?: null, lockUntil?: null): LogStakeEventFilter;
        LogStake(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, stakeId?: null, value?: null, lockUntil?: null): LogStakeEventFilter;
        'LogSync(address,uint256,uint64)'(by?: PromiseOrValue<string> | null, yieldRewardsPerWeight?: null, lastYieldDistribution?: null): LogSyncEventFilter;
        LogSync(by?: PromiseOrValue<string> | null, yieldRewardsPerWeight?: null, lastYieldDistribution?: null): LogSyncEventFilter;
        'LogUnstakeLocked(address,uint256,uint256,bool)'(to?: PromiseOrValue<string> | null, stakeId?: null, value?: null, isYield?: null): LogUnstakeLockedEventFilter;
        LogUnstakeLocked(to?: PromiseOrValue<string> | null, stakeId?: null, value?: null, isYield?: null): LogUnstakeLockedEventFilter;
        'LogUnstakeLockedMultiple(address,uint256,bool)'(to?: PromiseOrValue<string> | null, totalValue?: null, unstakingYield?: null): LogUnstakeLockedMultipleEventFilter;
        LogUnstakeLockedMultiple(to?: PromiseOrValue<string> | null, totalValue?: null, unstakingYield?: null): LogUnstakeLockedMultipleEventFilter;
        'LogUpdateRewards(address,address,uint256,uint256)'(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, yieldValue?: null, revDisValue?: null): LogUpdateRewardsEventFilter;
        LogUpdateRewards(by?: PromiseOrValue<string> | null, from?: PromiseOrValue<string> | null, yieldValue?: null, revDisValue?: null): LogUpdateRewardsEventFilter;
        'LogV1YieldMintedMultiple(address,uint256)'(from?: PromiseOrValue<string> | null, value?: null): LogV1YieldMintedMultipleEventFilter;
        LogV1YieldMintedMultiple(from?: PromiseOrValue<string> | null, value?: null): LogV1YieldMintedMultipleEventFilter;
        'Paused(address)'(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        'Unpaused(address)'(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        'Upgraded(address)'(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
        Upgraded(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
    };
    estimateGas: {
        balanceOf(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        blacklistUsers(_users: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimAllRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimVaultRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimVaultRewardsMultiple(_pools: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimYieldRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        claimYieldRewardsMultiple(_pools: PromiseOrValue<string>[], _useSILV: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        executeMigration(_proof: PromiseOrValue<BytesLike>[], _index: PromiseOrValue<BigNumberish>, _yieldWeight: PromiseOrValue<BigNumberish>, _pendingV1Rewards: PromiseOrValue<BigNumberish>, _useSILV: PromiseOrValue<boolean>, _stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getStake(_user: PromiseOrValue<string>, _stakeId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getStakesLength(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getTotalReserves(overrides?: CallOverrides): Promise<BigNumber>;
        getV1StakeId(_user: PromiseOrValue<string>, _position: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getV1StakePosition(_user: PromiseOrValue<string>, _desiredId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        globalWeight(overrides?: CallOverrides): Promise<BigNumber>;
        hasMigratedYield(_index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(ilv_: PromiseOrValue<string>, silv_: PromiseOrValue<string>, _poolToken: PromiseOrValue<string>, factory_: PromiseOrValue<string>, _initTime: PromiseOrValue<BigNumberish>, _weight: PromiseOrValue<BigNumberish>, _corePoolV1: PromiseOrValue<string>, v1StakeMaxPeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        isBlacklisted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isFlashPool(overrides?: CallOverrides): Promise<BigNumber>;
        lastYieldDistribution(overrides?: CallOverrides): Promise<BigNumber>;
        merkleRoot(overrides?: CallOverrides): Promise<BigNumber>;
        migrateLockedStakes(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        mintV1YieldMultiple(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        moveFundsFromWallet(_to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pause(_shouldPause: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        pendingRewards(_staker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        poolToken(overrides?: CallOverrides): Promise<BigNumber>;
        poolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
        receiveVaultRewards(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setMerkleRoot(_merkleRoot: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setV1GlobalWeight(_v1GlobalWeight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setV1PoolTokenReserve(_v1PoolTokenReserve: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setVault(vault_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setWeight(_weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stake(_value: PromiseOrValue<BigNumberish>, _lockDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        stakeAsPool(_staker: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        sync(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unstake(_stakeId: PromiseOrValue<BigNumberish>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unstakeMultiple(_stakes: CorePool.UnstakeParameterStruct[], _unstakingYield: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        v1GlobalWeight(overrides?: CallOverrides): Promise<BigNumber>;
        v1PoolTokenReserve(overrides?: CallOverrides): Promise<BigNumber>;
        v1StakesWeights(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        v1YieldMinted(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        vaultRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
        weight(overrides?: CallOverrides): Promise<BigNumber>;
        yieldRewardsPerWeight(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        balanceOf(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        blacklistUsers(_users: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimAllRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimVaultRewards(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimVaultRewardsMultiple(_pools: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimYieldRewards(_useSILV: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        claimYieldRewardsMultiple(_pools: PromiseOrValue<string>[], _useSILV: PromiseOrValue<boolean>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        executeMigration(_proof: PromiseOrValue<BytesLike>[], _index: PromiseOrValue<BigNumberish>, _yieldWeight: PromiseOrValue<BigNumberish>, _pendingV1Rewards: PromiseOrValue<BigNumberish>, _useSILV: PromiseOrValue<boolean>, _stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getStake(_user: PromiseOrValue<string>, _stakeId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getStakesLength(_user: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getTotalReserves(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getV1StakeId(_user: PromiseOrValue<string>, _position: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getV1StakePosition(_user: PromiseOrValue<string>, _desiredId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        globalWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasMigratedYield(_index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(ilv_: PromiseOrValue<string>, silv_: PromiseOrValue<string>, _poolToken: PromiseOrValue<string>, factory_: PromiseOrValue<string>, _initTime: PromiseOrValue<BigNumberish>, _weight: PromiseOrValue<BigNumberish>, _corePoolV1: PromiseOrValue<string>, v1StakeMaxPeriod_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        isBlacklisted(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isFlashPool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastYieldDistribution(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        merkleRoot(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        migrateLockedStakes(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        mintV1YieldMultiple(_stakeIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        moveFundsFromWallet(_to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pause(_shouldPause: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pendingRewards(_staker: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolTokenReserve(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        receiveVaultRewards(_value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setMerkleRoot(_merkleRoot: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setV1GlobalWeight(_v1GlobalWeight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setV1PoolTokenReserve(_v1PoolTokenReserve: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setVault(vault_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setWeight(_weight: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stake(_value: PromiseOrValue<BigNumberish>, _lockDuration: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        stakeAsPool(_staker: PromiseOrValue<string>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        sync(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unstake(_stakeId: PromiseOrValue<BigNumberish>, _value: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unstakeMultiple(_stakes: CorePool.UnstakeParameterStruct[], _unstakingYield: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        users(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        v1GlobalWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        v1PoolTokenReserve(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        v1StakesWeights(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        v1YieldMinted(arg0: PromiseOrValue<string>, arg1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        vaultRewardsPerWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        weight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        yieldRewardsPerWeight(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
