import type { Resolver } from "./event.js";
import { Event } from "./event.js";
export type HandlerFunc<T extends Resolver> = (event: T) => unknown;
export type Handler<T extends Resolver> = {
    Func: HandlerFunc<T>;
    Id?: string;
    Priority?: number;
};
export declare class Hook<T extends Resolver> {
    #private;
    Bind(handler: Handler<T>): string;
    BindFunc(fn: HandlerFunc<T>): string;
    Unbind(...idsToRemove: string[]): void;
    UnbindAll(): void;
    Length(): number;
    HasOnlyHandlerId(id: string): boolean;
    CanTriggerOn(tagsToCheck: string[]): boolean;
    Trigger(event: T, ...oneOffHandlerFuncs: HandlerFunc<T>[]): unknown;
    bind(handler: Handler<T>): string;
    bindFunc(fn: HandlerFunc<T>): string;
    unbind(...idsToRemove: string[]): void;
    unbindAll(): void;
    length(): number;
    hasOnlyHandlerId(id: string): boolean;
    canTriggerOn(tagsToCheck: string[]): boolean;
    trigger(event: T, ...oneOffHandlerFuncs: HandlerFunc<T>[]): unknown;
}
export { Event };
