import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export interface PoolTogetherV3MultipleWinnersPrizeStrategyInterface extends utils.Interface {
    functions: {
        'addExternalErc20Award(address)': FunctionFragment;
        'addExternalErc20Awards(address[])': FunctionFragment;
        'addExternalErc721Award(address,uint256[])': FunctionFragment;
        'beforeTokenMint(address,uint256,address,address)': FunctionFragment;
        'beforeTokenTransfer(address,address,uint256,address)': FunctionFragment;
        'calculateNextPrizePeriodStartTime(uint256)': FunctionFragment;
        'canCompleteAward()': FunctionFragment;
        'canStartAward()': FunctionFragment;
        'cancelAward()': FunctionFragment;
        'completeAward()': FunctionFragment;
        'currentPrize()': FunctionFragment;
        'estimateRemainingBlocksToPrize(uint256)': FunctionFragment;
        'getExternalErc20Awards()': FunctionFragment;
        'getExternalErc721AwardTokenIds(address)': FunctionFragment;
        'getExternalErc721Awards()': FunctionFragment;
        'getLastRngLockBlock()': FunctionFragment;
        'getLastRngRequestId()': FunctionFragment;
        'initialize(uint256,uint256,address,address,address,address,address[])': FunctionFragment;
        'initializeMultipleWinners(uint256,uint256,address,address,address,address,uint256)': FunctionFragment;
        'isPrizePeriodOver()': FunctionFragment;
        'isRngCompleted()': FunctionFragment;
        'isRngRequested()': FunctionFragment;
        'isRngTimedOut()': FunctionFragment;
        'numberOfWinners()': FunctionFragment;
        'owner()': FunctionFragment;
        'periodicPrizeStrategyListener()': FunctionFragment;
        'prizePeriodEndAt()': FunctionFragment;
        'prizePeriodRemainingSeconds()': FunctionFragment;
        'prizePeriodSeconds()': FunctionFragment;
        'prizePeriodStartedAt()': FunctionFragment;
        'prizePool()': FunctionFragment;
        'removeExternalErc20Award(address,address)': FunctionFragment;
        'removeExternalErc721Award(address,address)': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'rng()': FunctionFragment;
        'rngRequestTimeout()': FunctionFragment;
        'setNumberOfWinners(uint256)': FunctionFragment;
        'setPeriodicPrizeStrategyListener(address)': FunctionFragment;
        'setRngRequestTimeout(uint32)': FunctionFragment;
        'setRngService(address)': FunctionFragment;
        'setSplitExternalErc20Awards(bool)': FunctionFragment;
        'setTokenListener(address)': FunctionFragment;
        'splitExternalErc20Awards()': FunctionFragment;
        'sponsorship()': FunctionFragment;
        'startAward()': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'ticket()': FunctionFragment;
        'tokenListener()': FunctionFragment;
        'transferExternalERC20(address,address,uint256)': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'addExternalErc20Award' | 'addExternalErc20Awards' | 'addExternalErc721Award' | 'beforeTokenMint' | 'beforeTokenTransfer' | 'calculateNextPrizePeriodStartTime' | 'canCompleteAward' | 'canStartAward' | 'cancelAward' | 'completeAward' | 'currentPrize' | 'estimateRemainingBlocksToPrize' | 'getExternalErc20Awards' | 'getExternalErc721AwardTokenIds' | 'getExternalErc721Awards' | 'getLastRngLockBlock' | 'getLastRngRequestId' | 'initialize' | 'initializeMultipleWinners' | 'isPrizePeriodOver' | 'isRngCompleted' | 'isRngRequested' | 'isRngTimedOut' | 'numberOfWinners' | 'owner' | 'periodicPrizeStrategyListener' | 'prizePeriodEndAt' | 'prizePeriodRemainingSeconds' | 'prizePeriodSeconds' | 'prizePeriodStartedAt' | 'prizePool' | 'removeExternalErc20Award' | 'removeExternalErc721Award' | 'renounceOwnership' | 'rng' | 'rngRequestTimeout' | 'setNumberOfWinners' | 'setPeriodicPrizeStrategyListener' | 'setRngRequestTimeout' | 'setRngService' | 'setSplitExternalErc20Awards' | 'setTokenListener' | 'splitExternalErc20Awards' | 'sponsorship' | 'startAward' | 'supportsInterface' | 'ticket' | 'tokenListener' | 'transferExternalERC20' | 'transferOwnership'): FunctionFragment;
    encodeFunctionData(functionFragment: 'addExternalErc20Award', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addExternalErc20Awards', values: [PromiseOrValue<string>[]]): string;
    encodeFunctionData(functionFragment: 'addExternalErc721Award', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>[]]): string;
    encodeFunctionData(functionFragment: 'beforeTokenMint', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'beforeTokenTransfer', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'calculateNextPrizePeriodStartTime', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'canCompleteAward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'canStartAward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'cancelAward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'completeAward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'currentPrize', values?: undefined): string;
    encodeFunctionData(functionFragment: 'estimateRemainingBlocksToPrize', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getExternalErc20Awards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getExternalErc721AwardTokenIds', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'getExternalErc721Awards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getLastRngLockBlock', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getLastRngRequestId', values?: undefined): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>[]
    ]): string;
    encodeFunctionData(functionFragment: 'initializeMultipleWinners', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'isPrizePeriodOver', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isRngCompleted', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isRngRequested', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isRngTimedOut', values?: undefined): string;
    encodeFunctionData(functionFragment: 'numberOfWinners', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'periodicPrizeStrategyListener', values?: undefined): string;
    encodeFunctionData(functionFragment: 'prizePeriodEndAt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'prizePeriodRemainingSeconds', values?: undefined): string;
    encodeFunctionData(functionFragment: 'prizePeriodSeconds', values?: undefined): string;
    encodeFunctionData(functionFragment: 'prizePeriodStartedAt', values?: undefined): string;
    encodeFunctionData(functionFragment: 'prizePool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'removeExternalErc20Award', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'removeExternalErc721Award', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rng', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rngRequestTimeout', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setNumberOfWinners', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setPeriodicPrizeStrategyListener', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setRngRequestTimeout', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setRngService', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'setSplitExternalErc20Awards', values: [PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'setTokenListener', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'splitExternalErc20Awards', values?: undefined): string;
    encodeFunctionData(functionFragment: 'sponsorship', values?: undefined): string;
    encodeFunctionData(functionFragment: 'startAward', values?: undefined): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'ticket', values?: undefined): string;
    encodeFunctionData(functionFragment: 'tokenListener', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferExternalERC20', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    decodeFunctionResult(functionFragment: 'addExternalErc20Award', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addExternalErc20Awards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addExternalErc721Award', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'beforeTokenMint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'beforeTokenTransfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'calculateNextPrizePeriodStartTime', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'canCompleteAward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'canStartAward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'cancelAward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'completeAward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'currentPrize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'estimateRemainingBlocksToPrize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getExternalErc20Awards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getExternalErc721AwardTokenIds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getExternalErc721Awards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLastRngLockBlock', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getLastRngRequestId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initializeMultipleWinners', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isPrizePeriodOver', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isRngCompleted', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isRngRequested', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isRngTimedOut', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'numberOfWinners', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'periodicPrizeStrategyListener', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'prizePeriodEndAt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'prizePeriodRemainingSeconds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'prizePeriodSeconds', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'prizePeriodStartedAt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'prizePool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeExternalErc20Award', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeExternalErc721Award', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rng', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rngRequestTimeout', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setNumberOfWinners', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setPeriodicPrizeStrategyListener', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRngRequestTimeout', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRngService', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setSplitExternalErc20Awards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setTokenListener', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'splitExternalErc20Awards', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'sponsorship', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'startAward', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ticket', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenListener', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferExternalERC20', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    events: {
        'ExternalErc20AwardAdded(address)': EventFragment;
        'ExternalErc20AwardRemoved(address)': EventFragment;
        'ExternalErc721AwardAdded(address,uint256[])': EventFragment;
        'ExternalErc721AwardRemoved(address)': EventFragment;
        'Initialized(uint256,uint256,address,address,address,address,address[])': EventFragment;
        'NoWinners()': EventFragment;
        'NumberOfWinnersSet(uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'PeriodicPrizeStrategyListenerSet(address)': EventFragment;
        'PrizePoolAwardCancelled(address,address,uint32,uint32)': EventFragment;
        'PrizePoolAwardStarted(address,address,uint32,uint32)': EventFragment;
        'PrizePoolAwarded(address,uint256)': EventFragment;
        'PrizePoolOpened(address,uint256)': EventFragment;
        'RngRequestFailed()': EventFragment;
        'RngRequestTimeoutSet(uint32)': EventFragment;
        'RngServiceUpdated(address)': EventFragment;
        'SplitExternalErc20AwardsSet(bool)': EventFragment;
        'TokenListenerUpdated(address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'ExternalErc20AwardAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ExternalErc20AwardRemoved'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ExternalErc721AwardAdded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ExternalErc721AwardRemoved'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Initialized'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NoWinners'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'NumberOfWinnersSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PeriodicPrizeStrategyListenerSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PrizePoolAwardCancelled'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PrizePoolAwardStarted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PrizePoolAwarded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'PrizePoolOpened'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RngRequestFailed'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RngRequestTimeoutSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RngServiceUpdated'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'SplitExternalErc20AwardsSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'TokenListenerUpdated'): EventFragment;
}
export interface ExternalErc20AwardAddedEventObject {
    externalErc20: string;
}
export declare type ExternalErc20AwardAddedEvent = TypedEvent<[string], ExternalErc20AwardAddedEventObject>;
export declare type ExternalErc20AwardAddedEventFilter = TypedEventFilter<ExternalErc20AwardAddedEvent>;
export interface ExternalErc20AwardRemovedEventObject {
    externalErc20Award: string;
}
export declare type ExternalErc20AwardRemovedEvent = TypedEvent<[string], ExternalErc20AwardRemovedEventObject>;
export declare type ExternalErc20AwardRemovedEventFilter = TypedEventFilter<ExternalErc20AwardRemovedEvent>;
export interface ExternalErc721AwardAddedEventObject {
    externalErc721: string;
    tokenIds: BigNumber[];
}
export declare type ExternalErc721AwardAddedEvent = TypedEvent<[string, BigNumber[]], ExternalErc721AwardAddedEventObject>;
export declare type ExternalErc721AwardAddedEventFilter = TypedEventFilter<ExternalErc721AwardAddedEvent>;
export interface ExternalErc721AwardRemovedEventObject {
    externalErc721Award: string;
}
export declare type ExternalErc721AwardRemovedEvent = TypedEvent<[string], ExternalErc721AwardRemovedEventObject>;
export declare type ExternalErc721AwardRemovedEventFilter = TypedEventFilter<ExternalErc721AwardRemovedEvent>;
export interface InitializedEventObject {
    prizePeriodStart: BigNumber;
    prizePeriodSeconds: BigNumber;
    prizePool: string;
    ticket: string;
    sponsorship: string;
    rng: string;
    externalErc20Awards: string[];
}
export declare type InitializedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    string,
    string,
    string,
    string,
    string[]
], InitializedEventObject>;
export declare type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface NoWinnersEventObject {
}
export declare type NoWinnersEvent = TypedEvent<[], NoWinnersEventObject>;
export declare type NoWinnersEventFilter = TypedEventFilter<NoWinnersEvent>;
export interface NumberOfWinnersSetEventObject {
    numberOfWinners: BigNumber;
}
export declare type NumberOfWinnersSetEvent = TypedEvent<[BigNumber], NumberOfWinnersSetEventObject>;
export declare type NumberOfWinnersSetEventFilter = TypedEventFilter<NumberOfWinnersSetEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PeriodicPrizeStrategyListenerSetEventObject {
    periodicPrizeStrategyListener: string;
}
export declare type PeriodicPrizeStrategyListenerSetEvent = TypedEvent<[string], PeriodicPrizeStrategyListenerSetEventObject>;
export declare type PeriodicPrizeStrategyListenerSetEventFilter = TypedEventFilter<PeriodicPrizeStrategyListenerSetEvent>;
export interface PrizePoolAwardCancelledEventObject {
    operator: string;
    prizePool: string;
    rngRequestId: number;
    rngLockBlock: number;
}
export declare type PrizePoolAwardCancelledEvent = TypedEvent<[
    string,
    string,
    number,
    number
], PrizePoolAwardCancelledEventObject>;
export declare type PrizePoolAwardCancelledEventFilter = TypedEventFilter<PrizePoolAwardCancelledEvent>;
export interface PrizePoolAwardStartedEventObject {
    operator: string;
    prizePool: string;
    rngRequestId: number;
    rngLockBlock: number;
}
export declare type PrizePoolAwardStartedEvent = TypedEvent<[string, string, number, number], PrizePoolAwardStartedEventObject>;
export declare type PrizePoolAwardStartedEventFilter = TypedEventFilter<PrizePoolAwardStartedEvent>;
export interface PrizePoolAwardedEventObject {
    operator: string;
    randomNumber: BigNumber;
}
export declare type PrizePoolAwardedEvent = TypedEvent<[string, BigNumber], PrizePoolAwardedEventObject>;
export declare type PrizePoolAwardedEventFilter = TypedEventFilter<PrizePoolAwardedEvent>;
export interface PrizePoolOpenedEventObject {
    operator: string;
    prizePeriodStartedAt: BigNumber;
}
export declare type PrizePoolOpenedEvent = TypedEvent<[string, BigNumber], PrizePoolOpenedEventObject>;
export declare type PrizePoolOpenedEventFilter = TypedEventFilter<PrizePoolOpenedEvent>;
export interface RngRequestFailedEventObject {
}
export declare type RngRequestFailedEvent = TypedEvent<[], RngRequestFailedEventObject>;
export declare type RngRequestFailedEventFilter = TypedEventFilter<RngRequestFailedEvent>;
export interface RngRequestTimeoutSetEventObject {
    rngRequestTimeout: number;
}
export declare type RngRequestTimeoutSetEvent = TypedEvent<[number], RngRequestTimeoutSetEventObject>;
export declare type RngRequestTimeoutSetEventFilter = TypedEventFilter<RngRequestTimeoutSetEvent>;
export interface RngServiceUpdatedEventObject {
    rngService: string;
}
export declare type RngServiceUpdatedEvent = TypedEvent<[string], RngServiceUpdatedEventObject>;
export declare type RngServiceUpdatedEventFilter = TypedEventFilter<RngServiceUpdatedEvent>;
export interface SplitExternalErc20AwardsSetEventObject {
    splitExternalErc20Awards: boolean;
}
export declare type SplitExternalErc20AwardsSetEvent = TypedEvent<[boolean], SplitExternalErc20AwardsSetEventObject>;
export declare type SplitExternalErc20AwardsSetEventFilter = TypedEventFilter<SplitExternalErc20AwardsSetEvent>;
export interface TokenListenerUpdatedEventObject {
    tokenListener: string;
}
export declare type TokenListenerUpdatedEvent = TypedEvent<[string], TokenListenerUpdatedEventObject>;
export declare type TokenListenerUpdatedEventFilter = TypedEventFilter<TokenListenerUpdatedEvent>;
export interface PoolTogetherV3MultipleWinnersPrizeStrategy extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: PoolTogetherV3MultipleWinnersPrizeStrategyInterface;
    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: {
        addExternalErc20Award(_externalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addExternalErc20Awards(_externalErc20s: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addExternalErc721Award(_externalErc721: PromiseOrValue<string>, _tokenIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        calculateNextPrizePeriodStartTime(currentTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        canCompleteAward(overrides?: CallOverrides): Promise<[boolean]>;
        canStartAward(overrides?: CallOverrides): Promise<[boolean]>;
        cancelAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        completeAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        currentPrize(overrides?: CallOverrides): Promise<[BigNumber]>;
        estimateRemainingBlocksToPrize(secondsPerBlockMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getExternalErc20Awards(overrides?: CallOverrides): Promise<[string[]]>;
        getExternalErc721AwardTokenIds(_externalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber[]]>;
        getExternalErc721Awards(overrides?: CallOverrides): Promise<[string[]]>;
        getLastRngLockBlock(overrides?: CallOverrides): Promise<[number]>;
        getLastRngRequestId(overrides?: CallOverrides): Promise<[number]>;
        initialize(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, externalErc20Awards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initializeMultipleWinners(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, _numberOfWinners: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        isPrizePeriodOver(overrides?: CallOverrides): Promise<[boolean]>;
        isRngCompleted(overrides?: CallOverrides): Promise<[boolean]>;
        isRngRequested(overrides?: CallOverrides): Promise<[boolean]>;
        isRngTimedOut(overrides?: CallOverrides): Promise<[boolean]>;
        numberOfWinners(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        periodicPrizeStrategyListener(overrides?: CallOverrides): Promise<[string]>;
        prizePeriodEndAt(overrides?: CallOverrides): Promise<[BigNumber]>;
        prizePeriodRemainingSeconds(overrides?: CallOverrides): Promise<[BigNumber]>;
        prizePeriodSeconds(overrides?: CallOverrides): Promise<[BigNumber]>;
        prizePeriodStartedAt(overrides?: CallOverrides): Promise<[BigNumber]>;
        prizePool(overrides?: CallOverrides): Promise<[string]>;
        removeExternalErc20Award(_externalErc20: PromiseOrValue<string>, _prevExternalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeExternalErc721Award(_externalErc721: PromiseOrValue<string>, _prevExternalErc721: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        rng(overrides?: CallOverrides): Promise<[string]>;
        rngRequestTimeout(overrides?: CallOverrides): Promise<[number]>;
        setNumberOfWinners(count: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setPeriodicPrizeStrategyListener(_periodicPrizeStrategyListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRngRequestTimeout(_rngRequestTimeout: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRngService(rngService: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setSplitExternalErc20Awards(_splitExternalErc20Awards: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setTokenListener(_tokenListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        splitExternalErc20Awards(overrides?: CallOverrides): Promise<[boolean]>;
        sponsorship(overrides?: CallOverrides): Promise<[string]>;
        startAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        ticket(overrides?: CallOverrides): Promise<[string]>;
        tokenListener(overrides?: CallOverrides): Promise<[string]>;
        transferExternalERC20(to: PromiseOrValue<string>, externalToken: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    addExternalErc20Award(_externalErc20: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addExternalErc20Awards(_externalErc20s: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addExternalErc721Award(_externalErc721: PromiseOrValue<string>, _tokenIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    calculateNextPrizePeriodStartTime(currentTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    canCompleteAward(overrides?: CallOverrides): Promise<boolean>;
    canStartAward(overrides?: CallOverrides): Promise<boolean>;
    cancelAward(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    completeAward(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    currentPrize(overrides?: CallOverrides): Promise<BigNumber>;
    estimateRemainingBlocksToPrize(secondsPerBlockMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getExternalErc20Awards(overrides?: CallOverrides): Promise<string[]>;
    getExternalErc721AwardTokenIds(_externalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
    getExternalErc721Awards(overrides?: CallOverrides): Promise<string[]>;
    getLastRngLockBlock(overrides?: CallOverrides): Promise<number>;
    getLastRngRequestId(overrides?: CallOverrides): Promise<number>;
    initialize(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, externalErc20Awards: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initializeMultipleWinners(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, _numberOfWinners: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    isPrizePeriodOver(overrides?: CallOverrides): Promise<boolean>;
    isRngCompleted(overrides?: CallOverrides): Promise<boolean>;
    isRngRequested(overrides?: CallOverrides): Promise<boolean>;
    isRngTimedOut(overrides?: CallOverrides): Promise<boolean>;
    numberOfWinners(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    periodicPrizeStrategyListener(overrides?: CallOverrides): Promise<string>;
    prizePeriodEndAt(overrides?: CallOverrides): Promise<BigNumber>;
    prizePeriodRemainingSeconds(overrides?: CallOverrides): Promise<BigNumber>;
    prizePeriodSeconds(overrides?: CallOverrides): Promise<BigNumber>;
    prizePeriodStartedAt(overrides?: CallOverrides): Promise<BigNumber>;
    prizePool(overrides?: CallOverrides): Promise<string>;
    removeExternalErc20Award(_externalErc20: PromiseOrValue<string>, _prevExternalErc20: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeExternalErc721Award(_externalErc721: PromiseOrValue<string>, _prevExternalErc721: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    rng(overrides?: CallOverrides): Promise<string>;
    rngRequestTimeout(overrides?: CallOverrides): Promise<number>;
    setNumberOfWinners(count: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setPeriodicPrizeStrategyListener(_periodicPrizeStrategyListener: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRngRequestTimeout(_rngRequestTimeout: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRngService(rngService: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setSplitExternalErc20Awards(_splitExternalErc20Awards: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setTokenListener(_tokenListener: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    splitExternalErc20Awards(overrides?: CallOverrides): Promise<boolean>;
    sponsorship(overrides?: CallOverrides): Promise<string>;
    startAward(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    ticket(overrides?: CallOverrides): Promise<string>;
    tokenListener(overrides?: CallOverrides): Promise<string>;
    transferExternalERC20(to: PromiseOrValue<string>, externalToken: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        addExternalErc20Award(_externalErc20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addExternalErc20Awards(_externalErc20s: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        addExternalErc721Award(_externalErc721: PromiseOrValue<string>, _tokenIds: PromiseOrValue<BigNumberish>[], overrides?: CallOverrides): Promise<void>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        calculateNextPrizePeriodStartTime(currentTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        canCompleteAward(overrides?: CallOverrides): Promise<boolean>;
        canStartAward(overrides?: CallOverrides): Promise<boolean>;
        cancelAward(overrides?: CallOverrides): Promise<void>;
        completeAward(overrides?: CallOverrides): Promise<void>;
        currentPrize(overrides?: CallOverrides): Promise<BigNumber>;
        estimateRemainingBlocksToPrize(secondsPerBlockMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getExternalErc20Awards(overrides?: CallOverrides): Promise<string[]>;
        getExternalErc721AwardTokenIds(_externalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber[]>;
        getExternalErc721Awards(overrides?: CallOverrides): Promise<string[]>;
        getLastRngLockBlock(overrides?: CallOverrides): Promise<number>;
        getLastRngRequestId(overrides?: CallOverrides): Promise<number>;
        initialize(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, externalErc20Awards: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<void>;
        initializeMultipleWinners(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, _numberOfWinners: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        isPrizePeriodOver(overrides?: CallOverrides): Promise<boolean>;
        isRngCompleted(overrides?: CallOverrides): Promise<boolean>;
        isRngRequested(overrides?: CallOverrides): Promise<boolean>;
        isRngTimedOut(overrides?: CallOverrides): Promise<boolean>;
        numberOfWinners(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        periodicPrizeStrategyListener(overrides?: CallOverrides): Promise<string>;
        prizePeriodEndAt(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodRemainingSeconds(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodSeconds(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodStartedAt(overrides?: CallOverrides): Promise<BigNumber>;
        prizePool(overrides?: CallOverrides): Promise<string>;
        removeExternalErc20Award(_externalErc20: PromiseOrValue<string>, _prevExternalErc20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        removeExternalErc721Award(_externalErc721: PromiseOrValue<string>, _prevExternalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        rng(overrides?: CallOverrides): Promise<string>;
        rngRequestTimeout(overrides?: CallOverrides): Promise<number>;
        setNumberOfWinners(count: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setPeriodicPrizeStrategyListener(_periodicPrizeStrategyListener: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setRngRequestTimeout(_rngRequestTimeout: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setRngService(rngService: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        setSplitExternalErc20Awards(_splitExternalErc20Awards: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        setTokenListener(_tokenListener: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        splitExternalErc20Awards(overrides?: CallOverrides): Promise<boolean>;
        sponsorship(overrides?: CallOverrides): Promise<string>;
        startAward(overrides?: CallOverrides): Promise<void>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        ticket(overrides?: CallOverrides): Promise<string>;
        tokenListener(overrides?: CallOverrides): Promise<string>;
        transferExternalERC20(to: PromiseOrValue<string>, externalToken: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        'ExternalErc20AwardAdded(address)'(externalErc20?: PromiseOrValue<string> | null): ExternalErc20AwardAddedEventFilter;
        ExternalErc20AwardAdded(externalErc20?: PromiseOrValue<string> | null): ExternalErc20AwardAddedEventFilter;
        'ExternalErc20AwardRemoved(address)'(externalErc20Award?: PromiseOrValue<string> | null): ExternalErc20AwardRemovedEventFilter;
        ExternalErc20AwardRemoved(externalErc20Award?: PromiseOrValue<string> | null): ExternalErc20AwardRemovedEventFilter;
        'ExternalErc721AwardAdded(address,uint256[])'(externalErc721?: PromiseOrValue<string> | null, tokenIds?: null): ExternalErc721AwardAddedEventFilter;
        ExternalErc721AwardAdded(externalErc721?: PromiseOrValue<string> | null, tokenIds?: null): ExternalErc721AwardAddedEventFilter;
        'ExternalErc721AwardRemoved(address)'(externalErc721Award?: PromiseOrValue<string> | null): ExternalErc721AwardRemovedEventFilter;
        ExternalErc721AwardRemoved(externalErc721Award?: PromiseOrValue<string> | null): ExternalErc721AwardRemovedEventFilter;
        'Initialized(uint256,uint256,address,address,address,address,address[])'(prizePeriodStart?: null, prizePeriodSeconds?: null, prizePool?: PromiseOrValue<string> | null, ticket?: null, sponsorship?: null, rng?: null, externalErc20Awards?: null): InitializedEventFilter;
        Initialized(prizePeriodStart?: null, prizePeriodSeconds?: null, prizePool?: PromiseOrValue<string> | null, ticket?: null, sponsorship?: null, rng?: null, externalErc20Awards?: null): InitializedEventFilter;
        'NoWinners()'(): NoWinnersEventFilter;
        NoWinners(): NoWinnersEventFilter;
        'NumberOfWinnersSet(uint256)'(numberOfWinners?: null): NumberOfWinnersSetEventFilter;
        NumberOfWinnersSet(numberOfWinners?: null): NumberOfWinnersSetEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'PeriodicPrizeStrategyListenerSet(address)'(periodicPrizeStrategyListener?: PromiseOrValue<string> | null): PeriodicPrizeStrategyListenerSetEventFilter;
        PeriodicPrizeStrategyListenerSet(periodicPrizeStrategyListener?: PromiseOrValue<string> | null): PeriodicPrizeStrategyListenerSetEventFilter;
        'PrizePoolAwardCancelled(address,address,uint32,uint32)'(operator?: PromiseOrValue<string> | null, prizePool?: PromiseOrValue<string> | null, rngRequestId?: PromiseOrValue<BigNumberish> | null, rngLockBlock?: null): PrizePoolAwardCancelledEventFilter;
        PrizePoolAwardCancelled(operator?: PromiseOrValue<string> | null, prizePool?: PromiseOrValue<string> | null, rngRequestId?: PromiseOrValue<BigNumberish> | null, rngLockBlock?: null): PrizePoolAwardCancelledEventFilter;
        'PrizePoolAwardStarted(address,address,uint32,uint32)'(operator?: PromiseOrValue<string> | null, prizePool?: PromiseOrValue<string> | null, rngRequestId?: PromiseOrValue<BigNumberish> | null, rngLockBlock?: null): PrizePoolAwardStartedEventFilter;
        PrizePoolAwardStarted(operator?: PromiseOrValue<string> | null, prizePool?: PromiseOrValue<string> | null, rngRequestId?: PromiseOrValue<BigNumberish> | null, rngLockBlock?: null): PrizePoolAwardStartedEventFilter;
        'PrizePoolAwarded(address,uint256)'(operator?: PromiseOrValue<string> | null, randomNumber?: null): PrizePoolAwardedEventFilter;
        PrizePoolAwarded(operator?: PromiseOrValue<string> | null, randomNumber?: null): PrizePoolAwardedEventFilter;
        'PrizePoolOpened(address,uint256)'(operator?: PromiseOrValue<string> | null, prizePeriodStartedAt?: PromiseOrValue<BigNumberish> | null): PrizePoolOpenedEventFilter;
        PrizePoolOpened(operator?: PromiseOrValue<string> | null, prizePeriodStartedAt?: PromiseOrValue<BigNumberish> | null): PrizePoolOpenedEventFilter;
        'RngRequestFailed()'(): RngRequestFailedEventFilter;
        RngRequestFailed(): RngRequestFailedEventFilter;
        'RngRequestTimeoutSet(uint32)'(rngRequestTimeout?: null): RngRequestTimeoutSetEventFilter;
        RngRequestTimeoutSet(rngRequestTimeout?: null): RngRequestTimeoutSetEventFilter;
        'RngServiceUpdated(address)'(rngService?: PromiseOrValue<string> | null): RngServiceUpdatedEventFilter;
        RngServiceUpdated(rngService?: PromiseOrValue<string> | null): RngServiceUpdatedEventFilter;
        'SplitExternalErc20AwardsSet(bool)'(splitExternalErc20Awards?: null): SplitExternalErc20AwardsSetEventFilter;
        SplitExternalErc20AwardsSet(splitExternalErc20Awards?: null): SplitExternalErc20AwardsSetEventFilter;
        'TokenListenerUpdated(address)'(tokenListener?: PromiseOrValue<string> | null): TokenListenerUpdatedEventFilter;
        TokenListenerUpdated(tokenListener?: PromiseOrValue<string> | null): TokenListenerUpdatedEventFilter;
    };
    estimateGas: {
        addExternalErc20Award(_externalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addExternalErc20Awards(_externalErc20s: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addExternalErc721Award(_externalErc721: PromiseOrValue<string>, _tokenIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        calculateNextPrizePeriodStartTime(currentTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        canCompleteAward(overrides?: CallOverrides): Promise<BigNumber>;
        canStartAward(overrides?: CallOverrides): Promise<BigNumber>;
        cancelAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        completeAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        currentPrize(overrides?: CallOverrides): Promise<BigNumber>;
        estimateRemainingBlocksToPrize(secondsPerBlockMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getExternalErc20Awards(overrides?: CallOverrides): Promise<BigNumber>;
        getExternalErc721AwardTokenIds(_externalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getExternalErc721Awards(overrides?: CallOverrides): Promise<BigNumber>;
        getLastRngLockBlock(overrides?: CallOverrides): Promise<BigNumber>;
        getLastRngRequestId(overrides?: CallOverrides): Promise<BigNumber>;
        initialize(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, externalErc20Awards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initializeMultipleWinners(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, _numberOfWinners: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        isPrizePeriodOver(overrides?: CallOverrides): Promise<BigNumber>;
        isRngCompleted(overrides?: CallOverrides): Promise<BigNumber>;
        isRngRequested(overrides?: CallOverrides): Promise<BigNumber>;
        isRngTimedOut(overrides?: CallOverrides): Promise<BigNumber>;
        numberOfWinners(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        periodicPrizeStrategyListener(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodEndAt(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodRemainingSeconds(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodSeconds(overrides?: CallOverrides): Promise<BigNumber>;
        prizePeriodStartedAt(overrides?: CallOverrides): Promise<BigNumber>;
        prizePool(overrides?: CallOverrides): Promise<BigNumber>;
        removeExternalErc20Award(_externalErc20: PromiseOrValue<string>, _prevExternalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeExternalErc721Award(_externalErc721: PromiseOrValue<string>, _prevExternalErc721: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        rng(overrides?: CallOverrides): Promise<BigNumber>;
        rngRequestTimeout(overrides?: CallOverrides): Promise<BigNumber>;
        setNumberOfWinners(count: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setPeriodicPrizeStrategyListener(_periodicPrizeStrategyListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRngRequestTimeout(_rngRequestTimeout: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRngService(rngService: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setSplitExternalErc20Awards(_splitExternalErc20Awards: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setTokenListener(_tokenListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        splitExternalErc20Awards(overrides?: CallOverrides): Promise<BigNumber>;
        sponsorship(overrides?: CallOverrides): Promise<BigNumber>;
        startAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        ticket(overrides?: CallOverrides): Promise<BigNumber>;
        tokenListener(overrides?: CallOverrides): Promise<BigNumber>;
        transferExternalERC20(to: PromiseOrValue<string>, externalToken: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        addExternalErc20Award(_externalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addExternalErc20Awards(_externalErc20s: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addExternalErc721Award(_externalErc721: PromiseOrValue<string>, _tokenIds: PromiseOrValue<BigNumberish>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        beforeTokenMint(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, referrer: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        beforeTokenTransfer(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, controlledToken: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        calculateNextPrizePeriodStartTime(currentTime: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        canCompleteAward(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        canStartAward(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        cancelAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        completeAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        currentPrize(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        estimateRemainingBlocksToPrize(secondsPerBlockMantissa: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getExternalErc20Awards(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getExternalErc721AwardTokenIds(_externalErc721: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getExternalErc721Awards(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLastRngLockBlock(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getLastRngRequestId(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        initialize(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, externalErc20Awards: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initializeMultipleWinners(_prizePeriodStart: PromiseOrValue<BigNumberish>, _prizePeriodSeconds: PromiseOrValue<BigNumberish>, _prizePool: PromiseOrValue<string>, _ticket: PromiseOrValue<string>, _sponsorship: PromiseOrValue<string>, _rng: PromiseOrValue<string>, _numberOfWinners: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        isPrizePeriodOver(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isRngCompleted(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isRngRequested(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isRngTimedOut(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        numberOfWinners(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        periodicPrizeStrategyListener(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prizePeriodEndAt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prizePeriodRemainingSeconds(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prizePeriodSeconds(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prizePeriodStartedAt(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        prizePool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        removeExternalErc20Award(_externalErc20: PromiseOrValue<string>, _prevExternalErc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeExternalErc721Award(_externalErc721: PromiseOrValue<string>, _prevExternalErc721: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        rng(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rngRequestTimeout(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setNumberOfWinners(count: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setPeriodicPrizeStrategyListener(_periodicPrizeStrategyListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRngRequestTimeout(_rngRequestTimeout: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRngService(rngService: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setSplitExternalErc20Awards(_splitExternalErc20Awards: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setTokenListener(_tokenListener: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        splitExternalErc20Awards(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        sponsorship(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        startAward(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ticket(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenListener(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferExternalERC20(to: PromiseOrValue<string>, externalToken: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
