import { TypedEmitter } from '@trezor/utils'; import { TRANSPORT } from '../constants'; import * as ERRORS from '../errors'; import type { AnyError, ApiType, AsyncResultWithTypedError, DescriptorApiLevel, Logger, PathInternal, Success } from '../types'; export interface AbstractApiConstructorParams { logger?: Logger; type: ApiType; } export type OpenDeviceChannel = 'read' | 'trezor-push-notification' | 'battery-level'; type AccessLock = { read: boolean; write: boolean; }; export declare abstract class AbstractApi extends TypedEmitter<{ 'transport-interface-change': DescriptorApiLevel[]; 'transport-interface-error': { error: typeof ERRORS.API_DISCONNECTED; }; [TRANSPORT.TREZOR_PUSH_NOTIFICATION]: { id: string; data: number[]; }; [TRANSPORT.BATTERY_LEVEL]: { id: string; data: number[]; }; }> { protected logger?: Logger; protected listening: boolean; protected lock: Record; type: ApiType; constructor({ logger, type }: AbstractApiConstructorParams); abstract enumerate(signal?: AbortSignal): AsyncResultWithTypedError; abstract listen(): void; abstract read(path: PathInternal, signal?: AbortSignal): AsyncResultWithTypedError; abstract write(path: PathInternal, buffers: Buffer, signal?: AbortSignal): AsyncResultWithTypedError; abstract openDevice(path: PathInternal, options?: { reset: boolean; signal?: AbortSignal; channel?: OpenDeviceChannel; }): AsyncResultWithTypedError; abstract closeDevice(path: PathInternal, options?: { channel?: OpenDeviceChannel; }): AsyncResultWithTypedError; abstract dispose(): void; abstract chunkSize: number; protected success(payload: T): Success; protected error(payload: { error: E; message?: string; }): { success: false; error: E; message: string | undefined; }; protected unknownError(err: Error, expectedErrors?: E[]): { success: false; error: E; message: string | undefined; } | { success: false; error: "unexpected error"; message: string; }; private synchronize; private requestAccess; runInIsolation: ReturnType>({ lock, path }: { lock: AccessLock; path: string; }, fn: T) => Promise<{ success: false; error: "other call in progress"; message: string | undefined; } | (ReturnType extends infer T_1 ? T_1 extends ReturnType ? T_1 extends Promise ? T_1 : Promise : never : never) | { success: false; error: "unexpected error"; message: string; }>; } export type AbstractApiAwaitedResult = AbstractApi[K] extends (...args: any[]) => any ? Awaited> : never; export {}; //# sourceMappingURL=abstract.d.ts.map