import { ChildProcess } from 'child_process';
import { dotnetAddPackageOptions, dotnetBuildOptions, dotnetFormatOptions, DotnetNewOptions, dotnetPublishOptions, dotnetRunOptions, DotnetTemplate, dotnetTestOptions, KnownDotnetTemplates } from '../models';
import { LoadedCLI } from './dotnet.factory';
export declare class DotNetClient {
    private cliCommand;
    cwd?: string | undefined;
    constructor(cliCommand: LoadedCLI, cwd?: string | undefined);
    new(template: KnownDotnetTemplates, parameters?: DotnetNewOptions, additionalArguments?: string[]): void;
    listInstalledTemplates(opts?: {
        search?: string;
        language?: string;
    }): DotnetTemplate[];
    build(project: string, parameters?: dotnetBuildOptions, extraParameters?: string): void;
    run(project: string, watch?: boolean, parameters?: dotnetRunOptions): ChildProcess;
    test(project: string, watch?: boolean, parameters?: dotnetTestOptions, extraParameters?: string): void | ChildProcess;
    addPackageReference(project: string, pkg: string, parameters?: dotnetAddPackageOptions): void;
    addProjectReference(hostCsProj: string, targetCsProj: string): void;
    publish(project: string, parameters?: dotnetPublishOptions, publishProfile?: string, extraParameters?: string): void;
    installTool(tool: string, version?: string, source?: string): void;
    restorePackages(project: string): void;
    restoreTools(): void;
    format(project: string, parameters?: dotnetFormatOptions, forceToolUsage?: boolean): void;
    runTool<T extends Record<string, string | boolean>>(tool: string, positionalParameters?: string[], parameters?: T, extraParameters?: string): void;
    addProjectToSolution(solutionFile: string, project: string): void;
    getProjectReferences(projectFile: string): string[];
    getProjectReferencesAsync(projectFile: string): Promise<string[]>;
    getSdkVersion(): string;
    printSdkVersion(): void;
    logAndExecute(params: string[]): void;
    private spawnAndGetOutput;
    spawnAsyncAndGetOutput(params: string[]): Promise<string>;
    private logAndSpawn;
}
