import type { DeviceKind, PlatformKind } from "../types.js"; export type NativePlatform = Exclude; export interface NativeDevice { platform: NativePlatform; /** The simulator udid, or the emulator's adb serial: what every command is addressed to. */ id: string; /** What a person calls it: "iPhone 17", "Pixel Tablet". */ name: string; formFactor: DeviceKind; } export declare function adbBin(): string; /** Every booted simulator in `xcrun simctl list devices booted -j`, iPads as tablets. */ export declare function devicesOfSimctl(json: string): NativeDevice[]; /** The serials `adb devices -l` reports as ready; offline and unauthorized ones are not devices yet. */ export declare function serialsOfAdb(output: string): string[]; /** An Android device from what `getprop` says about it: a tablet when the build says so. */ export declare function deviceOfAndroid(serial: string, model: string, characteristics: string): NativeDevice; /** The booted devices of one platform, or none when the tools are absent or nothing is booted. */ export declare function bootedDevices(platform: NativePlatform): Promise; /** Whether the app is installed on the device, asked the way the platform answers it. */ export declare function appInstalled(device: NativeDevice, bundleId: string): Promise; /** * One device per kind, in kind order: a run addresses one phone and one * tablet, because a shot's identity has no room for two of a kind, and * `chosen` says which was taken when several of one kind are booted. */ export declare function oneOfEachKind(devices: readonly NativeDevice[]): NativeDevice[];