import * as _pandacss_types from '@pandacss/types';
import { ParserResultInterface, ResultItem, ParserResultConfigureOptions, JsxFactoryResultTransform, Runtime, PandaHooks, ConfigTsOptions } from '@pandacss/types';
import { ParserOptions } from '@pandacss/core';
import { SourceFile, ProjectOptions as ProjectOptions$1, Project as Project$1, FileSystemRefreshResult } from 'ts-morph';
import { Generator } from '@pandacss/generator';

declare class ParserResult implements ParserResultInterface {
    private context;
    /** Ordered list of all ResultItem */
    all: ResultItem[];
    jsx: Set<ResultItem>;
    css: Set<ResultItem>;
    cva: Set<ResultItem>;
    sva: Set<ResultItem>;
    token: Set<ResultItem>;
    recipe: Map<string, Set<ResultItem>>;
    pattern: Map<string, Set<ResultItem>>;
    filePath: string | undefined;
    encoder: ParserOptions['encoder'];
    constructor(context: ParserOptions, encoder?: ParserOptions['encoder']);
    append(result: ResultItem): ResultItem;
    set(name: 'cva' | 'css' | 'sva' | 'token', result: ResultItem): void;
    setCss(result: ResultItem): void;
    setCva(result: ResultItem): void;
    setSva(result: ResultItem): void;
    setToken(result: ResultItem): void;
    setJsx(result: ResultItem): void;
    setPattern(name: string, result: ResultItem): void;
    setRecipe(recipeName: string, result: ResultItem): void;
    isEmpty(): boolean;
    setFilePath(filePath: string): this;
    merge(result: ParserResult): this;
    toArray(): ResultItem[];
    toJSON(): {
        css: ResultItem[];
        cva: ResultItem[];
        sva: ResultItem[];
        token: ResultItem[];
        jsx: ResultItem[];
        recipe: {
            [k: string]: ResultItem[];
        };
        pattern: {
            [k: string]: ResultItem[];
        };
    };
}

declare function createParser(context: ParserOptions): (sourceFile: SourceFile | undefined, encoder?: Generator["encoder"], options?: ParserResultConfigureOptions & Partial<JsxFactoryResultTransform>) => ParserResult | undefined;

interface ProjectOptions extends ProjectOptions$1 {
    readFile: Runtime['fs']['readFileSync'];
    getFiles(): string[];
    hooks: Partial<PandaHooks>;
    parserOptions: ParserOptions;
    tsOptions?: ConfigTsOptions;
}
declare class Project {
    private options;
    project: Project$1;
    parser: ReturnType<typeof createParser>;
    get parserOptions(): ParserOptions;
    constructor(options: ProjectOptions);
    get files(): string[];
    getSourceFile: (filePath: string) => SourceFile | undefined;
    createSourceFile: (filePath: string) => SourceFile;
    createSourceFiles: () => void;
    addSourceFile: (filePath: string, content: string) => SourceFile;
    removeSourceFile: (filePath: string) => boolean;
    reloadSourceFile: (filePath: string) => FileSystemRefreshResult | undefined;
    reloadSourceFiles: () => void;
    get readFile(): (filePath: string) => string;
    get getFiles(): () => string[];
    parseJson: (filePath: string) => ParserResult;
    parseSourceFile: (filePath: string, encoder?: ParserOptions["encoder"]) => ParserResult | undefined;
    transformFile: (_filePath: string, content: string) => string;
    classify: (fileMap: Map<string, ParserResultInterface>) => _pandacss_types.ClassifyReport;
}

export { ParserResult, Project, type ProjectOptions };
