import type { Template } from "../../../../core/template";
import type { SearchService } from '.';
import type { SearchProvider } from './types';
import type { SearchServiceConfig } from './SearchService';
import { AsyncSeriesHook, AsyncSeriesWaterfallHook, HookMap } from 'tapable';
export declare function hooks<TConfig extends SearchServiceConfig['search']>(name: string): {
    Page: AsyncSeriesHook<[Template], import("tapable").UnsetAdditionalOptions>;
    Provider: HookMap<AsyncSeriesWaterfallHook<[SearchProvider<NormalizedPath>, TConfig], import("tapable").UnsetAdditionalOptions>>;
};
declare const withHooks: <T extends ClassType<any>>(Target: T, { kind }: ClassDecoratorContext<abstract new (...args: any) => any>) => T;
declare function getHooks<TConfig = SearchServiceConfig['search']>(holder: SearchService | undefined): {
    Page: AsyncSeriesHook<[Template], import("tapable").UnsetAdditionalOptions>;
    Provider: HookMap<AsyncSeriesWaterfallHook<[SearchProvider<NormalizedPath>, TConfig & {
        enabled: boolean;
        provider: string;
    } & Hash<unknown>], import("tapable").UnsetAdditionalOptions>>;
};
export { getHooks, withHooks };
