import { Workspace } from "./eclMeta.ts";
export declare class Version {
    readonly prefix: string;
    readonly major: number;
    readonly minor: number;
    readonly patch: number;
    readonly postfix: string;
    constructor(build: string);
    parse(build: string): void;
    exists(): boolean;
    compare(other: Version): number;
    toString(): string;
}
interface IExecFile {
    code: number;
    stderr: string;
    stdout: string;
}
export interface IECLErrorWarning {
    filePath: string;
    line: number;
    col: number;
    msg: string;
    severity: string;
}
export declare class Errors {
    protected _checked: string[];
    protected errWarn: IECLErrorWarning[];
    protected errOther: string[];
    constructor(checked: string[]);
    checked(): string[];
    all(): IECLErrorWarning[];
    errors(): IECLErrorWarning[];
    hasError(): boolean;
    warnings(): IECLErrorWarning[];
    hasWarning(): boolean;
    info(): IECLErrorWarning[];
    hasOther(): boolean;
    unknown(): string[];
    hasUnknown(): boolean;
}
export declare class EclccErrors extends Errors {
    constructor(stdErr: string, checked: string[]);
}
export declare class EnvchkErrors extends Errors {
    private _lines;
    constructor(filePath: string, stdErr: string, checked: string[]);
    locate(path: string): [number, number];
}
export declare function walkXmlJson(node: any, callback: (key: string, childNode: any, stack: any[]) => void, stack?: any[]): void;
export declare class LocalWorkunit {
    jsonWU: any;
    constructor(jsonWU: any);
    bpGetValidLocations(filePath: any): any[];
}
export interface IArchive {
    content: string;
    err: EclccErrors;
}
export interface IBundle {
    name: string;
    description: string;
    url: string;
    props?: {
        [key: string]: string | number | boolean;
    };
}
export declare class ClientTools {
    readonly eclccPath: string;
    readonly envchkPath: string;
    readonly eclBundlePath: string;
    readonly binPath: string;
    protected cwd: string;
    protected includeFolders: string[];
    protected _legacyMode: boolean;
    protected _args: string[];
    protected _version: Version;
    constructor(eclccPath: string, cwd?: string, includeFolders?: string[], legacyMode?: boolean, args?: string[], version?: Version);
    clone(cwd?: string, includeFolders?: string[], legacyMode?: boolean, args?: string[]): ClientTools;
    exists(filePath: string): boolean;
    args(additionalItems?: string[]): string[];
    version(): Promise<Version>;
    versionSync(): Version;
    _paths: {};
    paths(): Promise<{}>;
    private loadXMLDoc;
    createWU(filename: string): Promise<LocalWorkunit>;
    createArchive(filename: string): Promise<IArchive>;
    attachWorkspace(): Workspace;
    fetchMeta(filePath: string): Promise<Workspace>;
    syntaxCheck(filePath: string, args?: string[]): Promise<Errors>;
    envCheck(filePath: string, args?: string[]): Promise<Errors>;
    bundleList(): Promise<IBundle[]>;
    bundleInstall(bundleUrl: any): Promise<IExecFile>;
    bundleUninstall(name: any): Promise<IExecFile>;
    private execFile;
}
export declare function clearAllClientToolsCache(): void;
export declare function locateAllClientTools(): Promise<ClientTools[]>;
export declare function locateClientTools(overridePath?: string, build?: string, cwd?: string, includeFolders?: string[], legacyMode?: boolean, args?: string[]): Promise<ClientTools>;
export {};
