{"version":3,"file":"dmk-error-translator.mjs","sourceRoot":"","sources":["../../src/dmk/dmk-error-translator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wCAAwC;AACtE,OAAO,EAAE,oBAAoB,EAAE,+BAA+B;AAE9D,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,OAAO,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,WAAW,IAAI,KAAK,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAkB;IAC3C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,yBAAyB,CAAC;AACnC,CAAC","sourcesContent":["import { DeviceExchangeError } from '@ledgerhq/device-management-kit';\nimport { TransportStatusError } from '@ledgerhq/hw-transport';\n\nconst GENERIC_ERROR_STATUS_CODE = 0x6f00;\n\n/**\n * Translates a DMK error (DeviceExchangeError with hex error codes) into a\n * TransportStatusError that the Ledger keyring error handler can process.\n *\n * @param error - The error from a DMK device action or command.\n * @returns A TransportStatusError with the corresponding APDU status code.\n */\nexport function translateDmkError(error: unknown): TransportStatusError {\n  if (isDeviceExchangeError(error)) {\n    const statusCode = parseHexErrorCode(error.errorCode);\n    return new TransportStatusError(statusCode);\n  }\n\n  return new TransportStatusError(GENERIC_ERROR_STATUS_CODE);\n}\n\nexport function isDeviceExchangeError(\n  error: unknown,\n): error is DeviceExchangeError<string> {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    '_tag' in error &&\n    'errorCode' in error\n  );\n}\n\nfunction parseHexErrorCode(errorCode: unknown): number {\n  if (typeof errorCode === 'string' && /^[0-9a-fA-F]{4}$/u.test(errorCode)) {\n    return parseInt(errorCode, 16);\n  }\n\n  return GENERIC_ERROR_STATUS_CODE;\n}\n"]}