/**
 * ToolInstallationStatus Value Object
 *
 * Represents the installation status of a development tool with optional
 * error messages and installation suggestions. Provides immutable, validated
 * value objects through factory functions.
 *
 * Uses Object.freeze() to ensure immutability and prevent accidental mutations.
 */
import type { ToolInstallationStatus as GeneratedType, InstallationSuggestion } from '../generated/output.js';
/**
 * Type alias for the generated ToolInstallationStatus type
 */
export type ToolInstallationStatus = GeneratedType;
/**
 * Creates a validated, immutable ToolInstallationStatus value object.
 *
 * @param data - The status data to create
 * @returns A frozen ToolInstallationStatus object
 * @throws {Error} If toolName is empty or status is invalid
 *
 * @example
 * const status = createToolInstallationStatus({
 *   status: 'available',
 *   toolName: 'vscode',
 * });
 */
export declare function createToolInstallationStatus(data: ToolInstallationStatus): ToolInstallationStatus;
/**
 * Creates an available tool status object.
 *
 * @param toolName - The name of the available tool
 * @returns A frozen ToolInstallationStatus with status='available'
 * @throws {Error} If toolName is empty
 *
 * @example
 * const status = createAvailableStatus('vscode');
 */
export declare function createAvailableStatus(toolName: string): ToolInstallationStatus;
/**
 * Creates a missing tool status object with installation suggestions.
 *
 * @param toolName - The name of the missing tool
 * @param suggestions - Installation suggestions for the tool
 * @returns A frozen ToolInstallationStatus with status='missing'
 * @throws {Error} If toolName is empty
 *
 * @example
 * const status = createMissingStatus('vscode', [
 *   {
 *     packageManager: 'brew',
 *     command: 'brew install code',
 *     documentationUrl: 'https://code.visualstudio.com/docs/setup/mac',
 *   }
 * ]);
 */
export declare function createMissingStatus(toolName: string, suggestions: InstallationSuggestion[]): ToolInstallationStatus;
/**
 * Creates an error tool status object with error details.
 *
 * @param toolName - The name of the tool with an error
 * @param errorMessage - Description of what went wrong
 * @returns A frozen ToolInstallationStatus with status='error'
 * @throws {Error} If toolName is empty
 *
 * @example
 * const status = createErrorStatus('vscode', 'Permission denied');
 */
export declare function createErrorStatus(toolName: string, errorMessage: string): ToolInstallationStatus;
//# sourceMappingURL=tool-installation-status.d.ts.map