/**
 * src/web-chat/os-commands.ts
 *
 * Cross-platform shell-command builder. Wraps the differences between
 * macOS / Windows / Linux behind a single interface so quick-actions.ts
 * doesn't have to fork per-OS in every action.
 *
 * Platform detection via Node's process.platform:
 *   'darwin' = macOS
 *   'win32'  = Windows (any version)
 *   'linux'  = Linux (any distro)
 *   anything else = best-effort fallback to Linux behavior (BSD, etc.)
 *
 * Each builder returns a shell command STRING, ready to feed to
 * execAsync. They never run anything themselves — that lets callers
 * decide on stdio, timeout, error handling.
 *
 * App identifiers are kept normalized (lowercase keys like "safari",
 * "chrome", "firefox") and resolved to per-OS launch commands at the
 * call site. When an app doesn't exist on a platform, we return null
 * and the caller surfaces a helpful "X is only available on macOS,
 * try Edge instead" message.
 */
export declare const IS_MAC: boolean;
export declare const IS_WIN: boolean;
export declare const IS_LINUX: boolean;
export interface AppLookup {
    command: string;
    displayName: string;
}
/**
 * Resolve a normalized app key to its launch command for the current
 * OS. Returns null if the app isn't installed on this platform.
 */
export declare function resolveApp(key: string): AppLookup | null;
export declare function openUrl(url: string): string;
/**
 * (Round-5) Open a file path in the default OS application. Used by
 * zatca_invoice / create_pdf_report / create_excel / etc. to actually
 * DISPLAY the result to the user instead of just writing it to disk and
 * leaving them to find it. Works on macOS / Windows / Linux.
 */
export declare function openPath(filePath: string): Promise<{
    ok: boolean;
    reason?: string;
}>;
export declare function openUrlInBrowser(browserKey: string, url: string): string | null;
export declare function openFolder(path: string): string;
export declare function screenshot(outputPath: string): string;
export type BrowserAction = 'scrollDown' | 'scrollUp' | 'top' | 'bottom' | 'refresh' | 'back' | 'forward' | 'newTab' | 'closeTab';
/**
 * Send a browser-control keystroke to the foreground window. macOS
 * uses AppleScript + System Events; Windows uses PowerShell SendKeys;
 * Linux uses xdotool. On Linux without xdotool we return null and the
 * caller can surface the install hint.
 */
export declare function browserKeystroke(action: BrowserAction): string | null;
/**
 * Send arbitrary text as keystrokes to the foreground window.
 * macOS: AppleScript keystroke
 * Windows: PowerShell SendKeys (escapes the special chars: + ^ % ~ { } ( ))
 * Linux: xdotool type
 */
export declare function typeText(text: string): string;
/** Press Enter / Return in the foreground window. */
export declare function pressEnter(): string;
/**
 * Focus the URL/address/search bar in the front browser. Cmd+L on Mac,
 * Ctrl+L on Windows/Linux — works in every major browser.
 */
export declare function focusUrlBar(): string;
/**
 * Compose a sequence: focus the URL bar, type text, press Enter. Each
 * step waits briefly so the browser keeps up. Used by the "search for X"
 * and "type X in the search bar" fast paths.
 */
export declare function urlBarSearch(text: string): string;
export declare const FOLDER_KEYS: Record<string, string[]>;
export declare function resolveFolder(key: string): string | null;
export declare function resolveFolderFromAlias(input: string): string | null;
export declare function lockScreen(): string;
export declare function sleepNow(): string;
export declare function volumeAdjust(deltaPercent: number): string;
export declare function volumeSet(percent: number): string;
export declare function volumeMute(mute: boolean): string;
export declare function brightnessAdjust(deltaPercent: number): string;
export declare function brightnessSet(percent: number): string;
export declare function dndToggle(on: boolean): string;
export declare function clipboardRead(): string;
export declare function clipboardWrite(text: string): string;
export declare function musicPlayPause(): string;
export declare function musicNext(): string;
export declare function musicPrevious(): string;
export declare function musicNowPlaying(): string;
export declare function batteryStatus(): string;
export declare function wifiName(): string;
export declare function diskFree(): string;
export declare function publicIp(): string;
export declare function uptime(): string;
export declare function quitApp(appName: string): string;
export declare function hideApp(appName: string): string;
export declare function focusApp(appName: string): string;
export declare function showInFinder(path: string): string;
export declare function emptyTrash(): string;
export declare function createFolder(path: string): string;
export declare function notify(title: string, body: string): string;
export declare function speakText(text: string, locale?: 'ar' | 'en'): string;
export declare function currentTime(): string;
export declare function currentDate(): string;
export declare function setAppearance(mode: 'dark' | 'light'): string;
export declare function setWallpaper(path: string): string;
export declare function mailUnreadCount(): string;
export interface ContactQueryResult {
    /** Shell command. The result is "name|value1, value2" or "NO_MATCH". */
    cmd: string;
}
export declare function contactsLookup(name: string, field: 'phone' | 'email'): ContactQueryResult;
export interface CalendarEvent {
    summary: string;
    start: Date;
    end: Date;
    description?: string;
    location?: string;
}
/** Build a minimal RFC-5545 VCALENDAR string ready to write to a .ics file. */
export declare function buildICS(e: CalendarEvent): string;
//# sourceMappingURL=os-commands.d.ts.map