{"version":3,"file":"ledger-error-handler.mjs","sourceRoot":"","sources":["../src/ledger-error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,+BAA+B;AAE9D,OAAO,EAAE,iBAAiB,EAAE,mBAAe;AAE3C;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc,EACd,eAAuB;IAEvB,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAyB,KAAK,CAAC;QAEnD,MAAM,IAAI,iBAAiB,CACzB,cAAc,CAAC,UAAU,EACzB,4BAA4B,CAAC,cAAc,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,SAAS,4BAA4B,CACnC,cAAoC;IAEpC,QAAQ,cAAc,CAAC,UAAU,EAAE,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,uCAAuC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,uCAAuC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,iDAAiD,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,gDAAgD,CAAC;QAC1D;YACE,OAAO,cAAc,CAAC,OAAO,CAAC;IAClC,CAAC;AACH,CAAC","sourcesContent":["import { TransportStatusError } from '@ledgerhq/hw-transport';\n\nimport { LedgerStatusError } from './type';\n\n/**\n * Central error handler for Ledger TransportStatusError instances.\n * Converts common Ledger transport errors into user-friendly error messages.\n *\n * @param error - The error to handle\n * @param fallbackMessage - Default error message if no specific handling is found\n * @throws Error with appropriate user-friendly message\n */\nexport function handleLedgerTransportError(\n  error: unknown,\n  fallbackMessage: string,\n): never {\n  if (error instanceof TransportStatusError) {\n    const transportError: TransportStatusError = error;\n\n    throw new LedgerStatusError(\n      transportError.statusCode,\n      getTransportErrorMessageFrom(transportError),\n    );\n  }\n\n  // For any other error (TransportStatusError not matching patterns or other errors)\n  throw error instanceof Error ? error : new Error(fallbackMessage);\n}\n\n/**\n * Get the transport error message from the transport error.\n *\n * @param transportError - The transport error\n * @returns The transport error message\n */\nfunction getTransportErrorMessageFrom(\n  transportError: TransportStatusError,\n): string {\n  switch (transportError.statusCode) {\n    case 0x6985:\n      return 'Ledger: User rejected the transaction';\n    case 0x6a80:\n      return 'Ledger: Blind signing must be enabled';\n    case 0x5515:\n      return 'Ledger: Device is locked. Unlock it to continue';\n    case 0x650f:\n      return 'Ledger: Ethereum app closed. Open it to unlock';\n    default:\n      return transportError.message;\n  }\n}\n"]}