import { loadDefinitions } from '@trezor/protobuf'; import { PROTOCOL_MALFORMED, ThpState, TransportProtocol } from '@trezor/protocol'; import { ScheduleActionParams, ScheduledAction, TypedEmitter } from '@trezor/utils'; import type { BridgeCommonErrors } from './bridge'; import { OpenDeviceChannel } from '../api/abstract'; import { TRANSPORT } from '../constants'; import * as ERRORS from '../errors'; import { AbortableParam, AnyError, AsyncResultWithTypedError, Descriptor, Logger, MessageResponse, PathPublic, ResultWithTypedError, Session, Success } from '../types'; export type AcquireInput = { path: PathPublic; previous: Session | null; }; export type ReleaseInput = { path: PathPublic; session: Session; }; export interface AbstractTransportParams { messages: Record; logger?: Logger; debugLink?: boolean; id: string; } export declare const isTransportInstance: (transport?: AbstractTransport) => boolean; export type ReadWriteError = typeof ERRORS.HTTP_ERROR | typeof ERRORS.WRONG_RESULT_TYPE | typeof ERRORS.OTHER_CALL_IN_PROGRESS | typeof PROTOCOL_MALFORMED | typeof ERRORS.DEVICE_DISCONNECTED_DURING_ACTION | typeof ERRORS.UNEXPECTED_ERROR | typeof ERRORS.SESSION_NOT_FOUND | typeof ERRORS.ABORTED_BY_TIMEOUT | typeof ERRORS.ABORTED_BY_SIGNAL | typeof ERRORS.WRONG_ENVIRONMENT | typeof ERRORS.DEVICE_NOT_FOUND | typeof ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE | typeof ERRORS.INTERFACE_DATA_TRANSFER | typeof ERRORS.THP_STATE_MISSING; type TransportEvents = { [TRANSPORT.DEVICE_CONNECTED]: Descriptor; [TRANSPORT.ERROR]: BridgeCommonErrors | typeof ERRORS.API_DISCONNECTED; [TRANSPORT.STOPPED]: void; [TRANSPORT.SEND_MESSAGE_PROGRESS]: number; [TRANSPORT.TREZOR_PUSH_NOTIFICATION]: { id: string; data: number[]; }; [TRANSPORT.BATTERY_LEVEL]: { id: string; data: number[]; }; }; export type TransportDeviceEvent = { type: typeof TRANSPORT.DEVICE_DISCONNECTED; } | { type: typeof TRANSPORT.DEVICE_REQUEST_RELEASE; } | { type: typeof TRANSPORT.DEVICE_SESSION_CHANGED; descriptor: Descriptor; }; export declare abstract class AbstractTransport extends TypedEmitter { abstract readonly name: 'BridgeTransport' | 'NodeUsbTransport' | 'WebUsbTransport' | 'UdpTransport' | 'NativeUsbTransport' | 'BluetoothTransport' | 'NativeBluetoothTransport'; isOutdated: boolean; version: string; protected stopped: boolean; protected listening: boolean; protected messages: protobuf.Root; protected descriptors: Descriptor[]; protected abortController: AbortController; protected logger?: Logger; protected id: string; readonly deviceEvents: TypedEmitter<{ [path: PathPublic]: TransportDeviceEvent; }>; constructor({ messages, logger, id }: AbstractTransportParams); get apiType(): 'usb' | 'bluetooth' | 'udp'; ping(_params?: AbortableParam): Promise; abstract init(params?: AbortableParam): AsyncResultWithTypedError; abstract listen(): ResultWithTypedError; abstract enumerate(params?: AbortableParam): AsyncResultWithTypedError; abstract acquire(params: { input: AcquireInput; } & AbortableParam): AsyncResultWithTypedError; abstract release(params: ReleaseInput & AbortableParam): AsyncResultWithTypedError; abstract releaseDevice(session: Session): AsyncResultWithTypedError; abstract releaseSync(session: Session): void; abstract send(params: { path?: string; session: Session; name: string; data: Record; protocol?: TransportProtocol; thpState?: ThpState; } & AbortableParam): AsyncResultWithTypedError; abstract receive(params: { path?: string; session: Session; protocol?: TransportProtocol; thpState?: ThpState; } & AbortableParam): AsyncResultWithTypedError; abstract call(params: { session: Session; name: string; data: Record; protocol?: TransportProtocol; thpState?: ThpState; } & AbortableParam): AsyncResultWithTypedError; subscribe(_params: { path: any; channels: OpenDeviceChannel[]; signal?: AbortSignal; }): AsyncResultWithTypedError, ReadWriteError>; stop(): void; handleDescriptorsChange(nextDescriptors: Descriptor[]): void; getDescriptor(path: PathPublic): Descriptor | undefined; getMessage(message?: string): boolean; getMessages(): import("protobufjs").Root; updateMessages(messages: Record): void; loadMessages(packageName: string, packageLoader: Parameters[2]): Promise; protected success(payload: T): Success; protected error(payload: { error: E; message?: string; }): { success: false; error: E; message: string | undefined; }; protected unknownError: (err: Error | string, expectedErrors?: E[]) => { success: false; error: E; message: string | undefined; } | { success: false; error: "unexpected error"; message: string; }; private mergeAbort; protected scheduleAction: (action: ScheduledAction, params?: ScheduleActionParams, errors?: E[]) => Promise; message: string | undefined; } | { success: false; error: "unexpected error"; message: string; }>; } export type AbstractTransportMethodParams = AbstractTransport[K] extends (...args: any[]) => any ? Parameters[0] : never; export {}; //# sourceMappingURL=abstract.d.ts.map