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 HalofiAbiV003Interface extends utils.Interface {
    functions: {
        'AAVE_POOL()': FunctionFragment;
        'ATRI_CRYPTO_POOL()': FunctionFragment;
        'NUM_AAVE_TOKENS()': FunctionFragment;
        'NUM_ATRI_CRYPTO_TOKENS()': FunctionFragment;
        'activePlayersCount()': FunctionFragment;
        'adminFeeAmount()': FunctionFragment;
        'adminWithdraw()': FunctionFragment;
        'allowRenouncingOwnership()': FunctionFragment;
        'curve()': FunctionFragment;
        'curveRewardsPerPlayer()': FunctionFragment;
        'customFee()': FunctionFragment;
        'daiToken()': FunctionFragment;
        'earlyWithdrawalFee()': FunctionFragment;
        'firstSegmentStart()': FunctionFragment;
        'gauge()': FunctionFragment;
        'impermanentLossShare()': FunctionFragment;
        'inboundTokenIndex()': FunctionFragment;
        'incentiveToken()': FunctionFragment;
        'iterablePlayers(uint256)': FunctionFragment;
        'lastSegment()': FunctionFragment;
        'lpToken()': FunctionFragment;
        'matic()': FunctionFragment;
        'maxPlayersCount()': FunctionFragment;
        'owner()': FunctionFragment;
        'paused()': FunctionFragment;
        'players(address)': FunctionFragment;
        'pool()': FunctionFragment;
        'poolType()': FunctionFragment;
        'redeemed()': FunctionFragment;
        'rewardsPerPlayer()': FunctionFragment;
        'segmentLength()': FunctionFragment;
        'segmentPayment()': FunctionFragment;
        'totalGameInterest()': FunctionFragment;
        'totalGamePrincipal()': FunctionFragment;
        'totalIncentiveAmount()': FunctionFragment;
        'transferOwnership(address)': FunctionFragment;
        'winnerCount()': FunctionFragment;
        'winners(uint256)': FunctionFragment;
        'pause()': FunctionFragment;
        'unpause()': FunctionFragment;
        'adminFeeWithdraw()': FunctionFragment;
        'joinGame(uint256)': FunctionFragment;
        'earlyWithdraw(uint256)': FunctionFragment;
        'withdraw(uint256)': FunctionFragment;
        'makeDeposit(uint256)': FunctionFragment;
        'unlockRenounceOwnership()': FunctionFragment;
        'getNumberOfPlayers()': FunctionFragment;
        'renounceOwnership()': FunctionFragment;
        'redeemFromExternalPool(uint256)': FunctionFragment;
        'getCurrentSegment()': FunctionFragment;
        'isGameCompleted()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'AAVE_POOL' | 'ATRI_CRYPTO_POOL' | 'NUM_AAVE_TOKENS' | 'NUM_ATRI_CRYPTO_TOKENS' | 'activePlayersCount' | 'adminFeeAmount' | 'adminWithdraw' | 'allowRenouncingOwnership' | 'curve' | 'curveRewardsPerPlayer' | 'customFee' | 'daiToken' | 'earlyWithdrawalFee' | 'firstSegmentStart' | 'gauge' | 'impermanentLossShare' | 'inboundTokenIndex' | 'incentiveToken' | 'iterablePlayers' | 'lastSegment' | 'lpToken' | 'matic' | 'maxPlayersCount' | 'owner' | 'paused' | 'players' | 'pool' | 'poolType' | 'redeemed' | 'rewardsPerPlayer' | 'segmentLength' | 'segmentPayment' | 'totalGameInterest' | 'totalGamePrincipal' | 'totalIncentiveAmount' | 'transferOwnership' | 'winnerCount' | 'winners' | 'pause' | 'unpause' | 'adminFeeWithdraw' | 'joinGame' | 'earlyWithdraw' | 'withdraw' | 'makeDeposit' | 'unlockRenounceOwnership' | 'getNumberOfPlayers' | 'renounceOwnership' | 'redeemFromExternalPool' | 'getCurrentSegment' | 'isGameCompleted'): FunctionFragment;
    encodeFunctionData(functionFragment: 'AAVE_POOL', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ATRI_CRYPTO_POOL', values?: undefined): string;
    encodeFunctionData(functionFragment: 'NUM_AAVE_TOKENS', values?: undefined): string;
    encodeFunctionData(functionFragment: 'NUM_ATRI_CRYPTO_TOKENS', values?: undefined): string;
    encodeFunctionData(functionFragment: 'activePlayersCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'adminFeeAmount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'adminWithdraw', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowRenouncingOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'curve', values?: undefined): string;
    encodeFunctionData(functionFragment: 'curveRewardsPerPlayer', values?: undefined): string;
    encodeFunctionData(functionFragment: 'customFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'daiToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'earlyWithdrawalFee', values?: undefined): string;
    encodeFunctionData(functionFragment: 'firstSegmentStart', values?: undefined): string;
    encodeFunctionData(functionFragment: 'gauge', values?: undefined): string;
    encodeFunctionData(functionFragment: 'impermanentLossShare', values?: undefined): string;
    encodeFunctionData(functionFragment: 'inboundTokenIndex', values?: undefined): string;
    encodeFunctionData(functionFragment: 'incentiveToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'iterablePlayers', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'lastSegment', values?: undefined): string;
    encodeFunctionData(functionFragment: 'lpToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'matic', values?: undefined): string;
    encodeFunctionData(functionFragment: 'maxPlayersCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'players', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'pool', values?: undefined): string;
    encodeFunctionData(functionFragment: 'poolType', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeemed', values?: undefined): string;
    encodeFunctionData(functionFragment: 'rewardsPerPlayer', values?: undefined): string;
    encodeFunctionData(functionFragment: 'segmentLength', values?: undefined): string;
    encodeFunctionData(functionFragment: 'segmentPayment', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalGameInterest', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalGamePrincipal', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalIncentiveAmount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferOwnership', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'winnerCount', values?: undefined): string;
    encodeFunctionData(functionFragment: 'winners', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'pause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'unpause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'adminFeeWithdraw', values?: undefined): string;
    encodeFunctionData(functionFragment: 'joinGame', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'earlyWithdraw', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'makeDeposit', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'unlockRenounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getNumberOfPlayers', values?: undefined): string;
    encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeemFromExternalPool', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getCurrentSegment', values?: undefined): string;
    encodeFunctionData(functionFragment: 'isGameCompleted', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'AAVE_POOL', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ATRI_CRYPTO_POOL', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'NUM_AAVE_TOKENS', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'NUM_ATRI_CRYPTO_TOKENS', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'activePlayersCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'adminFeeAmount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'adminWithdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowRenouncingOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'curve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'curveRewardsPerPlayer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'customFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'daiToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'earlyWithdrawalFee', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'firstSegmentStart', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'gauge', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'impermanentLossShare', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'inboundTokenIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'incentiveToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'iterablePlayers', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lastSegment', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'lpToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'matic', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'maxPlayersCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'players', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'poolType', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemed', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'rewardsPerPlayer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'segmentLength', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'segmentPayment', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalGameInterest', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalGamePrincipal', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalIncentiveAmount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'winnerCount', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'winners', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'adminFeeWithdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'joinGame', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'earlyWithdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'makeDeposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unlockRenounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getNumberOfPlayers', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemFromExternalPool', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getCurrentSegment', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isGameCompleted', data: BytesLike): Result;
    events: {
        'AdminWithdrawal(address,uint256,uint256,uint256)': EventFragment;
        'Deposit(address,uint256,uint256)': EventFragment;
        'EarlyWithdrawal(address,uint256,uint256)': EventFragment;
        'FundsRedeemedFromExternalPool(uint256,uint256,uint256,uint256,uint256,uint256)': EventFragment;
        'JoinedGame(address,uint256)': EventFragment;
        'OwnershipTransferred(address,address)': EventFragment;
        'Paused(address)': EventFragment;
        'Unpaused(address)': EventFragment;
        'WinnersAnnouncement(address[])': EventFragment;
        'Withdrawal(address,uint256,uint256,uint256,uint256)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AdminWithdrawal'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'EarlyWithdrawal'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'FundsRedeemedFromExternalPool'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'JoinedGame'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'WinnersAnnouncement'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdrawal'): EventFragment;
}
export interface AdminWithdrawalEventObject {
    admin: string;
    totalGameInterest: BigNumber;
    adminFeeAmount: BigNumber;
    adminIncentiveAmount: BigNumber;
}
export declare type AdminWithdrawalEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber], AdminWithdrawalEventObject>;
export declare type AdminWithdrawalEventFilter = TypedEventFilter<AdminWithdrawalEvent>;
export interface DepositEventObject {
    player: string;
    segment: BigNumber;
    amount: BigNumber;
}
export declare type DepositEvent = TypedEvent<[string, BigNumber, BigNumber], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface EarlyWithdrawalEventObject {
    player: string;
    amount: BigNumber;
    totalGamePrincipal: BigNumber;
}
export declare type EarlyWithdrawalEvent = TypedEvent<[string, BigNumber, BigNumber], EarlyWithdrawalEventObject>;
export declare type EarlyWithdrawalEventFilter = TypedEventFilter<EarlyWithdrawalEvent>;
export interface FundsRedeemedFromExternalPoolEventObject {
    totalAmount: BigNumber;
    totalGamePrincipal: BigNumber;
    totalGameInterest: BigNumber;
    rewards: BigNumber;
    curveRewards: BigNumber;
    totalIncentiveAmount: BigNumber;
}
export declare type FundsRedeemedFromExternalPoolEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], FundsRedeemedFromExternalPoolEventObject>;
export declare type FundsRedeemedFromExternalPoolEventFilter = TypedEventFilter<FundsRedeemedFromExternalPoolEvent>;
export interface JoinedGameEventObject {
    player: string;
    amount: BigNumber;
}
export declare type JoinedGameEvent = TypedEvent<[string, BigNumber], JoinedGameEventObject>;
export declare type JoinedGameEventFilter = TypedEventFilter<JoinedGameEvent>;
export interface OwnershipTransferredEventObject {
    previousOwner: string;
    newOwner: string;
}
export declare type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>;
export declare type OwnershipTransferredEventFilter = TypedEventFilter<OwnershipTransferredEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface WinnersAnnouncementEventObject {
    winners: string[];
}
export declare type WinnersAnnouncementEvent = TypedEvent<[string[]], WinnersAnnouncementEventObject>;
export declare type WinnersAnnouncementEventFilter = TypedEventFilter<WinnersAnnouncementEvent>;
export interface WithdrawalEventObject {
    player: string;
    amount: BigNumber;
    playerReward: BigNumber;
    playerCurveReward: BigNumber;
    playerIncentive: BigNumber;
}
export declare type WithdrawalEvent = TypedEvent<[string, BigNumber, BigNumber, BigNumber, BigNumber], WithdrawalEventObject>;
export declare type WithdrawalEventFilter = TypedEventFilter<WithdrawalEvent>;
export interface HalofiAbiV003 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: HalofiAbiV003Interface;
    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: {
        AAVE_POOL(overrides?: CallOverrides): Promise<[BigNumber]>;
        ATRI_CRYPTO_POOL(overrides?: CallOverrides): Promise<[BigNumber]>;
        NUM_AAVE_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>;
        NUM_ATRI_CRYPTO_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>;
        activePlayersCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        adminFeeAmount(overrides?: CallOverrides): Promise<[BigNumber]>;
        adminWithdraw(overrides?: CallOverrides): Promise<[boolean]>;
        allowRenouncingOwnership(overrides?: CallOverrides): Promise<[boolean]>;
        curve(overrides?: CallOverrides): Promise<[string]>;
        curveRewardsPerPlayer(overrides?: CallOverrides): Promise<[BigNumber]>;
        customFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        daiToken(overrides?: CallOverrides): Promise<[string]>;
        earlyWithdrawalFee(overrides?: CallOverrides): Promise<[BigNumber]>;
        firstSegmentStart(overrides?: CallOverrides): Promise<[BigNumber]>;
        gauge(overrides?: CallOverrides): Promise<[string]>;
        impermanentLossShare(overrides?: CallOverrides): Promise<[BigNumber]>;
        inboundTokenIndex(overrides?: CallOverrides): Promise<[BigNumber]>;
        incentiveToken(overrides?: CallOverrides): Promise<[string]>;
        iterablePlayers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        lastSegment(overrides?: CallOverrides): Promise<[BigNumber]>;
        lpToken(overrides?: CallOverrides): Promise<[string]>;
        matic(overrides?: CallOverrides): Promise<[string]>;
        maxPlayersCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        owner(overrides?: CallOverrides): Promise<[string]>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        players(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            boolean,
            boolean,
            boolean,
            string,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            withdrawn: boolean;
            canRejoin: boolean;
            isWinner: boolean;
            addr: string;
            mostRecentSegmentPaid: BigNumber;
            amountPaid: BigNumber;
            winnerIndex: BigNumber;
        }>;
        pool(overrides?: CallOverrides): Promise<[string]>;
        poolType(overrides?: CallOverrides): Promise<[BigNumber]>;
        redeemed(overrides?: CallOverrides): Promise<[boolean]>;
        rewardsPerPlayer(overrides?: CallOverrides): Promise<[BigNumber]>;
        segmentLength(overrides?: CallOverrides): Promise<[BigNumber]>;
        segmentPayment(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalGameInterest(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalGamePrincipal(overrides?: CallOverrides): Promise<[BigNumber]>;
        totalIncentiveAmount(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        winnerCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        winners(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        adminFeeWithdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        joinGame(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        earlyWithdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        makeDeposit(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unlockRenounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getNumberOfPlayers(overrides?: CallOverrides): Promise<[BigNumber]>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemFromExternalPool(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getCurrentSegment(overrides?: CallOverrides): Promise<[BigNumber]>;
        isGameCompleted(overrides?: CallOverrides): Promise<[boolean]>;
    };
    AAVE_POOL(overrides?: CallOverrides): Promise<BigNumber>;
    ATRI_CRYPTO_POOL(overrides?: CallOverrides): Promise<BigNumber>;
    NUM_AAVE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
    NUM_ATRI_CRYPTO_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
    activePlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
    adminFeeAmount(overrides?: CallOverrides): Promise<BigNumber>;
    adminWithdraw(overrides?: CallOverrides): Promise<boolean>;
    allowRenouncingOwnership(overrides?: CallOverrides): Promise<boolean>;
    curve(overrides?: CallOverrides): Promise<string>;
    curveRewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
    customFee(overrides?: CallOverrides): Promise<BigNumber>;
    daiToken(overrides?: CallOverrides): Promise<string>;
    earlyWithdrawalFee(overrides?: CallOverrides): Promise<BigNumber>;
    firstSegmentStart(overrides?: CallOverrides): Promise<BigNumber>;
    gauge(overrides?: CallOverrides): Promise<string>;
    impermanentLossShare(overrides?: CallOverrides): Promise<BigNumber>;
    inboundTokenIndex(overrides?: CallOverrides): Promise<BigNumber>;
    incentiveToken(overrides?: CallOverrides): Promise<string>;
    iterablePlayers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    lastSegment(overrides?: CallOverrides): Promise<BigNumber>;
    lpToken(overrides?: CallOverrides): Promise<string>;
    matic(overrides?: CallOverrides): Promise<string>;
    maxPlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
    owner(overrides?: CallOverrides): Promise<string>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    players(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        boolean,
        boolean,
        boolean,
        string,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        withdrawn: boolean;
        canRejoin: boolean;
        isWinner: boolean;
        addr: string;
        mostRecentSegmentPaid: BigNumber;
        amountPaid: BigNumber;
        winnerIndex: BigNumber;
    }>;
    pool(overrides?: CallOverrides): Promise<string>;
    poolType(overrides?: CallOverrides): Promise<BigNumber>;
    redeemed(overrides?: CallOverrides): Promise<boolean>;
    rewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
    segmentLength(overrides?: CallOverrides): Promise<BigNumber>;
    segmentPayment(overrides?: CallOverrides): Promise<BigNumber>;
    totalGameInterest(overrides?: CallOverrides): Promise<BigNumber>;
    totalGamePrincipal(overrides?: CallOverrides): Promise<BigNumber>;
    totalIncentiveAmount(overrides?: CallOverrides): Promise<BigNumber>;
    transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    winnerCount(overrides?: CallOverrides): Promise<BigNumber>;
    winners(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    adminFeeWithdraw(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    joinGame(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    earlyWithdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    makeDeposit(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unlockRenounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getNumberOfPlayers(overrides?: CallOverrides): Promise<BigNumber>;
    renounceOwnership(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemFromExternalPool(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getCurrentSegment(overrides?: CallOverrides): Promise<BigNumber>;
    isGameCompleted(overrides?: CallOverrides): Promise<boolean>;
    callStatic: {
        AAVE_POOL(overrides?: CallOverrides): Promise<BigNumber>;
        ATRI_CRYPTO_POOL(overrides?: CallOverrides): Promise<BigNumber>;
        NUM_AAVE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        NUM_ATRI_CRYPTO_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        activePlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
        adminFeeAmount(overrides?: CallOverrides): Promise<BigNumber>;
        adminWithdraw(overrides?: CallOverrides): Promise<boolean>;
        allowRenouncingOwnership(overrides?: CallOverrides): Promise<boolean>;
        curve(overrides?: CallOverrides): Promise<string>;
        curveRewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
        customFee(overrides?: CallOverrides): Promise<BigNumber>;
        daiToken(overrides?: CallOverrides): Promise<string>;
        earlyWithdrawalFee(overrides?: CallOverrides): Promise<BigNumber>;
        firstSegmentStart(overrides?: CallOverrides): Promise<BigNumber>;
        gauge(overrides?: CallOverrides): Promise<string>;
        impermanentLossShare(overrides?: CallOverrides): Promise<BigNumber>;
        inboundTokenIndex(overrides?: CallOverrides): Promise<BigNumber>;
        incentiveToken(overrides?: CallOverrides): Promise<string>;
        iterablePlayers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        lastSegment(overrides?: CallOverrides): Promise<BigNumber>;
        lpToken(overrides?: CallOverrides): Promise<string>;
        matic(overrides?: CallOverrides): Promise<string>;
        maxPlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<string>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        players(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            boolean,
            boolean,
            boolean,
            string,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            withdrawn: boolean;
            canRejoin: boolean;
            isWinner: boolean;
            addr: string;
            mostRecentSegmentPaid: BigNumber;
            amountPaid: BigNumber;
            winnerIndex: BigNumber;
        }>;
        pool(overrides?: CallOverrides): Promise<string>;
        poolType(overrides?: CallOverrides): Promise<BigNumber>;
        redeemed(overrides?: CallOverrides): Promise<boolean>;
        rewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
        segmentLength(overrides?: CallOverrides): Promise<BigNumber>;
        segmentPayment(overrides?: CallOverrides): Promise<BigNumber>;
        totalGameInterest(overrides?: CallOverrides): Promise<BigNumber>;
        totalGamePrincipal(overrides?: CallOverrides): Promise<BigNumber>;
        totalIncentiveAmount(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        winnerCount(overrides?: CallOverrides): Promise<BigNumber>;
        winners(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        pause(overrides?: CallOverrides): Promise<void>;
        unpause(overrides?: CallOverrides): Promise<void>;
        adminFeeWithdraw(overrides?: CallOverrides): Promise<void>;
        joinGame(_minAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        earlyWithdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        withdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        makeDeposit(_minAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        unlockRenounceOwnership(overrides?: CallOverrides): Promise<void>;
        getNumberOfPlayers(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: CallOverrides): Promise<void>;
        redeemFromExternalPool(_minAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        getCurrentSegment(overrides?: CallOverrides): Promise<BigNumber>;
        isGameCompleted(overrides?: CallOverrides): Promise<boolean>;
    };
    filters: {
        'AdminWithdrawal(address,uint256,uint256,uint256)'(admin?: PromiseOrValue<string> | null, totalGameInterest?: null, adminFeeAmount?: null, adminIncentiveAmount?: null): AdminWithdrawalEventFilter;
        AdminWithdrawal(admin?: PromiseOrValue<string> | null, totalGameInterest?: null, adminFeeAmount?: null, adminIncentiveAmount?: null): AdminWithdrawalEventFilter;
        'Deposit(address,uint256,uint256)'(player?: PromiseOrValue<string> | null, segment?: PromiseOrValue<BigNumberish> | null, amount?: null): DepositEventFilter;
        Deposit(player?: PromiseOrValue<string> | null, segment?: PromiseOrValue<BigNumberish> | null, amount?: null): DepositEventFilter;
        'EarlyWithdrawal(address,uint256,uint256)'(player?: PromiseOrValue<string> | null, amount?: null, totalGamePrincipal?: null): EarlyWithdrawalEventFilter;
        EarlyWithdrawal(player?: PromiseOrValue<string> | null, amount?: null, totalGamePrincipal?: null): EarlyWithdrawalEventFilter;
        'FundsRedeemedFromExternalPool(uint256,uint256,uint256,uint256,uint256,uint256)'(totalAmount?: null, totalGamePrincipal?: null, totalGameInterest?: null, rewards?: null, curveRewards?: null, totalIncentiveAmount?: null): FundsRedeemedFromExternalPoolEventFilter;
        FundsRedeemedFromExternalPool(totalAmount?: null, totalGamePrincipal?: null, totalGameInterest?: null, rewards?: null, curveRewards?: null, totalIncentiveAmount?: null): FundsRedeemedFromExternalPoolEventFilter;
        'JoinedGame(address,uint256)'(player?: PromiseOrValue<string> | null, amount?: null): JoinedGameEventFilter;
        JoinedGame(player?: PromiseOrValue<string> | null, amount?: null): JoinedGameEventFilter;
        'OwnershipTransferred(address,address)'(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter;
        'Paused(address)'(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        'Unpaused(address)'(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        'WinnersAnnouncement(address[])'(winners?: null): WinnersAnnouncementEventFilter;
        WinnersAnnouncement(winners?: null): WinnersAnnouncementEventFilter;
        'Withdrawal(address,uint256,uint256,uint256,uint256)'(player?: PromiseOrValue<string> | null, amount?: null, playerReward?: null, playerCurveReward?: null, playerIncentive?: null): WithdrawalEventFilter;
        Withdrawal(player?: PromiseOrValue<string> | null, amount?: null, playerReward?: null, playerCurveReward?: null, playerIncentive?: null): WithdrawalEventFilter;
    };
    estimateGas: {
        AAVE_POOL(overrides?: CallOverrides): Promise<BigNumber>;
        ATRI_CRYPTO_POOL(overrides?: CallOverrides): Promise<BigNumber>;
        NUM_AAVE_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        NUM_ATRI_CRYPTO_TOKENS(overrides?: CallOverrides): Promise<BigNumber>;
        activePlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
        adminFeeAmount(overrides?: CallOverrides): Promise<BigNumber>;
        adminWithdraw(overrides?: CallOverrides): Promise<BigNumber>;
        allowRenouncingOwnership(overrides?: CallOverrides): Promise<BigNumber>;
        curve(overrides?: CallOverrides): Promise<BigNumber>;
        curveRewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
        customFee(overrides?: CallOverrides): Promise<BigNumber>;
        daiToken(overrides?: CallOverrides): Promise<BigNumber>;
        earlyWithdrawalFee(overrides?: CallOverrides): Promise<BigNumber>;
        firstSegmentStart(overrides?: CallOverrides): Promise<BigNumber>;
        gauge(overrides?: CallOverrides): Promise<BigNumber>;
        impermanentLossShare(overrides?: CallOverrides): Promise<BigNumber>;
        inboundTokenIndex(overrides?: CallOverrides): Promise<BigNumber>;
        incentiveToken(overrides?: CallOverrides): Promise<BigNumber>;
        iterablePlayers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        lastSegment(overrides?: CallOverrides): Promise<BigNumber>;
        lpToken(overrides?: CallOverrides): Promise<BigNumber>;
        matic(overrides?: CallOverrides): Promise<BigNumber>;
        maxPlayersCount(overrides?: CallOverrides): Promise<BigNumber>;
        owner(overrides?: CallOverrides): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        players(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        pool(overrides?: CallOverrides): Promise<BigNumber>;
        poolType(overrides?: CallOverrides): Promise<BigNumber>;
        redeemed(overrides?: CallOverrides): Promise<BigNumber>;
        rewardsPerPlayer(overrides?: CallOverrides): Promise<BigNumber>;
        segmentLength(overrides?: CallOverrides): Promise<BigNumber>;
        segmentPayment(overrides?: CallOverrides): Promise<BigNumber>;
        totalGameInterest(overrides?: CallOverrides): Promise<BigNumber>;
        totalGamePrincipal(overrides?: CallOverrides): Promise<BigNumber>;
        totalIncentiveAmount(overrides?: CallOverrides): Promise<BigNumber>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        winnerCount(overrides?: CallOverrides): Promise<BigNumber>;
        winners(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        adminFeeWithdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        joinGame(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        earlyWithdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        makeDeposit(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unlockRenounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getNumberOfPlayers(overrides?: CallOverrides): Promise<BigNumber>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemFromExternalPool(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getCurrentSegment(overrides?: CallOverrides): Promise<BigNumber>;
        isGameCompleted(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        AAVE_POOL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ATRI_CRYPTO_POOL(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        NUM_AAVE_TOKENS(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        NUM_ATRI_CRYPTO_TOKENS(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        activePlayersCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        adminFeeAmount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        adminWithdraw(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowRenouncingOwnership(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        curve(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        curveRewardsPerPlayer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        customFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        daiToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        earlyWithdrawalFee(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        firstSegmentStart(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        gauge(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        impermanentLossShare(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        inboundTokenIndex(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        incentiveToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        iterablePlayers(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lastSegment(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        lpToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        matic(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        maxPlayersCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        owner(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        players(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pool(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolType(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeemed(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        rewardsPerPlayer(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        segmentLength(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        segmentPayment(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalGameInterest(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalGamePrincipal(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalIncentiveAmount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferOwnership(newOwner: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        winnerCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        winners(arg0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        adminFeeWithdraw(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        joinGame(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        earlyWithdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdraw(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        makeDeposit(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unlockRenounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getNumberOfPlayers(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        renounceOwnership(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemFromExternalPool(_minAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getCurrentSegment(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isGameCompleted(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
