import type { FirstPartyComponentId, PreparedFirstPartyComponentPayload } from '../../firstPartyRuntime/index.js';
import type { SystemTaskSshConnectionConfig } from './relayRuntimeKinds.js';
export interface RemoteFirstPartyCommandResult {
    status: number;
    stdout: string;
    stderr: string;
}
export interface RemoteFirstPartyInstallDeps {
    resolveRemoteReleaseTarget: (params: Readonly<{
        ssh: SystemTaskSshConnectionConfig;
        knownHostsMode?: 'app' | 'system';
    }>) => Promise<Readonly<{
        os: 'linux' | 'darwin';
        arch: 'x64' | 'arm64';
    }>>;
    runRemoteText: (params: Readonly<{
        ssh: SystemTaskSshConnectionConfig;
        remoteCommand: string;
        knownHostsMode?: 'app' | 'system';
    }>) => Promise<RemoteFirstPartyCommandResult>;
    copyLocalDirectoryToRemote: (params: Readonly<{
        ssh: SystemTaskSshConnectionConfig;
        localPath: string;
        remotePath: string;
        knownHostsMode?: 'app' | 'system';
    }>) => Promise<void>;
    preparePayload?: (params: Readonly<{
        componentId: FirstPartyComponentId;
        channel: 'stable' | 'preview' | 'publicdev';
        os: 'linux' | 'darwin';
        arch: 'x64' | 'arm64';
        userAgent?: string;
    }>) => Promise<PreparedFirstPartyComponentPayload>;
    now?: () => number;
}
export declare function normalizeRemoteReleaseOs(value: unknown): 'linux' | 'darwin';
export declare function normalizeRemoteReleaseArch(value: unknown): 'x64' | 'arm64';
export declare function resolveRemoteInstalledFirstPartyBinaryPath(params: Readonly<{
    componentId: FirstPartyComponentId;
    channel?: string;
    remoteHomeDir?: string;
}>): string;
export declare function installRemoteFirstPartyComponent(params: Readonly<{
    componentId: FirstPartyComponentId;
    channel?: string;
    ssh: SystemTaskSshConnectionConfig;
    knownHostsMode?: 'app' | 'system';
    installerBinaryPath?: string;
    remoteHomeDir?: string;
}>, deps: RemoteFirstPartyInstallDeps): Promise<Readonly<{
    binaryPath: string;
    versionId: string;
    source: string | null;
}>>;
//# sourceMappingURL=remoteFirstPartyPayloadInstaller.d.ts.map