import type { LineNo } from "./utils/lineNoFormat";
type BaseType = {
    lineNo: LineNo;
    hash: string;
};
type OriginTemplateInfo = BaseType & {
    content: string;
};
type OriginScriptList = Array<OriginTemplateInfo>;
type ImportBindingLine = string;
type ExportBindingLine = string;
type FileImportRow = BaseType & {
    originContent: string;
    absoluteSource: string;
    importBindings: Array<ImportBindingLine>;
};
type FileExportRow = BaseType & {
    originContent: string;
    absoluteSource?: string;
    exportBindings?: Array<ExportBindingLine>;
};
type InvokeItem = {
    calleeName: string;
    calleeType?: string;
    fileSrc: string;
    lineNo: LineNo;
    callSiteLineNo?: LineNo;
    resolvedDefinitionName?: string;
    reactInvokedViaHook?: string;
    reactSyntheticHops?: string[];
    chains?: string;
    hash?: string;
    npmModuleSpecifier?: string;
};
type Invokes = Array<InvokeItem>;
type ScriptFuncItem = BaseType & {
    originContent: string;
    functionName: string;
    paramters: string;
    annotation: Array<string>;
    invokes: Invokes;
    vue2optionsSource?: string;
    optionsSourceImportHash?: string;
    importBindingItem?: string;
};
type ScriptFunc = Array<ScriptFuncItem>;
type OriginCssItem = BaseType & {
    isScope: boolean;
    lang: string;
    content: string;
};
type OriginCssList = Array<OriginCssItem>;
type TemplateFuncItem = {
    hash: string;
    originContent: string;
    position: string;
    calleeName: string;
    funcHashPos?: string;
    funcImportHash?: string;
};
type TemplateFuncList = Array<TemplateFuncItem>;
type FileNode = {
    hash: string;
    sourceContentHash?: string;
    fileName: string;
    filePath: string;
    fileType: string;
    fileSize: string;
    configFileContent?: string;
    imports?: Array<FileImportRow> | null;
    exports?: Array<FileExportRow> | null;
    templateFunc?: TemplateFuncList | null;
    scriptFunc?: ScriptFunc | null;
    originTemplateInfo?: OriginTemplateInfo | null;
    originScriptList?: OriginScriptList | null;
    originCssList?: OriginCssList | null;
    parseNotes?: string[];
};
type DirNode = {
    dirPath: string;
    hash: string;
    children: Children;
};
type Children = Array<DirNode | FileNode>;
type JSON_ROOT = {
    toolName: string;
    toolVersion: string;
    targetLanguage: string;
    projectName: string;
    projectRoot: string;
    hash: string;
    children: Children;
};
type FunctionDefRef = {
    functionName: string;
    filePath: string;
    lineNo: LineNo;
    originContent: string;
};
type TemplateFuncRawItem = {
    originContentRaw: string;
    position: [
        number,
        number,
        number,
        number
    ];
    funcName: string;
};
type RawImport = {
    absoluteSource: string;
    originContentRaw: string;
    lineNo: LineNo;
    importBindings: Array<ImportBindingLine>;
};
type RawExport = {
    originContentRaw: string;
    lineNo: LineNo;
    exportBindings?: Array<ExportBindingLine>;
    absoluteSource?: string;
};
type RawFunc = {
    functionName: string;
    startLine: number;
    endLine: number;
    originContentRaw: string;
    paramters: string;
    annotation: Array<string>;
    invokes: Invokes;
};
export type { ImportBindingLine, ExportBindingLine, JSON_ROOT, DirNode, FileNode, FileImportRow, FileExportRow, TemplateFuncList, ScriptFunc, ScriptFuncItem, OriginTemplateInfo, OriginScriptList, OriginCssList, InvokeItem, Invokes, Children, FunctionDefRef, TemplateFuncRawItem, RawImport, RawExport, RawFunc, };
