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 interface IHorizonStakingMainInterface extends Interface {
    getFunction(nameOrSignature: "acceptProvisionParameters" | "addToDelegationPool" | "addToProvision" | "clearThawingPeriod" | "delegate(address,uint256)" | "delegate(address,address,uint256,uint256)" | "deprovision" | "getStakingExtension" | "isAuthorized" | "provision" | "provisionLocked" | "redelegate" | "reprovision" | "setAllowedLockedVerifier" | "setDelegationFeeCut" | "setDelegationSlashingEnabled" | "setMaxThawingPeriod" | "setOperator" | "setOperatorLocked" | "setProvisionParameters" | "slash" | "stake" | "stakeTo" | "stakeToProvision" | "thaw" | "undelegate(address,uint256)" | "undelegate(address,address,uint256)" | "unstake" | "withdraw" | "withdrawDelegated(address,address,uint256)" | "withdrawDelegated(address,address)"): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: "AllowedLockedVerifierSet" | "DelegatedTokensWithdrawn" | "DelegationFeeCutSet" | "DelegationSlashed" | "DelegationSlashingEnabled" | "DelegationSlashingSkipped" | "HorizonStakeLocked" | "HorizonStakeWithdrawn" | "MaxThawingPeriodSet" | "OperatorSet" | "ProvisionCreated" | "ProvisionIncreased" | "ProvisionParametersSet" | "ProvisionParametersStaged" | "ProvisionSlashed" | "ProvisionThawed" | "StakeDelegatedWithdrawn" | "ThawRequestCreated" | "ThawRequestFulfilled" | "ThawRequestsFulfilled" | "ThawingPeriodCleared" | "TokensDelegated" | "TokensDeprovisioned" | "TokensToDelegationPoolAdded" | "TokensUndelegated" | "VerifierTokensSent"): EventFragment;
    encodeFunctionData(functionFragment: "acceptProvisionParameters", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "addToDelegationPool", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "addToProvision", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "clearThawingPeriod", values?: undefined): string;
    encodeFunctionData(functionFragment: "delegate(address,uint256)", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "delegate(address,address,uint256,uint256)", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "deprovision", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "getStakingExtension", values?: undefined): string;
    encodeFunctionData(functionFragment: "isAuthorized", values: [AddressLike, AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "provision", values: [
        AddressLike,
        AddressLike,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "provisionLocked", values: [
        AddressLike,
        AddressLike,
        BigNumberish,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "redelegate", values: [
        AddressLike,
        AddressLike,
        AddressLike,
        AddressLike,
        BigNumberish,
        BigNumberish
    ]): string;
    encodeFunctionData(functionFragment: "reprovision", values: [AddressLike, AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setAllowedLockedVerifier", values: [AddressLike, boolean]): string;
    encodeFunctionData(functionFragment: "setDelegationFeeCut", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "setDelegationSlashingEnabled", values?: undefined): string;
    encodeFunctionData(functionFragment: "setMaxThawingPeriod", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "setOperator", values: [AddressLike, AddressLike, boolean]): string;
    encodeFunctionData(functionFragment: "setOperatorLocked", values: [AddressLike, AddressLike, boolean]): string;
    encodeFunctionData(functionFragment: "setProvisionParameters", values: [AddressLike, AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "slash", values: [AddressLike, BigNumberish, BigNumberish, AddressLike]): string;
    encodeFunctionData(functionFragment: "stake", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "stakeTo", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "stakeToProvision", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "thaw", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "undelegate(address,uint256)", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "undelegate(address,address,uint256)", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "unstake", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "withdraw", values?: undefined): string;
    encodeFunctionData(functionFragment: "withdrawDelegated(address,address,uint256)", values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "withdrawDelegated(address,address)", values: [AddressLike, AddressLike]): string;
    decodeFunctionResult(functionFragment: "acceptProvisionParameters", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addToDelegationPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addToProvision", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "clearThawingPeriod", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delegate(address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "delegate(address,address,uint256,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "deprovision", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getStakingExtension", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isAuthorized", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "provision", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "provisionLocked", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "redelegate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "reprovision", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setAllowedLockedVerifier", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDelegationFeeCut", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setDelegationSlashingEnabled", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setMaxThawingPeriod", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setOperator", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setOperatorLocked", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setProvisionParameters", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "slash", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeTo", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "stakeToProvision", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "thaw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "undelegate(address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "undelegate(address,address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unstake", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawDelegated(address,address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawDelegated(address,address)", data: BytesLike): Result;
}
export declare namespace AllowedLockedVerifierSetEvent {
    type InputTuple = [verifier: AddressLike, allowed: boolean];
    type OutputTuple = [verifier: string, allowed: boolean];
    interface OutputObject {
        verifier: string;
        allowed: boolean;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegatedTokensWithdrawnEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        delegator: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        delegator: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        delegator: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegationFeeCutSetEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        paymentType: BigNumberish,
        feeCut: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        paymentType: bigint,
        feeCut: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        paymentType: bigint;
        feeCut: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegationSlashedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegationSlashingEnabledEvent {
    type InputTuple = [];
    type OutputTuple = [];
    interface OutputObject {
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace DelegationSlashingSkippedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace HorizonStakeLockedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        tokens: BigNumberish,
        until: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        tokens: bigint,
        until: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        tokens: bigint;
        until: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace HorizonStakeWithdrawnEvent {
    type InputTuple = [serviceProvider: AddressLike, tokens: BigNumberish];
    type OutputTuple = [serviceProvider: string, tokens: bigint];
    interface OutputObject {
        serviceProvider: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace MaxThawingPeriodSetEvent {
    type InputTuple = [maxThawingPeriod: BigNumberish];
    type OutputTuple = [maxThawingPeriod: bigint];
    interface OutputObject {
        maxThawingPeriod: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace OperatorSetEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        operator: AddressLike,
        allowed: boolean
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        operator: string,
        allowed: boolean
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        operator: string;
        allowed: boolean;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionCreatedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint,
        maxVerifierCut: bigint,
        thawingPeriod: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
        maxVerifierCut: bigint;
        thawingPeriod: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionIncreasedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionParametersSetEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        maxVerifierCut: bigint,
        thawingPeriod: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        maxVerifierCut: bigint;
        thawingPeriod: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionParametersStagedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        maxVerifierCut: bigint,
        thawingPeriod: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        maxVerifierCut: bigint;
        thawingPeriod: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionSlashedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ProvisionThawedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace StakeDelegatedWithdrawnEvent {
    type InputTuple = [
        indexer: AddressLike,
        delegator: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        indexer: string,
        delegator: string,
        tokens: bigint
    ];
    interface OutputObject {
        indexer: string;
        delegator: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ThawRequestCreatedEvent {
    type InputTuple = [
        requestType: BigNumberish,
        serviceProvider: AddressLike,
        verifier: AddressLike,
        owner: AddressLike,
        shares: BigNumberish,
        thawingUntil: BigNumberish,
        thawRequestId: BytesLike,
        nonce: BigNumberish
    ];
    type OutputTuple = [
        requestType: bigint,
        serviceProvider: string,
        verifier: string,
        owner: string,
        shares: bigint,
        thawingUntil: bigint,
        thawRequestId: string,
        nonce: bigint
    ];
    interface OutputObject {
        requestType: bigint;
        serviceProvider: string;
        verifier: string;
        owner: string;
        shares: bigint;
        thawingUntil: bigint;
        thawRequestId: string;
        nonce: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ThawRequestFulfilledEvent {
    type InputTuple = [
        requestType: BigNumberish,
        thawRequestId: BytesLike,
        tokens: BigNumberish,
        shares: BigNumberish,
        thawingUntil: BigNumberish,
        valid: boolean
    ];
    type OutputTuple = [
        requestType: bigint,
        thawRequestId: string,
        tokens: bigint,
        shares: bigint,
        thawingUntil: bigint,
        valid: boolean
    ];
    interface OutputObject {
        requestType: bigint;
        thawRequestId: string;
        tokens: bigint;
        shares: bigint;
        thawingUntil: bigint;
        valid: boolean;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ThawRequestsFulfilledEvent {
    type InputTuple = [
        requestType: BigNumberish,
        serviceProvider: AddressLike,
        verifier: AddressLike,
        owner: AddressLike,
        thawRequestsFulfilled: BigNumberish,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        requestType: bigint,
        serviceProvider: string,
        verifier: string,
        owner: string,
        thawRequestsFulfilled: bigint,
        tokens: bigint
    ];
    interface OutputObject {
        requestType: bigint;
        serviceProvider: string;
        verifier: string;
        owner: string;
        thawRequestsFulfilled: bigint;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace ThawingPeriodClearedEvent {
    type InputTuple = [];
    type OutputTuple = [];
    interface OutputObject {
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TokensDelegatedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        delegator: AddressLike,
        tokens: BigNumberish,
        shares: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        delegator: string,
        tokens: bigint,
        shares: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        delegator: string;
        tokens: bigint;
        shares: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TokensDeprovisionedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TokensToDelegationPoolAddedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TokensUndelegatedEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        delegator: AddressLike,
        tokens: BigNumberish,
        shares: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        delegator: string,
        tokens: bigint,
        shares: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        delegator: string;
        tokens: bigint;
        shares: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace VerifierTokensSentEvent {
    type InputTuple = [
        serviceProvider: AddressLike,
        verifier: AddressLike,
        destination: AddressLike,
        tokens: BigNumberish
    ];
    type OutputTuple = [
        serviceProvider: string,
        verifier: string,
        destination: string,
        tokens: bigint
    ];
    interface OutputObject {
        serviceProvider: string;
        verifier: string;
        destination: string;
        tokens: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface IHorizonStakingMain extends BaseContract {
    connect(runner?: ContractRunner | null): IHorizonStakingMain;
    waitForDeployment(): Promise<this>;
    interface: IHorizonStakingMainInterface;
    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>;
    acceptProvisionParameters: TypedContractMethod<[
        serviceProvider: AddressLike
    ], [
        void
    ], "nonpayable">;
    addToDelegationPool: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    addToProvision: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    clearThawingPeriod: TypedContractMethod<[], [void], "nonpayable">;
    "delegate(address,uint256)": TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    "delegate(address,address,uint256,uint256)": TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        minSharesOut: BigNumberish
    ], [
        void
    ], "nonpayable">;
    deprovision: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getStakingExtension: TypedContractMethod<[], [string], "view">;
    isAuthorized: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        operator: AddressLike
    ], [
        boolean
    ], "view">;
    provision: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    provisionLocked: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    redelegate: TypedContractMethod<[
        oldServiceProvider: AddressLike,
        oldVerifier: AddressLike,
        newServiceProvider: AddressLike,
        newVerifier: AddressLike,
        minSharesForNewProvider: BigNumberish,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    reprovision: TypedContractMethod<[
        serviceProvider: AddressLike,
        oldVerifier: AddressLike,
        newVerifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setAllowedLockedVerifier: TypedContractMethod<[
        verifier: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    setDelegationFeeCut: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        paymentType: BigNumberish,
        feeCut: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setDelegationSlashingEnabled: TypedContractMethod<[], [void], "nonpayable">;
    setMaxThawingPeriod: TypedContractMethod<[
        maxThawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    setOperator: TypedContractMethod<[
        verifier: AddressLike,
        operator: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    setOperatorLocked: TypedContractMethod<[
        verifier: AddressLike,
        operator: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    setProvisionParameters: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    slash: TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish,
        tokensVerifier: BigNumberish,
        verifierDestination: AddressLike
    ], [
        void
    ], "nonpayable">;
    stake: TypedContractMethod<[tokens: BigNumberish], [void], "nonpayable">;
    stakeTo: TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    stakeToProvision: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    thaw: TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        string
    ], "nonpayable">;
    "undelegate(address,uint256)": TypedContractMethod<[
        serviceProvider: AddressLike,
        shares: BigNumberish
    ], [
        void
    ], "nonpayable">;
    "undelegate(address,address,uint256)": TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        shares: BigNumberish
    ], [
        string
    ], "nonpayable">;
    unstake: TypedContractMethod<[tokens: BigNumberish], [void], "nonpayable">;
    withdraw: TypedContractMethod<[], [void], "nonpayable">;
    "withdrawDelegated(address,address,uint256)": TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    "withdrawDelegated(address,address)": TypedContractMethod<[
        serviceProvider: AddressLike,
        deprecated: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "acceptProvisionParameters"): TypedContractMethod<[serviceProvider: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "addToDelegationPool"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "addToProvision"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "clearThawingPeriod"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "delegate(address,uint256)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "delegate(address,address,uint256,uint256)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        minSharesOut: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "deprovision"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "getStakingExtension"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "isAuthorized"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        operator: AddressLike
    ], [
        boolean
    ], "view">;
    getFunction(nameOrSignature: "provision"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "provisionLocked"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "redelegate"): TypedContractMethod<[
        oldServiceProvider: AddressLike,
        oldVerifier: AddressLike,
        newServiceProvider: AddressLike,
        newVerifier: AddressLike,
        minSharesForNewProvider: BigNumberish,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "reprovision"): TypedContractMethod<[
        serviceProvider: AddressLike,
        oldVerifier: AddressLike,
        newVerifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setAllowedLockedVerifier"): TypedContractMethod<[
        verifier: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setDelegationFeeCut"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        paymentType: BigNumberish,
        feeCut: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setDelegationSlashingEnabled"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "setMaxThawingPeriod"): TypedContractMethod<[
        maxThawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setOperator"): TypedContractMethod<[
        verifier: AddressLike,
        operator: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setOperatorLocked"): TypedContractMethod<[
        verifier: AddressLike,
        operator: AddressLike,
        allowed: boolean
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "setProvisionParameters"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        maxVerifierCut: BigNumberish,
        thawingPeriod: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "slash"): TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish,
        tokensVerifier: BigNumberish,
        verifierDestination: AddressLike
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "stake"): TypedContractMethod<[tokens: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "stakeTo"): TypedContractMethod<[
        serviceProvider: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "stakeToProvision"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "thaw"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        tokens: BigNumberish
    ], [
        string
    ], "nonpayable">;
    getFunction(nameOrSignature: "undelegate(address,uint256)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        shares: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "undelegate(address,address,uint256)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        shares: BigNumberish
    ], [
        string
    ], "nonpayable">;
    getFunction(nameOrSignature: "unstake"): TypedContractMethod<[tokens: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "withdraw"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "withdrawDelegated(address,address,uint256)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        verifier: AddressLike,
        nThawRequests: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "withdrawDelegated(address,address)"): TypedContractMethod<[
        serviceProvider: AddressLike,
        deprecated: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    getEvent(key: "AllowedLockedVerifierSet"): TypedContractEvent<AllowedLockedVerifierSetEvent.InputTuple, AllowedLockedVerifierSetEvent.OutputTuple, AllowedLockedVerifierSetEvent.OutputObject>;
    getEvent(key: "DelegatedTokensWithdrawn"): TypedContractEvent<DelegatedTokensWithdrawnEvent.InputTuple, DelegatedTokensWithdrawnEvent.OutputTuple, DelegatedTokensWithdrawnEvent.OutputObject>;
    getEvent(key: "DelegationFeeCutSet"): TypedContractEvent<DelegationFeeCutSetEvent.InputTuple, DelegationFeeCutSetEvent.OutputTuple, DelegationFeeCutSetEvent.OutputObject>;
    getEvent(key: "DelegationSlashed"): TypedContractEvent<DelegationSlashedEvent.InputTuple, DelegationSlashedEvent.OutputTuple, DelegationSlashedEvent.OutputObject>;
    getEvent(key: "DelegationSlashingEnabled"): TypedContractEvent<DelegationSlashingEnabledEvent.InputTuple, DelegationSlashingEnabledEvent.OutputTuple, DelegationSlashingEnabledEvent.OutputObject>;
    getEvent(key: "DelegationSlashingSkipped"): TypedContractEvent<DelegationSlashingSkippedEvent.InputTuple, DelegationSlashingSkippedEvent.OutputTuple, DelegationSlashingSkippedEvent.OutputObject>;
    getEvent(key: "HorizonStakeLocked"): TypedContractEvent<HorizonStakeLockedEvent.InputTuple, HorizonStakeLockedEvent.OutputTuple, HorizonStakeLockedEvent.OutputObject>;
    getEvent(key: "HorizonStakeWithdrawn"): TypedContractEvent<HorizonStakeWithdrawnEvent.InputTuple, HorizonStakeWithdrawnEvent.OutputTuple, HorizonStakeWithdrawnEvent.OutputObject>;
    getEvent(key: "MaxThawingPeriodSet"): TypedContractEvent<MaxThawingPeriodSetEvent.InputTuple, MaxThawingPeriodSetEvent.OutputTuple, MaxThawingPeriodSetEvent.OutputObject>;
    getEvent(key: "OperatorSet"): TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
    getEvent(key: "ProvisionCreated"): TypedContractEvent<ProvisionCreatedEvent.InputTuple, ProvisionCreatedEvent.OutputTuple, ProvisionCreatedEvent.OutputObject>;
    getEvent(key: "ProvisionIncreased"): TypedContractEvent<ProvisionIncreasedEvent.InputTuple, ProvisionIncreasedEvent.OutputTuple, ProvisionIncreasedEvent.OutputObject>;
    getEvent(key: "ProvisionParametersSet"): TypedContractEvent<ProvisionParametersSetEvent.InputTuple, ProvisionParametersSetEvent.OutputTuple, ProvisionParametersSetEvent.OutputObject>;
    getEvent(key: "ProvisionParametersStaged"): TypedContractEvent<ProvisionParametersStagedEvent.InputTuple, ProvisionParametersStagedEvent.OutputTuple, ProvisionParametersStagedEvent.OutputObject>;
    getEvent(key: "ProvisionSlashed"): TypedContractEvent<ProvisionSlashedEvent.InputTuple, ProvisionSlashedEvent.OutputTuple, ProvisionSlashedEvent.OutputObject>;
    getEvent(key: "ProvisionThawed"): TypedContractEvent<ProvisionThawedEvent.InputTuple, ProvisionThawedEvent.OutputTuple, ProvisionThawedEvent.OutputObject>;
    getEvent(key: "StakeDelegatedWithdrawn"): TypedContractEvent<StakeDelegatedWithdrawnEvent.InputTuple, StakeDelegatedWithdrawnEvent.OutputTuple, StakeDelegatedWithdrawnEvent.OutputObject>;
    getEvent(key: "ThawRequestCreated"): TypedContractEvent<ThawRequestCreatedEvent.InputTuple, ThawRequestCreatedEvent.OutputTuple, ThawRequestCreatedEvent.OutputObject>;
    getEvent(key: "ThawRequestFulfilled"): TypedContractEvent<ThawRequestFulfilledEvent.InputTuple, ThawRequestFulfilledEvent.OutputTuple, ThawRequestFulfilledEvent.OutputObject>;
    getEvent(key: "ThawRequestsFulfilled"): TypedContractEvent<ThawRequestsFulfilledEvent.InputTuple, ThawRequestsFulfilledEvent.OutputTuple, ThawRequestsFulfilledEvent.OutputObject>;
    getEvent(key: "ThawingPeriodCleared"): TypedContractEvent<ThawingPeriodClearedEvent.InputTuple, ThawingPeriodClearedEvent.OutputTuple, ThawingPeriodClearedEvent.OutputObject>;
    getEvent(key: "TokensDelegated"): TypedContractEvent<TokensDelegatedEvent.InputTuple, TokensDelegatedEvent.OutputTuple, TokensDelegatedEvent.OutputObject>;
    getEvent(key: "TokensDeprovisioned"): TypedContractEvent<TokensDeprovisionedEvent.InputTuple, TokensDeprovisionedEvent.OutputTuple, TokensDeprovisionedEvent.OutputObject>;
    getEvent(key: "TokensToDelegationPoolAdded"): TypedContractEvent<TokensToDelegationPoolAddedEvent.InputTuple, TokensToDelegationPoolAddedEvent.OutputTuple, TokensToDelegationPoolAddedEvent.OutputObject>;
    getEvent(key: "TokensUndelegated"): TypedContractEvent<TokensUndelegatedEvent.InputTuple, TokensUndelegatedEvent.OutputTuple, TokensUndelegatedEvent.OutputObject>;
    getEvent(key: "VerifierTokensSent"): TypedContractEvent<VerifierTokensSentEvent.InputTuple, VerifierTokensSentEvent.OutputTuple, VerifierTokensSentEvent.OutputObject>;
    filters: {
        "AllowedLockedVerifierSet(address,bool)": TypedContractEvent<AllowedLockedVerifierSetEvent.InputTuple, AllowedLockedVerifierSetEvent.OutputTuple, AllowedLockedVerifierSetEvent.OutputObject>;
        AllowedLockedVerifierSet: TypedContractEvent<AllowedLockedVerifierSetEvent.InputTuple, AllowedLockedVerifierSetEvent.OutputTuple, AllowedLockedVerifierSetEvent.OutputObject>;
        "DelegatedTokensWithdrawn(address,address,address,uint256)": TypedContractEvent<DelegatedTokensWithdrawnEvent.InputTuple, DelegatedTokensWithdrawnEvent.OutputTuple, DelegatedTokensWithdrawnEvent.OutputObject>;
        DelegatedTokensWithdrawn: TypedContractEvent<DelegatedTokensWithdrawnEvent.InputTuple, DelegatedTokensWithdrawnEvent.OutputTuple, DelegatedTokensWithdrawnEvent.OutputObject>;
        "DelegationFeeCutSet(address,address,uint8,uint256)": TypedContractEvent<DelegationFeeCutSetEvent.InputTuple, DelegationFeeCutSetEvent.OutputTuple, DelegationFeeCutSetEvent.OutputObject>;
        DelegationFeeCutSet: TypedContractEvent<DelegationFeeCutSetEvent.InputTuple, DelegationFeeCutSetEvent.OutputTuple, DelegationFeeCutSetEvent.OutputObject>;
        "DelegationSlashed(address,address,uint256)": TypedContractEvent<DelegationSlashedEvent.InputTuple, DelegationSlashedEvent.OutputTuple, DelegationSlashedEvent.OutputObject>;
        DelegationSlashed: TypedContractEvent<DelegationSlashedEvent.InputTuple, DelegationSlashedEvent.OutputTuple, DelegationSlashedEvent.OutputObject>;
        "DelegationSlashingEnabled()": TypedContractEvent<DelegationSlashingEnabledEvent.InputTuple, DelegationSlashingEnabledEvent.OutputTuple, DelegationSlashingEnabledEvent.OutputObject>;
        DelegationSlashingEnabled: TypedContractEvent<DelegationSlashingEnabledEvent.InputTuple, DelegationSlashingEnabledEvent.OutputTuple, DelegationSlashingEnabledEvent.OutputObject>;
        "DelegationSlashingSkipped(address,address,uint256)": TypedContractEvent<DelegationSlashingSkippedEvent.InputTuple, DelegationSlashingSkippedEvent.OutputTuple, DelegationSlashingSkippedEvent.OutputObject>;
        DelegationSlashingSkipped: TypedContractEvent<DelegationSlashingSkippedEvent.InputTuple, DelegationSlashingSkippedEvent.OutputTuple, DelegationSlashingSkippedEvent.OutputObject>;
        "HorizonStakeLocked(address,uint256,uint256)": TypedContractEvent<HorizonStakeLockedEvent.InputTuple, HorizonStakeLockedEvent.OutputTuple, HorizonStakeLockedEvent.OutputObject>;
        HorizonStakeLocked: TypedContractEvent<HorizonStakeLockedEvent.InputTuple, HorizonStakeLockedEvent.OutputTuple, HorizonStakeLockedEvent.OutputObject>;
        "HorizonStakeWithdrawn(address,uint256)": TypedContractEvent<HorizonStakeWithdrawnEvent.InputTuple, HorizonStakeWithdrawnEvent.OutputTuple, HorizonStakeWithdrawnEvent.OutputObject>;
        HorizonStakeWithdrawn: TypedContractEvent<HorizonStakeWithdrawnEvent.InputTuple, HorizonStakeWithdrawnEvent.OutputTuple, HorizonStakeWithdrawnEvent.OutputObject>;
        "MaxThawingPeriodSet(uint64)": TypedContractEvent<MaxThawingPeriodSetEvent.InputTuple, MaxThawingPeriodSetEvent.OutputTuple, MaxThawingPeriodSetEvent.OutputObject>;
        MaxThawingPeriodSet: TypedContractEvent<MaxThawingPeriodSetEvent.InputTuple, MaxThawingPeriodSetEvent.OutputTuple, MaxThawingPeriodSetEvent.OutputObject>;
        "OperatorSet(address,address,address,bool)": TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
        OperatorSet: TypedContractEvent<OperatorSetEvent.InputTuple, OperatorSetEvent.OutputTuple, OperatorSetEvent.OutputObject>;
        "ProvisionCreated(address,address,uint256,uint32,uint64)": TypedContractEvent<ProvisionCreatedEvent.InputTuple, ProvisionCreatedEvent.OutputTuple, ProvisionCreatedEvent.OutputObject>;
        ProvisionCreated: TypedContractEvent<ProvisionCreatedEvent.InputTuple, ProvisionCreatedEvent.OutputTuple, ProvisionCreatedEvent.OutputObject>;
        "ProvisionIncreased(address,address,uint256)": TypedContractEvent<ProvisionIncreasedEvent.InputTuple, ProvisionIncreasedEvent.OutputTuple, ProvisionIncreasedEvent.OutputObject>;
        ProvisionIncreased: TypedContractEvent<ProvisionIncreasedEvent.InputTuple, ProvisionIncreasedEvent.OutputTuple, ProvisionIncreasedEvent.OutputObject>;
        "ProvisionParametersSet(address,address,uint32,uint64)": TypedContractEvent<ProvisionParametersSetEvent.InputTuple, ProvisionParametersSetEvent.OutputTuple, ProvisionParametersSetEvent.OutputObject>;
        ProvisionParametersSet: TypedContractEvent<ProvisionParametersSetEvent.InputTuple, ProvisionParametersSetEvent.OutputTuple, ProvisionParametersSetEvent.OutputObject>;
        "ProvisionParametersStaged(address,address,uint32,uint64)": TypedContractEvent<ProvisionParametersStagedEvent.InputTuple, ProvisionParametersStagedEvent.OutputTuple, ProvisionParametersStagedEvent.OutputObject>;
        ProvisionParametersStaged: TypedContractEvent<ProvisionParametersStagedEvent.InputTuple, ProvisionParametersStagedEvent.OutputTuple, ProvisionParametersStagedEvent.OutputObject>;
        "ProvisionSlashed(address,address,uint256)": TypedContractEvent<ProvisionSlashedEvent.InputTuple, ProvisionSlashedEvent.OutputTuple, ProvisionSlashedEvent.OutputObject>;
        ProvisionSlashed: TypedContractEvent<ProvisionSlashedEvent.InputTuple, ProvisionSlashedEvent.OutputTuple, ProvisionSlashedEvent.OutputObject>;
        "ProvisionThawed(address,address,uint256)": TypedContractEvent<ProvisionThawedEvent.InputTuple, ProvisionThawedEvent.OutputTuple, ProvisionThawedEvent.OutputObject>;
        ProvisionThawed: TypedContractEvent<ProvisionThawedEvent.InputTuple, ProvisionThawedEvent.OutputTuple, ProvisionThawedEvent.OutputObject>;
        "StakeDelegatedWithdrawn(address,address,uint256)": TypedContractEvent<StakeDelegatedWithdrawnEvent.InputTuple, StakeDelegatedWithdrawnEvent.OutputTuple, StakeDelegatedWithdrawnEvent.OutputObject>;
        StakeDelegatedWithdrawn: TypedContractEvent<StakeDelegatedWithdrawnEvent.InputTuple, StakeDelegatedWithdrawnEvent.OutputTuple, StakeDelegatedWithdrawnEvent.OutputObject>;
        "ThawRequestCreated(uint8,address,address,address,uint256,uint64,bytes32,uint256)": TypedContractEvent<ThawRequestCreatedEvent.InputTuple, ThawRequestCreatedEvent.OutputTuple, ThawRequestCreatedEvent.OutputObject>;
        ThawRequestCreated: TypedContractEvent<ThawRequestCreatedEvent.InputTuple, ThawRequestCreatedEvent.OutputTuple, ThawRequestCreatedEvent.OutputObject>;
        "ThawRequestFulfilled(uint8,bytes32,uint256,uint256,uint64,bool)": TypedContractEvent<ThawRequestFulfilledEvent.InputTuple, ThawRequestFulfilledEvent.OutputTuple, ThawRequestFulfilledEvent.OutputObject>;
        ThawRequestFulfilled: TypedContractEvent<ThawRequestFulfilledEvent.InputTuple, ThawRequestFulfilledEvent.OutputTuple, ThawRequestFulfilledEvent.OutputObject>;
        "ThawRequestsFulfilled(uint8,address,address,address,uint256,uint256)": TypedContractEvent<ThawRequestsFulfilledEvent.InputTuple, ThawRequestsFulfilledEvent.OutputTuple, ThawRequestsFulfilledEvent.OutputObject>;
        ThawRequestsFulfilled: TypedContractEvent<ThawRequestsFulfilledEvent.InputTuple, ThawRequestsFulfilledEvent.OutputTuple, ThawRequestsFulfilledEvent.OutputObject>;
        "ThawingPeriodCleared()": TypedContractEvent<ThawingPeriodClearedEvent.InputTuple, ThawingPeriodClearedEvent.OutputTuple, ThawingPeriodClearedEvent.OutputObject>;
        ThawingPeriodCleared: TypedContractEvent<ThawingPeriodClearedEvent.InputTuple, ThawingPeriodClearedEvent.OutputTuple, ThawingPeriodClearedEvent.OutputObject>;
        "TokensDelegated(address,address,address,uint256,uint256)": TypedContractEvent<TokensDelegatedEvent.InputTuple, TokensDelegatedEvent.OutputTuple, TokensDelegatedEvent.OutputObject>;
        TokensDelegated: TypedContractEvent<TokensDelegatedEvent.InputTuple, TokensDelegatedEvent.OutputTuple, TokensDelegatedEvent.OutputObject>;
        "TokensDeprovisioned(address,address,uint256)": TypedContractEvent<TokensDeprovisionedEvent.InputTuple, TokensDeprovisionedEvent.OutputTuple, TokensDeprovisionedEvent.OutputObject>;
        TokensDeprovisioned: TypedContractEvent<TokensDeprovisionedEvent.InputTuple, TokensDeprovisionedEvent.OutputTuple, TokensDeprovisionedEvent.OutputObject>;
        "TokensToDelegationPoolAdded(address,address,uint256)": TypedContractEvent<TokensToDelegationPoolAddedEvent.InputTuple, TokensToDelegationPoolAddedEvent.OutputTuple, TokensToDelegationPoolAddedEvent.OutputObject>;
        TokensToDelegationPoolAdded: TypedContractEvent<TokensToDelegationPoolAddedEvent.InputTuple, TokensToDelegationPoolAddedEvent.OutputTuple, TokensToDelegationPoolAddedEvent.OutputObject>;
        "TokensUndelegated(address,address,address,uint256,uint256)": TypedContractEvent<TokensUndelegatedEvent.InputTuple, TokensUndelegatedEvent.OutputTuple, TokensUndelegatedEvent.OutputObject>;
        TokensUndelegated: TypedContractEvent<TokensUndelegatedEvent.InputTuple, TokensUndelegatedEvent.OutputTuple, TokensUndelegatedEvent.OutputObject>;
        "VerifierTokensSent(address,address,address,uint256)": TypedContractEvent<VerifierTokensSentEvent.InputTuple, VerifierTokensSentEvent.OutputTuple, VerifierTokensSentEvent.OutputObject>;
        VerifierTokensSent: TypedContractEvent<VerifierTokensSentEvent.InputTuple, VerifierTokensSentEvent.OutputTuple, VerifierTokensSentEvent.OutputObject>;
    };
}
//# sourceMappingURL=IHorizonStakingMain.d.ts.map