import type { IYamlTocFile } from '../yaml/IYamlTocFile';
/**
 * Typescript interface describing the config schema for toc.yml file format.
 */
export interface IConfigTableOfContents {
    /**
     * Represents the tree structure describing the toc.file format.
     * Nodes that have an empty `items` array property or their name will be included in the
     * {@link IConfigTableOfContents.nonEmptyCategoryNodeNames} will be filled with API items
     * that are matched with the filters provided. Everything else will be placed under
     * {@link IConfigTableOfContents.catchAllCategory} if provided, which is highly recommended.
     */
    tocConfig: IYamlTocFile;
    /**
     * Optional category name that is recommended to be included along with
     * one of the configs: {@link IConfigTableOfContents.categorizeByName} or
     * {@link IConfigTableOfContents.categoryInlineTag}.
     * Any items that are not matched according to the mentioned configuration options will be placed under this
     * catchAll category. If none provided the items will not be included in the final toc.yml file.
     */
    catchAllCategory?: string;
    /**
     * Toggle either categorization of the API items should be made based on category name presence
     * in the API item's name. Useful when there are API items without an inline tag to categorize them,
     * but still need to place the items under categories. Note: this type of categorization might place some items
     * under wrong categories if the names are similar but belong to different categories.
     * In case that {@link IConfigTableOfContents.categoryInlineTag} is provided it will try categorize by
     * using it and only if it didn't, it will attempt to categorize by name.
     */
    categorizeByName?: boolean;
    /**
     * Inline tag that will be used to categorize the API items. Will take precedence over the
     * {@link IConfigTableOfContents.categorizeByName} flag in trying to place the API item according to the
     * custom inline tag present in documentation of the source code.
     */
    categoryInlineTag?: string;
    /**
     * Array of node names that might have already items injected at the time of creating the
     * {@link IConfigTableOfContents.tocConfig} tree structure but are still needed to be included as category
     * nodes where API items will be pushed during the categorization algorithm.
     */
    nonEmptyCategoryNodeNames?: string[];
}
/**
 * Describes plugin packages to be loaded, and which features to enable.
 */
export interface IConfigPlugin {
    /**
     * Specifies the name of an API Documenter plugin package to be loaded.  By convention, the NPM package name
     * should have the prefix `doc-plugin-`.  Its main entry point should export an object named
     * `apiDocumenterPluginManifest` which implements the {@link IApiDocumenterPluginManifest} interface.
     */
    packageName: string;
    /**
     * A list of features to be enabled.  The features are defined in {@link IApiDocumenterPluginManifest.features}.
     * The `enabledFeatureNames` strings are matched with {@link IFeatureDefinition.featureName}.
     */
    enabledFeatureNames: string[];
}
/**
 * This interface represents the api-documenter.json file format.
 */
export interface IConfigFile {
    /**
     * Specifies the output target.
     */
    outputTarget: 'docfx' | 'markdown';
    /**
     * Specifies what type of newlines API Documenter should use when writing output files.
     *
     * @remarks
     * By default, the output files will be written with Windows-style newlines.
     * To use POSIX-style newlines, specify "lf" instead.
     * To use the OS's default newline kind, specify "os".
     */
    newlineKind?: 'crlf' | 'lf' | 'os';
    /**
     * This enables an experimental feature that will be officially released with the next major version
     * of API Documenter.  It requires DocFX 2.46 or newer.  It enables documentation for namespaces and
     * adds them to the table of contents.  This will also affect file layout as namespaced items will be nested
     * under a directory for the namespace instead of just within the package.
     *
     * This setting currently only affects the 'docfx' output target.  It is equivalent to the `--new-docfx-namespaces`
     * command-line parameter.
     */
    newDocfxNamespaces?: boolean;
    /** {@inheritDoc IConfigPlugin} */
    plugins?: IConfigPlugin[];
    /** {@inheritDoc IConfigTableOfContents} */
    tableOfContents?: IConfigTableOfContents;
    /**
     * Specifies whether inherited members should also be shown on an API item's page.
     */
    showInheritedMembers?: boolean;
}
//# sourceMappingURL=IConfigFile.d.ts.map