import chalk from 'chalk'; import * as Log from '../../log'; /** An abstract class for interacting with a native device. */ export abstract class DeviceManager { constructor(public device: IDevice) {} abstract get name(): string; abstract get identifier(): string; logOpeningUrl(url: string) { Log.log(chalk`\u203A Opening {underline ${url}} on {bold ${this.name}}`); } abstract startAsync(): Promise; abstract getAppVersionAsync(applicationId: string): Promise; abstract installAppAsync(binaryPath: string): Promise; abstract uninstallAppAsync(applicationId: string): Promise; abstract isAppInstalledAsync(applicationId: string): Promise; abstract openUrlAsync(url: string): Promise; abstract activateWindowAsync(): Promise; abstract ensureExpoGoAsync(sdkVersion?: string): Promise; }