import * as ts from "typescript"; import { ApiBaseItemDto } from "../contracts/api-base-item-dto"; import { ApiMetadataDto } from "../contracts/api-metadata-dto"; import { ExtractorOptions } from "../contracts/extractor-options"; import { ReadonlyRegistry } from "../contracts/registry"; export interface ApiItemOptions { Program: ts.Program; ExtractorOptions: ExtractorOptions; ExternalPackages: string[]; Registry: ReadonlyRegistry; AddItemToRegistry(item: ApiItem): string; } export declare enum ApiItemStatus { Initial = 0, Gathered = 1, Extracted = 2, GatheredAndExtracted = 3, } export declare abstract class ApiItem { private declaration; private symbol; private options; constructor(declaration: TDeclaration, symbol: ts.Symbol, options: ApiItemOptions); protected TypeChecker: ts.TypeChecker; protected ItemStatus: ApiItemStatus; protected ExtractedData: TExtractDto; protected GetItemMetadata(): ApiMetadataDto; readonly Options: ApiItemOptions; readonly Declaration: TDeclaration; readonly Symbol: ts.Symbol; readonly Status: ApiItemStatus; protected abstract OnExtract(): TExtractDto; Extract(forceExtraction?: boolean): TExtractDto; protected abstract OnGatherData(): void; GatherData(forceGathering?: boolean): void; }