import { SlotRegistry } from '@teambit/harmony';
import { LoggerMain, Logger } from '@teambit/logger';
import { CompilerMain } from '@teambit/compiler';
import { Component, ComponentMap, IComponent } from '@teambit/component';
import { ScopeMain } from '@teambit/scope';
import { PkgMain } from '@teambit/pkg';
import type { Environment } from '@teambit/envs';
import { GraphqlMain } from '@teambit/graphql';
import { PreviewMain } from '@teambit/preview';
import { DevFilesMain } from '@teambit/dev-files';
import { AbstractVinyl } from '@teambit/component.sources';
import { Workspace } from '@teambit/workspace';
import { Doc } from '@teambit/docs.entities.doc';
import { EnvsMain } from '@teambit/envs';
import { DocReader } from './doc-reader';
export type ComponentDocs = {
    files: string[];
    component: Component;
};
export type DocProp = {};
export type DocPropSlot = SlotRegistry<DocProp>;
export type DocReaderSlot = SlotRegistry<DocReader>;
export type DocsConfig = {
    /**
     * glob patterns to identify doc files.
     */
    patterns: string[];
};
/**
 * the component documentation extension.
 */
export declare class DocsMain {
    private patterns;
    /**
     * envs extension.
     */
    private preview;
    private pkg;
    private compiler;
    private workspace;
    private logger;
    private devFiles;
    private envs;
    private docPropSlot;
    private docReaderSlot;
    constructor(patterns: string[], 
    /**
     * envs extension.
     */
    preview: PreviewMain, pkg: PkgMain, compiler: CompilerMain, workspace: Workspace, logger: Logger, devFiles: DevFilesMain, envs: EnvsMain, docPropSlot: DocPropSlot, docReaderSlot: DocReaderSlot);
    /**
     * returns an array of doc file paths for a set of components.
     */
    getDocsMap(components: Component[]): ComponentMap<AbstractVinyl[]>;
    getDocsFiles(component: Component): AbstractVinyl[];
    /**
     * compute the description of the component from its source code and docs file.
     */
    getDescription(component: Component): Promise<string>;
    getTemplate(env: Environment): Promise<string | undefined>;
    getDocReader(extension: string): DocReader | undefined;
    /**
     * compute a doc for a component.
     */
    computeDoc(component: Component): Promise<Doc | null>;
    getDoc(component: IComponent): Doc | null;
    getPatterns(): string[];
    getComponentDevPatterns(component: Component): {
        name: string;
        pattern: string[];
    };
    getDevPatternToRegister(): (component: Component) => {
        name: string;
        pattern: string[];
    };
    /**
     * register a new doc reader. this allows to support further
     * documentation file formats.
     */
    registerDocReader(docReader: DocReader): this;
    static slots: ((registerFn: () => string) => SlotRegistry<DocProp>)[];
    static runtime: import("@teambit/harmony").RuntimeDefinition;
    static dependencies: import("@teambit/harmony").Aspect[];
    static defaultConfig: {
        patterns: string[];
    };
    static provider([preview, graphql, workspace, pkg, compiler, loggerAspect, devFiles, envs, scope]: [
        PreviewMain,
        GraphqlMain,
        Workspace,
        PkgMain,
        CompilerMain,
        LoggerMain,
        DevFilesMain,
        EnvsMain,
        ScopeMain
    ], config: DocsConfig, [docPropSlot, docReaderSlot]: [DocPropSlot, DocReaderSlot]): Promise<DocsMain>;
}
