/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@ledgerhq/hw-transport-webusb@6.33.0/lib/TransportWebUSB.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const hw_transport_1=__importDefault(require("@ledgerhq/hw-transport")),hid_framing_1=__importDefault(require("@ledgerhq/devices/hid-framing")),devices_1=require("@ledgerhq/devices"),logs_1=require("@ledgerhq/logs"),errors_1=require("@ledgerhq/errors"),webusb_1=require("./webusb"),configurationValue=1,endpointNumber=3;class TransportWebUSB extends hw_transport_1.default{device;deviceModel;channel=Math.floor(65535*Math.random());packetSize=64;interfaceNumber;constructor(e,t){super(),this.device=e,this.interfaceNumber=t,this.deviceModel=(0,devices_1.identifyUSBProductId)(e.productId)}static isSupported=webusb_1.isSupported;static list=webusb_1.getLedgerDevices;static listen=e=>{let t=!1;return(0,webusb_1.getFirstLedgerDevice)().then((r=>{if(!t){const t=(0,devices_1.identifyUSBProductId)(r.productId);e.next({type:"add",descriptor:r,deviceModel:t}),e.complete()}}),(t=>{window.DOMException&&t instanceof window.DOMException&&18===t.code?e.error(new errors_1.TransportWebUSBGestureRequired(t.message)):e.error(new errors_1.TransportOpenUserCancelled(t.message))})),{unsubscribe:function(){t=!0}}};static async request(){const e=await(0,webusb_1.requestLedgerDevice)();return TransportWebUSB.open(e)}static async openConnected(){const e=await(0,webusb_1.getLedgerDevices)();return 0===e.length?null:TransportWebUSB.open(e[0])}static async open(e){await e.open(),null===e.configuration&&await e.selectConfiguration(1),await gracefullyResetDevice(e);const t=e.configurations[0].interfaces.find((({alternates:e})=>e.some((e=>255===e.interfaceClass))));if(!t)throw new errors_1.TransportInterfaceNotAvailable("No WebUSB interface found for your Ledger device. Please upgrade firmware or contact techsupport.");const r=t.interfaceNumber;try{await e.claimInterface(r)}catch(t){throw await e.close(),new errors_1.TransportInterfaceNotAvailable(t.message)}const i=new TransportWebUSB(e,r),s=t=>{e===t.device&&(navigator.usb.removeEventListener("disconnect",s),i._emitDisconnect(new errors_1.DisconnectedDevice))};return navigator.usb.addEventListener("disconnect",s),i}_disconnectEmitted=!1;_emitDisconnect=e=>{this._disconnectEmitted||(this._disconnectEmitted=!0,this.emit("disconnect",e))};async close(){await this.exchangeBusyPromise,await this.device.releaseInterface(this.interfaceNumber),await gracefullyResetDevice(this.device),await this.device.close()}async exchange(e){return await this.exchangeAtomicImpl((async()=>{const{channel:t,packetSize:r}=this;(0,logs_1.log)("apdu","=> "+e.toString("hex"));const i=(0,hid_framing_1.default)(t,r),s=i.makeBlocks(e);for(let e=0;e<s.length;e++)await this.device.transferOut(3,s[e]);let n,c;for(;!(n=i.getReducedResult(c));){const e=await this.device.transferIn(3,r),t=Buffer.from(e.data.buffer);c=i.reduceResponse(c,t)}return(0,logs_1.log)("apdu","<= "+n.toString("hex")),n})).catch((e=>{if(e&&e.message&&e.message.includes("disconnected"))throw this._emitDisconnect(e),new errors_1.DisconnectedDeviceDuringOperation(e.message);throw e}))}setScrambleKey(){}}async function gracefullyResetDevice(e){try{await e.reset()}catch(e){console.warn(e)}}exports.default=TransportWebUSB;
//# sourceMappingURL=/sm/35acbe5557450243b31505950e232153695d96a41daa4afcd7d9eaaf1146ea61.map