import { a as LaunchCommandSpec, g as ToolId } from "./types-lRv_6IzV.js";
import { t as LaunchAdapter } from "./interfaces-BOV8jLcZ.js";

//#region src/services/launch/adapters/base.d.ts

/**
* Abstract base implementing SOLID principles:
* - SRP: only responsible for building command specs
* - Template Method: subclasses override specific pieces
* - DRY: shares validateAvailability and getVersion logic
*/
declare abstract class BaseLaunchAdapter implements LaunchAdapter {
  /**
  * Tool identifier (implemented by subclasses)
  */
  abstract readonly toolId: ToolId;
  /**
  * Executable name (implemented by subclasses)
  */
  abstract readonly executable: string;
  /**
  * Build the command spec for launching the tool
  */
  abstract buildCommandSpec(payload: {
    yolo?: boolean;
    resume?: boolean;
    continue?: boolean;
    settings?: string;
  }): LaunchCommandSpec;
  /**
  * Default availability check (subclasses may override)
  */
  validateAvailability(): Promise<boolean>;
  /**
  * Default version check (subclasses may override)
  */
  getVersion(): Promise<string>;
}
//#endregion
export { BaseLaunchAdapter as t };