import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../../../common";
export declare namespace IHorizonStakingExtension {
    type AllocationStruct = {
        indexer: AddressLike;
        subgraphDeploymentID: BytesLike;
        tokens: BigNumberish;
        createdAtEpoch: BigNumberish;
        closedAtEpoch: BigNumberish;
        collectedFees: BigNumberish;
        __DEPRECATED_effectiveAllocation: BigNumberish;
        accRewardsPerAllocatedToken: BigNumberish;
        distributedRebates: BigNumberish;
    };
    type AllocationStructOutput = [
        indexer: string,
        subgraphDeploymentID: string,
        tokens: bigint,
        createdAtEpoch: bigint,
        closedAtEpoch: bigint,
        collectedFees: bigint,
        __DEPRECATED_effectiveAllocation: bigint,
        accRewardsPerAllocatedToken: bigint,
        distributedRebates: bigint
    ] & {
        indexer: string;
        subgraphDeploymentID: string;
        tokens: bigint;
        createdAtEpoch: bigint;
        closedAtEpoch: bigint;
        collectedFees: bigint;
        __DEPRECATED_effectiveAllocation: bigint;
        accRewardsPerAllocatedToken: bigint;
        distributedRebates: bigint;
    };
}
export interface IHorizonStakingExtensionInterface extends Interface {
    getFunction(nameOrSignature: "__DEPRECATED_getThawingPeriod" | "closeAllocation" | "collect" | "getAllocation" | "getAllocationData" | "getAllocationState" | "getIndexerStakedTokens" | "getSubgraphAllocatedTokens" | "getSubgraphService" | "hasStake" | "isAllocation" | "isOperator" | "legacySlash"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "AllocationClosed" | "RebateCollected" | "StakeSlashed"): EventFragment;
    encodeFunctionData(functionFragment: "__DEPRECATED_getThawingPeriod", values?: undefined): string;
    encodeFunctionData(functionFragment: "closeAllocation", values: [AddressLike, BytesLike]): string;
    encodeFunctionData(functionFragment: "collect", values: [BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "getAllocation", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getAllocationData", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getAllocationState", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getIndexerStakedTokens", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "getSubgraphAllocatedTokens", values: [BytesLike]): string;
    encodeFunctionData(functionFragment: "getSubgraphService", values?: undefined): string;
    encodeFunctionData(functionFragment: "hasStake", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "isAllocation", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "isOperator", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "legacySlash", values: [AddressLike, BigNumberish, BigNumberish, AddressLike]): 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;
}
export declare namespace AllocationClosedEvent {
    type InputTuple = [
        indexer: AddressLike,
        subgraphDeploymentID: BytesLike,
        epoch: BigNumberish,
        tokens: BigNumberish,
        allocationID: AddressLike,
        sender: AddressLike,
        poi: BytesLike,
        isPublic: boolean
    ];
    type OutputTuple = [
        indexer: string,
        subgraphDeploymentID: string,
        epoch: bigint,
        tokens: bigint,
        allocationID: string,
        sender: string,
        poi: string,
        isPublic: boolean
    ];
    interface OutputObject {
        indexer: string;
        subgraphDeploymentID: string;
        epoch: bigint;
        tokens: bigint;
        allocationID: string;
        sender: string;
        poi: string;
        isPublic: boolean;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace RebateCollectedEvent {
    type InputTuple = [
        assetHolder: AddressLike,
        indexer: AddressLike,
        subgraphDeploymentID: BytesLike,
        allocationID: AddressLike,
        epoch: BigNumberish,
        tokens: BigNumberish,
        protocolTax: BigNumberish,
        curationFees: BigNumberish,
        queryFees: BigNumberish,
        queryRebates: BigNumberish,
        delegationRewards: BigNumberish
    ];
    type OutputTuple = [
        assetHolder: string,
        indexer: string,
        subgraphDeploymentID: string,
        allocationID: string,
        epoch: bigint,
        tokens: bigint,
        protocolTax: bigint,
        curationFees: bigint,
        queryFees: bigint,
        queryRebates: bigint,
        delegationRewards: bigint
    ];
    interface OutputObject {
        assetHolder: string;
        indexer: string;
        subgraphDeploymentID: string;
        allocationID: string;
        epoch: bigint;
        tokens: bigint;
        protocolTax: bigint;
        curationFees: bigint;
        queryFees: bigint;
        queryRebates: bigint;
        delegationRewards: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace StakeSlashedEvent {
    type InputTuple = [
        indexer: AddressLike,
        tokens: BigNumberish,
        reward: BigNumberish,
        beneficiary: AddressLike
    ];
    type OutputTuple = [
        indexer: string,
        tokens: bigint,
        reward: bigint,
        beneficiary: string
    ];
    interface OutputObject {
        indexer: string;
        tokens: bigint;
        reward: bigint;
        beneficiary: string;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface IHorizonStakingExtension extends BaseContract {
    connect(runner?: ContractRunner | null): IHorizonStakingExtension;
    waitForDeployment(): Promise<this>;
    interface: IHorizonStakingExtensionInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    __DEPRECATED_getThawingPeriod: TypedContractMethod<[], [bigint], "view">;
    closeAllocation: TypedContractMethod<[
        allocationID: AddressLike,
        poi: BytesLike
    ], [
        void
    ], "nonpayable">;
    collect: TypedContractMethod<[
        tokens: BigNumberish,
        allocationID: AddressLike
    ], [
        void
    ], "nonpayable">;
    getAllocation: TypedContractMethod<[
        allocationID: AddressLike
    ], [
        IHorizonStakingExtension.AllocationStructOutput
    ], "view">;
    getAllocationData: TypedContractMethod<[
        allocationId: AddressLike
    ], [
        [
            boolean,
            string,
            string,
            bigint,
            bigint,
            bigint
        ] & {
            isActive: boolean;
            indexer: string;
            subgraphDeploymentId: string;
            tokens: bigint;
            accRewardsPerAllocatedToken: bigint;
            accRewardsPending: bigint;
        }
    ], "view">;
    getAllocationState: TypedContractMethod<[
        allocationID: AddressLike
    ], [
        bigint
    ], "view">;
    getIndexerStakedTokens: TypedContractMethod<[
        indexer: AddressLike
    ], [
        bigint
    ], "view">;
    getSubgraphAllocatedTokens: TypedContractMethod<[
        subgraphDeploymentId: BytesLike
    ], [
        bigint
    ], "view">;
    getSubgraphService: TypedContractMethod<[], [string], "view">;
    hasStake: TypedContractMethod<[indexer: AddressLike], [boolean], "view">;
    isAllocation: TypedContractMethod<[
        allocationID: AddressLike
    ], [
        boolean
    ], "view">;
    isOperator: TypedContractMethod<[
        operator: AddressLike,
        indexer: AddressLike
    ], [
        boolean
    ], "view">;
    legacySlash: TypedContractMethod<[
        indexer: AddressLike,
        tokens: BigNumberish,
        reward: BigNumberish,
        beneficiary: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "__DEPRECATED_getThawingPeriod"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "closeAllocation"): TypedContractMethod<[
        allocationID: AddressLike,
        poi: BytesLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "collect"): TypedContractMethod<[
        tokens: BigNumberish,
        allocationID: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getAllocation"): TypedContractMethod<[
        allocationID: AddressLike
    ], [
        IHorizonStakingExtension.AllocationStructOutput
    ], "view">;
    getFunction(nameOrSignature: "getAllocationData"): TypedContractMethod<[
        allocationId: AddressLike
    ], [
        [
            boolean,
            string,
            string,
            bigint,
            bigint,
            bigint
        ] & {
            isActive: boolean;
            indexer: string;
            subgraphDeploymentId: string;
            tokens: bigint;
            accRewardsPerAllocatedToken: bigint;
            accRewardsPending: bigint;
        }
    ], "view">;
    getFunction(nameOrSignature: "getAllocationState"): TypedContractMethod<[allocationID: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "getIndexerStakedTokens"): TypedContractMethod<[indexer: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "getSubgraphAllocatedTokens"): TypedContractMethod<[subgraphDeploymentId: BytesLike], [bigint], "view">;
    getFunction(nameOrSignature: "getSubgraphService"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "hasStake"): TypedContractMethod<[indexer: AddressLike], [boolean], "view">;
    getFunction(nameOrSignature: "isAllocation"): TypedContractMethod<[allocationID: AddressLike], [boolean], "view">;
    getFunction(nameOrSignature: "isOperator"): TypedContractMethod<[
        operator: AddressLike,
        indexer: AddressLike
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "legacySlash"): TypedContractMethod<[
        indexer: AddressLike,
        tokens: BigNumberish,
        reward: BigNumberish,
        beneficiary: AddressLike
    ], [
        void
    ], "nonpayable">;
    getEvent(key: "AllocationClosed"): TypedContractEvent<AllocationClosedEvent.InputTuple, AllocationClosedEvent.OutputTuple, AllocationClosedEvent.OutputObject>;
    getEvent(key: "RebateCollected"): TypedContractEvent<RebateCollectedEvent.InputTuple, RebateCollectedEvent.OutputTuple, RebateCollectedEvent.OutputObject>;
    getEvent(key: "StakeSlashed"): TypedContractEvent<StakeSlashedEvent.InputTuple, StakeSlashedEvent.OutputTuple, StakeSlashedEvent.OutputObject>;
    filters: {
        "AllocationClosed(address,bytes32,uint256,uint256,address,address,bytes32,bool)": TypedContractEvent<AllocationClosedEvent.InputTuple, AllocationClosedEvent.OutputTuple, AllocationClosedEvent.OutputObject>;
        AllocationClosed: TypedContractEvent<AllocationClosedEvent.InputTuple, AllocationClosedEvent.OutputTuple, AllocationClosedEvent.OutputObject>;
        "RebateCollected(address,address,bytes32,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": TypedContractEvent<RebateCollectedEvent.InputTuple, RebateCollectedEvent.OutputTuple, RebateCollectedEvent.OutputObject>;
        RebateCollected: TypedContractEvent<RebateCollectedEvent.InputTuple, RebateCollectedEvent.OutputTuple, RebateCollectedEvent.OutputObject>;
        "StakeSlashed(address,uint256,uint256,address)": TypedContractEvent<StakeSlashedEvent.InputTuple, StakeSlashedEvent.OutputTuple, StakeSlashedEvent.OutputObject>;
        StakeSlashed: TypedContractEvent<StakeSlashedEvent.InputTuple, StakeSlashedEvent.OutputTuple, StakeSlashedEvent.OutputObject>;
    };
}
//# sourceMappingURL=IHorizonStakingExtension.d.ts.map