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 type RewardsStruct = {
    lastUpdateTime: PromiseOrValue<BigNumberish>;
    rewardPerToken: PromiseOrValue<BigNumberish>;
};
export declare type RewardsStructOutput = [number, BigNumber] & {
    lastUpdateTime: number;
    rewardPerToken: BigNumber;
};
export declare type ProgramDataStruct = {
    id: PromiseOrValue<BigNumberish>;
    pool: PromiseOrValue<string>;
    poolToken: PromiseOrValue<string>;
    rewardsToken: PromiseOrValue<string>;
    isEnabled: PromiseOrValue<boolean>;
    startTime: PromiseOrValue<BigNumberish>;
    endTime: PromiseOrValue<BigNumberish>;
    rewardRate: PromiseOrValue<BigNumberish>;
    remainingRewards: PromiseOrValue<BigNumberish>;
};
export declare type ProgramDataStructOutput = [
    BigNumber,
    string,
    string,
    string,
    boolean,
    number,
    number,
    BigNumber,
    BigNumber
] & {
    id: BigNumber;
    pool: string;
    poolToken: string;
    rewardsToken: string;
    isEnabled: boolean;
    startTime: number;
    endTime: number;
    rewardRate: BigNumber;
    remainingRewards: BigNumber;
};
export declare type ProviderRewardsStruct = {
    rewardPerTokenPaid: PromiseOrValue<BigNumberish>;
    pendingRewards: PromiseOrValue<BigNumberish>;
    reserved0: PromiseOrValue<BigNumberish>;
    stakedAmount: PromiseOrValue<BigNumberish>;
};
export declare type ProviderRewardsStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber] & {
    rewardPerTokenPaid: BigNumber;
    pendingRewards: BigNumber;
    reserved0: BigNumber;
    stakedAmount: BigNumber;
};
export declare type StakeAmountsStruct = {
    stakedRewardAmount: PromiseOrValue<BigNumberish>;
    poolTokenAmount: PromiseOrValue<BigNumberish>;
};
export declare type StakeAmountsStructOutput = [BigNumber, BigNumber] & {
    stakedRewardAmount: BigNumber;
    poolTokenAmount: BigNumber;
};
export interface StandardRewardsInterface extends utils.Interface {
    functions: {
        'DEFAULT_ADMIN_ROLE()': FunctionFragment;
        'claimRewards(uint256[])': FunctionFragment;
        'createProgram(address,address,uint256,uint32,uint32)': FunctionFragment;
        'depositAndJoin(uint256,uint256)': FunctionFragment;
        'depositAndJoinPermitted(uint256,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment;
        'enableProgram(uint256,bool)': FunctionFragment;
        'getRoleAdmin(bytes32)': FunctionFragment;
        'getRoleMember(bytes32,uint256)': FunctionFragment;
        'getRoleMemberCount(bytes32)': FunctionFragment;
        'grantRole(bytes32,address)': FunctionFragment;
        'hasRole(bytes32,address)': FunctionFragment;
        'initialize()': FunctionFragment;
        'isProgramActive(uint256)': FunctionFragment;
        'isProgramEnabled(uint256)': FunctionFragment;
        'join(uint256,uint256)': FunctionFragment;
        'joinPermitted(uint256,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment;
        'latestProgramId(address)': FunctionFragment;
        'leave(uint256,uint256)': FunctionFragment;
        'pendingRewards(address,uint256[])': FunctionFragment;
        'postUpgrade(bytes)': FunctionFragment;
        'programIds()': FunctionFragment;
        'programRewards(uint256)': FunctionFragment;
        'programStake(uint256)': FunctionFragment;
        'programs(uint256[])': FunctionFragment;
        'providerProgramIds(address)': FunctionFragment;
        'providerRewards(address,uint256)': FunctionFragment;
        'providerStake(address,uint256)': FunctionFragment;
        'renounceRole(bytes32,address)': FunctionFragment;
        'revokeRole(bytes32,address)': FunctionFragment;
        'roleAdmin()': FunctionFragment;
        'stakeRewards(uint256[])': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'terminateProgram(uint256)': FunctionFragment;
        'transferProviderVBNT(address[],uint256[])': FunctionFragment;
        'version()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'DEFAULT_ADMIN_ROLE' | 'claimRewards' | 'createProgram' | 'depositAndJoin' | 'depositAndJoinPermitted' | 'enableProgram' | 'getRoleAdmin' | 'getRoleMember' | 'getRoleMemberCount' | 'grantRole' | 'hasRole' | 'initialize' | 'isProgramActive' | 'isProgramEnabled' | 'join' | 'joinPermitted' | 'latestProgramId' | 'leave' | 'pendingRewards' | 'postUpgrade' | 'programIds' | 'programRewards' | 'programStake' | 'programs' | 'providerProgramIds' | 'providerRewards' | 'providerStake' | 'renounceRole' | 'revokeRole' | 'roleAdmin' | 'stakeRewards' | 'supportsInterface' | 'terminateProgram' | 'transferProviderVBNT' | 'version'): FunctionFragment;
    encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'claimRewards', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'createProgram', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'depositAndJoin', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'depositAndJoinPermitted', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'enableProgram', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'getRoleMember', values: [PromiseOrValue<BytesLike>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getRoleMemberCount', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'grantRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'initialize', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isProgramActive', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'isProgramEnabled', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'join', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'joinPermitted', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'latestProgramId', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'leave', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'pendingRewards', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'postUpgrade', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'programIds', values?: undefined): string;
    encodeFunctionData(functionFragment: 'programRewards', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'programStake', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'programs', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'providerProgramIds', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'providerRewards', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'providerStake', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'renounceRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'roleAdmin', values?: undefined): string;
    encodeFunctionData(functionFragment: 'stakeRewards', values: [PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'terminateProgram', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferProviderVBNT', values: [PromiseOrValue<string>[], PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'version', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'claimRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'createProgram', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositAndJoin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'depositAndJoinPermitted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'enableProgram', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleMember', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleMemberCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isProgramActive', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isProgramEnabled', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'join', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'joinPermitted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'latestProgramId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'leave', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pendingRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'postUpgrade', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'programIds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'programRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'programStake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'programs', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'providerProgramIds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'providerRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'providerStake', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'roleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'stakeRewards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'terminateProgram', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferProviderVBNT', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result;
    events: {
        'ProgramCreated(address,uint256,address,uint256,uint32,uint32)': EventFragment;
        'ProgramEnabled(address,uint256,bool,uint256)': EventFragment;
        'ProgramTerminated(address,uint256,uint32,uint256)': EventFragment;
        'ProviderJoined(address,uint256,address,uint256,uint256)': EventFragment;
        'ProviderLeft(address,uint256,address,uint256,uint256)': EventFragment;
        'RewardsClaimed(address,uint256,address,uint256)': EventFragment;
        'RewardsStaked(address,uint256,address,uint256)': EventFragment;
        'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment;
        'RoleGranted(bytes32,address,address)': EventFragment;
        'RoleRevoked(bytes32,address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'ProgramCreated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ProgramEnabled'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ProgramTerminated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ProviderJoined'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ProviderLeft'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardsClaimed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RewardsStaked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment;
}
export interface ProgramCreatedEventObject {
    pool: string;
    programId: BigNumber;
    rewardsToken: string;
    totalRewards: BigNumber;
    startTime: number;
    endTime: number;
}
export declare type ProgramCreatedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber,
    number,
    number
], ProgramCreatedEventObject>;
export declare type ProgramCreatedEventFilter = TypedEventFilter<ProgramCreatedEvent>;
export interface ProgramEnabledEventObject {
    pool: string;
    programId: BigNumber;
    status: boolean;
    remainingRewards: BigNumber;
}
export declare type ProgramEnabledEvent = TypedEvent<[string, BigNumber, boolean, BigNumber], ProgramEnabledEventObject>;
export declare type ProgramEnabledEventFilter = TypedEventFilter<ProgramEnabledEvent>;
export interface ProgramTerminatedEventObject {
    pool: string;
    programId: BigNumber;
    endTime: number;
    remainingRewards: BigNumber;
}
export declare type ProgramTerminatedEvent = TypedEvent<[string, BigNumber, number, BigNumber], ProgramTerminatedEventObject>;
export declare type ProgramTerminatedEventFilter = TypedEventFilter<ProgramTerminatedEvent>;
export interface ProviderJoinedEventObject {
    pool: string;
    programId: BigNumber;
    provider: string;
    poolTokenAmount: BigNumber;
    prevStake: BigNumber;
}
export declare type ProviderJoinedEvent = TypedEvent<[
    string,
    BigNumber,
    string,
    BigNumber,
    BigNumber
], ProviderJoinedEventObject>;
export declare type ProviderJoinedEventFilter = TypedEventFilter<ProviderJoinedEvent>;
export interface ProviderLeftEventObject {
    pool: string;
    programId: BigNumber;
    provider: string;
    poolTokenAmount: BigNumber;
    remainingStake: BigNumber;
}
export declare type ProviderLeftEvent = TypedEvent<[string, BigNumber, string, BigNumber, BigNumber], ProviderLeftEventObject>;
export declare type ProviderLeftEventFilter = TypedEventFilter<ProviderLeftEvent>;
export interface RewardsClaimedEventObject {
    pool: string;
    programId: BigNumber;
    provider: string;
    amount: BigNumber;
}
export declare type RewardsClaimedEvent = TypedEvent<[string, BigNumber, string, BigNumber], RewardsClaimedEventObject>;
export declare type RewardsClaimedEventFilter = TypedEventFilter<RewardsClaimedEvent>;
export interface RewardsStakedEventObject {
    pool: string;
    programId: BigNumber;
    provider: string;
    amount: BigNumber;
}
export declare type RewardsStakedEvent = TypedEvent<[string, BigNumber, string, BigNumber], RewardsStakedEventObject>;
export declare type RewardsStakedEventFilter = TypedEventFilter<RewardsStakedEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export declare type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>;
export declare type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>;
export declare type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>;
export declare type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface StandardRewards extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: StandardRewardsInterface;
    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: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        claimRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createProgram(pool: PromiseOrValue<string>, rewardsToken: PromiseOrValue<string>, totalRewards: PromiseOrValue<BigNumberish>, startTime: PromiseOrValue<BigNumberish>, endTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositAndJoin(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        depositAndJoinPermitted(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        enableProgram(id: PromiseOrValue<BigNumberish>, status: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        getRoleMember(role: PromiseOrValue<BytesLike>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        getRoleMemberCount(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[BigNumber]>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        isProgramActive(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean]>;
        isProgramEnabled(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean]>;
        join(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        joinPermitted(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        latestProgramId(pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        leave(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pendingRewards(provider: PromiseOrValue<string>, ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<[BigNumber]>;
        postUpgrade(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        programIds(overrides?: CallOverrides): Promise<[BigNumber[]]>;
        programRewards(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[RewardsStructOutput]>;
        programStake(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        programs(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<[ProgramDataStructOutput[]]>;
        providerProgramIds(provider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        providerRewards(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[ProviderRewardsStructOutput]>;
        providerStake(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        roleAdmin(overrides?: CallOverrides): Promise<[string]>;
        stakeRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        terminateProgram(id: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferProviderVBNT(providers: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        version(overrides?: CallOverrides): Promise<[number]>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    claimRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createProgram(pool: PromiseOrValue<string>, rewardsToken: PromiseOrValue<string>, totalRewards: PromiseOrValue<BigNumberish>, startTime: PromiseOrValue<BigNumberish>, endTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositAndJoin(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    depositAndJoinPermitted(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    enableProgram(id: PromiseOrValue<BigNumberish>, status: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    getRoleMember(role: PromiseOrValue<BytesLike>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    getRoleMemberCount(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    initialize(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    isProgramActive(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    isProgramEnabled(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    join(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    joinPermitted(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    latestProgramId(pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    leave(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pendingRewards(provider: PromiseOrValue<string>, ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
    postUpgrade(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    programIds(overrides?: CallOverrides): Promise<BigNumber[]>;
    programRewards(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<RewardsStructOutput>;
    programStake(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    programs(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<ProgramDataStructOutput[]>;
    providerProgramIds(provider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    providerRewards(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ProviderRewardsStructOutput>;
    providerStake(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    roleAdmin(overrides?: CallOverrides): Promise<string>;
    stakeRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    terminateProgram(id: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferProviderVBNT(providers: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    version(overrides?: CallOverrides): Promise<number>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        claimRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
        createProgram(pool: PromiseOrValue<string>, rewardsToken: PromiseOrValue<string>, totalRewards: PromiseOrValue<BigNumberish>, startTime: PromiseOrValue<BigNumberish>, endTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        depositAndJoin(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        depositAndJoinPermitted(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        enableProgram(id: PromiseOrValue<BigNumberish>, status: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        getRoleMember(role: PromiseOrValue<BytesLike>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        getRoleMemberCount(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        initialize(overrides?: CallOverrides): Promise<void>;
        isProgramActive(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        isProgramEnabled(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        join(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        joinPermitted(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        latestProgramId(pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        leave(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        pendingRewards(provider: PromiseOrValue<string>, ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
        postUpgrade(data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        programIds(overrides?: CallOverrides): Promise<BigNumber[]>;
        programRewards(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<RewardsStructOutput>;
        programStake(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        programs(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<ProgramDataStructOutput[]>;
        providerProgramIds(provider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        providerRewards(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<ProviderRewardsStructOutput>;
        providerStake(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        roleAdmin(overrides?: CallOverrides): Promise<string>;
        stakeRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<StakeAmountsStructOutput>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        terminateProgram(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        transferProviderVBNT(providers: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        version(overrides?: CallOverrides): Promise<number>;
    };
    filters: {
        'ProgramCreated(address,uint256,address,uint256,uint32,uint32)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, rewardsToken?: PromiseOrValue<string> | null, totalRewards?: null, startTime?: null, endTime?: null): ProgramCreatedEventFilter;
        ProgramCreated(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, rewardsToken?: PromiseOrValue<string> | null, totalRewards?: null, startTime?: null, endTime?: null): ProgramCreatedEventFilter;
        'ProgramEnabled(address,uint256,bool,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, status?: null, remainingRewards?: null): ProgramEnabledEventFilter;
        ProgramEnabled(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, status?: null, remainingRewards?: null): ProgramEnabledEventFilter;
        'ProgramTerminated(address,uint256,uint32,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, endTime?: null, remainingRewards?: null): ProgramTerminatedEventFilter;
        ProgramTerminated(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, endTime?: null, remainingRewards?: null): ProgramTerminatedEventFilter;
        'ProviderJoined(address,uint256,address,uint256,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, poolTokenAmount?: null, prevStake?: null): ProviderJoinedEventFilter;
        ProviderJoined(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, poolTokenAmount?: null, prevStake?: null): ProviderJoinedEventFilter;
        'ProviderLeft(address,uint256,address,uint256,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, poolTokenAmount?: null, remainingStake?: null): ProviderLeftEventFilter;
        ProviderLeft(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, poolTokenAmount?: null, remainingStake?: null): ProviderLeftEventFilter;
        'RewardsClaimed(address,uint256,address,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, amount?: null): RewardsClaimedEventFilter;
        RewardsClaimed(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, amount?: null): RewardsClaimedEventFilter;
        'RewardsStaked(address,uint256,address,uint256)'(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, amount?: null): RewardsStakedEventFilter;
        RewardsStaked(pool?: PromiseOrValue<string> | null, programId?: PromiseOrValue<BigNumberish> | null, provider?: PromiseOrValue<string> | null, amount?: null): RewardsStakedEventFilter;
        'RoleAdminChanged(bytes32,bytes32,bytes32)'(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        'RoleGranted(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        RoleGranted(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        'RoleRevoked(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        RoleRevoked(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
    };
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        claimRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createProgram(pool: PromiseOrValue<string>, rewardsToken: PromiseOrValue<string>, totalRewards: PromiseOrValue<BigNumberish>, startTime: PromiseOrValue<BigNumberish>, endTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositAndJoin(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        depositAndJoinPermitted(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        enableProgram(id: PromiseOrValue<BigNumberish>, status: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleMember(role: PromiseOrValue<BytesLike>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleMemberCount(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        isProgramActive(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        isProgramEnabled(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        join(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        joinPermitted(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        latestProgramId(pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        leave(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pendingRewards(provider: PromiseOrValue<string>, ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
        postUpgrade(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        programIds(overrides?: CallOverrides): Promise<BigNumber>;
        programRewards(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        programStake(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        programs(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<BigNumber>;
        providerProgramIds(provider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        providerRewards(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        providerStake(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        roleAdmin(overrides?: CallOverrides): Promise<BigNumber>;
        stakeRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        terminateProgram(id: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferProviderVBNT(providers: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        claimRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createProgram(pool: PromiseOrValue<string>, rewardsToken: PromiseOrValue<string>, totalRewards: PromiseOrValue<BigNumberish>, startTime: PromiseOrValue<BigNumberish>, endTime: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositAndJoin(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        depositAndJoinPermitted(id: PromiseOrValue<BigNumberish>, tokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        enableProgram(id: PromiseOrValue<BigNumberish>, status: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleMember(role: PromiseOrValue<BytesLike>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleMemberCount(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        isProgramActive(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isProgramEnabled(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        join(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        joinPermitted(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        latestProgramId(pool: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        leave(id: PromiseOrValue<BigNumberish>, poolTokenAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pendingRewards(provider: PromiseOrValue<string>, ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        postUpgrade(data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        programIds(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        programRewards(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        programStake(id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        programs(ids: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        providerProgramIds(provider: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        providerRewards(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        providerStake(provider: PromiseOrValue<string>, id: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        roleAdmin(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        stakeRewards(ids: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        terminateProgram(id: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferProviderVBNT(providers: PromiseOrValue<string>[], amounts: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
