import { Device, Script, Session } from 'frida'; import express from 'express'; import { ResponseError } from '../util/http-server.js'; import MetricsCollector from './metrics.js'; import { FResult } from './types.js'; type WaitCallback = readonly [ callback: (device: DeviceConnection) => void, filter: ((device: DeviceConnection) => boolean) | undefined ]; export declare class DevicePool { readonly metrics: MetricsCollector | null; devices: DeviceConnection[]; available: DeviceConnection[]; waiting: WaitCallback[]; onDeviceRemoved?: (device: DeviceConnection) => void; constructor(metrics?: MetricsCollector | null); getAvailableDevice(filter?: (device: DeviceConnection) => boolean): DeviceConnection | undefined; waitForAvailableDevice(filter?: (device: DeviceConnection) => boolean, timeout_ms?: number, signal?: AbortSignal): Promise; returnAvailableDevice(device: DeviceConnection): void; protected handleDeviceAvailable(device: DeviceConnection): void; protected handleDeviceUnavailable(device: DeviceConnection, err?: unknown): void; add(device: DeviceConnection): void; remove(device: DeviceConnection): void; callWithDevice(fn: (device: DeviceConnection, queue_duration: number | null) => Promise | T, filter?: (device: DeviceConnection) => boolean, timeout?: number, retry?: number, signal?: AbortSignal, /** @internal */ _attempts?: number): Promise; ping(): Promise; } export declare abstract class DeviceConnection { readonly device: Device; readonly session: Session; readonly script: Script; readonly platform: 'iOS' | 'Android'; readonly znca_version: string; readonly znca_build: number; readonly platform_version_info: object; readonly debug_info: object; readonly data: {}; onDeviceDisconnected?: () => void; constructor(device: Device, session: Session, script: Script, platform: 'iOS' | 'Android', znca_version: string, znca_build: number, platform_version_info: object, debug_info: object, data?: {}); private _destroyed; get destroyed(): boolean; handleDeviceDisconnected(err?: unknown): void; abstract setResponseHeaders(res: express.Response): void; abstract ping(): Promise; abstract genAudioH(token: string, timestamp: string | number | undefined, request_id: string, user_data?: unknown): Promise; abstract genAudioH2(token: string, timestamp: string | number | undefined, request_id: string, user_data?: unknown): Promise; abstract generateRequestId(): string; } export declare class DeviceTimeoutError extends ResponseError { constructor(devices: DevicePool, filter?: (device: DeviceConnection) => boolean); } export {};