import { BaseExecutionContext } from '../../execution/base.js';
import type { CommandOptions, CommandResult, ExecutionCapability, ExecutionEnvironment, RemoteCommandHandler, RemoteExecutionContextConfig, RemoteTarget } from '../../types/connector/index.js';
export interface RemoteExecutionContextOptions {
    id: string;
    target: RemoteTarget;
    capabilities?: ExecutionCapability[];
    commandHandler?: RemoteCommandHandler;
}
export declare class RemoteExecutionContext extends BaseExecutionContext {
    readonly id: string;
    readonly environment: ExecutionEnvironment;
    private target;
    private connected;
    private capabilities;
    private commandHandler;
    constructor(options: RemoteExecutionContextOptions);
    protected doInitialize(): Promise<void>;
    protected doTeardown(): Promise<void>;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    isConnected(): boolean;
    getTarget(): RemoteTarget;
    getConnectionString(): string;
    getCapabilities(): ExecutionCapability[];
    hasCapability(cap: ExecutionCapability): boolean;
    setCommandHandler(handler: RemoteCommandHandler): void;
    executeRemote(command: string, options?: CommandOptions): Promise<CommandResult>;
    toConfig(): RemoteExecutionContextConfig;
    private validateTarget;
}
//# sourceMappingURL=remote.d.ts.map