import { IHookAction, IHookActionFunction, IHookCache, IHookFilter, IHookFilterFunction, IHookFilterSync, IHookFilterSyncFunction } from '../interfaces/hooks';
interface HookOptions {
    priority?: number;
    id?: string;
}
declare const Hooks: {
    addAction: <T extends keyof Burdy.IActions>(key: T, action: IHookActionFunction<Burdy.IActions[T]>, options?: Omit<HookOptions, 'priority'>) => void;
    addFilter: <T_1 extends keyof Burdy.IFilters>(key: T_1, filter: IHookFilterFunction<Burdy.IFilters[T_1]>, options?: HookOptions) => void;
    addSyncFilter: <T_2 extends keyof Burdy.ISyncFilters>(key: T_2, filterSync: IHookFilterSyncFunction, options?: HookOptions) => void;
    removeAction: (key: keyof Burdy.IActions, id: string) => void;
    removeFilter: (key: keyof Burdy.IFilters, id: string) => void;
    hasAction: (key: keyof Burdy.IActions, id: string) => boolean;
    hasFilter: (key: keyof Burdy.IFilters, id: string) => boolean;
    doAction: <T_3 extends keyof Burdy.IActions>(key: T_3, ...args: Burdy.IActions[T_3]) => Promise<void>;
    applyFilters: <T_4 extends keyof Burdy.IFilters>(key: T_4, ...args: Burdy.IFilters[T_4]) => Promise<Burdy.IFilters[T_4][0]>;
    applySyncFilters: <T_5 extends keyof Burdy.ISyncFilters>(key: T_5, ...args: Burdy.ISyncFilters[T_5]) => Burdy.ISyncFilters[T_5][0];
    getQueue: (type: keyof IHookCache) => {
        [key: string]: IHookAction<any[]>[];
    } | {
        [key: string]: IHookFilter<any[]>[];
    } | {
        [key: string]: IHookFilterSync<any[]>[];
    };
    clearQueue: (type: keyof IHookCache) => void;
    clearAllQueues: () => void;
};
export default Hooks;
