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 declare namespace IHorizonStakingExtension {
    type AllocationStruct = {
        indexer: PromiseOrValue<string>;
        subgraphDeploymentID: PromiseOrValue<BytesLike>;
        tokens: PromiseOrValue<BigNumberish>;
        createdAtEpoch: PromiseOrValue<BigNumberish>;
        closedAtEpoch: PromiseOrValue<BigNumberish>;
        collectedFees: PromiseOrValue<BigNumberish>;
        __DEPRECATED_effectiveAllocation: PromiseOrValue<BigNumberish>;
        accRewardsPerAllocatedToken: PromiseOrValue<BigNumberish>;
        distributedRebates: PromiseOrValue<BigNumberish>;
    };
    type AllocationStructOutput = [
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        indexer: string;
        subgraphDeploymentID: string;
        tokens: BigNumber;
        createdAtEpoch: BigNumber;
        closedAtEpoch: BigNumber;
        collectedFees: BigNumber;
        __DEPRECATED_effectiveAllocation: BigNumber;
        accRewardsPerAllocatedToken: BigNumber;
        distributedRebates: BigNumber;
    };
}
export interface IHorizonStakingExtensionInterface extends utils.Interface {
    functions: {
        "__DEPRECATED_getThawingPeriod()": FunctionFragment;
        "closeAllocation(address,bytes32)": FunctionFragment;
        "collect(uint256,address)": FunctionFragment;
        "getAllocation(address)": FunctionFragment;
        "getAllocationData(address)": FunctionFragment;
        "getAllocationState(address)": FunctionFragment;
        "getIndexerStakedTokens(address)": FunctionFragment;
        "getSubgraphAllocatedTokens(bytes32)": FunctionFragment;
        "getSubgraphService()": FunctionFragment;
        "hasStake(address)": FunctionFragment;
        "isAllocation(address)": FunctionFragment;
        "isOperator(address,address)": FunctionFragment;
        "legacySlash(address,uint256,uint256,address)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "__DEPRECATED_getThawingPeriod" | "closeAllocation" | "collect" | "getAllocation" | "getAllocationData" | "getAllocationState" | "getIndexerStakedTokens" | "getSubgraphAllocatedTokens" | "getSubgraphService" | "hasStake" | "isAllocation" | "isOperator" | "legacySlash"): FunctionFragment;
    encodeFunctionData(functionFragment: "__DEPRECATED_getThawingPeriod", values?: undefined): string;
    encodeFunctionData(functionFragment: "closeAllocation", values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "collect", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getAllocation", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getAllocationData", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getAllocationState", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getIndexerStakedTokens", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "getSubgraphAllocatedTokens", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "getSubgraphService", values?: undefined): string;
    encodeFunctionData(functionFragment: "hasStake", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isAllocation", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "isOperator", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "legacySlash", values: [
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    decodeFunctionResult(functionFragment: "__DEPRECATED_getThawingPeriod", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "closeAllocation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAllocation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAllocationData", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getAllocationState", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getIndexerStakedTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getSubgraphAllocatedTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getSubgraphService", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasStake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isAllocation", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isOperator", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "legacySlash", data: BytesLike): Result;
    events: {
        "AllocationClosed(address,bytes32,uint256,uint256,address,address,bytes32,bool)": EventFragment;
        "RebateCollected(address,address,bytes32,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": EventFragment;
        "StakeSlashed(address,uint256,uint256,address)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AllocationClosed"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "RebateCollected"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "StakeSlashed"): EventFragment;
}
export interface AllocationClosedEventObject {
    indexer: string;
    subgraphDeploymentID: string;
    epoch: BigNumber;
    tokens: BigNumber;
    allocationID: string;
    sender: string;
    poi: string;
    isPublic: boolean;
}
export type AllocationClosedEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    BigNumber,
    string,
    string,
    string,
    boolean
], AllocationClosedEventObject>;
export type AllocationClosedEventFilter = TypedEventFilter<AllocationClosedEvent>;
export interface RebateCollectedEventObject {
    assetHolder: string;
    indexer: string;
    subgraphDeploymentID: string;
    allocationID: string;
    epoch: BigNumber;
    tokens: BigNumber;
    protocolTax: BigNumber;
    curationFees: BigNumber;
    queryFees: BigNumber;
    queryRebates: BigNumber;
    delegationRewards: BigNumber;
}
export type RebateCollectedEvent = TypedEvent<[
    string,
    string,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], RebateCollectedEventObject>;
export type RebateCollectedEventFilter = TypedEventFilter<RebateCollectedEvent>;
export interface StakeSlashedEventObject {
    indexer: string;
    tokens: BigNumber;
    reward: BigNumber;
    beneficiary: string;
}
export type StakeSlashedEvent = TypedEvent<[
    string,
    BigNumber,
    BigNumber,
    string
], StakeSlashedEventObject>;
export type StakeSlashedEventFilter = TypedEventFilter<StakeSlashedEvent>;
export interface IHorizonStakingExtension extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: IHorizonStakingExtensionInterface;
    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: {
        __DEPRECATED_getThawingPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
        closeAllocation(allocationID: PromiseOrValue<string>, poi: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collect(tokens: PromiseOrValue<BigNumberish>, allocationID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[IHorizonStakingExtension.AllocationStructOutput]>;
        getAllocationData(allocationId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            boolean,
            string,
            string,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            isActive: boolean;
            indexer: string;
            subgraphDeploymentId: string;
            tokens: BigNumber;
            accRewardsPerAllocatedToken: BigNumber;
            accRewardsPending: BigNumber;
        }>;
        getAllocationState(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[number]>;
        getIndexerStakedTokens(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getSubgraphAllocatedTokens(subgraphDeploymentId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getSubgraphService(overrides?: CallOverrides): Promise<[string]>;
        hasStake(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isOperator(operator: PromiseOrValue<string>, indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        legacySlash(indexer: PromiseOrValue<string>, tokens: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    __DEPRECATED_getThawingPeriod(overrides?: CallOverrides): Promise<BigNumber>;
    closeAllocation(allocationID: PromiseOrValue<string>, poi: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collect(tokens: PromiseOrValue<BigNumberish>, allocationID: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<IHorizonStakingExtension.AllocationStructOutput>;
    getAllocationData(allocationId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        boolean,
        string,
        string,
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        isActive: boolean;
        indexer: string;
        subgraphDeploymentId: string;
        tokens: BigNumber;
        accRewardsPerAllocatedToken: BigNumber;
        accRewardsPending: BigNumber;
    }>;
    getAllocationState(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
    getIndexerStakedTokens(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    getSubgraphAllocatedTokens(subgraphDeploymentId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
    getSubgraphService(overrides?: CallOverrides): Promise<string>;
    hasStake(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isOperator(operator: PromiseOrValue<string>, indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    legacySlash(indexer: PromiseOrValue<string>, tokens: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        __DEPRECATED_getThawingPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        closeAllocation(allocationID: PromiseOrValue<string>, poi: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        collect(tokens: PromiseOrValue<BigNumberish>, allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        getAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<IHorizonStakingExtension.AllocationStructOutput>;
        getAllocationData(allocationId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            boolean,
            string,
            string,
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            isActive: boolean;
            indexer: string;
            subgraphDeploymentId: string;
            tokens: BigNumber;
            accRewardsPerAllocatedToken: BigNumber;
            accRewardsPending: BigNumber;
        }>;
        getAllocationState(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<number>;
        getIndexerStakedTokens(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getSubgraphAllocatedTokens(subgraphDeploymentId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getSubgraphService(overrides?: CallOverrides): Promise<string>;
        hasStake(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isOperator(operator: PromiseOrValue<string>, indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        legacySlash(indexer: PromiseOrValue<string>, tokens: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, beneficiary: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
    };
    filters: {
        "AllocationClosed(address,bytes32,uint256,uint256,address,address,bytes32,bool)"(indexer?: PromiseOrValue<string> | null, subgraphDeploymentID?: PromiseOrValue<BytesLike> | null, epoch?: null, tokens?: null, allocationID?: PromiseOrValue<string> | null, sender?: null, poi?: null, isPublic?: null): AllocationClosedEventFilter;
        AllocationClosed(indexer?: PromiseOrValue<string> | null, subgraphDeploymentID?: PromiseOrValue<BytesLike> | null, epoch?: null, tokens?: null, allocationID?: PromiseOrValue<string> | null, sender?: null, poi?: null, isPublic?: null): AllocationClosedEventFilter;
        "RebateCollected(address,address,bytes32,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"(assetHolder?: null, indexer?: PromiseOrValue<string> | null, subgraphDeploymentID?: PromiseOrValue<BytesLike> | null, allocationID?: PromiseOrValue<string> | null, epoch?: null, tokens?: null, protocolTax?: null, curationFees?: null, queryFees?: null, queryRebates?: null, delegationRewards?: null): RebateCollectedEventFilter;
        RebateCollected(assetHolder?: null, indexer?: PromiseOrValue<string> | null, subgraphDeploymentID?: PromiseOrValue<BytesLike> | null, allocationID?: PromiseOrValue<string> | null, epoch?: null, tokens?: null, protocolTax?: null, curationFees?: null, queryFees?: null, queryRebates?: null, delegationRewards?: null): RebateCollectedEventFilter;
        "StakeSlashed(address,uint256,uint256,address)"(indexer?: PromiseOrValue<string> | null, tokens?: null, reward?: null, beneficiary?: null): StakeSlashedEventFilter;
        StakeSlashed(indexer?: PromiseOrValue<string> | null, tokens?: null, reward?: null, beneficiary?: null): StakeSlashedEventFilter;
    };
    estimateGas: {
        __DEPRECATED_getThawingPeriod(overrides?: CallOverrides): Promise<BigNumber>;
        closeAllocation(allocationID: PromiseOrValue<string>, poi: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collect(tokens: PromiseOrValue<BigNumberish>, allocationID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAllocationData(allocationId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getAllocationState(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getIndexerStakedTokens(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        getSubgraphAllocatedTokens(subgraphDeploymentId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getSubgraphService(overrides?: CallOverrides): Promise<BigNumber>;
        hasStake(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isOperator(operator: PromiseOrValue<string>, indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        legacySlash(indexer: PromiseOrValue<string>, tokens: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        __DEPRECATED_getThawingPeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        closeAllocation(allocationID: PromiseOrValue<string>, poi: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collect(tokens: PromiseOrValue<BigNumberish>, allocationID: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllocationData(allocationId: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getAllocationState(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getIndexerStakedTokens(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSubgraphAllocatedTokens(subgraphDeploymentId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getSubgraphService(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasStake(indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isAllocation(allocationID: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isOperator(operator: PromiseOrValue<string>, indexer: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        legacySlash(indexer: PromiseOrValue<string>, tokens: PromiseOrValue<BigNumberish>, reward: PromiseOrValue<BigNumberish>, beneficiary: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=IHorizonStakingExtension.d.ts.map