import ts from 'typescript';
import { ProjectPrincipal } from './ProjectPrincipal.js';
import type { AsyncCompilers, SyncCompilers } from './compilers/types.js';
import type { ToSourceFilePath } from './util/to-source-path.js';
type Paths = ts.CompilerOptions['paths'];
type Principal = {
    principal: ProjectPrincipal;
    cwds: Set<string>;
    pathKeys: Set<string>;
    pkgNames: Set<string>;
};
type Principals = Set<Principal>;
export type PrincipalOptions = {
    cwd: string;
    isFile: boolean;
    compilerOptions: ts.CompilerOptions;
    paths: Paths;
    compilers: [SyncCompilers, AsyncCompilers];
    pkgName: string;
    isIsolateWorkspaces: boolean;
    isSkipLibs: boolean;
    isWatch: boolean;
    toSourceFilePath: ToSourceFilePath;
    isCache: boolean;
    cacheLocation: string;
};
export declare class PrincipalFactory {
    principals: Principals;
    getPrincipal(options: PrincipalOptions): ProjectPrincipal;
    private findReusablePrincipal;
    private linkPrincipal;
    private addNewPrincipal;
    getPrincipals(): ProjectPrincipal[];
    getPrincipalByPackageName(packageName: string): ProjectPrincipal | undefined;
    deletePrincipal(principal: ProjectPrincipal): void;
}
export {};
