/**
 * Base Native Provider
 *
 * Abstract base class for platform-native desktop automation providers.
 * Provides shared utilities for executing CLI tools, checking tool availability,
 * and common helper methods.
 */
import type { IAutomationProvider } from './automation-manager.js';
import type { AutomationProvider, ProviderCapabilities, MousePosition, MouseMoveOptions, MouseClickOptions, MouseDragOptions, MouseScrollOptions, MouseButton, KeyCode, KeyPressOptions, TypeOptions, HotkeySequence, WindowInfo, WindowSearchOptions, WindowSetOptions, AppInfo, AppLaunchOptions, ScreenInfo, ColorInfo, ClipboardContent } from './types.js';
export declare abstract class BaseNativeProvider implements IAutomationProvider {
    readonly name: AutomationProvider;
    abstract readonly capabilities: ProviderCapabilities;
    abstract readonly platformName: string;
    protected initialized: boolean;
    protected availableTools: Map<string, boolean>;
    /**
     * Execute a command asynchronously with optional timeout
     */
    protected exec(cmd: string, timeout?: number): Promise<string>;
    /**
     * Execute a command synchronously
     */
    protected execSync(cmd: string, timeout?: number): string;
    /**
     * Check if a CLI tool is available (cached)
     */
    protected checkTool(name: string): boolean;
    /**
     * Check if a tool is available (from cache)
     */
    protected hasTool(name: string): boolean;
    /**
     * Delay helper
     */
    protected delay(ms: number): Promise<void>;
    /**
     * Ensure provider is initialized
     */
    protected ensureInitialized(): void;
    abstract initialize(): Promise<void>;
    abstract shutdown(): Promise<void>;
    abstract isAvailable(): Promise<boolean>;
    abstract getMousePosition(): Promise<MousePosition>;
    abstract moveMouse(x: number, y: number, options?: MouseMoveOptions): Promise<void>;
    abstract click(options?: MouseClickOptions): Promise<void>;
    abstract doubleClick(button?: MouseButton): Promise<void>;
    abstract rightClick(): Promise<void>;
    abstract drag(fromX: number, fromY: number, toX: number, toY: number, options?: MouseDragOptions): Promise<void>;
    abstract scroll(options: MouseScrollOptions): Promise<void>;
    abstract keyPress(key: KeyCode, options?: KeyPressOptions): Promise<void>;
    abstract keyDown(key: KeyCode): Promise<void>;
    abstract keyUp(key: KeyCode): Promise<void>;
    abstract type(text: string, options?: TypeOptions): Promise<void>;
    abstract hotkey(sequence: HotkeySequence): Promise<void>;
    abstract getActiveWindow(): Promise<WindowInfo | null>;
    abstract getWindows(options?: WindowSearchOptions): Promise<WindowInfo[]>;
    abstract getWindow(handle: string): Promise<WindowInfo | null>;
    abstract focusWindow(handle: string): Promise<void>;
    abstract minimizeWindow(handle: string): Promise<void>;
    abstract maximizeWindow(handle: string): Promise<void>;
    abstract restoreWindow(handle: string): Promise<void>;
    abstract closeWindow(handle: string): Promise<void>;
    abstract setWindow(handle: string, options: WindowSetOptions): Promise<void>;
    abstract getRunningApps(): Promise<AppInfo[]>;
    abstract launchApp(appPath: string, options?: AppLaunchOptions): Promise<AppInfo>;
    abstract closeApp(pid: number): Promise<void>;
    abstract getScreens(): Promise<ScreenInfo[]>;
    abstract getPixelColor(x: number, y: number): Promise<ColorInfo>;
    abstract getClipboard(): Promise<ClipboardContent>;
    abstract setClipboard(content: Partial<ClipboardContent>): Promise<void>;
    abstract clearClipboard(): Promise<void>;
}
