/** * Whether the device fold can run: the devices a platform needs, booted and * carrying the app. The device-fold twin of the HTTP probe in targets.ts, * and like it, it never starts anything: a missing device is reported with * the project's own instruction for getting one. */ import { type NativeDevice, type NativePlatform } from "./native-device.js"; import type { DeviceKind, LookoutConfig } from "../types.js"; export interface DeviceStatus { platform: NativePlatform; /** The kinds the config requires (default phone). */ required: DeviceKind[]; /** One device per kind, booted right now. */ booted: NativeDevice[]; /** Required kinds with no booted device. */ missing: DeviceKind[]; /** Booted devices without the app installed. */ appMissing: NativeDevice[]; /** The config's own instruction, or the platform's generic one. */ hint: string; /** No native block for this platform at all. */ unconfigured: boolean; } /** Probe each native platform a run walks. Never boots or installs anything. */ export declare function preflightDevices(config: LookoutConfig, platforms: readonly NativePlatform[]): Promise; /** Why the device fold cannot run, or null when every required device is there with the app. */ export declare function deviceDownReason(statuses: readonly DeviceStatus[]): string | null; /** One line per device for a person: what is booted and whether it can be photographed. */ export declare function deviceLines(statuses: readonly DeviceStatus[]): string[];