UNPKG

@trezor/connect

Version:

High-level javascript interface for Trezor hardware wallet.

199 lines 10 kB
import { TransportProtocol } from '@trezor/protocol'; import { Session } from '@trezor/transport'; import { type Descriptor, type Transport } from '@trezor/transport'; import { TypedEmitter } from '@trezor/utils'; import { DeviceCommands } from './DeviceCommands'; import { PROTO } from '../constants'; import { IStateStorage } from './StateStorage'; import type { PromptCallback } from './prompts'; import { DEVICE, DeviceButtonRequestPayload, DeviceVersionChanged, UiResponsePassphrase, UiResponsePin, UiResponseWord } from '../events'; import { DeviceFirmwareStatus, DeviceState, Device as DeviceTyped, DeviceUniquePath, FirmwareType, ReleaseInfo, UnavailableCapabilities, VersionArray } from '../types'; type RunOptions = { skipFinalReload?: boolean; keepSession?: boolean; useCardanoDerivation?: boolean; skipFirmwareChecks?: boolean; skipLanguageChecks?: boolean; }; export declare const CANCEL_TIMEOUT = 1000; export declare const GET_FEATURES_TIMEOUT = 3000; export declare const GET_FEATURES_TIMEOUT_REACT_NATIVE = 20000; export interface DeviceEvents { [DEVICE.PIN]: (device: Device, type: PROTO.PinMatrixRequestType | undefined, callback: PromptCallback<UiResponsePin['payload']>) => void; [DEVICE.WORD]: (device: Device, type: PROTO.WordRequestType, callback: PromptCallback<UiResponseWord['payload']>) => void; [DEVICE.PASSPHRASE]: (device: Device, callback: PromptCallback<UiResponsePassphrase['payload']>) => void; [DEVICE.PASSPHRASE_ON_DEVICE]: () => void; [DEVICE.BUTTON]: (device: Device, payload: DeviceButtonRequestPayload) => void; [DEVICE.FIRMWARE_VERSION_CHANGED]: (payload: DeviceVersionChanged['payload']) => void; } type DeviceLifecycle = typeof DEVICE.CONNECT | typeof DEVICE.CONNECT_UNACQUIRED | typeof DEVICE.DISCONNECT | typeof DEVICE.CHANGED; type DeviceLifecycleListener = (lifecycle: DeviceLifecycle) => void; type DeviceParams = { id: DeviceUniquePath; transport: Transport; descriptor: Descriptor; listener: DeviceLifecycleListener; }; export declare class Device extends TypedEmitter<DeviceEvents> { readonly transport: Transport; readonly protocol: TransportProtocol; readonly transportPath: import("@trezor/transport/lib/types").PathPublic; private readonly transportSessionOwner; private readonly transportDescriptorType; private readonly bluetoothProps; private session; private lastAcquiredHere; private unreadableError?; private _firmwareStatus; get firmwareStatus(): DeviceFirmwareStatus; private _firmwareRelease?; get firmwareRelease(): ReleaseInfo | null | undefined; private _features; get features(): { _passphrase_cached?: boolean | undefined; busy?: boolean | undefined; homescreen_format?: "Toif" | "Jpeg" | "ToiG" | undefined; hide_passphrase_from_host?: boolean | undefined; unit_color?: number | undefined; unit_btconly?: boolean | undefined; homescreen_width?: number | undefined; homescreen_height?: number | undefined; bootloader_locked?: boolean | undefined; language_version_matches?: boolean | undefined; unit_packaging?: number | undefined; haptic_feedback?: boolean | undefined; recovery_type?: "NormalRecovery" | "DryRun" | "UnlockRepeatedBackup" | undefined; optiga_sec?: number | undefined; vendor: string; major_version: number; minor_version: number; patch_version: number; bootloader_mode: boolean | null; device_id: string | null; pin_protection: boolean | null; passphrase_protection: boolean | null; language: string | null; label: string | null; initialized: boolean | null; revision: string | null; bootloader_hash: string | null; imported: boolean | null; unlocked: boolean | null; firmware_present: boolean | null; backup_availability: "NotAvailable" | "Required" | "Available" | null; flags: number | null; model: string; fw_major: number | null; fw_minor: number | null; fw_patch: number | null; fw_vendor: string | null; unfinished_backup: boolean | null; no_backup: boolean | null; recovery_status: "Nothing" | "Recovery" | "Backup" | null; capabilities: ("Capability_Bitcoin" | "Capability_Bitcoin_like" | "Capability_Binance" | "Capability_Cardano" | "Capability_Crypto" | "Capability_EOS" | "Capability_Ethereum" | "Capability_Lisk" | "Capability_Monero" | "Capability_NEM" | "Capability_Ripple" | "Capability_Stellar" | "Capability_Tezos" | "Capability_U2F" | "Capability_Shamir" | "Capability_ShamirGroups" | "Capability_PassphraseEntry" | "Capability_Solana" | "Capability_Translations" | "Capability_Brightness" | "Capability_Haptic")[]; backup_type: "Bip39" | "Slip39_Basic" | "Slip39_Advanced" | "Slip39_Single_Extendable" | "Slip39_Basic_Extendable" | "Slip39_Advanced_Extendable" | null; sd_card_present: boolean | null; sd_protection: boolean | null; wipe_code_protection: boolean | null; session_id: string | null; passphrase_always_on_device: boolean | null; safety_checks: "Strict" | "PromptAlways" | "PromptTemporarily" | null; auto_lock_delay_ms: number | null; display_rotation: "North" | "East" | "South" | "West" | null; experimental_features: boolean | null; internal_model: PROTO.DeviceModelInternal; }; private _featuresNeedsReload; private acquirePromise?; private releasePromise?; private runPromise?; private keepTransportSession; commands?: DeviceCommands; private cancelableAction?; private loaded; private inconsistent; private firstRunPromise; private instance; private state; private stateStorage?; private _unavailableCapabilities; get unavailableCapabilities(): Readonly<UnavailableCapabilities>; private _firmwareType?; get firmwareType(): FirmwareType | undefined; private name; private color?; private availableTranslations; private authenticityChecks; private readonly uniquePath; private readonly emitLifecycle; private sessionDfd?; handshakeFinished: boolean; constructor({ id, transport, descriptor, listener }: DeviceParams); private getSessionChangePromise; private waitAndCompareSession; acquire(): import("@trezor/transport/lib/types").AsyncResultWithTypedError<Session, "Network request failed" | "Wrong result type." | "device disconnected during action" | "unexpected error" | "Aborted by timeout" | "Aborted by signal" | "This transport can not be used in this environment" | "device not found" | "Unable to open device" | "descriptor not found" | "wrong previous session" | "LIBUSB_ERROR_ACCESS">; release(): Promise<import("@trezor/transport/lib/types").Success<null> | { success: false; error: "session not found" | "Network request failed" | "Wrong result type." | "device disconnected during action" | "unexpected error" | "Aborted by timeout" | "Aborted by signal" | "This transport can not be used in this environment" | "device not found" | "Unable to open device" | "wrong previous session"; message?: string; } | undefined>; releaseTransportSession(): void; cleanup(release?: boolean): Promise<void>; handshake(delay?: number): Promise<void>; updateDescriptor(descriptor: Descriptor): Promise<void>; run(fn?: () => Promise<void>, options?: RunOptions): Promise<void>; override(error: Error): Promise<void>; setCancelableAction(callback: NonNullable<typeof this.cancelableAction>): void; clearCancelableAction(): void; interruptionFromUser(error: Error): Promise<void>; usedElsewhere(): void; private _runInner; getCommands(): DeviceCommands; setInstance(instance?: number): void; getInstance(): number; getState(): DeviceState | undefined; setState(state?: Partial<DeviceState>): void; validateState(preauthorized?: boolean): Promise<`${string}@${string}:${number}` | undefined>; initialize(useCardanoDerivation: boolean): Promise<void>; initStorage(storage: IStateStorage): void; getFeatures(): Promise<void>; private checkFirmwareHashWithRetries; private checkFirmwareHash; private checkFirmwareRevisionWithRetries; private checkFirmwareRevision; changeLanguage({ language, binary, }: { language?: undefined; binary: ArrayBuffer; } | { language: string; binary?: undefined; }): Promise<{ message: string; }>; private _uploadTranslationData; private _updateFeatures; isUnacquired(): boolean; isUnreadable(): boolean; disconnect(): Promise<void>; isBootloader(): boolean; isInitialized(): boolean; isSeedless(): boolean; isInconsistent(): boolean; getVersion(): VersionArray | undefined; atLeast(versions: string[] | string): boolean; isUsed(): boolean; isUsedHere(): boolean; isUsedElsewhere(): boolean; isRunning(): boolean; isLoaded(): boolean; waitForFirstRun(): Promise<boolean>; getLocalSession(): Session | null; getUniquePath(): DeviceUniquePath; isT1(): boolean; hasUnexpectedMode(allow: string[], require: string[]): "ui-device_bootloader_mode" | "ui-device_not_in_bootloader_mode" | "ui-device_not_initialized" | "ui-device_seedless" | null; dispose(): import("@trezor/transport/lib/types").AsyncResultWithTypedError<null, "session not found" | "Network request failed" | "Wrong result type." | "device disconnected during action" | "unexpected error" | "Aborted by timeout" | "Aborted by signal" | "This transport can not be used in this environment" | "device not found" | "Unable to open device" | "wrong previous session"> | undefined; private getMode; toMessageObject(): DeviceTyped; } export {}; //# sourceMappingURL=Device.d.ts.map