import ts from 'typescript';
export interface TypeElementInSource {
    name: string;
    node: ts.Node;
    kind: 'interface' | 'type' | 'enum' | 'class' | 'variable';
    extends: string[];
    generics: string[];
    filePath: string;
    lineNumber: number;
    comments?: string[];
    readonly properties?: string[];
}
export declare function getType(node: ts.Node, typeChecker: ts.TypeChecker): string;
export declare function followTypeReference(type: ts.TypeReferenceNode, sourceFile: ts.SourceFile): string[];
export declare function getTypePathLink({ filePath, lineNumber }: TypeElementInSource, prefix?: string): string;
export interface GetTypesAsMermaidOption {
    readonly rootFolder?: string;
    readonly files?: readonly string[];
    readonly typeName: string;
    readonly inlineTypes?: readonly string[];
}
export interface MermaidTypeReport {
    text: string;
    info: TypeElementInSource[];
    program: ts.Program;
}
export declare function getTypesFromFolderAsMermaid(options: GetTypesAsMermaidOption): MermaidTypeReport;
export declare function implSnippet(node: TypeElementInSource | undefined, program: ts.Program, showName?: boolean, nesting?: number, open?: boolean): string;
export interface PrintHierarchyArguments {
    readonly program: ts.Program;
    readonly info: TypeElementInSource[];
    readonly root: string;
    readonly collapseFromNesting?: number;
    readonly initialNesting?: number;
    readonly maxDepth?: number;
    readonly openTop?: boolean;
}
export declare const mermaidHide: string[];
export declare function printHierarchy({ program, info, root, collapseFromNesting, initialNesting, maxDepth, openTop }: PrintHierarchyArguments): string;
/**
 * Create a short link to a type in the documentation
 * @param name      - The name of the type, e.g. `MyType`, may include a container, e.g.,`MyContainer::MyType` (this works with function nestings too)
 * @param hierarchy - The hierarchy of types to search in
 * @param codeStyle - Whether to use code style for the link
 * @param realNameWrapper - How to highlight the function in name in the `x::y` format?
 */
export declare function shortLink(name: string, hierarchy: readonly TypeElementInSource[], codeStyle?: boolean, realNameWrapper?: string): string;
export declare function getDocumentationForType(name: string, hierarchy: TypeElementInSource[]): string;
