import type { ResolvedRuntimeHost } from '../../core/runtime/daemon/index.js';
import type { HeddleControlPlaneServerHandle, HeddleControlPlaneServerOptions, HeddleHeartbeatSchedulerSettings } from '../../server/index.js';
export type ControlPlaneCommandRuntimeInput = {
    workspaceRoot: string;
    stateDir: string;
    preferApiKey: boolean;
    runtimeHost: ResolvedRuntimeHost;
    forceOwnerConflict: boolean;
    heartbeatScheduler?: HeddleHeartbeatSchedulerSettings;
};
export type ControlPlaneCommandRuntime = {
    kind: 'attached' | 'embedded';
    trpcUrl: string;
    endpoint: {
        host: string;
        port: number;
    };
    serverId: string;
    close: () => Promise<void>;
};
type ControlPlaneCommandRuntimeDependencies = {
    startServer?: (options: HeddleControlPlaneServerOptions) => Promise<HeddleControlPlaneServerHandle>;
    createLogger?: (stateRoot: string) => HeddleControlPlaneServerOptions['logger'];
};
/**
 * Owns command-edge control-plane transport bootstrap.
 *
 * Runtime commands attach to a live server when available, or start an embedded
 * control-plane server when needed. After this bootstrap step, commands should
 * use the shared control-plane API rather than core runtime services.
 */
export declare class ControlPlaneCommandRuntimeService {
    static resolve(input: ControlPlaneCommandRuntimeInput, dependencies?: ControlPlaneCommandRuntimeDependencies): Promise<ControlPlaneCommandRuntime>;
    static formatNotice(runtime: ControlPlaneCommandRuntime, surface: string): string;
    static installEmbeddedShutdown(runtime: ControlPlaneCommandRuntime, label: string): () => void;
    private static buildTrpcUrl;
}
export {};
//# sourceMappingURL=control-plane-command-runtime.d.ts.map