import type { Meta } from "../../core/meta";
import type { Toc, GraphData as TocGraphData } from "../../core/toc";
import type { SyncData as VcsSyncData } from "../../core/vcs";
import type { Graph } from "../../core/utils";
import type { BuildArgs, BuildConfig, EntryInfo } from './types';
import { Extension as OpenapiIncluderExtension } from "../../extensions/openapi";
import { Extension as GenericIncluderExtension } from "../../extensions/generic-includer";
import { Extension as LocalSearchExtension } from "../../extensions/local-search";
import { Command } from "../../core/config";
import { BaseProgram } from "../../core/program";
import { getHooks } from './hooks';
import { Run } from './run';
import { Templating } from './features/templating';
import { CustomResources } from './features/custom-resources';
import { Contributors } from './features/contributors';
import { SinglePage } from './features/singlepage';
import { PdfPage } from './features/pdf-page';
import { Lint } from './features/linter';
import { BuildManifest } from './features/build-manifest';
import { CrawlerManifest } from './features/crawler-manifest';
import { SkipHtml } from './features/skip-html';
import { Changelogs } from './features/changelogs';
import { OutputMd } from './features/output-md';
import { OutputHtml } from './features/output-html';
import { Search } from './features/search';
import { Watch } from './features/watch';
import { Legacy } from './features/legacy';
import { TocFiltering } from './features/toc-filtering';
import { NeuroExpert } from './features/neuro-expert';
import { Themer } from './features/themer';
import { Analytics } from './features/analytics';
export type * from './types';
export { Run, getHooks };
export { getHooks as getEntryHooks } from './services/entry';
export { getHooks as getSearchHooks } from './services/search';
export { getHooks as getRedirectsHooks } from './services/redirects';
export declare class Build extends BaseProgram<BuildConfig, BuildArgs> {
    readonly name = "Build";
    readonly templating: Templating;
    readonly resources: CustomResources;
    readonly contributors: Contributors;
    readonly singlepage: SinglePage;
    readonly pdfPage: PdfPage;
    readonly linter: Lint;
    readonly buildManifest: BuildManifest;
    readonly crawlerManifest: CrawlerManifest;
    readonly changelogs: Changelogs;
    readonly md: OutputMd;
    readonly html: OutputHtml;
    readonly search: Search;
    readonly watch: Watch;
    readonly legacy: Legacy;
    readonly themer: Themer;
    readonly tocFiltering: TocFiltering;
    readonly command: Command;
    readonly skipHtml: SkipHtml;
    readonly neuroExpert: NeuroExpert;
    readonly analytics: Analytics;
    readonly options: import("../../core/config").ExtendedOption[];
    readonly modules: (Watch | Templating | CustomResources | Contributors | SinglePage | PdfPage | Lint | BuildManifest | CrawlerManifest | Changelogs | Search | OutputMd | OutputHtml | Themer | Legacy | TocFiltering | SkipHtml | NeuroExpert | Analytics | GenericIncluderExtension | OpenapiIncluderExtension | LocalSearchExtension)[];
    /**
     * IMPORTANT:
     * Run should always be private.
     * This is a main principe of build process isolation.
     * Any access to run should be defined with help of hooks.
     */
    private run;
    apply(program?: BaseProgram): void;
    action(): Promise<void>;
    concurrently<T>(items: T[], iterator: (item: T, index: number) => Promise<void>): Promise<void>;
    sync(tocs: Graph<TocGraphData>, vcs: VcsSyncData): Promise<void>;
    processToc(raw: Toc): Promise<void>;
    processEntry(entry: NormalizedPath): Promise<void>;
    process(file: NormalizedPath, meta: Meta): Promise<EntryInfo>;
    private prepareInput;
    private prepareRun;
    private releaseRun;
    private cleanup;
}
