import { OnModuleInit } from '@nestjs/common';
import { NodeSSH } from 'node-ssh';
import { ConfigService } from '../config/config.service';
import { WsGateway } from '../ws/ws.gateway';
import { ShellCommandResultDto } from './shell-command-result.dto';
import { ShellConfigDto } from './shell-connect.dto';
export declare class SshExtended extends NodeSSH {
    #private;
    readonly config: ShellConfigDto;
    constructor(config: ShellConfigDto);
    connect(): Promise<this>;
}
export declare class ShellService implements OnModuleInit {
    private readonly configService;
    private readonly wsGateway;
    constructor(configService: ConfigService, wsGateway: WsGateway);
    onModuleInit(): Promise<void>;
    private getNodeHttpAgent;
    setupClient(conn: ShellConfigDto): Promise<void>;
    getShellByHostname(host: string): Promise<SshExtended>;
    createAndConnectClient({ username, password, host, port, index }: ShellConfigDto): Promise<SshExtended>;
    dockerIsInstalled(client: SshExtended): Promise<{
        isInstalled: boolean;
        version: string;
    }>;
    nodeIsInstalled(client: SshExtended): Promise<{
        isInstalled: boolean;
        version: string;
    }>;
    npmIsInstalled(client: SshExtended): Promise<{
        isInstalled: boolean;
        version: string;
    }>;
    nIsInstalled(client: SshExtended): Promise<{
        isInstalled: boolean;
        version: string;
    }>;
    updateApt(client: SshExtended): Promise<ShellCommandResultDto>;
    installFreshClientAPI(client: SshExtended): Promise<void>;
    installNode(client: SshExtended): Promise<void>;
    installNpm(client: SshExtended): Promise<void>;
    installDnsProxy(client: SshExtended): Promise<void>;
    installDockerAptKey(client: SshExtended): Promise<void>;
    uninstallDocker(client: SshExtended): Promise<void>;
    installDocker(client: SshExtended): Promise<ShellCommandResultDto>;
    installN(client: SshExtended): Promise<void>;
    latestNodeLtsAvailable(client: SshExtended): Promise<ShellCommandResultDto>;
    installNodeLTS(client: SshExtended): Promise<void>;
    runCommand(command: string, client: SshExtended, opts?: {
        onStdout?: any;
        onStderr?: any;
    }): Promise<ShellCommandResultDto>;
}
