import type ts from 'typescript/lib/tsserverlibrary'; import type { Repo } from '../checker'; import { VueLanguageService } from '../checker'; import { EventMeta, ExposeMeta, FuncPropertyMetaSchema, MetaCheckerOptions, PropertyMeta, PropertyMetaSchema, TypeParamPropertyMetaSchema } from '../types'; export declare class SchemaResolver { private ts; private typeChecker; private langService; private symbolNode; private repo; private schemaCache; private schemaOptions; /** * Used to store all declared interfaces or types */ private readonly types; private readonly typeCache; constructor(ts: typeof import('typescript/lib/tsserverlibrary'), typeChecker: ts.TypeChecker, langService: VueLanguageService, symbolNode: ts.Expression, repo: Repo, options: MetaCheckerOptions); /** * resolve types ahead of time */ preResolve(types: ts.Type[]): void; private setType; getSchemaByRef(ref: string): PropertyMetaSchema; getRefByType(type: ts.Type): string | undefined; getSchemaByType(type: ts.Type): PropertyMetaSchema | undefined; getTypes(): Record; private shouldIgnore; createTypeParamMetaSchema(param: ts.TypeParameter): TypeParamPropertyMetaSchema; createSignatureMetaSchema(call: ts.Signature, subtype?: ts.Type): FuncPropertyMetaSchema; private resolveExactSchema; private getNodeAndSymbolOfUnknownType; private resolveUnknownSchema; private getSource; resolveSchema(subtype: ts.Type): PropertyMetaSchema; resolveNestedProperties(prop: ts.Symbol, normal?: boolean): PropertyMeta; resolveSlotProperties(prop: ts.Symbol): { name: string; type: string; comment: import("../types").CommentMeta; description: string; schema: PropertyMetaSchema; }; resolveEventSignature(call: ts.Signature): EventMeta; resolveExposedProperties(expose: ts.Symbol): ExposeMeta; }