/**
 * Simulator management functionality
 * Single Responsibility: Managing simulator lifecycle
 */
import { exec as nodeExec } from 'child_process';
import { SimulatorDevice, Platform } from './types.js';
export type ExecFunction = typeof nodeExec;
export type ExecAsyncFunction = (command: string, options?: any) => Promise<{
    stdout: string;
    stderr: string;
}>;
/**
 * SimulatorManager with dependency injection for testability
 */
export declare class SimulatorManager {
    private static readonly BOOT_TIMEOUT;
    private static readonly POLL_INTERVAL;
    private readonly execAsync;
    private static defaultInstance;
    constructor(execFunc?: ExecFunction);
    /**
     * Get the default instance (singleton pattern)
     */
    private static getDefaultInstance;
    /**
     * List all available simulators, optionally filtered by platform
     */
    listSimulatorsInstance(showAll?: boolean, platform?: Platform): Promise<SimulatorDevice[]>;
    /**
     * Boot a simulator if not already booted
     */
    bootSimulatorInstance(deviceId: string): Promise<void>;
    /**
     * Shutdown a simulator
     */
    shutdownSimulatorInstance(deviceId: string): Promise<void>;
    /**
     * Ensure a simulator is booted and ready
     */
    ensureSimulatorBootedInstance(platform: Platform, deviceId?: string): Promise<string>;
    /**
     * Wait for a simulator to finish booting
     */
    private waitForBoot;
    /**
     * Ensure the Simulator app is open (skipped during tests)
     */
    private ensureSimulatorAppOpen;
    /**
     * Install an app on the simulator
     */
    installAppInstance(appPath: string, deviceId?: string): Promise<void>;
    /**
     * Uninstall an app from the simulator
     */
    uninstallAppInstance(bundleId: string, deviceId?: string): Promise<void>;
    /**
     * Capture a screenshot from the simulator
     */
    captureScreenshotInstance(outputPath: string, deviceId?: string): Promise<void>;
    /**
     * Capture a screenshot and return as base64 for Claude Code to display
     */
    captureScreenshotDataInstance(deviceId?: string): Promise<{
        base64: string;
        mimeType: string;
    }>;
    /**
     * Get device logs from the simulator
     */
    getDeviceLogsInstance(deviceId?: string, predicate?: string, last?: string): Promise<string>;
    static listSimulators(showAll?: boolean, platform?: Platform): Promise<SimulatorDevice[]>;
    static bootSimulator(deviceId: string): Promise<void>;
    static shutdownSimulator(deviceId: string): Promise<void>;
    static ensureSimulatorBooted(platform: Platform, deviceId?: string): Promise<string>;
    static installApp(appPath: string, deviceId?: string): Promise<void>;
    static uninstallApp(bundleId: string, deviceId?: string): Promise<void>;
    static captureScreenshot(outputPath: string, deviceId?: string): Promise<void>;
    static captureScreenshotData(deviceId?: string): Promise<{
        base64: string;
        mimeType: string;
    }>;
    static getDeviceLogs(deviceId?: string, predicate?: string, last?: string): Promise<string>;
}
//# sourceMappingURL=simulatorManager.d.ts.map