Using the Device Module in Services Kit Core Client

The Device Module provides methods for handling the physical device, including opening low-level transport and selecting a device in the connected wallet.

Device Module Overview

Access the Device module via walletApiClient.device.

Methods:

1. Open Low-Level Transport

Open low-level transport in the connected wallet.

walletApiClient.device.transport(params: DeviceTransport["params"]): Promise<HWTransport>

Parameters:

  • params: An object containing the parameters for the transport.

Returns: A promise that resolves with an instance of Transport compatible with @ledgerhq/hw-transport.

Required permission: device.transport

Example:
async function openTransport(walletApiClient, params) {
  try {
    const transport = await walletApiClient.device.transport(params);
    console.log('Transport opened:', transport);
  } catch (error) {
    console.error('Error opening transport:', error);
  }
}

2. Open Device

Open a device in the connected wallet.

walletApiClient.device.open(params: DeviceOpen["params"]): Promise<HWTransport>

Parameters:

  • params: An object containing the parameters to open the device.

Returns: A promise that resolves with an instance of Transport compatible with @ledgerhq/hw-transport.

Required permission: device.open

Example:
async function openDevice(walletApiClient, params) {
  try {
    const device = await walletApiClient.device.open(params);
    console.log('Device opened:', device);
  } catch (error) {
    console.error('Error opening device:', error);
  }
}

3. Select Device

Select a device in the connected wallet.

walletApiClient.device.select(params: DeviceSelect["params"]): Promise<DeviceSelect["result"]>

Parameters:

  • params: An object containing the parameters to select and check the device.

Returns: A promise that resolves with a deviceId which can be used with the device.open method.

Required permission: device.select

Example:
async function selectDevice(walletApiClient, params) {
  try {
    const deviceId = await walletApiClient.device.select(params);
    console.log('Device selected, ID:', deviceId);
  } catch (error) {
    console.error('Error selecting device:', error);
  }
}

Handling Errors

Make sure to handle errors gracefully and provide appropriate feedback to the user. Additionally, always remember to disconnect the WindowMessageTransport when you’re done interacting with the Ledger Services Kit to free up resources.

Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Nano S, Ledger Vault, Ledger OS are registered trademarks of Ledger SAS