import type { SymbolDisplayPart } from "typescript";
import * as ts from "typescript";
import { ComponentDoc, ComponentNameResolver, JSDoc, Method, MethodParameter, ParserOptions, PropItemType, Props, ResolvedType, StringIndexedObject } from "./types.js";
export declare const defaultOptions: ts.CompilerOptions;
export declare class Parser {
    private readonly checker;
    private readonly propFilter;
    private readonly savePropValueAsString;
    private readonly shouldExtractLiteralValuesFromEnum;
    private readonly shouldExtractValuesFromUnion;
    private readonly shouldIncludeExpression;
    private readonly shouldIncludePropTagMap;
    private readonly shouldRemoveUndefinedFromOptional;
    private readonly shouldSortUnions;
    constructor(program: ts.Program, opts: ParserOptions);
    extractDefaultPropsFromComponent(symbol: ts.Symbol, source: ts.SourceFile): {};
    extractMembersFromType(type: ts.Type): ts.Symbol[];
    extractPropsFromTypeIfStatefulComponent(type: ts.Type): null | ts.Symbol;
    extractPropsFromTypeIfStatelessComponent(type: ts.Type): null | ts.Symbol;
    findDocComment(symbol: ts.Symbol): JSDoc;
    getCallSignature(symbol: ts.Symbol): ts.Signature;
    getComponentInfo(exp: ts.Symbol, source: ts.SourceFile, componentNameResolver?: ComponentNameResolver, customComponentTypes?: ParserOptions["customComponentTypes"]): ComponentDoc | null;
    getResolvedType({ propType, skipUndefinedInUnion, visitedTypes, }: {
        propType: ts.Type;
        skipUndefinedInUnion?: boolean;
        visitedTypes?: Set<string>;
    }): ResolvedType;
    getDocgenType(propType: ts.Type, isRequired: boolean): PropItemType;
    getFullJsDocComment(symbol: ts.Symbol): JSDoc;
    getFunctionStatement(statement: ts.Statement): ts.ArrowFunction | ts.FunctionDeclaration | ts.FunctionExpression | undefined;
    getLiteralValueFromImportSpecifier(property: ts.ImportSpecifier): boolean | null | number | string | undefined;
    getLiteralValueFromPropertyAssignment(property: ts.BindingElement | ts.PropertyAssignment): boolean | null | number | string | undefined;
    getMethodsInfo(type: ts.Type): Method[];
    getModifiers(member: ts.Symbol): string[];
    getParameterInfo(callSignature: ts.Signature): MethodParameter[];
    getPropMap(properties: ts.NodeArray<ts.BindingElement | ts.PropertyAssignment>): StringIndexedObject<boolean | null | number | string>;
    getPropsInfo(propsObj: ts.Symbol, defaultProps?: StringIndexedObject<string>): Props;
    getReturnDescription(symbol: ts.Symbol): SymbolDisplayPart[] | undefined;
    isTaggedPublic(symbol: ts.Symbol): boolean;
    parseExportSymbol(exp: ts.Symbol, sourceFile: ts.SourceFile): ComponentDoc[];
    private getComponentFromExpression;
    private getInfoFromUnionType;
    private getValuesFromUnionType;
}
export declare function getDefaultExportForFile(source: ts.SourceFile): string;
//# sourceMappingURL=parser.d.ts.map