@moonpay/cli 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,47 @@
1
+ process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
+ import{a as ho,b as kr,c as Lr,e as si,f as me,g as b,h as l,i as ai,j as R,l as ie,m as ca,n as ci}from"./chunk-RGIDTLVF.js";import{fb as Ce}from"./chunk-OYYN2ANR.js";import{e as $}from"./chunk-LMDE72OE.js";var mC=$(ho());var Gt=class{cla;ins;p1;p2;data;constructor(e,r,n,o,i){this.cla=e,this.ins=r,this.p1=n,this.p2=o,this.data=i??new Uint8Array}getRawApdu(){let e=Uint8Array.from([this.cla,this.ins,this.p1,this.p2,this.data.length]),r=new Uint8Array(e.length+this.data.length);return r.set(e,0),this.data.length>0&&r.set(this.data,e.length),r}};function ua(t){return typeof t=="string"&&/^0x[0-9a-fA-F]*$/.test(t)}function ot(t){if(t.startsWith("0x")&&(t=t.slice(2)),t.length===0)return new Uint8Array;if(t.length%2!==0&&(t="0"+t),/^[0-9a-fA-F]*$/.test(t)===!1)return null;let e=t.match(/.{1,2}/g)?.map(r=>parseInt(r,16));return!e||e.some(isNaN)?null:new Uint8Array(e)}function se(t,e=!0){return`${e?"0x":""}${Array.from(t,r=>r.toString(16).padStart(2,"0")).join("")}`}var Et=class{_tag="ValueOverflow";originalError;message;constructor(e,r=$t){this.message=`Value overflow for ${e}, max is ${r}`}},it=class{_tag="DataOverflow";message;originalError;constructor(e,r=0){this.message=r===0?`this.data is already full (value: ${e})`:`this.data will overflow with "${e}", remaining bytes: ${r}`}},qt=class{_tag="HexaString";message;originalError;constructor(e){this.message=`Invalid encoded hexa string or length is null: ${e}`}};var da=4294967295,Ht=class{constructor(e=da){this.maxPayloadSize=e}data=new Uint8Array;errors=[];build=()=>this.data;tryBuild=()=>this.hasErrors()?void 0:this.data;add8BitUIntToData=e=>this.addNumberToData(e,8n,!1,!1);add16BitUIntToData=(e,r=!0)=>this.addNumberToData(e,16n,!1,r);add32BitUIntToData=(e,r=!0)=>this.addNumberToData(e,32n,!1,r);add64BitUIntToData=(e,r=!0)=>this.addNumberToData(e,64n,!1,r);add128BitUIntToData=(e,r=!0)=>this.addNumberToData(e,128n,!1,r);add256BitUIntToData=(e,r=!0)=>this.addNumberToData(e,256n,!1,r);add16BitIntToData=(e,r=!0)=>this.addNumberToData(e,16n,!0,r);add32BitIntToData=(e,r=!0)=>this.addNumberToData(e,32n,!0,r);add64BitIntToData=(e,r=!0)=>this.addNumberToData(e,64n,!0,r);add128BitIntToData=(e,r=!0)=>this.addNumberToData(e,128n,!0,r);add256BitIntToData=(e,r=!0)=>this.addNumberToData(e,256n,!0,r);addBufferToData=e=>this.hasEnoughLengthRemaining(e)?(this.data=Uint8Array.from([...this.data,...e]),this):(this.errors.push(new it(e.toString())),this);addHexaStringToData=e=>{let r=ot(e);return r===null||r.length===0?(this.errors.push(new qt(e)),this):(this.addBufferToData(r),this)};addAsciiStringToData=e=>{let r=new TextEncoder().encode(e);return this.addBufferToData(r),this};encodeInLVFromHexa=e=>{let r=ot(e);return r===null||r.length===0?(this.errors.push(new qt(e)),this):this.hasEnoughLengthRemaining(r,!0)?(this.add8BitUIntToData(r.length),this.addBufferToData(r),this):(this.errors.push(new it(e)),this)};encodeInLVFromBuffer=e=>this.hasEnoughLengthRemaining(e,!0)?(this.add8BitUIntToData(e.length),this.addBufferToData(e),this):(this.errors.push(new it(e.toString())),this);encodeInLVFromAscii=e=>this.hasEnoughLengthRemaining(e,!0)?(this.add8BitUIntToData(e.length),this.addAsciiStringToData(e),this):(this.errors.push(new it(e)),this);encodeInTLVFromAscii=(e,r)=>(this.add8BitUIntToData(e),this.encodeInLVFromAscii(r));encodeInTLVFromHexa=(e,r)=>(this.add8BitUIntToData(e),this.encodeInLVFromHexa(r));encodeInTLVFromBuffer=(e,r)=>(this.add8BitUIntToData(e),this.encodeInLVFromBuffer(r));encodeInTLVFromUInt8=(e,r)=>(this.add8BitUIntToData(e),this.add8BitUIntToData(1),this.add8BitUIntToData(r));encodeInTLVFromUInt16=(e,r,n=!0)=>(this.add8BitUIntToData(e),this.add8BitUIntToData(2),this.add16BitUIntToData(r,n));encodeInTLVFromUInt32=(e,r,n=!0)=>(this.add8BitUIntToData(e),this.add8BitUIntToData(4),this.add32BitUIntToData(r,n));encodeInTLVFromUInt64=(e,r,n=!0)=>(this.add8BitUIntToData(e),this.add8BitUIntToData(8),this.add64BitUIntToData(r,n));getAvailablePayloadLength=()=>this.maxPayloadSize-this.data.length;getErrors=()=>this.errors;hasErrors=()=>this.errors.length!==0;hasEnoughLengthRemaining=(e,r=!1)=>this.data.length+e.length+(r?1:0)<=this.maxPayloadSize;addNumberToData(e,r,n,o){let i=this.checkBoundsAndConvert(e,r,n);if(i===void 0)return this;let s=Number(r)/8,d=new Uint8Array(s);if(o)for(let c=s-1;c>=0;c--)d[c]=Number(i&0xffn),i>>=8n;else for(let c=0;c<s;c++)d[c]=Number(i&0xffn),i>>=8n;return this.addBufferToData(d)}checkBoundsAndConvert(e,r,n){if(typeof e=="number"){if(!Number.isInteger(e)||e>Number.MAX_SAFE_INTEGER){this.errors.push(new Et(e.toString()));return}e=BigInt(e)}if(n){let o=1n<<r-1n;if(e>=o||e<-o){this.errors.push(new Et(e.toString(),o-1n));return}if(e<0n){let i=(1n<<r)-1n;e=-e,e=(~e&i)+1n}}else{let o=1n<<r;if(e<0||e>=o){this.errors.push(new Et(e.toString(),o-1n));return}}return e}};var $t=255,Ed=$t+5,H=class{_ins;_cla;_p1;p2;data=new Ht($t);constructor({ins:e,cla:r,p1:n,p2:o}){this._cla=r&255,this._ins=e&255,this._p1=n&255,this.p2=o&255}build=()=>new Gt(this._cla,this._ins,this._p1,this.p2,this.data.build());add8BitUIntToData=e=>(this.data.add8BitUIntToData(e),this);add16BitUIntToData=e=>(this.data.add16BitUIntToData(e),this);add32BitUIntToData=e=>(this.data.add32BitUIntToData(e),this);addBufferToData=e=>(this.data.addBufferToData(e),this);addHexaStringToData=e=>(this.data.addHexaStringToData(e),this);addAsciiStringToData=e=>(this.data.addAsciiStringToData(e),this);encodeInLVFromHexa=e=>(this.data.encodeInLVFromHexa(e),this);encodeInLVFromBuffer=e=>(this.data.encodeInLVFromBuffer(e),this);encodeInLVFromAscii=e=>(this.data.encodeInLVFromAscii(e),this);getAvailablePayloadLength=()=>this.data.getAvailablePayloadLength();getErrors=()=>this.data.getErrors()};var zt=class{constructor(e){this.buffer=e}index=0;testMinimalLength(e){return e<=this.buffer.length-this.index}extract8BitUInt(){if(!this.outOfRange(1))return this.buffer[this.index++]}extract16BitUInt(e=!0){let r=this.extractNumber(16n,!1,e);return r===void 0?void 0:Number(r)}extract16BitInt(e=!0){let r=this.extractNumber(16n,!0,e);return r===void 0?void 0:Number(r)}extract32BitUInt(e=!0){let r=this.extractNumber(32n,!1,e);return r===void 0?void 0:Number(r)}extract32BitInt(e=!0){let r=this.extractNumber(32n,!0,e);return r===void 0?void 0:Number(r)}extract64BitUInt(e=!0){return this.extractNumber(64n,!1,e)}extract64BitInt(e=!0){return this.extractNumber(64n,!0,e)}extract128BitUInt(e=!0){return this.extractNumber(128n,!1,e)}extract128BitInt(e=!0){return this.extractNumber(128n,!0,e)}extract256BitUInt(e=!0){return this.extractNumber(256n,!1,e)}extract256BitInt(e=!0){return this.extractNumber(256n,!0,e)}extractFieldByLength(e){if(this.outOfRange(e))return;if(e===0)return new Uint8Array;let r=this.buffer.slice(this.index,this.index+e);return this.index+=e,r}extractFieldLVEncoded(){let e=this.extract8BitUInt();if(e===void 0)return;if(e===0)return new Uint8Array;let r=this.extractFieldByLength(e);return r===void 0&&this.index--,r}extractFieldTLVEncoded(){if(this.outOfRange(2))return;let e=this.index,r=this.extract8BitUInt(),n=this.extractFieldLVEncoded();if(r===void 0||n===void 0){this.index--;return}let o=this.index;return{tag:r,value:n,tlv:this.buffer.slice(e,o)}}encodeToHexaString(e,r=!1){if(e===void 0||e.length===0)return"";let n=se(e);return r?n:n.slice(2)}encodeToString(e){let r="",n=0;if(!e)return r;for(;n<=e.length;){let o=e[n];o&&(r+=String.fromCharCode(o)),n++}return r}getCurrentIndex(){return this.index}resetIndex(){this.index=0}getUnparsedRemainingLength(){return this.buffer.length-this.index}outOfRange(e){return this.index+e>this.buffer.length}extractNumber(e,r,n){let o=Number(e)/8;if(this.outOfRange(o))return;let i=0n;if(n)for(let s=0;s<o;s++)i=i<<8n|BigInt(this.buffer[s+this.index]);else for(let s=o-1;s>=0;s--)i=i<<8n|BigInt(this.buffer[s+this.index]);if(r){let s=1n<<e-1n;i&s&&(i-=s<<1n)}return this.index+=o,i}};var j=class{parser;constructor(e){this.parser=new zt(e.data)}testMinimalLength=e=>this.parser.testMinimalLength(e);extract8BitUInt=()=>this.parser.extract8BitUInt();extract16BitUInt=()=>this.parser.extract16BitUInt();extract32BitUInt=()=>this.parser.extract32BitUInt();extractFieldByLength=e=>this.parser.extractFieldByLength(e);extractFieldLVEncoded=()=>this.parser.extractFieldLVEncoded();extractFieldTLVEncoded=()=>this.parser.extractFieldTLVEncoded();encodeToHexaString(e,r=!1){return r?this.parser.encodeToHexaString(e,!0):this.parser.encodeToHexaString(e,!1)}encodeToString=e=>this.parser.encodeToString(e);getUnparsedRemainingLength=()=>this.parser.getUnparsedRemainingLength()};var ye=class{_tag="InvalidStatusWordError";originalError;constructor(e){this.originalError=new Error(e??"Invalid status word.")}},Mr=class{_tag="InvalidBatteryStatusTypeError";originalError;constructor(e){this.originalError=new Error(e??"Invalid battery status type.")}},st=class{_tag="InvalidBatteryDataError";originalError;constructor(e){this.originalError=new Error(e??"Invalid battery data.")}};var Nr=class{_tag="InvalidResponseFormatError";originalError;constructor(e){this.originalError=new Error(e??"Invalid response format.")}},Wt=class{_tag="InvalidGetFirmwareMetadataResponseError";originalError;constructor(e){this.originalError=new Error(e??"Invalid Firmware Metadata response error.")}};var ui=(t=>(t.Error="ERROR",t.Success="SUCCESS",t))(ui||{});function y({data:t,error:e}){return e?{status:"ERROR",error:e}:{status:"SUCCESS",data:t}}function I(t){return t.status==="SUCCESS"}var k=class t{static isValidStatusCode(e){return e.length===2}static isSuccessResponse({statusCode:e}){return t.isValidStatusCode(e)?e[0]===144&&e[1]===0:!1}static isLockedDeviceResponse({statusCode:e}){return t.isValidStatusCode(e)?e[0]===85&&e[1]===21||e[0]===105&&e[1]===130||e[0]===83&&e[1]===3:!1}static isRefusedByUser({statusCode:e}){return t.isValidStatusCode(e)?e[0]===85&&e[1]===1||e[0]===105&&e[1]===133:!1}static isAppAlreadyInstalled({statusCode:e}){return t.isValidStatusCode(e)?e[0]===106&&e[1]===128||e[0]===106&&e[1]===129||e[0]===106&&e[1]===142||e[0]===106&&e[1]===143:!1}static isOutOfMemory({statusCode:e}){return t.isValidStatusCode(e)?e[0]===106&&e[1]===132||e[0]===106&&e[1]===133||e[0]===81&&e[1]===2||e[0]===81&&e[1]===3:!1}static isApduThatTriggersDisconnection(e){let r=new Map;return r.set("openApp",new Uint8Array([224,216,0,0])),r.set("closeApp",new Uint8Array([176,167,0,0])),Array.from(r.values()).some(n=>{for(let o=0;o<4;o++)if(n[o]!==e[o])return!1;return!0})}};var he=class{_tag;originalError;errorCode;message;constructor({tag:e,errorCode:r,originalError:n,message:o}){this._tag=e,this.originalError=n,this.errorCode=r,this.message=o??"An error occured during device exchange."}},at=class{_tag="UnknownDeviceExchangeError";originalError;message;constructor(e){this.originalError=e,this.message="Unexpected device exchange error happened."}},di=class{_tag="DeviceBusyError";originalError;constructor(e){this.originalError=e??new Error("Device is busy, please try again later")}};var De=(t,e)=>Object.keys(e).includes(t);var Fr=class extends he{constructor(e){super({tag:"GlobalCommandError",...e})}},go={5515:{message:"Device is locked.",tag:"DeviceLockedError"},5501:{message:"Action refused on device.",tag:"ActionRefusedError"},5502:{message:"Pin is not set",tag:"PinNotSetError"},5223:{message:"Device internal error",tag:"DeviceInternalError"},"6e00":{message:"CLA not supported",tag:"DeviceInternalError"},"6d00":{message:"INS not supported",tag:"DeviceInternalError"}},Y=class{static handle(e){let r=new j(e).encodeToHexaString(e.statusCode);return De(r,go)?new Fr({...go[r],errorCode:r}):new at({message:"UnknownError",errorCode:r})}};var ct=class{name="closeApp";args=void 0;triggersDisconnection=!0;getApdu(){let e={cla:176,ins:167,p1:0,p2:0};return new H(e).build()}parseResponse(e){return k.isSuccessResponse(e)?y({data:void 0}):y({error:Y.handle(e)})}};var Ae=class{name="getAppAndVersion";args=void 0;getApdu(){let e={cla:176,ins:1,p1:0,p2:0};return new H(e).build()}parseResponse(e){if(!k.isSuccessResponse(e))return y({error:Y.handle(e)});let r=new j(e);if(r.extract8BitUInt()!==1)return y({error:new Nr("getAppAndVersion: format not supported")});let n=r.encodeToString(r.extractFieldLVEncoded()),o=r.encodeToString(r.extractFieldLVEncoded());if(r.getUnparsedRemainingLength()===0)return y({data:{name:n,version:o}});let i=r.extractFieldLVEncoded();return y({data:{name:n,version:o,flags:i}})}};var pi={"662e":{message:"Invalid state, no background image loaded."},"662f":{message:"Invalid state, device is in recovery mode."}},Vr=class extends he{constructor({message:e,errorCode:r}){super({message:e,errorCode:r,tag:"GetBackgroundImageSizeCommandError"})}},Kt=class{name="getBackgroundImageSize";getApdu(){let e={cla:224,ins:100,p1:0,p2:0};return new H(e).build()}parseResponse(e){let r=new j(e);if(!k.isSuccessResponse(e)){let o=r.encodeToHexaString(e.statusCode);return De(o,pi)?y({error:new Vr({...pi[o],errorCode:o})}):y({error:Y.handle(e)})}let n=r.extract32BitUInt();return n===void 0?y({error:new ye("Didn't receive any size")}):y({data:n})}};var li=(t=>(t[t.BATTERY_PERCENTAGE=0]="BATTERY_PERCENTAGE",t[t.BATTERY_VOLTAGE=1]="BATTERY_VOLTAGE",t[t.BATTERY_TEMPERATURE=2]="BATTERY_TEMPERATURE",t[t.BATTERY_CURRENT=3]="BATTERY_CURRENT",t[t.BATTERY_FLAGS=4]="BATTERY_FLAGS",t))(li||{}),pa=(t=>(t[t.NONE=0]="NONE",t[t.USB=1]="USB",t[t.QI=2]="QI",t))(pa||{}),fo=class{name="getBatteryStatus";args;constructor(e){this.args=e}getApdu(){let e={cla:224,ins:16,p1:0,p2:this.args.statusType};return new H(e).build()}parseResponse(e){let r=new j(e);switch(this.args.statusType){case 0:{let n=r.extract8BitUInt();return n===void 0?y({error:new st("Cannot parse APDU response")}):y({data:n>100?-1:n})}case 1:{let n=r.extract16BitUInt();return n===void 0?y({error:new st("Cannot parse APDU response")}):y({data:n})}case 2:case 3:{let n=r.extract8BitUInt();return n===void 0?y({error:new st("Cannot parse APDU response")}):y({data:n<<24>>24})}case 4:{let n=r.extract32BitUInt();if(n===void 0)return y({error:new st("Cannot parse APDU response")});let o=!!(n&8),i=!o&&!!(n&1);return y({data:{charging:i?2:o?1:0,issueCharging:!!(n&16),issueTemperature:!!(n&32),issueBattery:!!(n&128)}})}default:return y({error:new Mr("One or some case(s) not covered")})}}};var ge=$(kr());var T=(t=>(t.NANO_S="nanoS",t.NANO_SP="nanoSP",t.NANO_X="nanoX",t.STAX="stax",t.FLEX="flex",t.APEX="apexp",t))(T||{}),ut=class{id;model;name;constructor({id:e,model:r,name:n}){this.id=e,this.model=r,this.name=n}},la=11415;var Pr=class{constructor(e){if(this.seFlags=e,this.seFlags.length!==4)throw new Error("Invalid secure element flags length")}generalDeviceState(){let e=this.seFlags[0]??0;return{isPinValidated:this._checkNthBitInByte(e,1),hasMcuSerialNumber:this._checkNthBitInByte(e,2),hasValidCertificate:this._checkNthBitInByte(e,3),isCustomAuthorityConnectionAllowed:this._checkNthBitInByte(e,4),isSecureConnectionAllowed:this._checkNthBitInByte(e,5),isOnboarded:this._checkNthBitInByte(e,6),isMcuCodeSigned:this._checkNthBitInByte(e,7),isInRecoveryMode:this._checkNthBitInByte(e,8)}}endorsementInformation(){throw new Error("Not implemented")}wordsInformation(){throw new Error("Not implemented")}onboardingStatus(){throw new Error("Not implemented")}_checkNthBitInByte(e,r){return(e>>8-r&1)===1}};var ue=class{name="getOsVersion";args=void 0;getApdu(){let e={cla:224,ins:1,p1:0,p2:0};return new H(e).build()}parseResponse(e,r){if(!k.isSuccessResponse(e))return y({error:Y.handle(e)});let n=new j(e),o=n.extract32BitUInt();if(o===void 0)return y({error:new ye("Missing target ID in OS version")});let i=n.encodeToString(n.extractFieldLVEncoded()),s=n.extractFieldLVEncoded()??new Uint8Array(0),d={...new Pr(s).generalDeviceState()};i||(i="0.0.0",s=new Uint8Array);let c=(o&4026531840)!==805306368,u=i.includes("-osu"),a="",p="",v="",D="",oe,Ee,He,nt;if(c){v=i,oe=o;let le=n.extractFieldLVEncoded();le&&(le.length>=5?(a=n.encodeToString(le),Ee=parseInt(n.encodeToHexaString(n.extractFieldLVEncoded()),16)):Ee=parseInt(n.encodeToHexaString(le),16))}else{if(a=i,Ee=o,p=n.encodeToString(n.extractFieldLVEncoded()),this.isBootloaderVersionSupported(a,r)&&(v=n.encodeToString(n.extractFieldLVEncoded())),this.isHardwareVersionSupported(a,r)?D=n.encodeToHexaString(n.extractFieldLVEncoded()):D="00",this.isLocalizationSupported(a,r)){let le=n.extractFieldLVEncoded();le!==void 0&&(He=parseInt(n.encodeToHexaString(le),16))}if(this.isRecoverSupported(a,r)){let le=n.extractFieldLVEncoded();le!==void 0&&(nt=parseInt(n.encodeToHexaString(le),16))}}return y({data:{isBootloader:c,isOsu:u,targetId:o,seTargetId:Ee,mcuTargetId:oe,seVersion:a,seFlags:s,mcuSephVersion:p,mcuBootloaderVersion:v,hwVersion:D,langId:He,recoverState:nt,secureElementFlags:d}})}isBootloaderVersionSupported(e,r){let n=(0,ge.coerce)(e)??"";switch(r){case T.NANO_S:case T.NANO_X:return(0,ge.gte)(n,"2.0.0");default:return!0}}isHardwareVersionSupported(e,r){let n=(0,ge.coerce)(e)??"";switch(r){case T.NANO_X:return(0,ge.gte)(n,"2.0.0");default:return!1}}isLocalizationSupported(e,r){let n=(0,ge.coerce)(e)??"";switch(r){case T.NANO_S:return!1;case T.NANO_SP:return(0,ge.gte)(n,"1.1.0");case T.NANO_X:return(0,ge.gte)(n,"2.1.0");default:return!0}}isRecoverSupported(e,r){let n=(0,ge.coerce)(e)??"";switch(r){case T.NANO_S:return!1;case T.NANO_SP:return(0,ge.gte)(n,"1.1.2");case T.NANO_X:return(0,ge.gte)(n,"2.2.3");case T.STAX:return(0,ge.gte)(n,"1.4.0");case T.FLEX:return(0,ge.gte)(n,"1.0.1");default:return!0}}};var mi={6624:{message:"Invalid state (List applications command must be sent)"}},vo=class extends he{constructor({message:e,errorCode:r}){super({message:e,errorCode:r,tag:"ListAppsCommandError"})}},Jt=class{name="listApps";args;constructor(e={isContinue:!1}){this.args=e}getApdu(){let e={cla:224,ins:this.args.isContinue?223:222,p1:0,p2:0};return new H(e).build()}parseResponse(e){let r=[],n=new j(e);if(!k.isSuccessResponse(e)){let o=n.encodeToHexaString(e.statusCode);return De(o,mi)?y({error:new vo({...mi[o],errorCode:o})}):y({error:Y.handle(e)})}if(e.data.length<=0)return y({data:[]});for(n.extract8BitUInt();n.getUnparsedRemainingLength()>0;){let o=n.extract8BitUInt(),i=n.extract16BitUInt();n.extract16BitUInt();let s=n.encodeToHexaString(n.extractFieldByLength(32)),d=n.encodeToHexaString(n.extractFieldByLength(32)),c=n.encodeToString(n.extractFieldLVEncoded());r.push({appEntryLength:o,appSizeInBlocks:i,appCodeHash:s,appFullHash:d,appName:c})}return y({data:r})}};var hi={"422f":{message:"Incorrect structure type"},4230:{message:"Incorrect certificate version"},4231:{message:"Incorrect certificate validity"},4232:{message:"Incorrect certificate validity index"},4233:{message:"Unknown signer key ID"},4234:{message:"Unknown signature algorithm"},4235:{message:"Unknown public key ID"},4236:{message:"Unknown public key usage"},4237:{message:"Incorrect elliptic curve ID"},4238:{message:"Incorrect signature algorithm associated to the public key"},4239:{message:"Unknown target device"},"422d":{message:"Unknown certificate tag"},3301:{message:"Failed to hash data"},"422e":{message:"expected_key_usage doesn't match certificate key usage"},5720:{message:"Failed to verify signature"},4118:{message:"trusted_name buffer is too small to contain the trusted name"},ffff:{message:"Cryptography-related error"}},So=class extends he{constructor({message:e,errorCode:r}){super({tag:"ProvidePkiCertificateCommandError",message:e,errorCode:r})}},yo=class{name="loadCertificate";args;triggersDisconnection=!1;constructor(e){this.args=e}getApdu(){let e={cla:176,ins:6,p1:this.args.keyUsage,p2:0};return new H(e).addBufferToData(this.args.certificate).build()}parseResponse(e){if(k.isSuccessResponse(e))return y({data:void 0});let r=new j(e).encodeToHexaString(e.statusCode);return De(r,hi)?y({error:new So({...hi[r],errorCode:r})}):y({error:Y.handle(e)})}};var gi={"670a":{message:"No app name provided"},6807:{message:"Unknown application name"}},Do=class extends he{constructor({message:e,errorCode:r}){super({tag:"OpenAppCommandError",message:e,errorCode:r})}},Xt=class{name="openApp";args;triggersDisconnection=!0;constructor(e){this.args=e}getApdu(){let e={cla:224,ins:216,p1:0,p2:0};return new H(e).addAsciiStringToData(this.args.appName).build()}parseResponse(e){if(k.isSuccessResponse(e))return y({data:void 0});let r=new j(e).encodeToHexaString(e.statusCode);return De(r,gi)?y({error:new Do({...gi[r],errorCode:r})}):y({error:Y.handle(e)})}};var de=(t=>(t.LOCKED="LOCKED",t.BUSY="BUSY",t.CONNECTED="CONNECTED",t.NOT_CONNECTED="NOT CONNECTED",t))(de||{});var dt=(t=>(t.NotStarted="not-started",t.Pending="pending",t.Stopped="stopped",t.Completed="completed",t.Error="error",t))(dt||{});var S=(t=>(t.None="none",t.UnlockDevice="unlock-device",t.AllowSecureConnection="allow-secure-connection",t.ConfirmOpenApp="confirm-open-app",t.SignTransaction="sign-transaction",t.SignTypedData="sign-typed-data",t.AllowListApps="allow-list-apps",t.VerifyAddress="verify-address",t.SignPersonalMessage="sign-personal-message",t.SignDelegationAuthorization="sign-delegation-authorization",t.Web3ChecksOptIn="web3-checks-opt-in",t.VerifySafeAddress="verify-safe-address",t.RegisterWallet="register-wallet",t.ConfirmLoadImage="confirm-load-image",t.ConfirmCommitImage="confirm-commit-image",t.ConfirmRemoveImage="confirm-remove-image",t))(S||{});var L={of(t){return q(t)},empty(){return C},zero(){return C},fromNullable(t){return t==null?C:q(t)},fromFalsy(t){return t?q(t):C},fromPredicate(t,e){switch(arguments.length){case 1:return r=>L.fromPredicate(t,r);default:return t(e)?q(e):C}},mapMaybe(t,e){switch(arguments.length){case 1:return r=>L.mapMaybe(t,r);default:return L.catMaybes(e.map(t))}},catMaybes(t){let e=[];for(let r of t)r.isJust()&&e.push(r.extract());return e},encase(t){try{return q(t())}catch{return C}},isMaybe(t){return t instanceof Qt||t instanceof Yt},sequence(t){let e=[];for(let r of t)if(r.isJust())e.push(r.extract());else return C;return q(e)},"fantasy-land/of"(t){return this.of(t)},"fantasy-land/empty"(){return this.empty()},"fantasy-land/zero"(){return this.zero()}},Qt=class{constructor(e){this.__value=e,this["fantasy-land/equals"]=this.equals,this["fantasy-land/map"]=this.map,this["fantasy-land/ap"]=this.ap,this["fantasy-land/alt"]=this.alt,this["fantasy-land/chain"]=this.chain,this["fantasy-land/reduce"]=this.reduce,this["fantasy-land/extend"]=this.extend,this["fantasy-land/filter"]=this.filter}isJust(){return!0}isNothing(){return!1}inspect(){return`Just(${this.__value})`}toString(){return this.inspect()}toJSON(){let e=this.__value;return e instanceof Date?e.toJSON():e}equals(e){return this.extract()===e.extract()}map(e){return q(e(this.__value))}ap(e){return e.isJust()?this.map(e.extract()):C}alt(e){return this}altLazy(e){return this}chain(e){return e(this.__value)}chainNullable(e){return L.fromNullable(e(this.__value))}join(){return this.__value}reduce(e,r){return e(r,this.__value)}extend(e){return q(e(this))}unsafeCoerce(){return this.__value}caseOf(e){return"_"in e?e._():e.Just(this.__value)}orDefault(e){return this.__value}orDefaultLazy(e){return this.__value}toList(){return[this.__value]}mapOrDefault(e,r){return e(this.__value)}extract(){return this.__value}extractNullable(){return this.__value}toEither(e){return f(this.__value)}ifJust(e){return e(this.__value),this}ifNothing(e){return this}filter(e){return e(this.__value)?q(this.__value):C}};Qt.prototype.constructor=L;var Yt=class{constructor(){this["fantasy-land/equals"]=this.equals,this["fantasy-land/map"]=this.map,this["fantasy-land/ap"]=this.ap,this["fantasy-land/alt"]=this.alt,this["fantasy-land/chain"]=this.chain,this["fantasy-land/reduce"]=this.reduce,this["fantasy-land/extend"]=this.extend,this["fantasy-land/filter"]=this.filter}isJust(){return!1}isNothing(){return!0}inspect(){return"Nothing"}toString(){return this.inspect()}toJSON(){return this.__value}equals(e){return this.extract()===e.extract()}map(e){return C}ap(e){return C}alt(e){return e}altLazy(e){return e()}chain(e){return C}chainNullable(e){return C}join(){return C}reduce(e,r){return r}extend(e){return C}unsafeCoerce(){throw new Error("Maybe#unsafeCoerce was ran on a Nothing")}caseOf(e){return"_"in e?e._():e.Nothing()}orDefault(e){return e}orDefaultLazy(e){return e()}toList(){return[]}mapOrDefault(e,r){return r}extract(){}extractNullable(){return null}toEither(e){return h(e)}ifJust(e){return this}ifNothing(e){return e(),this}filter(e){return C}};Yt.prototype.constructor=L;var q=t=>new Qt(t),C=new Yt;var Z={of(t){return f(t)},lefts(t){let e=[];for(let r of t)r.isLeft()&&e.push(r.extract());return e},rights(t){let e=[];for(let r of t)r.isRight()&&e.push(r.extract());return e},encase(t){try{return f(t())}catch(e){return h(e)}},sequence(t){let e=[];for(let r of t){if(r.isLeft())return r;e.push(r.extract())}return f(e)},isEither(t){return t instanceof er||t instanceof Zt},"fantasy-land/of"(t){return Z.of(t)}},Zt=class{constructor(e){this.__value=e,this._="R",this["fantasy-land/bimap"]=this.bimap,this["fantasy-land/map"]=this.map,this["fantasy-land/ap"]=this.ap,this["fantasy-land/equals"]=this.equals,this["fantasy-land/chain"]=this.chain,this["fantasy-land/alt"]=this.alt,this["fantasy-land/reduce"]=this.reduce,this["fantasy-land/extend"]=this.extend}isLeft(){return!1}isRight(){return!0}toJSON(){return this.__value}inspect(){return`Right(${this.__value})`}toString(){return this.inspect()}bimap(e,r){return f(r(this.__value))}map(e){return f(e(this.__value))}mapLeft(e){return this}ap(e){return e.isRight()?this.map(e.extract()):e}equals(e){return e.isRight()?this.__value===e.extract():!1}chain(e){return e(this.__value)}chainLeft(e){return this}join(){return this.__value}alt(e){return this}altLazy(e){return this}reduce(e,r){return e(r,this.__value)}extend(e){return f(e(this))}unsafeCoerce(){return this.__value}caseOf(e){return"_"in e?e._():e.Right(this.__value)}leftOrDefault(e){return e}orDefault(e){return this.__value}orDefaultLazy(e){return this.__value}leftOrDefaultLazy(e){return e()}ifLeft(e){return this}ifRight(e){return e(this.__value),this}toMaybe(){return q(this.__value)}leftToMaybe(){return C}extract(){return this.__value}swap(){return h(this.__value)}};Zt.prototype.constructor=Z;var er=class{constructor(e){this.__value=e,this._="L",this["fantasy-land/bimap"]=this.bimap,this["fantasy-land/map"]=this.map,this["fantasy-land/ap"]=this.ap,this["fantasy-land/equals"]=this.equals,this["fantasy-land/chain"]=this.chain,this["fantasy-land/alt"]=this.alt,this["fantasy-land/reduce"]=this.reduce,this["fantasy-land/extend"]=this.extend}isLeft(){return!0}isRight(){return!1}toJSON(){return this.__value}inspect(){return`Left(${JSON.stringify(this.__value)})`}toString(){return this.inspect()}bimap(e,r){return h(e(this.__value))}map(e){return this}mapLeft(e){return h(e(this.__value))}ap(e){return e.isLeft()?e:this}equals(e){return e.isLeft()?e.extract()===this.__value:!1}chain(e){return this}chainLeft(e){return e(this.__value)}join(){return this}alt(e){return e}altLazy(e){return e()}reduce(e,r){return r}extend(e){return this}unsafeCoerce(){throw this.__value instanceof Error?this.__value:new Error("Either#unsafeCoerce was ran on a Left")}caseOf(e){return"_"in e?e._():e.Left(this.__value)}leftOrDefault(e){return this.__value}orDefault(e){return e}orDefaultLazy(e){return e()}leftOrDefaultLazy(e){return this.__value}ifLeft(e){return e(this.__value),this}ifRight(e){return this}toMaybe(){return C}leftToMaybe(){return q(this.__value)}extract(){return this.__value}swap(){return f(this.__value)}};er.prototype.constructor=Z;var h=t=>new er(t),f=t=>new Zt(t);var ze=t=>t;var ma=t=>t,Br=Object.assign(ma,{fromArray:t=>Br.isNonEmpty(t)?q(t):C,unsafeCoerce:t=>{if(Br.isNonEmpty(t))return t;throw new Error("NonEmptyList#unsafeCoerce was ran on an empty array")},fromTuple:t=>Br(t.toArray()),head:t=>t[0],last:t=>t[t.length-1],isNonEmpty:t=>t.length>0,tail:t=>t.slice(1)});var jr=(t,e)=>typeof e=="bigint"?e.toString():e;var ha=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),pt=(t,e)=>{let r="";switch(typeof e){case"undefined":r="undefined";break;case"object":r=e===null?"null":Array.isArray(e)?"an array with value "+JSON.stringify(e,jr):"an object with value "+JSON.stringify(e,jr);break;case"boolean":r="a boolean";break;case"symbol":r="a symbol";break;case"function":r="a function";break;case"bigint":r=`a bigint with value ${e.toString()}`}return r=r||`a ${typeof e} with value ${JSON.stringify(e,jr)}`,`Expected ${t}, but received ${r}`},ga=t=>(Object.keys(t).length===1&&t.oneOf?.length===1&&typeof t.oneOf[0]=="object"&&(Object.assign(t,t.oneOf[0]),delete t.oneOf),t),fa=t=>{if(Array.isArray(t.oneOf))for(let e=0;e<t.oneOf.length;e++){let r=t.oneOf[e];if(typeof r=="object"&&r.oneOf)return t.oneOf.splice(e,1),t.oneOf.push(...r.oneOf),fi(t)}return t},fi=t=>(fa(t),ga(t),t),We={interface(t){let e=Object.keys(t),r=o=>{if(!ha(o))return h(pt("an object",o));let i={};for(let s of e){if(!o.hasOwnProperty(s)&&!t[s]._isOptional)return h(`Problem with property "${s}": it does not exist in received object ${JSON.stringify(o,jr)}`);let d=t[s].decode(o[s]);if(d.isLeft())return h(`Problem with the value of property "${s}": ${d.extract()}`);let c=d.extract();c!==void 0&&(i[s]=c)}return f(i)};return{decode:r,encode:o=>{let i={};for(let s of e)i[s]=t[s].encode(o[s]);return i},unsafeDecode:o=>r(o).mapLeft(Error).unsafeCoerce(),schema:()=>e.reduce((o,i)=>(t[i]._isOptional||o.required.push(i),o.properties[i]=fi(t[i].schema()),o),{type:"object",properties:{},required:[]})}},custom({decode:t,encode:e,schema:r}){return{decode:t,encode:e,unsafeDecode:n=>t(n).mapLeft(Error).unsafeCoerce(),schema:r??(()=>({}))}}},Si=We.custom({decode:t=>typeof t=="string"?f(t):h(pt("a string",t)),encode:ze,schema:()=>({type:"string"})}),va=We.custom({decode:t=>typeof t=="number"?f(t):h(pt("a number",t)),encode:ze,schema:()=>({type:"number"})}),il=We.custom({decode:t=>t===null?f(t):h(pt("a null",t)),encode:ze,schema:()=>({type:"null"})}),sl=We.custom({decode:t=>t===void 0?f(t):h(pt("an undefined",t)),encode:ze});var al=We.custom({decode:t=>typeof t=="boolean"?f(t):h(pt("a boolean",t)),encode:ze,schema:()=>({type:"boolean"})}),cl=We.custom({decode:f,encode:ze,schema:()=>({})});var ul=We.custom({decode:t=>Si.decode(t).chain(e=>isFinite(+e)?f(e):h(pt("a number",t))),encode:ze,schema:va.schema});var dl=We.custom({decode:t=>Si.decode(t).mapLeft(e=>`Problem with date string: ${e}`).chain(e=>Number.isNaN(Date.parse(e))?h("Expected a valid date string, but received a string that cannot be parsed"):f(new Date(e))),encode:t=>t.toISOString(),schema:()=>({type:"string",format:"date-time"})});var Gr=class{constructor(e,r){this.first=e,this.second=r,this.length=2,this["fantasy-land/equals"]=this.equals,this["fantasy-land/bimap"]=this.bimap,this["fantasy-land/map"]=this.map,this["fantasy-land/reduce"]=this.reduce,this["fantasy-land/ap"]=this.ap,this[0]=e,this[1]=r}*[Symbol.iterator](){yield this.first,yield this.second}toJSON(){return this.toArray()}inspect(){return`Tuple(${JSON.stringify(this.first)}, ${JSON.stringify(this.second)})`}toString(){return this.inspect()}fst(){return this.first}snd(){return this.second}equals(e){return this.first===e.fst()&&this.second===e.snd()}bimap(e,r){return be(e(this.first),r(this.second))}mapFirst(e){return be(e(this.first),this.second)}map(e){return be(this.first,e(this.second))}reduce(e,r){return e(r,this.second)}toArray(){return[this.first,this.second]}swap(){return be(this.second,this.first)}ap(e){return be(this.first,e.snd()(this.second))}every(e){return e(this.first)&&e(this.second)}some(e){return e(this.first)||e(this.second)}},be=Object.assign((t,e)=>new Gr(t,e),{fromArray:([t,e])=>be(t,e),fanout:(...t)=>{let[e,r,n]=t;switch(t.length){case 3:return be(e(n),r(n));case 2:return o=>be.fanout(e,r,o);default:return o=>i=>be.fanout(e,o,i)}}});Gr.prototype.constructor=be;var yi,Di={liftEither(t){if(t.isRight())return Promise.resolve(t.extract());throw t.extract()},fromPromise(t){return t.then(Di.liftEither)},throwE(t){throw t}},qr=class{constructor(e){this.runPromise=e,this[yi]="EitherAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/alt"]=this.alt,this.then=(r,n)=>this.run().then(r,n)}leftOrDefault(e){return this.run().then(r=>r.leftOrDefault(e))}orDefault(e){return this.run().then(r=>r.orDefault(e))}join(){return _(async e=>{let r=await this;if(r.isRight()){let n=await r.extract();return e.liftEither(n)}return e.liftEither(r)})}ap(e){return _(async r=>{let n=await e;if(n.isRight()){let o=await this.run();return o.isRight()?n.extract()(o.extract()):r.liftEither(o)}return r.liftEither(n)})}alt(e){return _(async r=>{let n=await this.run();if(n.isRight())return n.extract();{let o=await e;return r.liftEither(o)}})}extend(e){return _(async r=>{let n=await this.run();if(n.isRight()){let o=_.liftEither(n);return r.liftEither(f(e(o)))}return r.liftEither(n)})}async run(){try{return f(await this.runPromise(Di))}catch(e){return h(e)}}bimap(e,r){return _(async n=>{let o=await this.run();try{return await n.liftEither(o.bimap(e,r))}catch(i){throw await i}})}map(e){return _(r=>this.runPromise(r).then(e))}mapLeft(e){return _(async r=>{try{return await this.runPromise(r)}catch(n){throw await e(n)}})}chain(e){return _(async r=>{let n=await this.runPromise(r);return r.fromPromise(e(n))})}chainLeft(e){return _(async r=>{try{return await this.runPromise(r)}catch(n){return r.fromPromise(e(n))}})}toMaybeAsync(){return te(async({liftMaybe:e})=>{let r=await this.run();return e(r.toMaybe())})}swap(){return _(async e=>{let r=await this.run();return r.isRight()&&e.throwE(r.extract()),e.liftEither(f(r.extract()))})}ifLeft(e){return _(async r=>{let n=await this.run();return n.ifLeft(e),r.liftEither(n)})}ifRight(e){return _(async r=>{let n=await this.run();return n.ifRight(e),r.liftEither(n)})}void(){return this.map(e=>{})}caseOf(e){return this.run().then(r=>r.caseOf(e))}finally(e){return _(({fromPromise:r})=>r(this.run().finally(e)))}};yi=Symbol.toStringTag;var _=Object.assign(t=>new qr(t),{fromPromise:t=>_(({fromPromise:e})=>e(t())),liftEither:t=>_(({liftEither:e})=>e(t)),lefts:t=>Promise.all(t.map(e=>e.run())).then(Z.lefts),rights:t=>Promise.all(t.map(e=>e.run())).then(Z.rights),sequence:t=>_(async e=>{let r=[];for await(let n of t){if(n.isLeft())return e.liftEither(n);r.push(n.extract())}return e.liftEither(f(r))}),all:t=>_.fromPromise(async()=>Promise.all(t).then(Z.sequence))});qr.prototype.constructor=_;var Ai,_i={liftMaybe(t){if(t.isJust())return Promise.resolve(t.extract());throw C},fromPromise(t){return t.then(_i.liftMaybe)}},$r=class{constructor(e){this.runPromise=e,this[Ai]="MaybeAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/filter"]=this.filter,this["fantasy-land/alt"]=this.alt}orDefault(e){return this.run().then(r=>r.orDefault(e))}join(){return te(async e=>{let r=await this.run();if(r.isJust()){let n=await r.extract();return e.liftMaybe(n)}return e.liftMaybe(C)})}ap(e){return te(async r=>{let n=await e;if(n.isJust()){let o=await this.run();return o.isJust()?n.extract()(o.extract()):r.liftMaybe(C)}return r.liftMaybe(C)})}alt(e){return te(async r=>{let n=await this.run();if(n.isJust())return n.extract();{let o=await e;return r.liftMaybe(o)}})}extend(e){return te(async r=>{let n=await this.run();if(n.isJust()){let o=te.liftMaybe(n);return r.liftMaybe(q(e(o)))}return r.liftMaybe(C)})}filter(e){return te(async r=>{let n=await this.run();return r.liftMaybe(n.filter(e))})}async run(){try{return q(await this.runPromise(_i))}catch{return C}}map(e){return te(r=>this.runPromise(r).then(e))}chain(e){return te(async r=>{let n=await this.runPromise(r);return r.fromPromise(e(n))})}toEitherAsync(e){return _(async({liftEither:r})=>{let n=await this.run();return r(n.toEither(e))})}ifJust(e){return te(async r=>{let n=await this.run();return n.ifJust(e),r.liftMaybe(n)})}ifNothing(e){return te(async r=>{let n=await this.run();return n.ifNothing(e),r.liftMaybe(n)})}void(){return this.map(e=>{})}caseOf(e){return this.run().then(r=>r.caseOf(e))}finally(e){return te(({fromPromise:r})=>r(this.run().finally(e)))}then(e,r){return this.run().then(e,r)}};Ai=Symbol.toStringTag;var te=Object.assign(t=>new $r(t),{catMaybes:t=>Promise.all(t).then(L.catMaybes),fromPromise:t=>te(({fromPromise:e})=>e(t())),liftMaybe:t=>te(({liftMaybe:e})=>e(t))});$r.prototype.constructor=te;ie();var lt=class{_tag="DeviceNotOnboardedError";originalError;constructor(e){this.originalError=new Error(e??"Device not onboarded.")}},Ke=class{_tag="DeviceLockedError";originalError;constructor(e){this.originalError=new Error(e??"Device locked.")}},Je=class{_tag="UnsupportedFirmwareDAError";originalError;constructor(e){this.originalError=new Error(e??"Unknown error.")}},xt=class{_tag="RefusedByUserDAError";originalError;constructor(e){this.originalError=new Error(e??"Unknown error.")}},tr=class{_tag="AppAlreadyInstalledDAError";originalError;constructor(e){this.originalError=new Error(e??"Unknown error.")}},mt=class{_tag="OutOfMemoryDAError";originalError;constructor(e){this.originalError=new Error(e??"Unknown error.")}},z=class{_tag="UnknownDAError";originalError;constructor(e){this.originalError=new Error(e??"Unknown error.")}},Hr=class{_tag="UnsupportedApplicationDAError";originalError;constructor(e){this.originalError=new Error(e??"Application currently not supported.")}};ie();var N=6e4;var fe=$(Ce()),xi=$(ca());ie();var wt=$(Ce());ie();var Ei={subscribers:[],error:()=>{},warn:()=>{},info:()=>{},debug:()=>{}},Ao=t=>Ei;var U=class{input;inspect=!1;logger;loggerFactory;constructor(e){this.input=e.input,this.inspect=!!e.inspect,this.logger=e.logger,this.loggerFactory=e.loggerFactory}getLoggerFactory(e){return this.loggerFactory??e.loggerFactory??Ao}_execute(e){let r=this.makeStateMachine(e);return!this.logger&&r.id&&(this.logger=this.getLoggerFactory(e)(r.id)),this._subscribeToStateMachine(r)}_subscribeToStateMachine(e){let r=Lr(e,{input:this.input}),n=new wt.ReplaySubject,o=!1,i=c=>{let{context:u,status:a,output:p,error:v}=c;if(this.logger&&!o&&(o=!0,this.logger.debug("[XStateDeviceAction] Input",{data:{input:u.input}})),this.logger&&a==="active"){let D=typeof c.value=="string"?c.value:JSON.stringify(c.value);this.logger.debug(`[XStateDeviceAction] State: ${D}`,{data:{internalState:u._internalState}})}switch(a){case"active":n.next({status:dt.Pending,intermediateValue:u.intermediateValue});break;case"done":p.caseOf({Left:D=>{n.next({status:dt.Error,error:D})},Right:D=>{n.next({status:dt.Completed,output:D})}}),n.complete();break;case"error":n.error(v),n.complete();break;case"stopped":n.next({status:dt.Stopped}),n.complete();break;default:this._exhaustiveMatchingGuard(a)}},s=new wt.Observable(c=>{let u=n.subscribe(c);return()=>{d.unsubscribe(),u.unsubscribe(),r.stop()}}),d=r.subscribe(i);return r.start(),{observable:s.pipe((0,wt.share)()),cancel:()=>{r.stop(),d.unsubscribe(),i(r.getSnapshot())}}}_exhaustiveMatchingGuard(e){throw console.log("_exhaustiveMatchingGuard status",e),new Error(`Unhandled status: ${e}`)}};var w=(t=>(t[t.Connected=0]="Connected",t[t.ReadyWithoutSecureChannel=1]="ReadyWithoutSecureChannel",t[t.ReadyWithSecureChannel=2]="ReadyWithSecureChannel",t))(w||{});var ht=class extends U{makeStateMachine(e){let{getAppAndVersion:r,getDeviceSessionState:n,setDeviceSessionState:o,waitForDeviceUnlock:i,isDeviceOnboarded:s}=this.extractDependencies(e),d=this.input.unlockTimeout??6e4;return R({types:{input:{unlockTimeout:d},context:{},output:{}},actors:{getAppAndVersion:b(r),waitForDeviceUnlock:me(i)},guards:{isDeviceOnboarded:()=>s(),isDeviceLocked:({context:c})=>c._internalState.locked,hasError:({context:c})=>c._internalState.error!==null},actions:{assignErrorDeviceNotOnboarded:l({_internalState:c=>({...c.context._internalState,error:new lt})}),assignErrorDeviceLocked:l({_internalState:c=>({...c.context._internalState,error:new Ke}),intermediateValue:{requiredUserInteraction:S.UnlockDevice}}),assignErrorFromEvent:l({_internalState:c=>({...c.context._internalState,error:c.event.error})}),assignNoUserActionNeeded:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:S.None})}),assignUserActionUnlockNeeded:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:S.UnlockDevice})})}}).createMachine({id:"GetDeviceStatusDeviceAction",initial:"DeviceReady",context:c=>{let u=n(),{sessionStateType:a}=u;return{input:{unlockTimeout:c.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{onboarded:!1,locked:!1,currentApp:a===w.ReadyWithoutSecureChannel?u.currentApp.name:null,currentAppVersion:null,error:null}}},states:{DeviceReady:{always:{target:"OnboardingCheck"}},OnboardingCheck:{always:[{guard:{type:"isDeviceOnboarded"},target:"AppAndVersionCheck",actions:l({_internalState:c=>({...c.context._internalState,onboarded:!0})})},{target:"Error",actions:"assignErrorDeviceNotOnboarded"}]},UserActionUnlockDevice:{entry:"assignUserActionUnlockNeeded",exit:"assignNoUserActionNeeded",invoke:{id:"UserActionUnlockDevice",src:"waitForDeviceUnlock",input:c=>({unlockTimeout:d}),onDone:{target:"AppAndVersionCheck",actions:l({_internalState:c=>({...c.context._internalState,locked:!1})})},onError:{target:"Error",actions:"assignErrorDeviceLocked"}}},AppAndVersionCheck:{invoke:{src:"getAppAndVersion",onDone:{target:"ApplicationAvailableResultCheck",actions:l({_internalState:c=>{if(I(c.event.output)){let u=n();return u.sessionStateType!==w.Connected?o({...u,currentApp:c.event.output.data}):o({deviceModelId:u.deviceModelId,sessionStateType:w.ReadyWithoutSecureChannel,deviceStatus:de.CONNECTED,currentApp:c.event.output.data,installedApps:[],isSecureConnectionAllowed:!1}),{...c.context._internalState,locked:!1,currentApp:c.event.output.data.name,currentAppVersion:c.event.output.data.version}}if("errorCode"in c.event.output.error){if(c.event.output.error.errorCode==="5515")return{...c.context._internalState,locked:!0};if(c.event.output.error.errorCode==="6e00")return{...c.context._internalState,locked:!1,currentApp:"BOLOS",currentAppVersion:"0.0.0"}}return{...c.context._internalState,error:c.event.output.error}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ApplicationAvailableResultCheck:{always:[{guard:"hasError",target:"Error"},{target:"UserActionUnlockDevice",guard:"isDeviceLocked"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:c=>{let{context:u}=c,{error:a,currentApp:p,currentAppVersion:v}=u._internalState;return a?h(a):f({currentApp:p,currentAppVersion:v})}})}extractDependencies(e){return{getAppAndVersion:()=>e.sendCommand(new Ae),waitForDeviceUnlock:({input:r})=>(0,fe.interval)(1e3).pipe((0,fe.switchMap)(()=>(0,fe.from)(e.sendCommand(new Ae))),(0,fe.mergeMap)(n=>!I(n)&&"errorCode"in n.error&&n.error.errorCode==="5515"?fe.EMPTY:(0,fe.of)(void 0)),(0,fe.take)(1),(0,xi.timeout)(r.unlockTimeout)),getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r),isDeviceOnboarded:()=>!0}}};var W=class{_tag="GeneralDmkError";originalError;constructor(e){e instanceof Error?this.originalError=e:e!==void 0&&(this.originalError=new Error(String(e)))}},wi=class extends W{constructor(e){super(e),this.err=e}_tag="DeviceAlreadyDiscoveredError"},Ci=class extends W{constructor(e){super(e),this.err=e}_tag="DeviceNotRecognizedError"},bi=class extends W{constructor(e){super(e),this.err=e}_tag="NoAccessibleDeviceError"},Ii=class extends W{_tag="ConnectionOpeningError";constructor(e){super(e)}},Ti=class extends W{constructor(e){super(e),this.err=e}_tag="UnknownDeviceError"},Xe=class extends W{constructor(e){super(e),this.err=e}_tag="TransportNotSupportedError"},Ui=class extends W{constructor(e){super(e),this.err=e}_tag="SendApduConcurrencyError"},zr=class extends W{constructor(e){super(e),this.err=e}_tag="SendApduTimeoutError"},Wr=class extends W{constructor(e){super(e),this.err=e}_tag="SendCommandTimeoutError"},Oi=class extends W{constructor(e){super(e),this.err=e}_tag="SendApduEmptyResponseError"},Ri=class extends W{constructor(e){super(e),this.err=e}_tag="DisconnectError"},ki=class extends W{constructor(e){super(e),this.err=e}_tag="ReconnectionFailedError"},Li=class extends W{constructor(e){super(e),this.err=e}_tag="DeviceNotInitializedError"},Mi=class extends W{constructor(e){super(e),this.err=e}_tag="NoTransportsProvidedError"},Kr=class extends W{constructor(e){super(e),this.err=e}_tag="TransportAlreadyExistsError"},Qe=class extends W{constructor(e){super(e),this.err=e}_tag="DeviceDisconnectedWhileSendingError"},Ct=class extends W{constructor(e){super(e),this.err=e}_tag="AlreadySendingApduError"},Jr=class extends W{constructor(e){super(e),this.err=e}_tag="DeviceDisconnectedBeforeSendingApdu"},Xr=class extends W{constructor(e){super(e),this.err=e}_tag="NoTransportProvidedError"};var Sa=["BOLOS","OLOS","OLOS\0"],Qr=t=>Sa.includes(t);var Le=class extends U{makeStateMachine(e){let{closeApp:r,openApp:n,getDeviceSessionState:o,isDeviceOnboarded:i,setDeviceSessionState:s}=this.extractDependencies(e),d=this.input.unlockTimeout??6e4,c=new ht({input:{unlockTimeout:d}}).makeStateMachine(e);return R({types:{input:{},context:{},output:{}},actors:{closeApp:b(r),openApp:b(n),getDeviceStatus:c},guards:{isDeviceOnboarded:()=>i(),isRequestedAppOpen:({context:u})=>u._internalState.currentlyRunningApp===null?!1:u._internalState.currentlyRunningApp===u.input.appName,isDashboardOpen:({context:u})=>{if(u._internalState.currentlyRunningApp===null)throw new Error("context.currentlyRunningApp === null");return Qr(u._internalState.currentlyRunningApp)},hasDisconnectedWhileSending:({context:u})=>u._internalState.error!==null&&u._internalState.error instanceof Qe,hasError:({context:u})=>u._internalState.error!==null},actions:{assignErrorDeviceNotOnboarded:l({_internalState:u=>({...u.context._internalState,error:new lt})}),assignUserActionNeededOpenApp:l({intermediateValue:u=>({...u.context.intermediateValue,requiredUserInteraction:S.ConfirmOpenApp})}),assignNoUserActionNeeded:l({intermediateValue:u=>({...u.context.intermediateValue,requiredUserInteraction:S.None})}),assignErrorFromEvent:l({_internalState:u=>({...u.context._internalState,error:u.event.error})}),assignNoError:l({_internalState:u=>({...u.context._internalState,error:null})})}}).createMachine({id:"OpenAppDeviceAction",initial:"DeviceReady",context:({input:u})=>{let a=o(),{sessionStateType:p}=a;return{input:u,intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,currentlyRunningApp:p===w.ReadyWithoutSecureChannel?a.currentApp.name:null}}},states:{DeviceReady:{always:{target:"OnboardingCheck"}},OnboardingCheck:{always:[{target:"GetDeviceStatus",guard:{type:"isDeviceOnboarded"}},{target:"Error",actions:"assignErrorDeviceNotOnboarded"}]},GetDeviceStatus:{invoke:{id:"deviceStatus",src:"getDeviceStatus",input:u=>({unlockTimeout:u.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:u=>u.event.snapshot.context.intermediateValue})},onDone:{target:"CheckDeviceStatus",actions:l({_internalState:u=>u.event.output.caseOf({Right:a=>{let p=o();return p.sessionStateType!==w.Connected&&s({...p,currentApp:{name:a.currentApp,version:a.currentAppVersion}}),{...u.context._internalState,currentlyRunningApp:a.currentApp}},Left:a=>({...u.context._internalState,currentlyRunningApp:null,error:a})})})},onError:{target:"Error",actions:[l({_internalState:u=>({...u.context._internalState,currentlyRunningApp:null})}),"assignErrorFromEvent"]}}},CheckDeviceStatus:{always:[{target:"ApplicationReady",guard:"isRequestedAppOpen",actions:"assignNoError"},{target:"Error",guard:"hasError"},{target:"DashboardCheck"}]},DashboardCheck:{always:[{target:"OpenApplication",guard:"isDashboardOpen"},"CloseApplication"]},OpenApplication:{entry:"assignUserActionNeededOpenApp",exit:"assignNoUserActionNeeded",invoke:{src:"openApp",input:({context:u})=>({appName:u.input.appName}),onDone:{target:"OpenApplicationResultCheck",actions:l({_internalState:u=>I(u.event.output)?{...u.context._internalState,currentlyRunningApp:u.context.input.appName}:{...u.context._internalState,error:u.event.output.error}})},onError:{target:"OpenApplicationResultCheck",actions:"assignErrorFromEvent"}}},OpenApplicationResultCheck:{always:[{target:"GetDeviceStatus",guard:"hasDisconnectedWhileSending"},{target:"Error",guard:"hasError"},{target:"GetDeviceStatus"}]},CloseApplication:{invoke:{src:"closeApp",onDone:{target:"CloseApplicationResultCheck",actions:l({_internalState:u=>I(u.event.output)?{...u.context._internalState,currentlyRunningApp:"BOLOS"}:{...u.context._internalState,error:u.event.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CloseApplicationResultCheck:{always:[{target:"Error",guard:"hasError"},{target:"OpenApplication"}]},ApplicationReady:{always:"Success"},Success:{type:"final",actions:"assignNoError"},Error:{type:"final"}},output:({context:u})=>u._internalState.error?h(u._internalState.error):f(void 0)})}extractDependencies(e){return{closeApp:async()=>e.sendCommand(new ct),openApp:async r=>e.sendCommand(new Xt({appName:r.input.appName})),getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r),isDeviceOnboarded:()=>!0}}};var _o=class extends U{makeStateMachine(e){let{callTask:r}=this.extractDependencies(e);return R({types:{input:{},context:{},output:{}},actors:{callTask:b(r),openAppStateMachine:new Le({input:{appName:this.input.appName}}).makeStateMachine(e)},guards:{skipOpenApp:()=>this.input.skipOpenApp,noInternalError:({context:n})=>n._internalState.error===null},actions:{assignErrorFromEvent:l({_internalState:n=>({...n.context._internalState,error:n.event.error})})}}).createMachine({id:"CallTaskInAppDeviceAction",initial:"InitialState",context:({input:n})=>({input:n,intermediateValue:{requiredUserInteraction:S.None},_internalState:{taskResponse:null,error:null}}),states:{InitialState:{always:[{target:"CallTask",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:this.input.appName},src:"openAppStateMachine",onSnapshot:{actions:l({intermediateValue:n=>n.event.snapshot.context.intermediateValue})},onDone:{actions:l({_internalState:n=>n.event.output.caseOf({Right:()=>n.context._internalState,Left:o=>({...n.context._internalState,error:o})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"CallTask",guard:"noInternalError"},"Error"]},CallTask:{entry:l({intermediateValue:{requiredUserInteraction:this.input.requiredUserInteraction}}),exit:l({intermediateValue:{requiredUserInteraction:S.None}}),invoke:{id:"callTask",src:"callTask",input:n=>n.context.input.task,onDone:{target:"CallTaskResultCheck",actions:[l({_internalState:({event:n,context:o})=>I(n.output)?{...o._internalState,taskResponse:n.output.data}:{...o._internalState,error:n.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CallTaskResultCheck:{always:[{target:"Success",guard:"noInternalError"},"Error"]},Success:{type:"final"},Error:{type:"final"}},output:({context:n})=>n._internalState.taskResponse?f(n._internalState.taskResponse):h(n._internalState.error||new z("No error in final state"))})}extractDependencies(e){return{callTask:r=>r.input(e)}}};ie();ie();var re=class extends U{makeStateMachine(e){let{getDeviceSessionState:r,setDeviceSessionState:n,closeApp:o,getAppAndVersion:i}=this.extractDependencies(e),s=this.input.unlockTimeout??6e4,d=new ht({input:{unlockTimeout:s}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:s},context:{},output:{}},actors:{getAppAndVersion:b(i),closeApp:b(o),getDeviceStatus:d},guards:{hasError:({context:c})=>c._internalState.error!==null,isDashboardOpen:({context:c})=>c._internalState.currentApp!==null&&Qr(c._internalState.currentApp)},actions:{assignErrorFromEvent:l({_internalState:c=>({...c.context._internalState,error:c.event.error})})}}).createMachine({id:"GoToDashboardDeviceAction",initial:"DeviceReady",context:c=>{let u=r();return{input:{unlockTimeout:c.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{currentApp:"currentApp"in u?u.currentApp.name:null,error:null}}},states:{DeviceReady:{always:{target:"GetDeviceStatus"}},GetDeviceStatus:{invoke:{id:"deviceStatus",src:"getDeviceStatus",input:c=>({unlockTimeout:c.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:c=>c.event.snapshot.context.intermediateValue})},onDone:{target:"CheckDeviceStatus",actions:l({_internalState:c=>c.event.output.caseOf({Right:u=>({...c.context._internalState,currentApp:u.currentApp}),Left:u=>({...c.context._internalState,error:u})})})}}},CheckDeviceStatus:{always:[{target:"Error",guard:"hasError"},{target:"DashboardCheck"}]},DashboardCheck:{always:[{target:"Success",guard:"isDashboardOpen"},{target:"Error",guard:"hasError"},{target:"Error",guard:c=>c.context._internalState.currentApp===null,actions:l({_internalState:c=>({...c.context._internalState,error:new z("currentApp === null")})})},{target:"CloseApp"}]},CloseApp:{invoke:{src:"closeApp",onDone:{target:"CloseAppCheck",actions:l({_internalState:c=>I(c.event.output)?c.context._internalState:{...c.context._internalState,error:c.event.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},CloseAppCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetAppAndVersion",reenter:!0}]},GetAppAndVersion:{invoke:{src:"getAppAndVersion",onDone:{target:"DashboardCheck",actions:l({_internalState:c=>{if(I(c.event.output)){let u=r();return u.sessionStateType!==w.Connected&&n({...u,currentApp:c.event.output.data}),{...c.context._internalState,currentApp:c.event.output.data.name}}return{...c.context._internalState,error:c.event.output.error}}})}}},Success:{type:"final"},Error:{type:"final"}},output:c=>c.context._internalState.error?h(c.context._internalState.error):f(void 0)})}extractDependencies(e){return{closeApp:async()=>e.sendCommand(new ct),getAppAndVersion:async()=>e.sendCommand(new Ae),getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};ie();var gt=class extends U{makeStateMachine(e){let{listApps:r}=this.extractDependencies(e),n=this.input.unlockTimeout??6e4,o=new re({input:{unlockTimeout:n}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:n},context:{},output:{}},actors:{listApps:b(r),goToDashboard:o},guards:{hasError:({context:i})=>i._internalState.error!==null,hasMoreApps:i=>i.context._internalState.shouldContinue},actions:{assignAllowListApps:l({intermediateValue:i=>({requiredUserInteraction:S.AllowListApps})}),assignErrorFromEvent:l({_internalState:i=>({...i.context._internalState,error:i.event.error})})}}).createMachine({id:"ListAppsDeviceAction",initial:"DeviceReady",context:i=>({input:{unlockTimeout:i.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,apps:[],shouldContinue:!1}}),states:{DeviceReady:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"dashboard",src:"goToDashboard",input:i=>({unlockTimeout:i.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:i=>i.event.snapshot.context.intermediateValue})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:i=>i.event.output.caseOf({Right:()=>i.context._internalState,Left:s=>({...i.context._internalState,error:s})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"ListApps"}]},ListApps:{entry:"assignAllowListApps",invoke:{src:"listApps",input:i=>!1,onDone:{target:"Continue",actions:l({_internalState:i=>I(i.event.output)?{...i.context._internalState,apps:i.context._internalState.apps.concat(i.event.output.data),shouldContinue:i.event.output.data.length>=2}:{...i.context._internalState,error:i.event.output.error},intermediateValue:i=>({...i.context.intermediateValue,requiredUserInteraction:S.None})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListAppsCheck:{always:[{target:"Error",guard:"hasError"},"ListAppsContinue"]},ListAppsContinue:{invoke:{src:"listApps",input:i=>!0,onDone:{target:"Continue",actions:l({_internalState:i=>I(i.event.output)?{...i.context._internalState,apps:i.context._internalState.apps.concat(i.event.output.data),shouldContinue:i.event.output.data.length>=2}:{...i.context._internalState,error:i.event.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Continue:{always:[{target:"ListAppsContinue",guard:"hasMoreApps"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:i=>i.context._internalState.error?h(i.context._internalState.error):f(i.context._internalState.apps)})}extractDependencies(e){return{listApps:async({input:r})=>{let n=new Jt({isContinue:r});return e.sendCommand(n)}}}};var Fi=$(kr());var Ni={"662d":{message:"Invalid LIST_ARG, first command must be sent with P1_LIST_LANGUAGE_PACKS_FIRST."}},Eo=class extends he{constructor({message:e,errorCode:r}){super({message:e,errorCode:r,tag:"ListLanguagePackCommandError"})}},Yr=class{constructor(e){this.args=e}name="listLanguagePack";getApdu(){let e={cla:224,ins:52,p1:this.args.firstChunk?0:1,p2:0};return new H(e).build()}parseResponse(e){let r=new j(e);if(!k.isSuccessResponse(e)){let d=r.encodeToHexaString(e.statusCode);return De(d,Ni)?y({error:new Eo({...Ni[d],errorCode:d})}):y({error:Y.handle(e)})}if(r.extract8BitUInt()===void 0)return y({data:void 0});r.extract8BitUInt();let n=r.extractFieldLVEncoded();if(n===void 0)return y({error:new ye("Failed to get language pack id")});let o=r.extractFieldLVEncoded();if(o===void 0)return y({error:new ye("Failed to get language pack size")});let i=parseInt(se(n),16),s=parseInt(se(o),16);return y({data:{id:i,size:s}})}};var ya="0000000000000000000000000000000000000000000000000000000000000000",Zr=class{constructor(e,r){this.api=e,this.args=r}async run(){let e=this.args.installedApps.filter(p=>this.isApplication(p)),r=this.api.getManagerApiService(),n=e.map(p=>p.hash),o=await r.getAppsByHash(n).chain(p=>r.getAppList(this.args.firmwareVersion.metadata).map(v=>({applications:p,catalog:v})));if(o.isLeft())return y({error:new ye("Cannot get the application catalog")});let{applications:i,catalog:s}=o.unsafeCoerce(),d=i.reduce((p,v,D)=>{if(v!==null)return[...p,v];let oe=e[D],Ee=s.find(He=>He.versionName===oe.name);return Ee?[...p,Ee]:p},[]),c=i.filter(p=>p!==null).reduce((p,v)=>{let D=s.find(oe=>oe.versionName===v.versionName);return D&&(0,Fi.gt)(D.version,v.version)?[...p,D]:p},[]),u=[];for(let p=0;;p++){let v=await this.api.sendCommand(new Yr({firstChunk:p===0}));if(!I(v)||v.data===void 0)break;u=[...u,v.data]}let a=await r.getLanguagePackages(this.args.deviceVersion,this.args.firmware);return a.isRight()?y({data:{applications:d,applicationsUpdates:c,installedLanguages:u,catalog:{applications:s,languagePackages:a.extract()}}}):y({error:new ye("Cannot get the languages catalog")})}isApplication(e){return e.hashCode!==ya}};var en=class{constructor(e){this.api=e}async run(){let e=await this.api.sendCommand(new ue);if(!I(e))return e;let r={mcu:e.data.mcuSephVersion,bootloader:e.data.mcuBootloaderVersion,os:e.data.seVersion,metadata:e.data},n=this.api.getManagerApiService(),o=await n.getDeviceVersion(e.data).chain(p=>n.getFirmwareVersion(e.data,p).map(v=>({deviceVersion:p,currentFirmware:v})));if(o.isLeft())return y({error:new Wt});let{deviceVersion:i,currentFirmware:s}=o.unsafeCoerce(),d=(await n.getLatestFirmwareVersion(s,i).chain(p=>n.getNextFirmwareVersion(p).chain(v=>n.getMcuList().map(D=>D.find(oe=>oe.name===r.mcu)).map(D=>D===void 0||!v.mcuVersions.includes(D.id)).map(D=>({osuFirmware:p,finalFirmware:v,mcuUpdateRequired:D}))))).caseOf({Right:p=>p,Left:p=>{}}),c={currentFirmware:s,availableUpdate:d},u={},a=await this.api.sendCommand(new Kt);return I(a)&&(u={size:a.data}),y({data:{deviceVersion:i,firmware:s,firmwareVersion:r,firmwareUpdateContext:c,customImage:u}})}};function tn(t){return Array.isArray(t)&&t.every(e=>typeof e=="object"&&e!==null&&"flags"in e&&"hash"in e&&"hash_code_data"in e&&"name"in e&&typeof e.flags=="number"&&typeof e.hash=="string"&&typeof e.hash_code_data=="string"&&typeof e.name=="string")}var qi=$(ci()),$i=$(Ce());var Da=(t=>(t.GenuineCheck="GenuineCheck",t.ListInstalledApps="ListInstalledApps",t.UpdateMcu="UpdateMcu",t.UpdateFirmware="UpdateFirmware",t.InstallApp="InstallApp",t.UninstallApp="UninstallApp",t))(Da||{}),Me=(t=>(t.EXCHANGE="exchange",t.BULK="bulk",t.ERROR="error",t.WARNING="warning",t.SUCCESS="success",t))(Me||{}),rn=(t=>(t.SUCCESS="success",t.ERROR="error",t))(rn||{}),A=(t=>(t.Opened="opened",t.Closed="closed",t.PermissionRequested="permission-requested",t.PermissionGranted="permission-granted",t.PreExchange="pre-exchange",t.Exchange="exchange",t.DeviceId="device-id",t.Progress="progress",t.Warning="warning",t.Error="error",t.Result="result",t))(A||{});var Vi="0000";function Pi(t){return t[0]===224&&t[1]===81}function Bi(t){return t[0]===224&&t[1]===82}function ji(t){try{let e=new j(t);return e.extractFieldLVEncoded()?e.extractFieldLVEncoded()??null:null}catch{return null}}function Gi(t){return t===Vi}import{sha3_256 as Aa}from"@noble/hashes/sha3";var nn=class{sha3_256(e){return Aa(e)}};var bt=(t=>(t[t.AppAlreadyInstalled=0]="AppAlreadyInstalled",t[t.DeviceLocked=1]="DeviceLocked",t[t.OutOfMemory=2]="OutOfMemory",t[t.RefusedByUser=3]="RefusedByUser",t[t.Unknown=4]="Unknown",t))(bt||{}),on=class{constructor(e){this.error=e,this.originalError=e}_tag="WebSocketConnectionError";originalError},Q=class{constructor(e,r=4){this.error=e,this.errorType=r,this.originalError=e}_tag="SecureChannelError";originalError;mapDAErrors(){switch(this.errorType){case 1:return new Ke;case 3:return new xt;default:return this}}mapInstallDAErrors(){switch(this.errorType){case 1:return new Ke;case 3:return new xt;case 0:return new tr;case 2:return new mt;default:return this}}};var ve=class{constructor(e,r){if(this._api=e,this._args=r,this._args.connection.isRight())this._connection=this._args.connection.extract();else throw new Q(`Invalid WebSocket connection: ${String(this._args.connection.extract())}`);this._cryptoService=this._args.cryptoService??new nn}_connection;_cryptoService;_deviceIdCaptured=!1;run(){return new $i.Observable(e=>{let r=!1,n=!1,o=!1,i=s=>{e.next({type:A.Error,error:s}),e.complete(),n=!0};return this._connection.onopen=()=>{e.next({type:A.Opened})},this._connection.onerror=s=>{n||(e.next({type:A.Error,error:new Q({url:this._connection.url,errorMessage:s.message})}),e.complete())},this._connection.onclose=()=>{n||(o?e.next({type:A.Closed}):e.next({type:A.Error,error:new Q({url:this._connection.url,errorMessage:"Connection closed unexpectedly"})}),e.complete())},this._connection.onmessage=async s=>{if(r)return;let d;try{let c=JSON.parse(String(s.data));if(this.isInMessageType(c))d=c;else throw new Error("Data does not match InMessageType")}catch{i(new Q({url:this._connection.url,errorMessage:`Invalid message received: ${String(s.data)}`}));return}switch(d.query){case Me.EXCHANGE:{let{nonce:c,data:u}=d;if(typeof u!="string"){i(new Q(`${Me.EXCHANGE} data type should be an APDU`));return}let a=ot(u);if(a===null||a.length<5){i(new Q(`Received invalid APDU data: ${u}`));return}e.next({type:A.PreExchange,payload:{nonce:c,apdu:a}});let p=!1;Pi(a)&&!this.isSecureConnectionAllowed()&&(p=!0,e.next({type:A.PermissionRequested}));let v=await this._api.sendApdu(a);if(r)return;v.caseOf({Left:D=>{i(new Q(D))},Right:D=>{let oe,Ee=this.mapDeviceError(D);if(Ee===null){if(oe=rn.SUCCESS,!this._deviceIdCaptured&&Bi(a)){this._deviceIdCaptured=!0;let nt=ji(D);if(nt){let le=this._cryptoService.sha3_256(nt);e.next({type:A.DeviceId,payload:{deviceId:le}})}}e.next({type:A.Exchange,payload:{nonce:c,apdu:a,data:D.data,status:D.statusCode}}),p&&e.next({type:A.PermissionGranted})}else oe=rn.ERROR,i(Ee);let He={nonce:c,response:oe,data:se(D.data,!1)};this._connection.send(JSON.stringify(He))}});break}case Me.BULK:{if(n=!0,this._connection.close(),!Array.isArray(d.data)||d.data.length===0||!d.data.every(c=>typeof c=="string")){i(new Q("Invalid bulk data received"));return}for(let c=0,u=d.data.length;c<u;c++){let a=ot(d.data[c]);if(a===null||a.length<5){i(new Q(`Received invalid APDU bulk data: ${d.data[c]}`));return}let p=await this._api.sendApdu(a);if(r)return;if(p.isLeft()){i(new Q(p.extract()));return}else if(p.isRight()){let v=this.mapDeviceError(p.extract());if(v===null)e.next({type:A.Progress,payload:{progress:+Number((c+1)/u).toFixed(2),index:c,total:u}});else{i(v);return}}}o=!0,e.complete();break}case Me.SUCCESS:{if(n)break;let c=d.result??d.data;c&&e.next({type:A.Result,payload:c??""}),o=!0,e.complete();break}case Me.WARNING:{if(n)break;e.next({type:A.Warning,payload:{message:String(d.data)}});break}case Me.ERROR:{if(n)break;i(new Q({url:this._connection.url,errorMessage:String(d.data)}))}}},()=>{r=!0,this._connection.readyState===qi.default.OPEN&&this._connection.close()}})}isSecureConnectionAllowed(){let e=this._api.getDeviceSessionState();return"isSecureConnectionAllowed"in e&&e.isSecureConnectionAllowed}isInMessageType(e){if(typeof e!="object"||!e)return!1;let r=e;return typeof r.uuid=="string"&&typeof r.session=="string"&&typeof r.query=="string"&&Object.values(Me).includes(r.query)&&typeof r.nonce=="number"}mapDeviceError(e){return k.isSuccessResponse(e)?null:k.isLockedDeviceResponse(e)?new Q({url:this._connection.url,errorMessage:"Device is locked"},bt.DeviceLocked):k.isRefusedByUser(e)?new Q({url:this._connection.url,errorMessage:"User refused on the device"},bt.RefusedByUser):k.isAppAlreadyInstalled(e)?new Q({url:this._connection.url,errorMessage:"App already installed"},bt.AppAlreadyInstalled):k.isOutOfMemory(e)?new Q({url:this._connection.url,errorMessage:"Out of memory"},bt.OutOfMemory):new Q({url:this._connection.url,errorMessage:`Invalid status code: ${se(e.statusCode)}`})}};var ft=class extends U{makeStateMachine(e){let{getDeviceMetadata:r,getFirmwareMetadata:n,getApplicationsMetadata:o,listAppsSecureChannel:i}=this.extractDependencies(e),s=this.input.unlockTimeout??6e4,d=new re({input:{unlockTimeout:s}}).makeStateMachine(e),c=new gt({input:{unlockTimeout:s}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:s},context:{},output:{}},actors:{goToDashboard:d,getDeviceMetadata:b(r),getFirmwareMetadata:b(n),getApplicationsMetadata:b(o),listApps:c,listAppsSecureChannel:me(i)},guards:{hasError:({context:u})=>u._internalState.error!==null,hasMetadata:({context:u})=>u._internalState.firmwareVersion!==null&&u._internalState.firmwareUpdateContext!==null&&u._internalState.customImage!==null&&u._internalState.applications!==null&&u._internalState.applicationsUpdates!==null&&u._internalState.installedLanguages!==null&&u._internalState.catalog!==null,forceUpdate:({context:u})=>!!u.input.forceUpdate,useSecureChannel:({context:u})=>!!u.input.useSecureChannel},actions:{assignErrorFromEvent:l({_internalState:u=>({...u.context._internalState,error:u.event.error})})}}).createMachine({id:"GetDeviceMetadataDeviceAction",initial:"DeviceReady",context:u=>({input:{useSecureChannel:u.input.useSecureChannel,forceUpdate:u.input.forceUpdate,unlockTimeout:u.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,deviceVersion:null,firmware:null,firmwareVersion:null,firmwareUpdateContext:null,customImage:null,installedApps:null,applications:null,applicationsUpdates:null,installedLanguages:null,catalog:null}}),states:{DeviceReady:{always:[{target:"GoToDashboard",guard:"forceUpdate"},{target:"GetDeviceMetadataFromContext"}]},GetDeviceMetadataFromContext:{invoke:{src:"getDeviceMetadata",onDone:{target:"GetDeviceMetadataFromContextResultCheck",actions:l({_internalState:u=>u.event.output===null?u.context._internalState:{...u.context._internalState,firmwareVersion:u.event.output.firmwareVersion,firmwareUpdateContext:u.event.output.firmwareUpdateContext,customImage:u.event.output.customImage,applications:u.event.output.applications,applicationsUpdates:u.event.output.applicationsUpdates,installedLanguages:u.event.output.installedLanguages,catalog:u.event.output.catalog}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceMetadataFromContextResultCheck:{always:[{target:"Success",guard:"hasMetadata"},{target:"GoToDashboard"}]},GoToDashboard:{exit:l({intermediateValue:{requiredUserInteraction:S.None}}),invoke:{id:"dashboard",src:"goToDashboard",input:u=>({unlockTimeout:u.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:u=>u.event.snapshot.context.intermediateValue})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:u=>u.event.output.caseOf({Right:()=>u.context._internalState,Left:a=>({...u.context._internalState,error:a})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetFirmwareMetadata"}]},GetFirmwareMetadata:{invoke:{src:"getFirmwareMetadata",onDone:{target:"GetFirmwareMetadataResultCheck",actions:l({_internalState:u=>{if(I(u.event.output)){let a=e.getDeviceSessionState();return a.sessionStateType!==w.Connected&&e.setDeviceSessionState({...a,firmwareVersion:u.event.output.data.firmwareVersion,firmwareUpdateContext:u.event.output.data.firmwareUpdateContext,customImage:u.event.output.data.customImage}),{...u.context._internalState,deviceVersion:u.event.output.data.deviceVersion,firmware:u.event.output.data.firmware,firmwareVersion:u.event.output.data.firmwareVersion,firmwareUpdateContext:u.event.output.data.firmwareUpdateContext,customImage:u.event.output.data.customImage}}return{...u.context._internalState,error:u.event.output.error}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetFirmwareMetadataResultCheck:{always:[{guard:"hasError",target:"Error"},{guard:"useSecureChannel",target:"ListAppsSecureChannel"},{target:"ListApps"}]},ListAppsSecureChannel:{exit:l({intermediateValue:{requiredUserInteraction:S.None}}),invoke:{id:"listAppsSecureChannel",src:"listAppsSecureChannel",input:u=>({firmware:u.context._internalState.firmware,firmwareVersion:u.context._internalState.firmwareVersion}),onSnapshot:{actions:l({intermediateValue:u=>{switch(u.event.snapshot.context?.type){case A.DeviceId:return{...u.context.intermediateValue,deviceId:u.event.snapshot.context.payload.deviceId};case A.PermissionRequested:return{...u.context.intermediateValue,requiredUserInteraction:S.AllowSecureConnection};case A.PermissionGranted:{let a=e.getDeviceSessionState();return a.sessionStateType!==w.Connected&&e.setDeviceSessionState({...a,isSecureConnectionAllowed:!0}),{...u.context.intermediateValue,requiredUserInteraction:S.None}}default:return{...u.context.intermediateValue}}},_internalState:u=>{if(u.event.snapshot.context?.type===A.Error)return{...u.context._internalState,error:u.event.snapshot.context.error.mapDAErrors()};if(u.event.snapshot.context?.type===A.Result){if(tn(u.event.snapshot.context.payload))return{...u.context._internalState,installedApps:u.event.snapshot.context.payload.map(a=>({name:a.name,hash:a.hash,hashCode:a.hash_code_data}))};throw new Error(`Invalid result ${JSON.stringify(u.event.snapshot.context.payload)}`)}return{...u.context._internalState}}})},onDone:{target:"ListAppsCheck"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListApps:{exit:l({intermediateValue:{requiredUserInteraction:S.None}}),invoke:{id:"listApps",src:"listApps",input:u=>({unlockTimeout:u.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:u=>u.event.snapshot.context.intermediateValue})},onDone:{target:"ListAppsCheck",actions:l({_internalState:u=>u.event.output.isLeft()?{...u.context._internalState,error:u.event.output.extract()}:{...u.context._internalState,installedApps:u.event.output.unsafeCoerce().map(a=>({name:a.appName,hash:a.appFullHash,hashCode:a.appCodeHash}))}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListAppsCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetApplicationsMetadata"}]},GetApplicationsMetadata:{invoke:{src:"getApplicationsMetadata",input:u=>({deviceVersion:u.context._internalState.deviceVersion,firmware:u.context._internalState.firmware,firmwareVersion:u.context._internalState.firmwareVersion,installedApps:u.context._internalState.installedApps}),onDone:{target:"GetApplicationsMetadataResultCheck",actions:l({_internalState:u=>{if(I(u.event.output)){let a=e.getDeviceSessionState();return a.sessionStateType!==w.Connected&&e.setDeviceSessionState({...a,installedApps:u.event.output.data.applications,appsUpdates:u.event.output.data.applicationsUpdates,installedLanguages:u.event.output.data.installedLanguages,catalog:u.event.output.data.catalog}),{...u.context._internalState,applications:u.event.output.data.applications,applicationsUpdates:u.event.output.data.applicationsUpdates,installedLanguages:u.event.output.data.installedLanguages,catalog:u.event.output.data.catalog}}return{...u.context._internalState,error:u.event.output.error}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetApplicationsMetadataResultCheck:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:u=>{let{context:a}=u,{error:p,firmwareVersion:v,firmwareUpdateContext:D,customImage:oe,applications:Ee,applicationsUpdates:He,installedLanguages:nt,catalog:le}=a._internalState;return p?h(p):f({firmwareVersion:v,firmwareUpdateContext:D,customImage:oe,applications:Ee,applicationsUpdates:He,installedLanguages:nt,catalog:le})}})}extractDependencies(e){return{getDeviceMetadata:()=>{let r=e.getDeviceSessionState();return r.sessionStateType===w.Connected||r.firmwareVersion?.metadata===void 0||r.firmwareUpdateContext===void 0||r.customImage===void 0||r.installedApps.length===0||r.appsUpdates===void 0||r.installedLanguages===void 0||r.catalog===void 0?Promise.resolve(null):Promise.resolve({firmwareVersion:r.firmwareVersion,firmwareUpdateContext:r.firmwareUpdateContext,customImage:r.customImage,applications:r.installedApps,applicationsUpdates:r.appsUpdates,installedLanguages:r.installedLanguages,catalog:r.catalog})},getFirmwareMetadata:async()=>new en(e).run(),getApplicationsMetadata:async r=>new Zr(e,{deviceVersion:r.input.deviceVersion,firmware:r.input.firmware,firmwareVersion:r.input.firmwareVersion,installedApps:r.input.installedApps}).run(),listAppsSecureChannel:r=>{let{firmware:n,firmwareVersion:o}=r.input,i=e.getSecureChannelService().listInstalledApps(o.metadata,n);return new ve(e,{connection:i}).run()}}}};ie();var xo=$(kr());var sn=class{constructor(e,r){this.api=e,this.args=r;let n=e.getDeviceModel();this.deviceModelId=n.id}deviceModelId;run(){let e=this.api.getDeviceSessionState();if(e.sessionStateType===w.Connected)return{error:new z("Invalid device state")};if(e.catalog===void 0)return{error:new z("Device apps metadata not fetched")};let r=[],n=[],o=[];for(let i of this.args.applications){let s=e.catalog.applications.find(c=>c.versionName===i.name),d=e.installedApps.find(c=>c.versionName===i.name);if(d!==void 0&&this.validateConstraint(d,s,i.constraints)){n=[...n,i.name];continue}if(s!==void 0&&this.validateConstraint(s,void 0,i.constraints))r=[...r,s];else if(this.args.allowMissingApplication)o=[...o,i.name];else return e.firmwareUpdateContext?.availableUpdate!==void 0&&s!==void 0?{error:new Je(`Application ${i.name} needs latest firmware`)}:e.firmwareUpdateContext?.availableUpdate!==void 0?{error:new Je(`Application ${i.name} needs latest firmware`)}:{error:new Hr(`Application ${i.name} not supported for this device`)}}return r=[...r.reduce((i,s)=>{let d=s.parentName;if(d){let c=e.catalog.applications.find(a=>a.versionName===d),u=e.installedApps.find(a=>a.versionName===d);if(c&&!u)return[...i,c]}return i},[]),...r],{installPlan:r.filter((i,s)=>r.findIndex(d=>d.versionName===i.versionName)===s),missingApplications:o,alreadyInstalled:n}}validateConstraint(e,r,n){if(n===void 0)return!0;for(let o of n)if(!(o.exemptModels!==void 0&&o.exemptModels.includes(this.deviceModelId))&&!(o.applicableModels!==void 0&&!o.applicableModels.includes(this.deviceModelId)))return o.minVersion==="latest"?!r||(0,xo.gte)(e.version,r.version):(0,xo.gte)(e.version,o.minVersion);return!0}};var an=class{constructor(e,r){this.api=e,this.args=r,this.deviceModel=e.getDeviceModel()}deviceModel;run(){let e=this.api.getDeviceSessionState();if(e.sessionStateType===w.Connected)return{error:new z("Invalid device state")};let{firmwareUpdateContext:r,customImage:n,firmwareVersion:o,installedLanguages:i,installedApps:s}=e;if(r===void 0||n===void 0||o===void 0||i===void 0)return{error:new z("Device metadata not fetched")};let{blockSize:d,totalMemoryBlocks:c}=this.getMemoryConstants(o),u=this.getCurrentMemoryBlocksUsage({firmwareUpdateContext:r,customImage:n,installedApps:s,installedLanguages:i,blockSize:d}),a=this.getInstallPlanMemoryBlocksUsage(this.args.installPlan,d);return{outOfMemory:u+a>c}}getMemoryConstants(e){let r=this.deviceModel.getBlockSize({firmwareVersion:e.os}),n=Math.floor(this.deviceModel.memorySize/r);return{blockSize:r,totalMemoryBlocks:n}}getCurrentMemoryBlocksUsage({firmwareUpdateContext:e,customImage:r,installedApps:n,installedLanguages:o,blockSize:i}){let s=p=>Math.ceil(p/i),d=s(e.currentFirmware.bytes||0),c=s(r.size||0),u=n.reduce((p,v)=>p+s(v.bytes||0),0),a=o.reduce((p,v)=>p+s(v.size),0);return d+c+u+a}getInstallPlanMemoryBlocksUsage(e,r){let n=o=>Math.ceil(o/r);return e.reduce((o,i)=>o+n(i.bytes||0),0)}};var rr=class extends U{makeStateMachine(e){let{buildInstallPlan:r,predictOutOfMemory:n,installApp:o}=this.extractDependencies(e),i=this.input.unlockTimeout??6e4,s=new ft({input:{unlockTimeout:i,useSecureChannel:!0,forceUpdate:!1}}).makeStateMachine(e),d=new re({input:{unlockTimeout:i}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:i},context:{},output:{}},actors:{updateMetadata:s,buildInstallPlan:b(r),predictOutOfMemory:b(n),goToDashboard:d,installApp:me(o)},guards:{hasError:({context:c})=>c._internalState.error!==null,hasInstallPlan:c=>c.context.intermediateValue.installPlan!==null,hasMoreApps:c=>c.context._internalState.currentIndex<c.context.intermediateValue.installPlan.installPlan.length},actions:{assignErrorFromEvent:l({_internalState:c=>({...c.context._internalState,error:c.event.error})}),nextAppIndex:l({_internalState:c=>({...c.context._internalState,currentIndex:c.context._internalState.currentIndex+1})}),cleanupDeviceState:()=>{let c=e.getDeviceSessionState();c.sessionStateType!==w.Connected&&e.setDeviceSessionState({...c,installedApps:[],appsUpdates:void 0})}}}).createMachine({id:"InstallOrUpdateAppsDeviceAction",initial:"DeviceReady",context:c=>({input:{applications:c.input.applications,allowMissingApplication:c.input.allowMissingApplication,unlockTimeout:c.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None,installPlan:null},_internalState:{error:null,osVersion:null,currentIndex:0}}),states:{DeviceReady:{always:[{target:"UpdateDeviceMetadata"}]},UpdateDeviceMetadata:{exit:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:S.None})}),invoke:{id:"updateMetadata",src:"updateMetadata",input:c=>({unlockTimeout:c.context.input.unlockTimeout,useSecureChannel:!0,forceUpdate:!1}),onSnapshot:{actions:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:c.event.snapshot.context.intermediateValue.requiredUserInteraction,deviceId:c.event.snapshot.context.intermediateValue.deviceId??c.context.intermediateValue.deviceId})})},onDone:{target:"UpdateDeviceMetadataCheck",actions:l({_internalState:c=>c.event.output.caseOf({Right:u=>({...c.context._internalState,osVersion:u.firmwareVersion.metadata}),Left:u=>({...c.context._internalState,error:u})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},UpdateDeviceMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success",guard:"hasInstallPlan"},{target:"BuildInstallPlan"}]},BuildInstallPlan:{invoke:{src:"buildInstallPlan",input:c=>({applications:c.context.input.applications,allowMissingApplication:c.context.input.allowMissingApplication}),onDone:{target:"BuildInstallPlanCheck",actions:l({_internalState:c=>"error"in c.event.output?{...c.context._internalState,error:c.event.output.error}:c.context._internalState,intermediateValue:c=>"error"in c.event.output?c.context.intermediateValue:{...c.context.intermediateValue,installPlan:{installPlan:c.event.output.installPlan,alreadyInstalled:c.event.output.alreadyInstalled,missingApplications:c.event.output.missingApplications,currentIndex:0,currentProgress:0}}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildInstallPlanCheck:{always:[{guard:"hasError",target:"Error"},{target:"PredictOutOfMemory",guard:"hasMoreApps"},{target:"Success"}]},PredictOutOfMemory:{invoke:{src:"predictOutOfMemory",input:c=>({installPlan:c.context.intermediateValue.installPlan.installPlan}),onDone:{target:"PredictOutOfMemoryCheck",actions:l({_internalState:c=>"error"in c.event.output?{...c.context._internalState,error:c.event.output.error}:c.event.output.outOfMemory?{...c.context._internalState,error:new mt("Not enough memory for those applications")}:c.context._internalState})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PredictOutOfMemoryCheck:{always:[{guard:"hasError",target:"Error"},{target:"GoToDashboard"}]},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:c=>({unlockTimeout:c.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:c.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:c=>c.event.output.caseOf({Right:()=>c.context._internalState,Left:u=>({...c.context._internalState,error:u})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallApp",actions:"cleanupDeviceState"}]},InstallApp:{exit:l({intermediateValue:c=>({...c.context.intermediateValue,requiredUserInteraction:S.None})}),invoke:{id:"installApp",src:"installApp",input:c=>({osVersion:c.context._internalState.osVersion,application:c.context.intermediateValue.installPlan.installPlan[c.context._internalState.currentIndex]}),onSnapshot:{actions:l({intermediateValue:c=>{switch(c.event.snapshot.context?.type){case A.DeviceId:return{...c.context.intermediateValue,deviceId:c.event.snapshot.context.payload.deviceId};case A.PermissionRequested:return{...c.context.intermediateValue,requiredUserInteraction:S.AllowSecureConnection};case A.PermissionGranted:{let u=e.getDeviceSessionState();return u.sessionStateType!==w.Connected&&e.setDeviceSessionState({...u,isSecureConnectionAllowed:!0}),{...c.context.intermediateValue,requiredUserInteraction:S.None}}case A.Progress:return{...c.context.intermediateValue,installPlan:{...c.context.intermediateValue.installPlan,currentIndex:c.context._internalState.currentIndex,currentProgress:c.event.snapshot.context.payload.progress}};default:return c.context.intermediateValue}},_internalState:c=>c.event.snapshot.context?.type===A.Error?{...c.context._internalState,error:c.event.snapshot.context.error.mapInstallDAErrors()}:c.context._internalState})},onDone:{target:"InstallAppCheck",actions:"nextAppIndex"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},InstallAppCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallApp",guard:"hasMoreApps"},{target:"UpdateDeviceMetadata"}]},Success:{type:"final"},Error:{type:"final"}},output:c=>{let{context:u}=c,{error:a}=u._internalState,{installPlan:p}=u.intermediateValue;return a?h(a):f({successfullyInstalled:p.installPlan,alreadyInstalled:p.alreadyInstalled,missingApplications:p.missingApplications})}})}extractDependencies(e){return{buildInstallPlan:r=>Promise.resolve(new sn(e,{applications:r.input.applications,allowMissingApplication:r.input.allowMissingApplication}).run()),predictOutOfMemory:r=>Promise.resolve(new an(e,{installPlan:r.input.installPlan}).run()),installApp:r=>{let{osVersion:n,application:o}=r.input,i=e.getSecureChannelService().installApp(n,o);return new ve(e,{connection:i}).run()}}}};ie();var wo=class extends U{makeStateMachine(e){let{getAppsByHash:r,setDeviceSessionState:n,getDeviceSessionState:o}=this.extractDependencies(e),i=this.input.unlockTimeout??6e4,s=new gt({input:{unlockTimeout:i}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:i},context:{},output:{}},actors:{listApps:s,getAppsByHash:b(r),updateDeviceSessionState:si(({input:d,sendBack:c})=>{let{appsWithMetadata:u}=d,a=u.filter(v=>v!==null),p={...o(),installedApps:a};try{n(p),c({type:"done"})}catch(v){c({type:"error",error:v})}})},guards:{hasError:({context:d})=>d._internalState.error!==null,hasNoAppsInstalled:({context:d})=>d._internalState.apps.length===0},actions:{assignErrorFromEvent:l({_internalState:d=>({...d.context._internalState,error:d.event.error})})}}).createMachine({id:"ListAppsWithMetadataDeviceAction",initial:"DeviceReady",context:d=>({input:d.input,_internalState:{error:null,apps:[],appsWithMetadata:[]},intermediateValue:{requiredUserInteraction:S.None}}),states:{DeviceReady:{always:{target:"ListApps"}},ListApps:{invoke:{id:"listApps",src:"listApps",input:d=>({unlockTimeout:d.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:d=>d.event.snapshot.context.intermediateValue})},onDone:{target:"ListAppsCheck",actions:l({intermediateValue:d=>({requiredUserInteraction:S.None}),_internalState:d=>d.event.output.caseOf({Right:c=>({...d.context._internalState,apps:c}),Left:c=>({...d.context._internalState,error:c})})})}}},ListAppsCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success",guard:"hasNoAppsInstalled",actions:l({_internalState:d=>({...d.context._internalState,appsWithMetadata:[]})})},{target:"FetchMetadata"}]},FetchMetadata:{invoke:{id:"getAppsByHash",src:"getAppsByHash",input:d=>d.context._internalState.apps,onDone:{target:"FetchMetadataCheck",actions:l({_internalState:d=>d.event.output.caseOf({Right:c=>({...d.context._internalState,appsWithMetadata:c}),Left:c=>({...d.context._internalState,error:c})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},FetchMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"SaveSession"}]},SaveSession:{invoke:{src:"updateDeviceSessionState",input:d=>({appsWithMetadata:d.context._internalState.appsWithMetadata})},on:{done:{target:"Success"},error:{target:"Error",actions:"assignErrorFromEvent"}}},Success:{type:"final"},Error:{type:"final"}},output:d=>d.context._internalState.error?h(d.context._internalState.error):f(d.context._internalState.appsWithMetadata)})}extractDependencies(e){return{getAppsByHash:({input:r})=>{let n=r.reduce((o,i)=>i.appFullHash?o.concat(i.appFullHash):o,[]);return e.getManagerApiService().getAppsByHash(n)},getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};ie();var Co=class extends U{makeStateMachine(e){let r=this.input.unlockTimeout??6e4,n=new ft({input:{unlockTimeout:r,useSecureChannel:!0,forceUpdate:!1}}).makeStateMachine(e),o=new rr({input:{unlockTimeout:r,applications:[...this.input.dependencies,this.input.application],allowMissingApplication:!1}}).makeStateMachine(e),i=new Le({input:{unlockTimeout:r,appName:this.input.application.name}}).makeStateMachine(e);return R({types:{input:{unlockTimeout:r},context:{},output:{}},actors:{getMetadata:n,installApps:o,openApp:i},guards:{hasError:({context:s})=>s._internalState.error!==null},actions:{assignErrorFromEvent:l({_internalState:s=>({...s.context._internalState,error:s.event.error})})}}).createMachine({id:"OpenAppWithDependenciesDeviceAction",initial:"DeviceReady",context:s=>({input:{application:s.input.application,dependencies:s.input.dependencies,requireLatestFirmware:s.input.requireLatestFirmware,unlockTimeout:s.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None,installPlan:null},_internalState:{error:null,deviceMetadata:null,installResult:null}}),states:{DeviceReady:{always:[{target:"GetDeviceMetadata"}]},GetDeviceMetadata:{exit:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:S.None})}),invoke:{id:"getMetadata",src:"getMetadata",input:s=>({unlockTimeout:s.context.input.unlockTimeout,useSecureChannel:!0,forceUpdate:!1}),onSnapshot:{actions:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:s.event.snapshot.context.intermediateValue.requiredUserInteraction,deviceId:s.event.snapshot.context.intermediateValue.deviceId??s.context.intermediateValue.deviceId})})},onDone:{target:"GetDeviceMetadataCheck",actions:l({_internalState:s=>s.event.output.caseOf({Right:d=>s.context.input.requireLatestFirmware&&d.firmwareUpdateContext.availableUpdate!==void 0?{...s.context._internalState,error:new Je("Firmware is not the latest version")}:{...s.context._internalState,deviceMetadata:d},Left:d=>({...s.context._internalState,error:d})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceMetadataCheck:{always:[{target:"Error",guard:"hasError"},{target:"InstallDependencies"}]},InstallDependencies:{exit:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:S.None})}),invoke:{src:"installApps",input:s=>({unlockTimeout:s.context.input.unlockTimeout,applications:[...s.context.input.dependencies,s.context.input.application],allowMissingApplication:!1}),onSnapshot:{actions:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:s.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:s.event.snapshot.context.intermediateValue.installPlan,deviceId:s.event.snapshot.context.intermediateValue.deviceId??s.context.intermediateValue.deviceId})})},onDone:{target:"InstallDependenciesCheck",actions:l({_internalState:s=>s.event.output.caseOf({Right:d=>({...s.context._internalState,installResult:d}),Left:d=>({...s.context._internalState,error:d})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},InstallDependenciesCheck:{always:[{guard:"hasError",target:"Error"},{target:"OpenApp"}]},OpenApp:{exit:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:S.None})}),invoke:{src:"openApp",input:s=>({unlockTimeout:s.context.input.unlockTimeout,appName:s.context.input.application.name}),onSnapshot:{actions:l({intermediateValue:s=>({...s.context.intermediateValue,requiredUserInteraction:s.event.snapshot.context.intermediateValue.requiredUserInteraction,installPlan:null})})},onDone:{target:"OpenAppCheck",actions:l({_internalState:s=>s.event.output.caseOf({Right:()=>s.context._internalState,Left:d=>({...s.context._internalState,error:d})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},OpenAppCheck:{always:[{guard:"hasError",target:"Error"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:s=>{let{context:d}=s,{error:c,deviceMetadata:u,installResult:a}=d._internalState;return c?h(c):f({deviceMetadata:u,installResult:a})}})}};ie();var bo=class extends U{makeStateMachine(e){let{sendCommand:r}=this.extractDependencies(e);return R({types:{input:{},context:{},output:{}},actors:{sendCommand:b(r),openAppStateMachine:new Le({input:{appName:this.input.appName}}).makeStateMachine(e)},guards:{skipOpenApp:()=>this.input.skipOpenApp,noInternalError:({context:n})=>n._internalState.error===null},actions:{assignErrorFromEvent:l({_internalState:n=>({...n.context._internalState,error:n.event.error})})}}).createMachine({id:"SendCommandInAppDeviceAction",initial:"InitialState",context:({input:n})=>({input:n,intermediateValue:{requiredUserInteraction:S.None},_internalState:{commandResponse:null,error:null}}),states:{InitialState:{always:[{target:"SendCommand",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:this.input.appName},src:"openAppStateMachine",onSnapshot:{actions:l({intermediateValue:n=>n.event.snapshot.context.intermediateValue})},onDone:{actions:l({_internalState:n=>n.event.output.caseOf({Right:()=>n.context._internalState,Left:o=>({...n.context._internalState,error:o})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"SendCommand",guard:"noInternalError"},"Error"]},SendCommand:{entry:l({intermediateValue:{requiredUserInteraction:this.input.requiredUserInteraction}}),exit:l({intermediateValue:{requiredUserInteraction:S.None}}),invoke:{id:"sendCommand",src:"sendCommand",input:({context:n})=>n.input.command,onDone:{target:"SendCommandResultCheck",actions:[l({_internalState:({event:n,context:o})=>I(n.output)?{...o._internalState,commandResponse:n.output.data}:{...o._internalState,error:n.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SendCommandResultCheck:{always:[{target:"Success",guard:"noInternalError"},"Error"]},Success:{type:"final"},Error:{type:"final"}},output:({context:n})=>n._internalState.commandResponse?f(n._internalState.commandResponse):h(n._internalState.error||new z("No error in final state"))})}extractDependencies(e){return{sendCommand:r=>e.sendCommand(r.input)}}};var rf=$(ho(),1);function K(t){return(typeof t=="object"&&t!==null||typeof t=="function")&&typeof t.then=="function"}function ae(t){switch(typeof t){case"string":case"symbol":return t.toString();case"function":return t.name;default:throw new Error(`Unexpected ${typeof t} service id type`)}}var Io=Symbol.for("@inversifyjs/common/islazyServiceIdentifier"),Ye=class{[Io];#e;constructor(e){this.#e=e,this[Io]=!0}static is(e){return typeof e=="object"&&e!==null&&e[Io]===!0}unwrap(){return this.#e()}};var Gg=$(ho(),1);function Ne(t,e){return Reflect.getOwnMetadata(e,t)}function nr(t,e,r){Reflect.defineMetadata(e,r,t)}function Ue(t,e,r,n){let o=n(Ne(t,e)??r());Reflect.defineMetadata(e,o,t)}var To="@inversifyjs/container/bindingId";function Ve(){let t=Ne(Object,To)??0;return t===Number.MAX_SAFE_INTEGER?nr(Object,To,Number.MIN_SAFE_INTEGER):Ue(Object,To,(()=>t),(e=>e+1)),t}var _e={Request:"Request",Singleton:"Singleton",Transient:"Transient"},G={ConstantValue:"ConstantValue",DynamicValue:"DynamicValue",Factory:"Factory",Instance:"Instance",Provider:"Provider",ResolvedValue:"ResolvedValue",ServiceRedirection:"ServiceRedirection"};function*as(...t){for(let e of t)yield*e}var sr=class t{#e;#t;#o;constructor(e){this.#e=new Map,this.#t={};for(let r of Reflect.ownKeys(e))this.#t[r]=new Map;this.#o=e}add(e,r){this.#r(e).push(r);for(let n of Reflect.ownKeys(r))this.#s(n,r[n]).push(e)}clone(){let e=Reflect.ownKeys(this.#o),r=new t(this.#o);this.#a(this.#e,r.#e);for(let n of e)this.#a(this.#t[n],r.#t[n]);return r}get(e,r){return this.#t[e].get(r)}getAllKeys(e){return this.#t[e].keys()}removeByRelation(e,r){let n=this.get(e,r);if(n===void 0)return;let o=new Set(n);for(let i of o){let s=this.#e.get(i);if(s===void 0)throw new Error("Expecting model relation, none found");for(let d of s)d[e]===r&&this.#i(i,d);this.#e.delete(i)}}#r(e){let r=this.#e.get(e);return r===void 0&&(r=[],this.#e.set(e,r)),r}#s(e,r){let n=this.#t[e].get(r);return n===void 0&&(n=[],this.#t[e].set(r,n)),n}#a(e,r){for(let[n,o]of e)r.set(n,[...o])}#i(e,r){for(let n of Reflect.ownKeys(r))this.#n(e,n,r[n])}#n(e,r,n){let o=this.#t[r].get(n);if(o!==void 0){let i=o.indexOf(e);i!==-1&&o.splice(i,1),o.length===0&&this.#t[r].delete(n)}}},or,xe,ir;(function(t){t.moduleId="moduleId",t.serviceId="serviceId"})(or||(or={}));var ar=class t{#e;#t;constructor(e,r){this.#e=r??new sr({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(e){return new t(e)}add(e,r){this.#e.add(e,r)}clone(){return new t(this.#t,this.#e.clone())}get(e){let r=[],n=this.#e.get(or.serviceId,e);n!==void 0&&r.push(n);let o=this.#t?.get(e);if(o!==void 0&&r.push(o),r.length!==0)return as(...r)}removeAllByModuleId(e){this.#e.removeByRelation(or.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(or.serviceId,e)}};(function(t){t.id="id",t.moduleId="moduleId",t.serviceId="serviceId"})(xe||(xe={}));var cr=class t{#e;#t;constructor(e,r){this.#e=r??new sr({id:{isOptional:!1},moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(e){return new t(e)}clone(){return new t(this.#t,this.#e.clone())}get(e){return this.getNonParentBindings(e)??this.#t?.get(e)}getById(e){return this.#e.get(xe.id,e)??this.#t?.getById(e)}getByModuleId(e){return this.#e.get(xe.moduleId,e)??this.#t?.getByModuleId(e)}getNonParentBindings(e){return this.#e.get(xe.serviceId,e)}getNonParentBoundServices(){return this.#e.getAllKeys(xe.serviceId)}removeById(e){this.#e.removeByRelation(xe.id,e)}removeAllByModuleId(e){this.#e.removeByRelation(xe.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(xe.serviceId,e)}set(e){let r={[xe.id]:e.id,[xe.serviceId]:e.serviceIdentifier};e.moduleId!==void 0&&(r[xe.moduleId]=e.moduleId),this.#e.add(e,r)}};(function(t){t.moduleId="moduleId",t.serviceId="serviceId"})(ir||(ir={}));var ur=class t{#e;#t;constructor(e,r){this.#e=r??new sr({moduleId:{isOptional:!0},serviceId:{isOptional:!1}}),this.#t=e}static build(e){return new t(e)}add(e,r){this.#e.add(e,r)}clone(){return new t(this.#t,this.#e.clone())}get(e){let r=[],n=this.#e.get(ir.serviceId,e);n!==void 0&&r.push(n);let o=this.#t?.get(e);if(o!==void 0&&r.push(o),r.length!==0)return as(...r)}removeAllByModuleId(e){this.#e.removeByRelation(ir.moduleId,e)}removeAllByServiceId(e){this.#e.removeByRelation(ir.serviceId,e)}};var It="@inversifyjs/core/classMetadataReflectKey";function Tt(){return{constructorArguments:[],lifecycle:{postConstructMethodName:void 0,preDestroyMethodName:void 0},properties:new Map,scope:void 0}}var cs="@inversifyjs/core/pendingClassMetadataCountReflectKey",Uo=Symbol.for("@inversifyjs/core/InversifyCoreError"),P=class t extends Error{[Uo];kind;constructor(e,r,n){super(r,n),this[Uo]=!0,this.kind=e}static is(e){return typeof e=="object"&&e!==null&&e[Uo]===!0}static isErrorOfKind(e,r){return t.is(e)&&e.kind===r}},B,Ut,Fe;function dr(t){let e=Ne(t,It)??Tt();if(!(function(r){let n=Ne(r,cs);return n!==void 0&&n!==0})(t))return(function(r,n){let o=[];if(n.length<r.length)throw new P(B.missingInjectionDecorator,`Found unexpected missing metadata on type "${r.name}". "${r.name}" constructor requires at least ${r.length.toString()} arguments, found ${n.length.toString()} instead.
3
+ Are you using @inject, @multiInject or @unmanaged decorators in every non optional constructor argument?
4
+
5
+ If you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`);for(let i=0;i<n.length;++i)n[i]===void 0&&o.push(i);if(o.length>0)throw new P(B.missingInjectionDecorator,`Found unexpected missing metadata on type "${r.name}" at constructor indexes "${o.join('", "')}".
6
+
7
+ Are you using @inject, @multiInject or @unmanaged decorators at those indexes?
8
+
9
+ If you're using typescript and want to rely on auto injection, set "emitDecoratorMetadata" compiler option to true`)})(t,e.constructorArguments),e;(function(r,n){let o=[];for(let i=0;i<n.constructorArguments.length;++i){let s=n.constructorArguments[i];s!==void 0&&s.kind!==Ut.unknown||o.push(` - Missing or incomplete metadata for type "${r.name}" at constructor argument with index ${i.toString()}.
10
+ Every constructor parameter must be decorated either with @inject, @multiInject or @unmanaged decorator.`)}for(let[i,s]of n.properties)s.kind===Ut.unknown&&o.push(` - Missing or incomplete metadata for type "${r.name}" at property "${i.toString()}".
11
+ This property must be decorated either with @inject or @multiInject decorator.`);throw o.length===0?new P(B.unknown,`Unexpected class metadata for type "${r.name}" with uncompletion traces.
12
+ This might be caused by one of the following reasons:
13
+
14
+ 1. A third party library is targeting inversify reflection metadata.
15
+ 2. A bug is causing the issue. Consider submiting an issue to fix it.`):new P(B.missingInjectionDecorator,`Invalid class metadata at type ${r.name}:
16
+
17
+ ${o.join(`
18
+
19
+ `)}`)})(t,e)}function _a(){return 0}function Ea(t){return e=>{e!==void 0&&e.kind===Ut.unknown&&Ue(t,cs,_a,(r=>r-1))}}function us(t,e){return(...r)=>n=>{if(n===void 0)return t(...r);if(n.kind===Fe.unmanaged)throw new P(B.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found");return e(n,...r)}}function ds(t){if(t.kind!==Ut.unknown&&t.isFromTypescriptParamType!==!0)throw new P(B.injectionDecoratorConflict,"Unexpected injection found. Multiple @inject, @multiInject or @unmanaged decorators found")}(function(t){t[t.injectionDecoratorConflict=0]="injectionDecoratorConflict",t[t.missingInjectionDecorator=1]="missingInjectionDecorator",t[t.planning=2]="planning",t[t.resolution=3]="resolution",t[t.unknown=4]="unknown"})(B||(B={})),(function(t){t[t.unknown=32]="unknown"})(Ut||(Ut={})),(function(t){t[t.multipleInjection=0]="multipleInjection",t[t.singleInjection=1]="singleInjection",t[t.unmanaged=2]="unmanaged"})(Fe||(Fe={}));var xa=us((function(t,e){return{kind:t,name:void 0,optional:!1,tags:new Map,value:e}}),(function(t,e,r){return ds(t),{...t,kind:e,value:r}}));function Hi(t,e){return r=>{let n=r.properties.get(e);return r.properties.set(e,t(n)),r}}var Ze;function wa(t,e,r,n){if(P.isErrorOfKind(n,B.injectionDecoratorConflict)){let o=(function(i,s,d){if(d===void 0){if(s===void 0)throw new P(B.unknown,"Unexpected undefined property and index values");return{kind:Ze.property,property:s,targetClass:i.constructor}}return typeof d=="number"?{index:d,kind:Ze.parameter,targetClass:i}:{kind:Ze.method,method:s,targetClass:i}})(t,e,r);throw new P(B.injectionDecoratorConflict,`Unexpected injection error.
20
+
21
+ Cause:
22
+
23
+ ${n.message}
24
+
25
+ Details
26
+
27
+ ${(function(i){switch(i.kind){case Ze.method:return`[class: "${i.targetClass.name}", method: "${i.method.toString()}"]`;case Ze.parameter:return`[class: "${i.targetClass.name}", index: "${i.index.toString()}"]`;case Ze.property:return`[class: "${i.targetClass.name}", property: "${i.property.toString()}"]`}})(o)}`,{cause:n})}throw n}function Ca(t,e){return(r,n,o)=>{try{o===void 0?(function(i,s){let d=Oo(i,s);return(c,u)=>{Ue(c.constructor,It,Tt,Hi(d(c),u))}})(t,e)(r,n):typeof o=="number"?(function(i,s){let d=Oo(i,s);return(c,u,a)=>{if(!(function(p,v){return typeof p=="function"&&v===void 0})(c,u))throw new P(B.injectionDecoratorConflict,`Found an @inject decorator in a non constructor parameter.
28
+ Found @inject decorator at method "${u?.toString()??""}" at class "${c.constructor.name}"`);Ue(c,It,Tt,(function(p,v){return D=>{let oe=D.constructorArguments[v];return D.constructorArguments[v]=p(oe),D}})(d(c),a))}})(t,e)(r,n,o):(function(i,s){let d=Oo(i,s);return(c,u,a)=>{if(!(function(p){return p.set!==void 0})(a))throw new P(B.injectionDecoratorConflict,`Found an @inject decorator in a non setter property method.
29
+ Found @inject decorator at method "${u.toString()}" at class "${c.constructor.name}"`);Ue(c.constructor,It,Tt,Hi(d(c),u))}})(t,e)(r,n,o)}catch(i){wa(r,n,o,i)}}}function Oo(t,e){return r=>{let n=e(r);return o=>(n(o),t(o))}}function m(t){return Ca(xa(Fe.singleInjection,t),Ea)}(function(t){t[t.method=0]="method",t[t.parameter=1]="parameter",t[t.property=2]="property"})(Ze||(Ze={}));var zi="@inversifyjs/core/classIsInjectableFlagReflectKey",ba=[Array,BigInt,Boolean,Function,Number,Object,String];function Ia(t){let e=Ne(t,"design:paramtypes");e!==void 0&&Ue(t,It,Tt,(function(r){return n=>(r.forEach(((o,i)=>{var s;n.constructorArguments[i]!==void 0||(s=o,ba.includes(s))||(n.constructorArguments[i]=(function(d){return{isFromTypescriptParamType:!0,kind:Fe.singleInjection,name:void 0,optional:!1,tags:new Map,value:d}})(o))})),n)})(e))}function g(t){return e=>{(function(r){if(Ne(r,zi)!==void 0)throw new P(B.injectionDecoratorConflict,`Cannot apply @injectable decorator multiple times at class "${r.name}"`);nr(r,zi,!0)})(e),Ia(e),t!==void 0&&Ue(e,It,Tt,(r=>({...r,scope:t})))}}function Wi(){return{kind:Fe.unmanaged}}var Bg=us(Wi,(function(t){if(ds(t),(function(e){return e.name!==void 0||e.optional||e.tags.size>0})(t))throw new P(B.injectionDecoratorConflict,"Unexpected injection found. Found @unmanaged injection with additional @named, @optional, @tagged or @targetName injections");return Wi()}));var St;(function(t){t[t.multipleInjection=0]="multipleInjection",t[t.singleInjection=1]="singleInjection"})(St||(St={}));var Ot=class t{#e;constructor(e){this.#e=e}get name(){return this.#e.elem.name}get serviceIdentifier(){return this.#e.elem.serviceIdentifier}get tags(){return this.#e.elem.tags}getAncestor(){if(this.#e.previous!==void 0)return new t(this.#e.previous)}},Ro=class t{last;constructor(e){this.last=e}concat(e){return new t({elem:e,previous:this.last})}[Symbol.iterator](){let e=this.last;return{next:()=>{if(e===void 0)return{done:!0,value:void 0};let r=e.elem;return e=e.previous,{done:!1,value:r}}}}};function dn(t,e,r){let n=r?.customServiceIdentifier??e.serviceIdentifier,o=[...t.getBindings(n)??[]].filter((i=>i.isSatisfiedBy(e)));if(o.length===0&&t.autobindOptions!==void 0&&typeof n=="function"){let i=(function(s,d){let c=dr(d),u=c.scope??s.scope;return{cache:{isRight:!1,value:void 0},id:Ve(),implementationType:d,isSatisfiedBy:()=>!0,moduleId:void 0,onActivation:void 0,onDeactivation:void 0,scope:u,serviceIdentifier:d,type:G.Instance}})(t.autobindOptions,n);t.setBinding(i),o.push(i)}return o}function yt(t){return t.redirections!==void 0}function ps(t,e,r,n){let o,i;yt(r)?(o=r.binding.targetServiceIdentifier,i=r.binding.serviceIdentifier):(o=r.serviceIdentifier,i=r.parent?.binding.serviceIdentifier),Array.isArray(t)?(function(s,d,c,u,a){if(s.length!==0){let p=`Ambiguous bindings found for service: "${ae(c)}".
30
+
31
+ Registered bindings:
32
+
33
+ ${s.map((v=>(function(D){switch(D.type){case G.Instance:return`[ type: "${D.type}", serviceIdentifier: "${ae(D.serviceIdentifier)}", scope: "${D.scope}", implementationType: "${D.implementationType.name}" ]`;case G.ServiceRedirection:return`[ type: "${D.type}", serviceIdentifier: "${ae(D.serviceIdentifier)}", redirection: "${ae(D.targetServiceIdentifier)}" ]`;default:return`[ type: "${D.type}", serviceIdentifier: "${ae(D.serviceIdentifier)}", scope: "${D.scope}" ]`}})(v.binding))).join(`
34
+ `)}
35
+
36
+ Trying to resolve bindings for "${ls(c,u)}".
37
+
38
+ ${ms(a)}`;throw new P(B.planning,p)}d||Ki(c,u,a)})(t,e,o,i,n):(function(s,d,c,u,a){s!==void 0||d||Ki(c,u,a)})(t,e,o,i,n)}function Ki(t,e,r){let n=`No bindings found for service: "${ae(t)}".
39
+
40
+ Trying to resolve bindings for "${ls(t,e)}".
41
+
42
+ ${ms(r)}`;throw new P(B.planning,n)}function ls(t,e){return e===void 0?`${ae(t)} (Root service)`:ae(e)}function ms(t){let e=t.tags.size===0?"":`
43
+ - tags:
44
+ - ${[...t.tags.keys()].map((r=>r.toString())).join(`
45
+ - `)}`;return`Binding constraints:
46
+ - service identifier: ${ae(t.serviceIdentifier)}
47
+ - name: ${t.name?.toString()??"-"}${e}`}function hs(t,e,r){if(t.redirections.length!==1)ps(t.redirections,e,t,r);else{let[n]=t.redirections;yt(n)&&hs(n,e,r)}}function Lo(t,e,r){if(Array.isArray(t.bindings)&&t.bindings.length===1){let[n]=t.bindings;yt(n)&&hs(n,e,r)}else ps(t.bindings,e,t,r)}function Ta(t,e){if((function(r){return r instanceof Error&&(r instanceof RangeError&&/stack space|call stack|too much recursion/i.test(r.message)||r.name==="InternalError"&&/too much recursion/.test(r.message))})(e)){let r=(function(n){let o=[...n];return o.length===0?"(No dependency trace)":o.map(ae).join(" -> ")})((function(n){let o=new Set;for(let i of n.servicesBranch){if(o.has(i))return[...o,i];o.add(i)}return[...o]})(t));throw new P(B.planning,`Circular dependency found: ${r}`,{cause:e})}throw e}function gs(t){try{let e=new Map;t.rootConstraints.tag!==void 0&&e.set(t.rootConstraints.tag.key,t.rootConstraints.tag.value);let r=new Ro({elem:{name:t.rootConstraints.name,serviceIdentifier:t.rootConstraints.serviceIdentifier,tags:e},previous:void 0}),n=new Ot(r.last),o=dn(t,n),i=[],s={bindings:i,parent:void 0,serviceIdentifier:t.rootConstraints.serviceIdentifier};if(i.push(...pn(t,r,o,s)),!t.rootConstraints.isMultiple){Lo(s,t.rootConstraints.isOptional??!1,n);let[d]=i;s.bindings=d}return{tree:{root:s}}}catch(e){Ta(t,e)}}function Ua(t,e,r,n){let o={binding:e,classMetadata:t.getClassMetadata(e.implementationType),constructorParams:[],parent:n,propertyParams:new Map};return fs({autobindOptions:t.autobindOptions,getBindings:t.getBindings,getClassMetadata:t.getClassMetadata,node:o,servicesBranch:t.servicesBranch,setBinding:t.setBinding},r)}function Ji(t,e,r){if(r.kind===Fe.unmanaged)return;let n=Ye.is(r.value)?r.value.unwrap():r.value,o=e.concat({name:r.name,serviceIdentifier:n,tags:r.tags}),i=new Ot(o.last),s=dn(t,i),d=[],c={bindings:d,parent:t.node,serviceIdentifier:n};if(d.push(...pn(t,o,s,c)),r.kind===Fe.singleInjection){Lo(c,r.optional,i);let[u]=d;c.bindings=u}return c}function Oa(t,e,r){let n=Ye.is(r.value)?r.value.unwrap():r.value,o=e.concat({name:r.name,serviceIdentifier:n,tags:r.tags}),i=new Ot(o.last),s=dn(t,i),d=[],c={bindings:d,parent:t.node,serviceIdentifier:n};if(d.push(...pn(t,o,s,c)),r.kind===St.singleInjection){Lo(c,r.optional,i);let[u]=d;c.bindings=u}return c}function Ra(t,e,r,n){let o={binding:e,params:[],parent:n};return fs({autobindOptions:t.autobindOptions,getBindings:t.getBindings,getClassMetadata:t.getClassMetadata,node:o,servicesBranch:t.servicesBranch,setBinding:t.setBinding},r)}function pn(t,e,r,n){let o=yt(n)?n.binding.targetServiceIdentifier:n.serviceIdentifier;t.servicesBranch.push(o);let i=[];for(let s of r)switch(s.type){case G.Instance:i.push(Ua(t,s,e,n));break;case G.ResolvedValue:i.push(Ra(t,s,e,n));break;case G.ServiceRedirection:{let d=ka(t,e,s,n);i.push(d);break}default:i.push({binding:s,parent:n})}return t.servicesBranch.pop(),i}function ka(t,e,r,n){let o={binding:r,parent:n,redirections:[]},i=dn(t,new Ot(e.last),{customServiceIdentifier:r.targetServiceIdentifier});return o.redirections.push(...pn(t,e,i,o)),o}function fs(t,e){return t.node.binding.type===G.Instance?(function(r,n,o){let i=n.classMetadata;for(let[s,d]of i.constructorArguments.entries())n.constructorParams[s]=Ji(r,o,d);for(let[s,d]of i.properties){let c=Ji(r,o,d);c!==void 0&&n.propertyParams.set(s,c)}return r.node})(t,t.node,e):(function(r,n,o){let i=n.binding.metadata;for(let[s,d]of i.arguments.entries())n.params[s]=Oa(r,o,d);return r.node})(t,t.node,e)}var vt;(function(t){t[t.singleMandatory=0]="singleMandatory",t[t.singleOptional=1]="singleOptional",t[t.multipleMandatory=2]="multipleMandatory",t[t.multipleOptional=3]="multipleOptional",t[t.length=4]="length"})(vt||(vt={}));var un=class{#e;#t;#o;#r;#s;constructor(){this.#e=this.#a(),this.#t=this.#a(),this.#r=this.#a(),this.#o=this.#a(),this.#s=[]}clearCache(){for(let e of this.#c())e.clear();for(let e of this.#s)e.clearCache()}get(e){return e.name===void 0?e.tag===void 0?this.#n(this.#e,e).get(e.serviceIdentifier):this.#n(this.#o,e).get(e.serviceIdentifier)?.get(e.tag.key)?.get(e.tag.value):e.tag===void 0?this.#n(this.#t,e).get(e.serviceIdentifier)?.get(e.name):this.#n(this.#r,e).get(e.serviceIdentifier)?.get(e.name)?.get(e.tag.key)?.get(e.tag.value)}set(e,r){e.name===void 0?e.tag===void 0?this.#n(this.#e,e).set(e.serviceIdentifier,r):this.#i(this.#i(this.#n(this.#o,e),e.serviceIdentifier),e.tag.key).set(e.tag.value,r):e.tag===void 0?this.#i(this.#n(this.#t,e),e.serviceIdentifier).set(e.name,r):this.#i(this.#i(this.#i(this.#n(this.#r,e),e.serviceIdentifier),e.name),e.tag.key).set(e.tag.value,r)}subscribe(e){this.#s.push(e)}#a(){let e=new Array(vt.length);for(let r=0;r<e.length;++r)e[r]=new Map;return e}#i(e,r){let n=e.get(r);return n===void 0&&(n=new Map,e.set(r,n)),n}#n(e,r){return e[this.#u(r)]}#c(){return[...this.#e,...this.#t,...this.#r,...this.#o]}#u(e){return e.isMultiple?e.optional===!0?vt.multipleOptional:vt.multipleMandatory:e.optional===!0?vt.singleOptional:vt.singleMandatory}};function vs(t,e){return K(e)?(t.cache={isRight:!0,value:e},e.then((r=>Xi(t,r)))):Xi(t,e)}function Xi(t,e){return t.cache={isRight:!0,value:e},e}function La(t,e,r){let n=t.getActivations(e);return n===void 0?r:K(r)?Qi(t,r,n[Symbol.iterator]()):(function(o,i,s){let d=i,c=s.next();for(;c.done!==!0;){let u=c.value(o.context,d);if(K(u))return Qi(o,u,s);d=u,c=s.next()}return d})(t,r,n[Symbol.iterator]())}async function Qi(t,e,r){let n=await e,o=r.next();for(;o.done!==!0;)n=await o.value(t.context,n),o=r.next();return n}function cn(t,e,r){let n=r;if(e.onActivation!==void 0){let o=e.onActivation;n=K(n)?n.then((i=>o(t.context,i))):o(t.context,n)}return La(t,e.serviceIdentifier,n)}function Mo(t){return(e,r)=>r.cache.isRight?r.cache.value:vs(r,cn(e,r,t(e,r)))}var Ma=Mo((function(t,e){return e.value}));function Na(t){return t}function No(t,e){return(r,n)=>{let o=t(n);switch(o.scope){case _e.Singleton:return o.cache.isRight?o.cache.value:vs(o,cn(r,o,e(r,n)));case _e.Request:{if(r.requestScopeCache.has(o.id))return r.requestScopeCache.get(o.id);let i=cn(r,o,e(r,n));return r.requestScopeCache.set(o.id,i),i}case _e.Transient:return cn(r,o,e(r,n))}}}var Fa=(t=>No(Na,t))((function(t,e){return e.value(t.context)})),Va=Mo((function(t,e){return e.factory(t.context)}));function Yi(t,e,r){let n=(function(o,i,s){if(s!==void 0){if(!(s in o))throw new P(B.resolution,`Expecting a "${s.toString()}" property when resolving "${i.implementationType.name}" class @postConstruct decorated method, none found.`);if(typeof o[s]!="function")throw new P(B.resolution,`Expecting a "${s.toString()}" method when resolving "${i.implementationType.name}" class @postConstruct decorated method, a non function property was found instead.`);{let d;try{d=o[s]()}catch(c){throw new P(B.resolution,`Unexpected error found when calling "${s.toString()}" @postConstruct decorated method on class "${i.implementationType.name}"`,{cause:c})}if(K(d))return(async function(c,u,a){try{await a}catch(p){throw new P(B.resolution,`Unexpected error found when calling "${u.toString()}" @postConstruct decorated method on class "${c.implementationType.name}"`,{cause:p})}})(i,s,d)}}})(t,e,r);return K(n)?n.then((()=>t)):t}function Zi(t){return(e,r,n)=>{let o=new n.binding.implementationType(...e),i=t(r,o,n);return K(i)?i.then((()=>Yi(o,n.binding,n.classMetadata.lifecycle.postConstructMethodName))):Yi(o,n.binding,n.classMetadata.lifecycle.postConstructMethodName)}}var Pa=Mo((function(t,e){return e.provider(t.context)}));function Ba(t){return t.binding}function ja(t){return t.binding}var es=(function(t){return(e,r,n)=>{let o=[];for(let[i,s]of n.propertyParams){let d=n.classMetadata.properties.get(i);if(d===void 0)throw new P(B.resolution,`Expecting metadata at property "${i.toString()}", none found`);d.kind!==Fe.unmanaged&&s.bindings!==void 0&&(r[i]=t(e,s),K(r[i])&&o.push((async()=>{r[i]=await r[i]})()))}if(o.length>0)return Promise.all(o).then((()=>{}))}})(ln),ts=(function(t){return function e(r,n){let o=[];for(let i of n.redirections)yt(i)?o.push(...e(r,i)):o.push(t(r,i));return o}})(ko),Ga=(function(t,e,r){return(n,o)=>{let i=t(n,o);return K(i)?e(i,n,o):r(i,n,o)}})((function(t){return(e,r)=>{let n=[];for(let o of r.constructorParams)o===void 0?n.push(void 0):n.push(t(e,o));return n.some(K)?Promise.all(n):n}})(ln),(function(t){return async(e,r,n)=>{let o=await e;return t(o,r,n)}})(Zi(es)),Zi(es)),qa=(function(t){return(e,r)=>{let n=t(e,r);return K(n)?n.then((o=>r.binding.factory(...o))):r.binding.factory(...n)}})((function(t){return(e,r)=>{let n=[];for(let o of r.params)n.push(t(e,o));return n.some(K)?Promise.all(n):n}})(ln)),$a=(t=>No(Ba,t))(Ga),Ha=(t=>No(ja,t))(qa);function Ss(t){return ln(t,t.planResult.tree.root)}function ko(t,e){switch(e.binding.type){case G.ConstantValue:return Ma(t,e.binding);case G.DynamicValue:return Fa(t,e.binding);case G.Factory:return Va(t,e.binding);case G.Instance:return $a(t,e);case G.Provider:return Pa(t,e.binding);case G.ResolvedValue:return Ha(t,e)}}function ln(t,e){if(e.bindings!==void 0)return Array.isArray(e.bindings)?(function(r,n){let o=[];for(let i of n)yt(i)?o.push(...ts(r,i)):o.push(ko(r,i));return o.some(K)?Promise.all(o):o})(t,e.bindings):(function(r,n){if(yt(n)){let o=ts(r,n);if(o.length===1)return o[0];throw new P(B.resolution,"Unexpected multiple resolved values on single injection")}return ko(r,n)})(t,e.bindings)}function za(t){return t.scope!==void 0}function rs(t,e){if(t.lifecycle.preDestroyMethodName!==void 0&&typeof e[t.lifecycle.preDestroyMethodName]=="function")return e[t.lifecycle.preDestroyMethodName]()}function ns(t,e,r){let n=t.getDeactivations(e);if(n!==void 0)return K(r)?os(r,n[Symbol.iterator]()):(function(o,i){let s=i.next();for(;s.done!==!0;){let d=s.value(o);if(K(d))return os(o,i);s=i.next()}})(r,n[Symbol.iterator]())}async function os(t,e){let r=await t,n=e.next();for(;n.done!==!0;)await n.value(r),n=e.next()}function Wa(t,e){let r=(function(n,o){if(o.type===G.Instance){let i=n.getClassMetadata(o.implementationType),s=o.cache.value;return K(s)?s.then((d=>rs(i,d))):rs(i,s)}})(t,e);return r===void 0?is(t,e):r.then((()=>is(t,e)))}function is(t,e){let r=e.cache;return K(r.value)?r.value.then((n=>ss(t,e,n))):ss(t,e,r.value)}function ss(t,e,r){let n;return e.onDeactivation!==void 0&&(n=(0,e.onDeactivation)(r)),n===void 0?ns(t,e.serviceIdentifier,r):n.then((()=>ns(t,e.serviceIdentifier,r)))}function mn(t,e){if(e===void 0)return;let r=(function(o){let i=[];for(let s of o)za(s)&&s.scope===_e.Singleton&&s.cache.isRight&&i.push(s);return i})(e),n=[];for(let o of r){let i=Wa(t,o);i!==void 0&&n.push(i)}return n.length>0?Promise.all(n).then((()=>{})):void 0}function ys(t,e){let r=t.getBindingsFromModule(e);return mn(t,r)}function Fo(t,e){let r=t.getBindings(e);return mn(t,r)}var Vo="@inversifyjs/container/bindingId",F=class{#e;#t;constructor(e){this.#e=(function(){let r=Ne(Object,Vo)??0;return r===Number.MAX_SAFE_INTEGER?nr(Object,Vo,Number.MIN_SAFE_INTEGER):Ue(Object,Vo,(()=>r),(n=>n+1)),r})(),this.#t=e}get id(){return this.#e}load(e){return this.#t(e)}},As=Symbol.for("@inversifyjs/container/bindingIdentifier");function Ds(t){return typeof t=="object"&&t!==null&&t[As]===!0}var Pe=class{static always=e=>!0};function jo(t){return{[As]:!0,id:t.id}}function mr(t){return e=>{for(let r=e.getAncestor();r!==void 0;r=r.getAncestor())if(t(r))return!0;return!1}}function pr(t){return e=>e.name===t}function hn(t){return e=>e.serviceIdentifier===t}function lr(t,e){return r=>r.tags.has(t)&&r.tags.get(t)===e}function Ka(t){return t.name===void 0&&t.tags.size===0}function gn(t){let e=mr(t);return r=>!e(r)}function fn(t){return e=>{let r=e.getAncestor();return r===void 0||!t(r)}}function vn(t){return e=>{let r=e.getAncestor();return r!==void 0&&t(r)}}var Bo=class{#e;constructor(e){this.#e=e}getIdentifier(){return jo(this.#e)}inRequestScope(){return this.#e.scope=_e.Request,new Be(this.#e)}inSingletonScope(){return this.#e.scope=_e.Singleton,new Be(this.#e)}inTransientScope(){return this.#e.scope=_e.Transient,new Be(this.#e)}},Sn=class{#e;#t;#o;#r;constructor(e,r,n,o){this.#e=e,this.#t=r,this.#o=n,this.#r=o}to(e){let r=dr(e),n={cache:{isRight:!1,value:void 0},id:Ve(),implementationType:e,isSatisfiedBy:Pe.always,moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,scope:r.scope??this.#o,serviceIdentifier:this.#r,type:G.Instance};return this.#e(n),new hr(n)}toSelf(){if(typeof this.#r!="function")throw new Error('"toSelf" function can only be applied when a newable function is used as service identifier');return this.to(this.#r)}toConstantValue(e){let r={cache:{isRight:!1,value:void 0},id:Ve(),isSatisfiedBy:Pe.always,moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,scope:_e.Singleton,serviceIdentifier:this.#r,type:G.ConstantValue,value:e};return this.#e(r),new Be(r)}toDynamicValue(e){let r={cache:{isRight:!1,value:void 0},id:Ve(),isSatisfiedBy:Pe.always,moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,scope:this.#o,serviceIdentifier:this.#r,type:G.DynamicValue,value:e};return this.#e(r),new hr(r)}toResolvedValue(e,r){let n={cache:{isRight:!1,value:void 0},factory:e,id:Ve(),isSatisfiedBy:Pe.always,metadata:this.#s(r),moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,scope:this.#o,serviceIdentifier:this.#r,type:G.ResolvedValue};return this.#e(n),new hr(n)}toFactory(e){let r={cache:{isRight:!1,value:void 0},factory:e,id:Ve(),isSatisfiedBy:Pe.always,moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,scope:_e.Singleton,serviceIdentifier:this.#r,type:G.Factory};return this.#e(r),new Be(r)}toProvider(e){let r={cache:{isRight:!1,value:void 0},id:Ve(),isSatisfiedBy:Pe.always,moduleId:this.#t,onActivation:void 0,onDeactivation:void 0,provider:e,scope:_e.Singleton,serviceIdentifier:this.#r,type:G.Provider};return this.#e(r),new Be(r)}toService(e){let r={id:Ve(),isSatisfiedBy:Pe.always,moduleId:this.#t,serviceIdentifier:this.#r,targetServiceIdentifier:e,type:G.ServiceRedirection};this.#e(r)}#s(e){return{arguments:(e??[]).map((r=>(function(n){return typeof n=="object"&&!Ye.is(n)})(r)?{kind:r.isMultiple===!0?St.multipleInjection:St.singleInjection,name:r.name,optional:r.optional??!1,tags:new Map((r.tags??[]).map((n=>[n.key,n.value]))),value:r.serviceIdentifier}:{kind:St.singleInjection,name:void 0,optional:!1,tags:new Map,value:r}))}}},yn=class{#e;constructor(e){this.#e=e}getIdentifier(){return jo(this.#e)}onActivation(e){return this.#e.onActivation=e,new gr(this.#e)}onDeactivation(e){return this.#e.onDeactivation=e,new gr(this.#e)}},gr=class{#e;constructor(e){this.#e=e}getIdentifier(){return jo(this.#e)}when(e){return this.#e.isSatisfiedBy=e,new yn(this.#e)}whenAnyAncestor(e){return this.when(mr(e))}whenAnyAncestorIs(e){return this.when(mr(hn(e)))}whenAnyAncestorNamed(e){return this.when((function(r){return mr(pr(r))})(e))}whenAnyAncestorTagged(e,r){return this.when((function(n,o){return mr(lr(n,o))})(e,r))}whenDefault(){return this.when(Ka)}whenNamed(e){return this.when(pr(e))}whenNoParent(e){return this.when(fn(e))}whenNoParentIs(e){return this.when(fn(hn(e)))}whenNoParentNamed(e){return this.when((function(r){return fn(pr(r))})(e))}whenNoParentTagged(e,r){return this.when((function(n,o){return fn(lr(n,o))})(e,r))}whenParent(e){return this.when(vn(e))}whenParentIs(e){return this.when(vn(hn(e)))}whenParentNamed(e){return this.when((function(r){return vn(pr(r))})(e))}whenParentTagged(e,r){return this.when((function(n,o){return vn(lr(n,o))})(e,r))}whenTagged(e,r){return this.when(lr(e,r))}whenNoAncestor(e){return this.when(gn(e))}whenNoAncestorIs(e){return this.when(gn(hn(e)))}whenNoAncestorNamed(e){return this.when((function(r){return gn(pr(r))})(e))}whenNoAncestorTagged(e,r){return this.when((function(n,o){return gn(lr(n,o))})(e,r))}},Be=class extends gr{#e;constructor(e){super(e),this.#e=new yn(e)}onActivation(e){return this.#e.onActivation(e)}onDeactivation(e){return this.#e.onDeactivation(e)}},hr=class extends Be{#e;constructor(e){super(e),this.#e=new Bo(e)}inRequestScope(){return this.#e.inRequestScope()}inSingletonScope(){return this.#e.inSingletonScope()}inTransientScope(){return this.#e.inTransientScope()}},Po=Symbol.for("@inversifyjs/container/InversifyContainerError"),et=class t extends Error{[Po];kind;constructor(e,r,n){super(r,n),this[Po]=!0,this.kind=e}static is(e){return typeof e=="object"&&e!==null&&e[Po]===!0}static isErrorOfKind(e,r){return t.is(e)&&e.kind===r}},tt;(function(t){t[t.invalidOperation=0]="invalidOperation"})(tt||(tt={}));var Ja=_e.Transient,fr=class{#e;#t;#o;#r;#s;#a;#i;#n;#c;#u;#m;constructor(e){this.#o=this.#E(),this.#s=r=>this.#e.get(r),this.#n=new un,this.#c=this.#h(),e?.parent===void 0?(this.#e=ar.build(void 0),this.#t=cr.build(void 0),this.#r=ur.build(void 0)):(this.#e=ar.build(e.parent.#e),this.#t=cr.build(e.parent.#t),this.#r=ur.build(e.parent.#r),e.parent.#n.subscribe(this.#n)),this.#a=this.#t.get.bind(this.#t),this.#u=this.#l.bind(this),this.#i={autobind:e?.autobind??!1,defaultScope:e?.defaultScope??Ja},this.#m=[]}bind(e){return new Sn((r=>{this.#l(r)}),void 0,this.#i.defaultScope,e)}get(e,r){let n=this.#d(!1,e,r),o=this.#p(n);if(K(o))throw new et(tt.invalidOperation,`Unexpected asyncronous service when resolving service "${ae(e)}"`);return o}getAll(e,r){let n=this.#d(!0,e,r),o=this.#p(n);if(K(o))throw new et(tt.invalidOperation,`Unexpected asyncronous service when resolving service "${ae(e)}"`);return o}async getAllAsync(e,r){let n=this.#d(!0,e,r);return this.#p(n)}async getAsync(e,r){let n=this.#d(!1,e,r);return this.#p(n)}isBound(e,r){let n=this.#t.get(e);return this.#g(e,n,r)}isCurrentBound(e,r){let n=this.#t.getNonParentBindings(e);return this.#g(e,n,r)}async load(...e){await Promise.all(this.#f(...e))}loadSync(...e){let r=this.#f(...e);for(let n of r)if(n!==void 0)throw new et(tt.invalidOperation,"Unexpected asyncronous module load. Consider using Container.load() instead.")}onActivation(e,r){this.#e.add(r,{serviceId:e})}onDeactivation(e,r){this.#r.add(r,{serviceId:e})}restore(){let e=this.#m.pop();if(e===void 0)throw new et(tt.invalidOperation,"No snapshot available to restore");this.#e=e.activationService,this.#t=e.bindingService,this.#r=e.deactivationService,this.#b()}async rebind(e){return await this.unbind(e),this.bind(e)}rebindSync(e){return this.unbindSync(e),this.bind(e)}snapshot(){this.#m.push({activationService:this.#e.clone(),bindingService:this.#t.clone(),deactivationService:this.#r.clone()})}async unbind(e){await this.#S(e)}async unbindAll(){let e=[...this.#t.getNonParentBoundServices()];await Promise.all(e.map((async r=>Fo(this.#o,r))));for(let r of e)this.#e.removeAllByServiceId(r),this.#t.removeAllByServiceId(r),this.#r.removeAllByServiceId(r);this.#n.clearCache()}unbindSync(e){this.#S(e)!==void 0&&this.#I(e)}async unload(...e){await Promise.all(this.#v(...e)),this.#D(e)}unloadSync(...e){let r=this.#v(...e);for(let n of r)if(n!==void 0)throw new et(tt.invalidOperation,"Unexpected asyncronous module unload. Consider using Container.unload() instead.");this.#D(e)}#_(e){return{bind:r=>new Sn((n=>{this.#l(n)}),e,this.#i.defaultScope,r),isBound:this.isBound.bind(this),onActivation:(r,n)=>{this.#e.add(n,{moduleId:e,serviceId:r})},onDeactivation:(r,n)=>{this.#r.add(n,{moduleId:e,serviceId:r})},rebind:this.rebind.bind(this),rebindSync:this.rebindSync.bind(this),unbind:this.unbind.bind(this),unbindSync:this.unbindSync.bind(this)}}#E(){return{getBindings:e=>this.#t.get(e),getBindingsFromModule:e=>this.#t.getByModuleId(e),getClassMetadata:dr,getDeactivations:e=>this.#r.get(e)}}#x(e,r,n){return{isMultiple:e,name:n?.name,optional:n?.optional,serviceIdentifier:r,tag:n?.tag}}#w(e,r,n){let o={autobindOptions:n?.autobind??this.#i.autobind?{scope:this.#i.defaultScope}:void 0,getBindings:this.#a,getClassMetadata:dr,rootConstraints:{isMultiple:r,serviceIdentifier:e},servicesBranch:[],setBinding:this.#u};return this.#C(o,n),o}#d(e,r,n){let o=this.#x(e,r,n),i=this.#n.get(o);if(i!==void 0)return i;let s=gs(this.#w(r,e,n));return this.#n.set(o,s),s}#h(){return{get:this.get.bind(this),getAll:this.getAll.bind(this),getAllAsync:this.getAllAsync.bind(this),getAsync:this.getAsync.bind(this)}}#p(e){return Ss({context:this.#c,getActivations:this.#s,planResult:e,requestScopeCache:new Map})}#C(e,r){r!==void 0&&(r.name!==void 0&&(e.rootConstraints.name=r.name),r.optional===!0&&(e.rootConstraints.isOptional=!0),r.tag!==void 0&&(e.rootConstraints.tag={key:r.tag.key,value:r.tag.value}))}#g(e,r,n){if(r===void 0)return!1;let o={getAncestor:()=>{},name:n?.name,serviceIdentifier:e,tags:new Map};n?.tag!==void 0&&o.tags.set(n.tag.key,n.tag.value);for(let i of r)if(i.isSatisfiedBy(o))return!0;return!1}#f(...e){return e.map((r=>r.load(this.#_(r.id))))}#v(...e){return e.map((r=>ys(this.#o,r.id)))}#b(){this.#n.clearCache(),this.#s=e=>this.#e.get(e),this.#a=this.#t.get.bind(this.#t),this.#c=this.#h(),this.#u=this.#l.bind(this)}#l(e){this.#t.set(e),this.#n.clearCache()}#I(e){let r;if(Ds(e)){let o=this.#t.getById(e.id),i=(n=o,(function(s){if(s===void 0)return;let d=s.next();return d.done!==!0?d.value:void 0})(n?.[Symbol.iterator]()))?.serviceIdentifier;r=i===void 0?"Unexpected asyncronous deactivation when unbinding binding identifier. Consider using Container.unbind() instead.":`Unexpected asyncronous deactivation when unbinding "${ae(i)}" binding. Consider using Container.unbind() instead.`}else r=`Unexpected asyncronous deactivation when unbinding "${ae(e)}" service. Consider using Container.unbind() instead.`;var n;throw new et(tt.invalidOperation,r)}#S(e){return Ds(e)?this.#T(e):this.#U(e)}#T(e){let r=this.#t.getById(e.id),n=mn(this.#o,r);if(n!==void 0)return n.then((()=>{this.#y(e)}));this.#y(e)}#y(e){this.#t.removeById(e.id),this.#n.clearCache()}#D(e){for(let r of e)this.#e.removeAllByModuleId(r.id),this.#t.removeAllByModuleId(r.id),this.#r.removeAllByModuleId(r.id);this.#n.clearCache()}#U(e){let r=Fo(this.#o,e);if(r!==void 0)return r.then((()=>{this.#A(e)}));this.#A(e)}#A(e){this.#e.removeAllByServiceId(e),this.#t.removeAllByServiceId(e),this.#r.removeAllByServiceId(e),this.#n.clearCache()}};var Go=$(kr());var vr=class{constructor(e,r,n,o,i){this.deviceModel=e,this.serviceUuid=r,this.writeUuid=n,this.writeCmdUuid=o,this.notifyUuid=i}};var Oe=class{id;productName;usbProductId;bootloaderUsbProductId;usbOnly;memorySize;getBlockSize;masks;bluetoothSpec;constructor(e){this.id=e.id,this.productName=e.productName,this.usbProductId=e.usbProductId,this.bootloaderUsbProductId=e.bootloaderUsbProductId,this.usbOnly=e.usbOnly,this.memorySize=e.memorySize,this.getBlockSize=e.getBlockSize,this.masks=e.masks,this.bluetoothSpec=e.bluetoothSpec}};var _s=Object.defineProperty,Xa=Object.getOwnPropertyDescriptor,Qa=(t,e,r)=>e in t?_s(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Ya=(t,e,r,n)=>{for(var o=n>1?void 0:n?Xa(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&_s(e,r,o),o},Za=(t,e,r)=>Qa(t,typeof e!="symbol"?e+"":e,r),Re=class{getAllDeviceModels(){return Object.values(Re.deviceModelByIds)}getDeviceModel(t){return Re.deviceModelByIds[t.id]}filterDeviceModels(t){return this.getAllDeviceModels().filter(e=>Object.entries(t).every(([r,n])=>e[r]===n))}getBluetoothServicesInfos(){return Object.values(Re.deviceModelByIds).reduce((t,e)=>{let{bluetoothSpec:r}=e;return r?{...t,...r.reduce((n,o)=>({...n,[o.serviceUuid]:new vr(e,o.serviceUuid,o.writeUuid,o.writeCmdUuid,o.notifyUuid)}),{})}:t},{})}getBluetoothServices(){return Object.values(Re.deviceModelByIds).map(t=>(t.bluetoothSpec||[]).map(e=>e.serviceUuid)).flat().filter(t=>!!t)}};Za(Re,"deviceModelByIds",{[T.NANO_S]:new Oe({id:T.NANO_S,productName:"Ledger Nano S",usbProductId:16,bootloaderUsbProductId:1,usbOnly:!0,memorySize:320*1024,getBlockSize:t=>Go.default.lt(Go.default.coerce(t.firmwareVersion)??"","2.0.0")?4*1024:2*1024,masks:[823132160]}),[T.NANO_SP]:new Oe({id:T.NANO_SP,productName:"Ledger Nano S Plus",usbProductId:80,bootloaderUsbProductId:5,usbOnly:!0,memorySize:1533*1024,getBlockSize:()=>32,masks:[856686592]}),[T.NANO_X]:new Oe({id:T.NANO_X,productName:"Ledger Nano X",usbProductId:64,bootloaderUsbProductId:4,usbOnly:!1,memorySize:2*1024*1024,getBlockSize:()=>4*1024,masks:[855638016],bluetoothSpec:[{serviceUuid:"13d63400-2c97-0004-0000-4c6564676572",notifyUuid:"13d63400-2c97-0004-0001-4c6564676572",writeUuid:"13d63400-2c97-0004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-0004-0003-4c6564676572"}]}),[T.STAX]:new Oe({id:T.STAX,productName:"Ledger Stax",usbProductId:96,bootloaderUsbProductId:6,usbOnly:!1,memorySize:1533*1024,getBlockSize:()=>32,masks:[857735168],bluetoothSpec:[{serviceUuid:"13d63400-2c97-6004-0000-4c6564676572",notifyUuid:"13d63400-2c97-6004-0001-4c6564676572",writeUuid:"13d63400-2c97-6004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-6004-0003-4c6564676572"}]}),[T.FLEX]:new Oe({id:T.FLEX,productName:"Ledger Flex",usbProductId:112,bootloaderUsbProductId:7,usbOnly:!1,memorySize:1533*1024,getBlockSize:()=>32,masks:[858783744],bluetoothSpec:[{serviceUuid:"13d63400-2c97-3004-0000-4c6564676572",notifyUuid:"13d63400-2c97-3004-0001-4c6564676572",writeUuid:"13d63400-2c97-3004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-3004-0003-4c6564676572"}]}),[T.APEX]:new Oe({id:T.APEX,productName:"Ledger\xA0Nano\xA0Gen5",usbProductId:128,bootloaderUsbProductId:8,usbOnly:!1,memorySize:1533*1024,getBlockSize:()=>32,masks:[859832320],bluetoothSpec:[{serviceUuid:"13d63400-2c97-8004-0000-4c6564676572",notifyUuid:"13d63400-2c97-8004-0001-4c6564676572",writeUuid:"13d63400-2c97-8004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-8004-0003-4c6564676572"},{serviceUuid:"13d63400-2c97-9004-0000-4c6564676572",notifyUuid:"13d63400-2c97-9004-0001-4c6564676572",writeUuid:"13d63400-2c97-9004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-9004-0003-4c6564676572"}]})}),Re=Ya([g()],Re);var Dt=class{statusCode;data;constructor({statusCode:e,data:r}){this.statusCode=e,this.data=r}};var Es=5,je=1,Sr=2,rt=2,yr=2;ie();var qo=class extends U{makeStateMachine(e){let{getOsVersion:r,getDeviceVersion:n,getFirmwareVersion:o,genuineCheck:i,getDeviceSessionState:s,setDeviceSessionState:d}=this.extractDependencies(e),c=this.input.unlockTimeout??6e4,u=new re({input:{unlockTimeout:c}}).makeStateMachine(e);return R({types:{input:{},context:{},output:{}},actors:{goToDashboard:u,getOsVersion:b(r),getDeviceVersion:b(n),getFirmwareVersion:b(o),genuineCheck:me(i)},guards:{hasError:a=>a.context._internalState.error!==null},actions:{assignErrorFromEvent:l({_internalState:a=>({...a.context._internalState,error:a.event.error})})}}).createMachine({id:"GenuineCheckDeviceAction",initial:"DeviceReady",context:a=>({input:{unlockTimeout:a.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,result:{isGenuine:!1},getOsVersionResponse:null,deviceVersion:null,firmwareVersion:null}}),states:{DeviceReady:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:()=>a.context._internalState,Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetOsVersion"}]},GetOsVersion:{invoke:{id:"getOsVersion",src:"getOsVersion",input:a=>{},onDone:{target:"GetOsVersionCheck",actions:l({_internalState:a=>{if(I(a.event.output)){let p=s(),v=a.event.output.data.secureElementFlags.isSecureConnectionAllowed;return p.sessionStateType!==w.Connected&&d({...p,isSecureConnectionAllowed:v}),{...a.context._internalState,getOsVersionResponse:a.event.output.data}}return{...a.context._internalState,error:a.event.output.error}}})}}},GetOsVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetDeviceVersion"}]},GetDeviceVersion:{invoke:{id:"getDeviceVersion",src:"getDeviceVersion",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse}),onDone:{target:"GetDeviceVersionCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,deviceVersion:p}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetFirmwareVersion"}]},GetFirmwareVersion:{invoke:{id:"getFirmwareVersion",src:"getFirmwareVersion",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,deviceVersion:a.context._internalState.deviceVersion}),onDone:{target:"GetFirmwareVersionCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,firmwareVersion:p}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetFirmwareVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GenuineCheck"}]},GenuineCheck:{invoke:{id:"genuineCheck",src:"genuineCheck",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,finalFirmware:a.context._internalState.firmwareVersion}),onSnapshot:{actions:l({intermediateValue:a=>{switch(a.event.snapshot.context?.type){case A.DeviceId:return{...a.context.intermediateValue,deviceId:a.event.snapshot.context.payload.deviceId};case A.PermissionRequested:return{...a.context.intermediateValue,requiredUserInteraction:S.AllowSecureConnection};case A.PermissionGranted:return{...a.context.intermediateValue,requiredUserInteraction:S.None};default:return{...a.context.intermediateValue}}},_internalState:a=>a.event.snapshot.context?.type===A.Error?{...a.context._internalState,error:a.event.snapshot.context.error.mapDAErrors()}:a.event.snapshot.context?.type===A.Result?{...a.context._internalState,result:{isGenuine:Gi(a.event.snapshot.context.payload)}}:a.context._internalState})},onDone:{target:"GenuineCheckCheck"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GenuineCheckCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:a=>a.context._internalState.error?h(a.context._internalState.error):f(a.context._internalState.result)})}extractDependencies(e){return{getOsVersion:()=>e.sendCommand(new ue),getDeviceVersion:({input:r})=>{let{deviceInfo:n}=r;return e.getManagerApiService().getDeviceVersion(n)},getFirmwareVersion:({input:r})=>{let{deviceInfo:n,deviceVersion:o}=r;return e.getManagerApiService().getFirmwareVersion(n,o)},genuineCheck:({input:r})=>{let{deviceInfo:n,finalFirmware:o}=r,i=e.getSecureChannelService().genuineCheck(n,o);return new ve(e,{connection:i}).run()},getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};ie();ie();var At=class extends U{makeStateMachine(e){let{getOsVersion:r,getDeviceVersion:n,getFirmwareVersion:o,listInstalledApps:i,getDeviceSessionState:s,setDeviceSessionState:d}=this.extractDependencies(e),c=this.input.unlockTimeout??6e4,u=new re({input:{unlockTimeout:c}}).makeStateMachine(e);return R({types:{input:{},context:{},output:{}},actors:{goToDashboard:u,getOsVersion:b(r),getDeviceVersion:b(n),getFirmwareVersion:b(o),listInstalledApps:me(i)},guards:{hasError:a=>a.context._internalState.error!==null},actions:{assignErrorFromEvent:l({_internalState:a=>({...a.context._internalState,error:a.event.error})})}}).createMachine({id:"ListInstalledAppsDeviceAction",initial:"DeviceReady",context:a=>({input:{unlockTimeout:a.input.unlockTimeout},intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,getOsVersionResponse:null,deviceVersion:null,firmwareVersion:null,result:{installedApps:[]}}}),states:{DeviceReady:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:()=>a.context._internalState,Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetOsVersion"}]},GetOsVersion:{invoke:{id:"getOsVersion",src:"getOsVersion",input:a=>{},onDone:{target:"GetOsVersionCheck",actions:l({_internalState:a=>{if(I(a.event.output)){let p=s(),v=a.event.output.data.secureElementFlags.isSecureConnectionAllowed;return p.sessionStateType!==w.Connected&&d({...p,isSecureConnectionAllowed:v}),{...a.context._internalState,getOsVersionResponse:a.event.output.data}}return{...a.context._internalState,error:a.event.output.error}}})}}},GetOsVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetDeviceVersion"}]},GetDeviceVersion:{invoke:{id:"getDeviceVersion",src:"getDeviceVersion",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse}),onDone:{target:"GetDeviceVersionCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,deviceVersion:p}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetDeviceVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetFirmwareVersion"}]},GetFirmwareVersion:{invoke:{id:"getFirmwareVersion",src:"getFirmwareVersion",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,deviceVersion:a.context._internalState.deviceVersion}),onDone:{target:"GetFirmwareVersionCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,firmwareVersion:p}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetFirmwareVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"ListInstalledApps"}]},ListInstalledApps:{invoke:{id:"listInstalledApps",src:"listInstalledApps",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,finalFirmware:a.context._internalState.firmwareVersion}),onSnapshot:{actions:l({intermediateValue:a=>{switch(a.event.snapshot.context?.type){case A.DeviceId:return{...a.context.intermediateValue,deviceId:a.event.snapshot.context.payload.deviceId};case A.PermissionRequested:return{...a.context.intermediateValue,requiredUserInteraction:S.AllowSecureConnection};case A.PermissionGranted:return{...a.context.intermediateValue,requiredUserInteraction:S.None};default:return{...a.context.intermediateValue}}},_internalState:a=>{if(a.event.snapshot.context?.type===A.Error)return{...a.context._internalState,error:a.event.snapshot.context.error.mapDAErrors()};if(a.event.snapshot.context?.type===A.Result){if(tn(a.event.snapshot.context.payload))return{...a.context._internalState,result:{installedApps:a.event.snapshot.context.payload}};throw new Error(`Invalid result ${JSON.stringify(a.event.snapshot.context.payload)}`)}return{...a.context._internalState}}})},onDone:{target:"Success"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListInstalledAppsCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success"}]},Success:{type:"final"},Error:{type:"final"}},output:a=>a.context._internalState.error?h(a.context._internalState.error):f(a.context._internalState.result)})}extractDependencies(e){return{getOsVersion:()=>e.sendCommand(new ue),getDeviceVersion:({input:r})=>{let{deviceInfo:n}=r;return e.getManagerApiService().getDeviceVersion(n)},getFirmwareVersion:({input:r})=>{let{deviceInfo:n,deviceVersion:o}=r;return e.getManagerApiService().getFirmwareVersion(n,o)},listInstalledApps:({input:r})=>{let{deviceInfo:n,finalFirmware:o}=r,i=e.getSecureChannelService().listInstalledApps(n,o);return new ve(e,{connection:i}).run()},getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};var $o=class extends U{makeStateMachine(e){let{getOsVersion:r,getAppList:n,installApp:o,getDeviceSessionState:i,setDeviceSessionState:s}=this.extractDependencies(e),d=this.input.unlockTimeout??6e4,c=new At({input:{unlockTimeout:d}}).makeStateMachine(e),u=new re({input:{unlockTimeout:d}}).makeStateMachine(e);return R({types:{input:{},context:{},output:{}},actors:{listInstalledApps:c,goToDashboard:u,getOsVersion:b(r),getAppList:b(n),installApp:me(o)},guards:{hasError:a=>a.context._internalState.error!==null,appInstalled:a=>a.context._internalState.installedApps.some(p=>p.name===a.context.input.appName),appNotFound:a=>a.context._internalState.appList.findIndex(({versionName:p})=>p===a.context.input.appName)===-1,depAppNotInstalled:a=>{let p=a.context._internalState.appList.find(({versionName:v})=>v===a.context.input.appName);return p?.parentName?a.context._internalState.installedApps.findIndex(({name:v})=>v===p.parentName)===-1:!1}},actions:{assignErrorFromEvent:l({_internalState:a=>({...a.context._internalState,error:a.event.error})}),assignAppNotFound:l({_internalState:a=>({...a.context._internalState,error:new z("App to install not found in manager API")})}),assignDepAppNotInstalled:l({_internalState:a=>({...a.context._internalState,error:new z("Dep app is not installed on the device")})}),cleanupDeviceState:()=>{let a=i();a.sessionStateType!==w.Connected&&s({...a,installedApps:[],appsUpdates:void 0})}}}).createMachine({id:"InstallAppDeviceAction",initial:"DeviceReady",context:a=>({input:{unlockTimeout:a.input.unlockTimeout,appName:a.input.appName},intermediateValue:{requiredUserInteraction:S.None,progress:0},_internalState:{error:null,installedApps:[],getOsVersionResponse:null,appList:[]}}),states:{DeviceReady:{always:{target:"ListInstalledApps"}},ListInstalledApps:{value:"ListInstalledApps",invoke:{id:"listInstalledApps",src:"listInstalledApps",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"ListInstalledAppsCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:({installedApps:p})=>({...a.context._internalState,installedApps:p}),Left:p=>({...a.context._internalState,error:p})})})}}},ListInstalledAppsCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success",guard:"appInstalled"},{target:"GoToDashboard"}]},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:()=>a.context._internalState,Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetOsVersion"}]},GetOsVersion:{invoke:{id:"getOsVersion",src:"getOsVersion",input:a=>{},onDone:{target:"GetOsVersionCheck",actions:l({_internalState:a=>{if(I(a.event.output)){let p=i(),v=a.event.output.data.secureElementFlags.isSecureConnectionAllowed;return p.sessionStateType!==w.Connected&&s({...p,isSecureConnectionAllowed:v}),{...a.context._internalState,getOsVersionResponse:a.event.output.data}}return{...a.context._internalState,error:a.event.output.error}}})}}},GetOsVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetAppList"}]},GetAppList:{invoke:{id:"getAppList",src:"getAppList",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse}),onDone:{target:"GetAppListCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,appList:p}),Left:p=>({...a.context._internalState,error:p})})})}}},GetAppListCheck:{always:[{target:"Error",guard:"hasError"},{target:"Error",guard:"appNotFound",actions:"assignAppNotFound"},{target:"Error",guard:"depAppNotInstalled",actions:"assignDepAppNotInstalled"},{target:"InstallApp"}]},InstallApp:{invoke:{id:"installApp",src:"installApp",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,app:a.context._internalState.appList.find(({versionName:p})=>p===a.context.input.appName)}),onSnapshot:{actions:l({intermediateValue:a=>a.event.snapshot.context?.type===A.DeviceId?{...a.context.intermediateValue,deviceId:a.event.snapshot.context.payload.deviceId}:a.event.snapshot.context?.type===A.Progress?{...a.context.intermediateValue,progress:a.event.snapshot.context.payload.progress}:{...a.context.intermediateValue},_internalState:a=>a.event.snapshot.context?.type===A.Error?{...a.context._internalState,error:a.event.snapshot.context.error.mapInstallDAErrors()}:a.context._internalState})},onDone:{target:"ListInstalledApps",actions:"cleanupDeviceState"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Success:{type:"final",description:"App installed successfully"},Error:{type:"final"}},output:({context:a})=>a._internalState.error?h(a._internalState.error):f(void 0)})}extractDependencies(e){return{getOsVersion:()=>e.sendCommand(new ue),getAppList:({input:r})=>{let{deviceInfo:n}=r;return e.getManagerApiService().getAppList(n)},installApp:({input:r})=>{let{deviceInfo:n,app:o}=r,i=e.getSecureChannelService().installApp(n,o);return new ve(e,{connection:i}).run()},getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};ie();var Ho=class extends U{makeStateMachine(e){let{getOsVersion:r,getAppsByHash:n,uninstallApp:o,getDeviceSessionState:i,setDeviceSessionState:s}=this.extractDependencies(e),d=this.input.unlockTimeout??6e4,c=new re({input:{unlockTimeout:d}}).makeStateMachine(e),u=new At({input:{unlockTimeout:d}}).makeStateMachine(e);return R({types:{input:{},context:{},output:{}},actors:{listInstalledApps:u,goToDashboard:c,getOsVersion:b(r),getAppsByHash:b(n),uninstallApp:me(o)},guards:{hasError:a=>a.context._internalState.error!==null,appNotInstalled:a=>!a.context._internalState.installedApps.some(p=>p.name===a.context.input.appName),appNotFound:a=>a.context._internalState.appList.findIndex(p=>p?.versionName===a.context.input.appName)===-1,isDepAppOfOther:a=>a.context._internalState.appList.some(p=>p?.parentName===a.context.input.appName)},actions:{assignErrorFromEvent:l({_internalState:a=>({...a.context._internalState,error:a.event.error})}),assignAppNotFound:l({_internalState:a=>({...a.context._internalState,error:new z("App to uninstall not found in manager API")})}),assignIsDepAppOfOther:l({_internalState:a=>({...a.context._internalState,error:new z("App to uninstall is a dependency of another installed app")})}),cleanupDeviceState:()=>{let a=i();a.sessionStateType!==w.Connected&&s({...a,installedApps:[],appsUpdates:void 0})}}}).createMachine({id:"UninstallAppDeviceAction",initial:"DeviceReady",context:a=>({input:{unlockTimeout:a.input.unlockTimeout,appName:a.input.appName},intermediateValue:{requiredUserInteraction:S.None},_internalState:{error:null,installedApps:[],appList:[],getOsVersionResponse:null}}),states:{DeviceReady:{always:{target:"ListInstalledApps"}},ListInstalledApps:{invoke:{id:"listInstalledApps",src:"listInstalledApps",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"ListInstalledAppsCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:({installedApps:p})=>({...a.context._internalState,installedApps:p,hasCheckedInstalledApps:!0}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ListInstalledAppsCheck:{always:[{target:"Error",guard:"hasError"},{target:"Success",guard:"appNotInstalled"},{target:"GetAppsByHash"}]},GetAppsByHash:{invoke:{id:"getAppsByHash",src:"getAppsByHash",input:a=>a.context._internalState.installedApps,onDone:{target:"GetAppsByHashCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:p=>({...a.context._internalState,appList:p}),Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppsByHashCheck:{always:[{target:"Error",guard:"hasError"},{target:"Error",guard:"appNotFound",actions:"assignAppNotFound"},{target:"Error",guard:"isDepAppOfOther",actions:"assignIsDepAppOfOther"},{target:"GoToDashboard"}]},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboard",input:a=>({unlockTimeout:a.context.input.unlockTimeout}),onSnapshot:{actions:l({intermediateValue:a=>({...a.context.intermediateValue,requiredUserInteraction:a.event.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:l({_internalState:a=>a.event.output.caseOf({Right:()=>a.context._internalState,Left:p=>({...a.context._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"Error",guard:"hasError"},{target:"GetOsVersion"}]},GetOsVersion:{invoke:{id:"getOsVersion",src:"getOsVersion",input:a=>{},onDone:{target:"GetOsVersionCheck",actions:l({_internalState:a=>{if(I(a.event.output)){let p=i(),v=a.event.output.data.secureElementFlags.isSecureConnectionAllowed;return p.sessionStateType!==w.Connected&&s({...p,isSecureConnectionAllowed:v}),{...a.context._internalState,getOsVersionResponse:a.event.output.data}}return{...a.context._internalState,error:a.event.output.error}}})}}},GetOsVersionCheck:{always:[{target:"Error",guard:"hasError"},{target:"UninstallApp"}]},UninstallApp:{invoke:{id:"uninstallApp",src:"uninstallApp",input:a=>({deviceInfo:a.context._internalState.getOsVersionResponse,app:a.context._internalState.appList.find(p=>p?.versionName===a.context.input.appName)}),onSnapshot:{actions:l({intermediateValue:a=>{switch(a.event.snapshot.context?.type){case A.DeviceId:return{...a.context.intermediateValue,deviceId:a.event.snapshot.context.payload.deviceId};case A.PermissionRequested:return{...a.context.intermediateValue,requiredUserInteraction:S.AllowSecureConnection};case A.PermissionGranted:return{...a.context.intermediateValue,requiredUserInteraction:S.None};default:return{...a.context.intermediateValue}}},_internalState:a=>a.event.snapshot.context?.type===A.Error?{...a.context._internalState,error:a.event.snapshot.context.error.mapDAErrors()}:a.context._internalState})},onDone:{target:"ListInstalledApps",actions:"cleanupDeviceState"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Success:{type:"final",description:"App uninstalled successfully"},Error:{type:"final"}},output:({context:a})=>a._internalState.error?h(a._internalState.error):f(void 0)})}extractDependencies(e){return{getOsVersion:()=>e.sendCommand(new ue),getAppsByHash:({input:r})=>{let n=r.map(o=>o.hash);return e.getManagerApiService().getAppsByHash(n)},uninstallApp:({input:r})=>{let{deviceInfo:n,app:o}=r,i=e.getSecureChannelService().uninstallApp(n,o);return new ve(e,{connection:i}).run()},getDeviceSessionState:()=>e.getDeviceSessionState(),setDeviceSessionState:r=>e.setDeviceSessionState(r)}}};var ne=[];for(let t=0;t<256;++t)ne.push((t+256).toString(16).slice(1));function xs(t,e=0){return(ne[t[e+0]]+ne[t[e+1]]+ne[t[e+2]]+ne[t[e+3]]+"-"+ne[t[e+4]]+ne[t[e+5]]+"-"+ne[t[e+6]]+ne[t[e+7]]+"-"+ne[t[e+8]]+ne[t[e+9]]+"-"+ne[t[e+10]]+ne[t[e+11]]+ne[t[e+12]]+ne[t[e+13]]+ne[t[e+14]]+ne[t[e+15]]).toLowerCase()}import{randomFillSync as ec}from"crypto";var An=new Uint8Array(256),Dn=An.length;function zo(){return Dn>An.length-16&&(ec(An),Dn=0),An.slice(Dn,Dn+=16)}import{randomUUID as tc}from"crypto";var Wo={randomUUID:tc};function rc(t,e,r){if(Wo.randomUUID&&!e&&!t)return Wo.randomUUID();t=t||{};let n=t.random||(t.rng||zo)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){r=r||0;for(let o=0;o<16;++o)e[r+o]=n[o];return e}return xs(n)}var Ge=rc;var Ie={getLastBytesFrom(t,e){return t.slice(-e)},getFirstBytesFrom(t,e){return t.slice(0,e)},bytesToNumber(t){return t.reduce((e,r,n)=>e+r*Math.pow(256,t.length-1-n),0)},numberToByteArray(t,e){return new Uint8Array(e).map((r,n)=>t>>8*(e-1-n)&255)}};var Dr=class{_tag="FramerOverflowError";originalError;constructor(){this.originalError=new Error("Frame header length is greater than frame size")}},_n=class{_tag="FramerApduError";originalError;constructor(){this.originalError=new Error("Frame offset is greater than apdu length")}},Ar=class{_tag="ReceiverApduError";originalError;constructor(e){this.originalError=new Error(e??"Unable to parse apdu")}},_r=class{_tag="DeviceSessionNotFound";originalError;constructor(e){this.originalError=e??new Error("Device session not found")}};var Rt=class{_header;_data;constructor({header:e,data:r}){this._header=e,this._data=r}toString(){return JSON.stringify({header:this._header.toString(),data:se(this._data)},null,2)}getRawData(){let e=this._header.getRawData(),r=new Uint8Array(e.length+this._data.length);return r.set(e,0),r.set(this._data,e.length),r}getHeader(){return this._header}getData(){return this._data}};var kt=class{_uuid;_channel;_headTag;_index;_length;_dataLength;constructor({uuid:e,dataSize:r,index:n,headTag:o,length:i,channel:s}){this._uuid=e,this._dataLength=r,this._index=n,this._headTag=o,this._length=i,this._channel=s}getDataLength(){return this._dataLength.map(e=>Ie.bytesToNumber(e))}setDataSize(e){return this._dataLength=e,this}getLength(){return this._length}toString(){return JSON.stringify({uuid:this._uuid.toString(),dataSize:this._dataLength.extract()?.toString(),index:this._index.toString(),headTag:this._headTag.toString(),length:this._length.toString(),channel:this._channel.extract()?.toString()})}getRawData(){return new Uint8Array([...this._channel.caseOf({Just:e=>[...e],Nothing:()=>[]}),...this._headTag,...this._index,...this._dataLength.caseOf({Just:e=>[...e],Nothing:()=>[]})])}};var E={LoggerPublisherServiceFactory:Symbol.for("LoggerPublisherServiceFactory")};var nc=Object.defineProperty,oc=Object.getOwnPropertyDescriptor,ic=(t,e,r,n)=>{for(var o=n>1?void 0:n?oc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&nc(e,r,o),o},sc=(t,e)=>(r,n)=>e(r,n,t),Lt=class{_channel;_logger;_pendingFrames;constructor({channel:t=L.zero()},e){this._channel=t,this._logger=e("ApduReceiverService"),this._pendingFrames=[]}handleFrame(t){return this.getFrameFromBytes(t).map(e=>{if(this._pendingFrames.push(e),!this._pendingFrames[0])return C;let r=this._pendingFrames[0].getHeader().getDataLength();return this.getCompleteFrame(r)})}getCompleteFrame(t){return t.chain(e=>{if(!this.isComplete(e))return this._logger.debug("frame is not complete, waiting for more"),C;let r=Ie.getFirstBytesFrom(this.concatFrames(this._pendingFrames),e),n=Ie.getFirstBytesFrom(r,r.length-2),o=Ie.getLastBytesFrom(r,2);return this._pendingFrames=[],q(new Dt({data:n,statusCode:o}))})}getFrameFromBytes(t){let e=this._channel.caseOf({Just:()=>2,Nothing:()=>0}),r=t.slice(e,e+1),n=t.slice(e+1,e+1+2),o=n.reduce((p,v)=>p+v,0)===0;if(!o&&this._pendingFrames.length===0)return h(new Ar);let i=e+1+2,s=o?2:0;if(t.length<e+1+2+s)return h(new Ar("Unable to parse header from apdu"));let d=o?q(t.slice(i,i+s)):C,c=i+s,u=t.slice(c),a=new Rt({header:new kt({uuid:Ge(),channel:this._channel,dataSize:d,headTag:r,index:n,length:e+1+2+s}),data:u});return f(a)}isComplete(t){return this._pendingFrames.reduce((e,r)=>e+r.getData().length,0)>=t}concatFrames(t){return t.reduce((e,r)=>Uint8Array.from([...e,...r.getData()]),new Uint8Array(0))}};Lt=ic([g(),sc(1,m(E.LoggerPublisherServiceFactory))],Lt);var ac=(t={},e)=>new Lt({channel:L.of(new Uint8Array([18,52])),...t},e);var cc=Object.defineProperty,uc=Object.getOwnPropertyDescriptor,dc=(t,e,r,n)=>{for(var o=n>1?void 0:n?uc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&cc(e,r,o),o},pc=(t,e)=>(r,n)=>e(r,n,t),Mt=class{_frameSize;_channel;_padding;_logger;constructor({frameSize:t,channel:e=L.zero(),padding:r=!1},n){this._frameSize=t,this._channel=e,this._padding=r,this._logger=n("DefaultApduSenderService")}getFrames(t){let e=[],r=0,n=this.getFrameAtIndex(t,r);for(;n.isRight();)e.push(n.extract()),r+=1,n=this.getFrameAtIndex(t,r).mapLeft(o=>(o instanceof Dr||this._logger.error("Error while parsing frame",{data:{error:o}}),o));return e}getFrameAtIndex(t,e){let r=this.getFrameHeaderFrom(e,t.length),n=e===0?0:e*this._frameSize-this.getHeaderSizeSumFrom(e);if(n>=t.length)return h(new Dr);if(r.getLength()>this._frameSize)return h(new _n);let o=this._frameSize-r.getLength(),i=t.slice(n,n+this._frameSize-r.getLength()),s=this._padding?new Uint8Array(o).fill(0):new Uint8Array(i.length<o?i.length:o);s.set(i,0);let d=new Rt({header:r,data:s});return f(d)}getFrameHeaderFrom(t,e){let r=new kt({uuid:Ge(),channel:this._channel.map(n=>Ie.getLastBytesFrom(n,2)),headTag:new Uint8Array([5]),index:Ie.numberToByteArray(t,2),length:this.getFrameHeaderSizeFromIndex(t),dataSize:L.zero()});return t===0&&r.setDataSize(L.of(Ie.numberToByteArray(e,2))),r}getHeaderSizeSumFrom(t){let e=this.getFrameHeaderSizeFromIndex(0),r=1;for(;r<t;)e+=this.getFrameHeaderSizeFromIndex(r),r+=1;return e}getFrameHeaderSizeFromIndex(t){return this._channel.caseOf({Just:()=>2,Nothing:()=>0})+2+1+(t===0?2:0)}};Mt=dc([g(),pc(1,m(E.LoggerPublisherServiceFactory))],Mt);var lc=(t={},e)=>new Mt({frameSize:64,channel:L.of(new Uint8Array([18,52])),padding:!0,...t},e);var Er={SendCommandUseCase:Symbol.for("SendCommandUseCase")};var Se={LocalConfigDataSource:Symbol.for("LocalConfigDataSource"),RemoteConfigDataSource:Symbol.for("RemoteConfigDataSource"),ConfigService:Symbol.for("ConfigService"),GetDmkVersionUseCase:Symbol.for("GetDmkVersionUseCase")};var x={ApduSenderServiceFactory:Symbol.for("ApduSenderServiceFactory"),ApduReceiverServiceFactory:Symbol.for("ApduReceiverServiceFactory"),DeviceSessionService:Symbol.for("DeviceSessionService"),GetDeviceSessionStateUseCase:Symbol.for("GetDeviceSessionStateUseCase"),DisableDeviceSessionRefresherUseCase:Symbol.for("DisableDeviceSessionRefresherUseCase"),CloseSessionsUseCase:Symbol.for("CloseSessionsUseCase"),UnsafeBypassIntentQueueUseCase:Symbol.for("UnsafeBypassIntentQueueUseCase")};var O={StartDiscoveringUseCase:Symbol.for("StartDiscoveringUseCase"),StopDiscoveringUseCase:Symbol.for("StopDiscoveringUseCase"),ConnectUseCase:Symbol.for("ConnectUseCase"),DisconnectUseCase:Symbol.for("DisconnectUseCase"),GetConnectedDeviceUseCase:Symbol.for("GetConnectedDeviceUseCase"),ListenToAvailableDevicesUseCase:Symbol.for("ListenToAvailableDevicesUseCase"),ListenToConnectedDeviceUseCase:Symbol.for("ListenToConnectedDeviceUseCase"),ListConnectedDevicesUseCase:Symbol.for("ListConnectedDevicesUseCase"),ReconnectUseCase:Symbol.for("ReconnectUseCase")};var ee={ManagerApiService:Symbol.for("ManagerApiService"),ManagerApiDataSource:Symbol.for("ManagerApiDataSource"),DmkConfig:Symbol.for("ManagerApiDmkConfig"),SetProviderUseCase:Symbol.for("SetProviderUseCase")};var xr={SendApduUseCase:Symbol.for("SendApduUseCase")};var J={DmkConfig:Symbol.for("TransportDmkConfig"),TransportService:Symbol.for("TransportService"),TransportsInput:Symbol.for("TransportsInput")};var mc=Object.defineProperty,hc=Object.getOwnPropertyDescriptor,gc=(t,e,r,n)=>{for(var o=n>1?void 0:n?hc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&mc(e,r,o),o},Cs=(t,e)=>(r,n)=>e(r,n,t),En=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("SendCommandUseCase")}async execute({sessionId:t,command:e,abortTimeout:r}){return this._sessionService.getDeviceSessionById(t).caseOf({Right:async n=>await n.sendCommand(e,r),Left:n=>{throw this._logger.error("Error getting session",{data:{error:n}}),n}})}};En=gc([g(),Cs(0,m(x.DeviceSessionService)),Cs(1,m(E.LoggerPublisherServiceFactory))],En);var fc=Object.defineProperty,vc=Object.getOwnPropertyDescriptor,Sc=(t,e,r,n)=>{for(var o=n>1?void 0:n?vc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&fc(e,r,o),o},V=class{execute=vi.fn(()=>"stub")};V=Sc([g()],V);var bs=({stub:t=!1}={})=>new F(({bind:e,rebindSync:r})=>{e(Er.SendCommandUseCase).to(En),t&&r(Er.SendCommandUseCase).to(V)});var yc=Object.defineProperty,Dc=Object.getOwnPropertyDescriptor,Ac=(t,e,r,n)=>{for(var o=n>1?void 0:n?Dc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&yc(e,r,o),o},Is=(t,e)=>(r,n)=>e(r,n,t),xn=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("ExecuteDeviceActionUseCase")}execute({sessionId:t,deviceAction:e}){return this._sessionService.getDeviceSessionById(t).caseOf({Right:r=>r.executeDeviceAction(e),Left:r=>{throw this._logger.error("Error getting session",{data:{error:r}}),r}})}};xn=Ac([g(),Is(0,m(x.DeviceSessionService)),Is(1,m(E.LoggerPublisherServiceFactory))],xn);var wr={ExecuteDeviceActionUseCase:Symbol.for("ExecuteDeviceActionUseCase")};var Ts=({stub:t=!1}={})=>new F(({bind:e,rebindSync:r})=>{e(wr.ExecuteDeviceActionUseCase).to(xn),t&&r(wr.ExecuteDeviceActionUseCase).to(V)});function Us(t){return typeof t=="object"&&t!==null&&"version"in t&&"name"in t&&typeof t.version=="string"&&typeof t.name=="string"}var Cr=class{constructor(e){this.err=e,this.originalError=e}_tag="ApiCallError";originalError},wn=class{constructor(e){this.err=e,this.originalError=e}_tag="ParseResponseError";originalError},Nt=class{constructor(e){this.err=e,this.originalError=e}_tag="JSONParseError";originalError},Cn=class{constructor(e){this.err=e,this.originalError=e}_tag="ReadFileError";originalError};var Ko={dependencies:{"@noble/hashes":"^1.8.0","@sentry/minimal":"catalog:",axios:"catalog:",inversify:"catalog:","isomorphic-ws":"catalog:","purify-ts":"catalog:","reflect-metadata":"catalog:",semver:"catalog:",url:"catalog:",uuid:"catalog:",ws:"catalog:",xstate:"catalog:"},devDependencies:{"@ledgerhq/eslint-config-dsdk":"workspace:^","@ledgerhq/ldmk-tool":"workspace:^","@ledgerhq/prettier-config-dsdk":"workspace:^","@ledgerhq/tsconfig-dsdk":"workspace:^","@ledgerhq/vitest-config-dmk":"workspace:^","@statelyai/inspect":"catalog:","@types/semver":"catalog:","@types/uuid":"catalog:","@types/ws":"catalog:",rxjs:"catalog:","ts-node":"catalog:"},exports:{".":{import:"./lib/esm/index.js",require:"./lib/cjs/index.js",types:"./lib/types/index.d.ts"}},files:["./lib","package.json"],license:"Apache-2.0",name:"@ledgerhq/device-management-kit",peerDependencies:{rxjs:"catalog:"},private:!1,repository:{type:"git",url:"https://github.com/LedgerHQ/device-sdk-ts.git"},scripts:{build:"pnpm ldmk-tool build --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",dev:'concurrently "pnpm watch:builds" "pnpm watch:types"',lint:"eslint","lint:fix":"pnpm lint --fix","module:create":"pnpm hygen core-module with-prompt",postpack:"find . -name '*.tgz' -exec cp {} ../../dist/ \\; ",prebuild:"rimraf lib",prettier:"prettier . --check","prettier:fix":"prettier . --write",test:"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest",typecheck:"tsc --noEmit","watch:builds":"pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json","watch:types":'concurrently "tsc --watch -p tsconfig.prod.json" "tsc-alias --watch -p tsconfig.prod.json"'},version:"1.1.0"};var Ec=Object.defineProperty,xc=Object.getOwnPropertyDescriptor,wc=(t,e,r,n)=>{for(var o=n>1?void 0:n?xc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Ec(e,r,o),o},Cc={name:Ko.name,version:Ko.version},bc=()=>JSON.stringify(Cc),bn=class{getConfig(){return Z.encase(()=>bc()).mapLeft(t=>new Cn(t)).chain(t=>Z.encase(()=>{let e=JSON.parse(t);if(Us(e))return e;throw new Error("Invalid config file")}).mapLeft(e=>new Nt(e)))}};bn=wc([g()],bn);var Ic=Object.defineProperty,Tc=Object.getOwnPropertyDescriptor,Uc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Tc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Ic(e,r,o),o},In=class{getConfig(){return Z.of({name:"DeviceSDK",version:"0.0.0-stub.1"})}};In=Uc([g()],In);var Oc=Object.defineProperty,Rc=Object.getOwnPropertyDescriptor,kc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Rc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Oc(e,r,o),o},Tn=class{async getConfig(){let t=await this._callApi();if(t.isLeft())return h(new Cr(t.extract()));if(!t.extract().ok)return h(new Cr(new Error("response not ok")));let e=await t.extract().json();return e.isLeft()?h(new Nt):e.chain(r=>this._parseResponse(r)).map(r=>r)}_parseResponse(t){let{name:e,version:r}=t;return!e||!r?h(new wn):Z.of({name:e,version:r})}_callApi(){return new Promise(t=>{t(Z.of({ok:!0,json:async()=>new Promise(e=>{e(Z.of({name:"DeviceSDK",version:"0.0.0-fake.1",yolo:"yolo"}))})}))})}};Tn=kc([g()],Tn);var Lc=Object.defineProperty,Mc=Object.getOwnPropertyDescriptor,Nc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Mc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Lc(e,r,o),o},Un=class{async getConfig(){return new Promise(t=>t(Z.of({name:"DeviceSDK",version:"0.0.0-fake.2"})))}};Un=Nc([g()],Un);var Fc=Object.defineProperty,Vc=Object.getOwnPropertyDescriptor,Pc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Vc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Fc(e,r,o),o},Jo=(t,e)=>(r,n)=>e(r,n,t),On=class{_local;_remote;_logger;constructor(t,e,r){this._local=t,this._remote=e,this._logger=r("config")}async getDmkConfig(){let t=this._local.getConfig().ifLeft(e=>{this._logger.error("Local config not available",{data:{error:e}})});if(t.isRight()){let e=t.extract();return this._logger.info("Local config available",{data:{config:e}}),e}return this._remote.getConfig().then(e=>e.mapLeft(r=>(this._logger.error("Local config available",{data:{error:r}}),{name:"DeadDmk",version:"0.0.0-dead.1"})).extract())}};On=Pc([g(),Jo(0,m(Se.LocalConfigDataSource)),Jo(1,m(Se.RemoteConfigDataSource)),Jo(2,m(E.LoggerPublisherServiceFactory))],On);var Bc=Object.defineProperty,jc=Object.getOwnPropertyDescriptor,Gc=(t,e,r,n)=>{for(var o=n>1?void 0:n?jc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Bc(e,r,o),o},qc=(t,e)=>(r,n)=>e(r,n,t),Rn=class{_configService;constructor(t){this._configService=t}async getDmkVersion(){return(await this._configService.getDmkConfig()).version}};Rn=Gc([g(),qc(0,m(Se.ConfigService))],Rn);var Os=({stub:t})=>new F(({bind:e,rebindSync:r})=>{e(Se.LocalConfigDataSource).to(bn),e(Se.RemoteConfigDataSource).to(Tn),e(Se.GetDmkVersionUseCase).to(Rn),e(Se.ConfigService).to(On),t&&(r(Se.LocalConfigDataSource).to(In),r(Se.RemoteConfigDataSource).to(Un))});var kn={DeviceModelDataSource:Symbol.for("DeviceModelDataSource")};var Rs=({stub:t})=>new F(({bind:e})=>{e(kn.DeviceModelDataSource).to(Re)});var $c=Object.defineProperty,Hc=Object.getOwnPropertyDescriptor,zc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Hc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&$c(e,r,o),o},ks=(t,e)=>(r,n)=>e(r,n,t),Ln=class{constructor(t,e){this._sessionService=t,this._logger=e("DisableDeviceSessionRefresherUseCase")}_logger;execute({sessionId:t,blockerId:e}){return this._sessionService.getDeviceSessionById(t).caseOf({Left:r=>{throw this._logger.error("Error getting device session",{data:{error:r}}),r},Right:r=>r.disableRefresher(e)})}};Ln=zc([g(),ks(0,m(x.DeviceSessionService)),ks(1,m(E.LoggerPublisherServiceFactory))],Ln);var Ls=$(Ce());var Wc=Object.defineProperty,Kc=Object.getOwnPropertyDescriptor,Jc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Kc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Wc(e,r,o),o},Xc=(t,e)=>(r,n)=>e(r,n,t),Mn=class{_sessions;_sessionsSubject;_logger;constructor(t){this._sessions=[],this._sessionsSubject=new Ls.ReplaySubject,this._logger=t("DeviceSessionService")}get sessionsObs(){return this._sessionsSubject.asObservable()}addDeviceSession(t){return this._sessions.find(e=>e.id===t.id)?(this._logger.warn("DeviceSession already exists",{data:{deviceSession:t}}),this):(this._sessions.push(t),this._sessionsSubject.next(t),this._logger.info("DeviceSession added",{data:{sessionId:t.id}}),this)}removeDeviceSession(t){let e=this._sessions.find(r=>r.id===t);return e?(e.close(),this._sessions=this._sessions.filter(r=>r.id!==t),this._logger.info("DeviceSession removed",{data:{sessionId:t}}),this):(this._logger.warn("DeviceSession not found",{data:{sessionId:t}}),this)}getDeviceSessionById(t){return L.fromNullable(this._sessions.find(e=>e.id===t)).toEither(new _r)}getDeviceSessionsByDeviceId(t){return L.fromPredicate(({length:e})=>e>0,this._sessions.filter(e=>e.connectedDevice.id===t)).toEither(new _r)}getDeviceSessions(){return this._sessions}};Mn=Jc([g(),Xc(0,m(E.LoggerPublisherServiceFactory))],Mn);var Qc=Object.defineProperty,Yc=Object.getOwnPropertyDescriptor,Zc=(t,e,r,n)=>{for(var o=n>1?void 0:n?Yc(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Qc(e,r,o),o},Ms=(t,e)=>(r,n)=>e(r,n,t),Nn=class{_sessionService;_transportService;constructor(t,e){this._sessionService=t,this._transportService=e}execute(){let t=this._sessionService.getDeviceSessions();for(let e of t)this._transportService.closeConnection(e.connectedDevice),this._sessionService.removeDeviceSession(e.id)}};Nn=Zc([g(),Ms(0,m(x.DeviceSessionService)),Ms(1,m(J.TransportService))],Nn);var eu=Object.defineProperty,tu=Object.getOwnPropertyDescriptor,ru=(t,e,r,n)=>{for(var o=n>1?void 0:n?tu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&eu(e,r,o),o},Ns=(t,e)=>(r,n)=>e(r,n,t),Fn=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("GetDeviceSessionStateUseCase")}execute({sessionId:t}){return this._sessionService.getDeviceSessionById(t).caseOf({Left:e=>{throw this._logger.error("Error getting session device",{data:{error:e}}),e},Right:e=>e.state})}};Fn=ru([g(),Ns(0,m(x.DeviceSessionService)),Ns(1,m(E.LoggerPublisherServiceFactory))],Fn);var nu=Object.defineProperty,ou=Object.getOwnPropertyDescriptor,iu=(t,e,r,n)=>{for(var o=n>1?void 0:n?ou(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&nu(e,r,o),o},Fs=(t,e)=>(r,n)=>e(r,n,t),Vn=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("UnsafeBypassIntentQueueUseCase")}execute({sessionId:t,bypass:e}){this._sessionService.getDeviceSessionById(t).caseOf({Left:r=>{throw this._logger.error("Error getting session",{data:{error:r}}),r},Right:r=>{this._logger.warn(`UNSAFE: ${e?"Enabling":"Disabling"} intent queue bypass for session ${t}`),r._unsafeBypassIntentQueue(e)}})}};Vn=iu([g(),Fs(0,m(x.DeviceSessionService)),Fs(1,m(E.LoggerPublisherServiceFactory))],Vn);var Vs=({stub:t}={stub:!1})=>new F(({bind:e,rebindSync:r})=>{e(x.ApduSenderServiceFactory).toFactory(n=>{let o=n.get(E.LoggerPublisherServiceFactory);return i=>new Mt(i,o)}),e(x.ApduReceiverServiceFactory).toFactory(n=>{let o=n.get(E.LoggerPublisherServiceFactory);return(i={})=>new Lt(i,o)}),e(x.DeviceSessionService).to(Mn).inSingletonScope(),e(x.GetDeviceSessionStateUseCase).to(Fn),e(x.CloseSessionsUseCase).to(Nn),e(x.DisableDeviceSessionRefresherUseCase).to(Ln),e(x.UnsafeBypassIntentQueueUseCase).to(Vn),t&&(r(x.GetDeviceSessionStateUseCase).to(V),r(x.DisableDeviceSessionRefresherUseCase).to(V),r(x.UnsafeBypassIntentQueueUseCase).to(V))});var Te=$(Ce());function Ps(t){return`[will send APDU] ~...> ${se(t,!1)}`}function su(t){return`[exchange] => ${se(t,!1)}`}function Xo(t){return`[exchange] <= ${se(t.data,!1)}${se(t.statusCode,!1)}`}var Bs={isRefresherDisabled:!1,pollingInterval:1e3};var jn=$(Ce());var js=$(Ce()),M=(t=>(t.NEW_STATE="NEW_STATE",t.REFRESH_NEEDED="REFRESH_NEEDED",t.COMMAND_SUCCEEDED="COMMAND_SUCCEEDED",t.DEVICE_STATE_UPDATE_BUSY="DEVICE_STATE_UPDATE_BUSY",t.DEVICE_STATE_UPDATE_LOCKED="DEVICE_STATE_UPDATE_LOCKED",t.DEVICE_STATE_UPDATE_CONNECTED="DEVICE_STATE_UPDATE_CONNECTED",t.DEVICE_STATE_UPDATE_UNKNOWN="DEVICE_STATE_UPDATE_UNKNOWN",t))(M||{}),Pn=class{_eventEmitter=new js.Subject;listen(){return this._eventEmitter.asObservable()}dispatch(e){this._eventEmitter.next(e)}};var Bn=class{constructor(e,r){this.loggerModuleFactory=e,this.sessionEventDispatcher=r,this._logger=this.loggerModuleFactory("IntentQueueService")}_logger;_queue=[];_isProcessing=!1;_currentSubscription=null;enqueue(e){this._logger.debug("Enqueueing intent",{data:{type:e.type}});let r=new jn.Subject,n={intent:e,subject:r,isCancelled:!1};this._queue.push(n);let o=()=>{this._logger.debug("Cancelling intent",{data:{type:e.type}}),n.isCancelled=!0,this._queue[0]===n&&this._currentSubscription?(this._currentSubscription.unsubscribe(),this._currentSubscription=null,r.complete(),this._queue.shift(),this._isProcessing=!1,this._processQueue()):(!this._isProcessing||this._queue[0]!==n)&&r.complete()};return this._isProcessing||this._processQueue(),{observable:r.asObservable().pipe((0,jn.finalize)(()=>{this._logger.debug("Intent observable finalized",{data:{type:e.type}})})),cancel:o}}_processQueue(){if(this._isProcessing)return;if(this._queue.length===0){this.sessionEventDispatcher.dispatch({eventName:M.NEW_STATE});return}this.sessionEventDispatcher.dispatch({eventName:M.DEVICE_STATE_UPDATE_BUSY}),this._isProcessing=!0;let e=this._queue[0];if(e.isCancelled){this._logger.debug("Skipping cancelled intent",{data:{type:e.intent.type}}),e.subject.complete(),this._queue.shift(),this._isProcessing=!1,this._processQueue();return}this._logger.debug("Processing intent",{data:{type:e.intent.type}}),this._currentSubscription=e.intent.execute().subscribe({next:r=>{e.isCancelled||e.subject.next(r)},error:r=>{e.isCancelled||e.subject.error(r),this._onIntentComplete()},complete:()=>{e.isCancelled||e.subject.complete(),this._onIntentComplete()}})}_onIntentComplete(){this._logger.debug("Intent completed"),this._currentSubscription=null,this._queue.shift(),this._isProcessing=!1,this._processQueue()}};var Gn=class{constructor(e,r){this._refresher=r,this._logger=e("refresher-service")}_refresherBlockers=new Set;_logger;disableRefresher(e){let r=`${e}-${Ge()}`;this.addRefresherBlocker(r),this._logger.debug("Refresher disabled",{data:{blockerId:r,blockers:Array.from(this._refresherBlockers)}});let n=!1;return()=>{n||(n=!0,this.removeRefresherBlocker(r),this._logger.debug("Refresher re-enabled",{data:{blockerId:r,blockers:Array.from(this._refresherBlockers)}}))}}addRefresherBlocker(e){let r=this._refresherBlockers.size;this._refresherBlockers.add(e),r===0&&this._refresher.stop()}removeRefresherBlocker(e){let r=this._refresherBlockers.size;this._refresherBlockers.delete(e),r>0&&this._refresherBlockers.size===0&&this._refresher.start()}};var qn=class{constructor(e,r,n,o){this.connectedDevice=r,this._sessionEventDispatcher=n,this._sendCommandFunction=o,this._logger=e("device-pinger"),this._subscription=this._sessionEventDispatcher.listen().subscribe(async i=>await this.mapEventAction(i))}_sendCommandFunction;_subscription;_logger;async ping(){try{return await this.mapDevicePingAction(this.connectedDevice.deviceModel.id)}catch(e){return this._logger.error("Error while pinging device",{data:{error:e}}),null}}mapEventAction=async e=>{switch(e.eventName){case M.REFRESH_NEEDED:return await this.ping();default:return null}};async mapDevicePingAction(e){switch(e){case T.NANO_S:{let r=async()=>{let i=await this._sendCommandFunction(new Ae,800);return this._sendCommandFunction(new ue,800),i},n=new Promise(i=>{setTimeout(()=>i(null),1e3*2+100)}),o=await Promise.race([r(),n]);return o?this._sessionEventDispatcher.dispatch({eventName:M.COMMAND_SUCCEEDED,eventData:o}):this._sessionEventDispatcher.dispatch({eventName:M.DEVICE_STATE_UPDATE_LOCKED}),o}default:{let r=await this._sendCommandFunction(new Ae,800);return this._sessionEventDispatcher.dispatch({eventName:M.COMMAND_SUCCEEDED,eventData:r}),r}}}unsubscribe(){this._subscription.unsubscribe()}};var ce=$(Ce());var Hn=class{constructor(e,r,n,o){this._sessionEventDispatcher=n,this._refresherOptions=r,this._logger=e("device-session-refresher"),this._connectedDeviceID=o.deviceModel.id}_refresherSubscription;_refresherOptions;_logger;_connectedDeviceID;startRefresher(){if(this._refresherOptions.isRefresherDisabled||this._refresherSubscription)return;let e=this.getValidPollingInterval(this._refresherOptions,this._logger)*2,r=this._sessionEventDispatcher.listen().pipe((0,ce.filter)(n=>n.eventName===M.DEVICE_STATE_UPDATE_BUSY||n.eventName===M.NEW_STATE),(0,ce.map)(n=>n.eventName===M.DEVICE_STATE_UPDATE_BUSY),(0,ce.startWith)(!1),(0,ce.distinctUntilChanged)());this._refresherSubscription=(0,ce.timer)(0,e).pipe((0,ce.withLatestFrom)(r),(0,ce.tap)(([n,o])=>{o&&this._logger.debug("Refresh skipped: device is busy")}),(0,ce.filter)(([n,o])=>!o),(0,ce.tap)(()=>this._sessionEventDispatcher.dispatch({eventName:M.REFRESH_NEEDED}))).subscribe(),this._logger.info("Refresher started.")}stopRefresher(){this._refresherSubscription&&(this._refresherSubscription.unsubscribe(),this._refresherSubscription=void 0,this._logger.info("Refresher stopped."))}restartRefresher(){this.stopRefresher(),this.startRefresher(),this._logger.info("Refresher restarted.")}getValidPollingInterval=(e,r)=>{let{pollingInterval:n}=e;switch(this._connectedDeviceID){case T.NANO_S:{let o=1e3*2;return n!==void 0&&n<o?(r.warn(`Polling interval of ${n} is too low, setting to minimum as ${o}`),o):n??o}default:return n!==void 0&&n<1e3?(r.warn(`Polling interval of ${n} is too low, setting to minimum as ${1e3}`),1e3):n??1e3}}};var zn=class{constructor(e,r,n,o,i){this._sessionEventDispatcher=r,this._connectedDevice=n,this._deviceState=o,this.setDeviceSessionState=i,this._subscription=this._sessionEventDispatcher.listen().subscribe(s=>this.mapEventAction(s)),this._logger=e("device-session-state-handler")}_subscription;_logger;_pendingDeviceStatus=de.BUSY;_updateDeviceState(e){let r=this._parseDeviceStatus(e);if(r){let{sessionStateType:n,deviceStatus:o,currentApp:i}=r,s=this._deviceState.getValue();s.sessionStateType===w.Connected?this.setDeviceSessionState({sessionStateType:n,deviceStatus:o,deviceModelId:this._connectedDevice.deviceModel.id,currentApp:i,installedApps:[],isSecureConnectionAllowed:!1}):this.setDeviceSessionState({...s,sessionStateType:n,deviceStatus:o,deviceModelId:this._connectedDevice.deviceModel.id,currentApp:i})}}mapEventAction=e=>{let{eventName:r}=e;switch(r){case M.COMMAND_SUCCEEDED:return this._updateDeviceState(e.eventData);case M.DEVICE_STATE_UPDATE_BUSY:return this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:de.BUSY});case M.DEVICE_STATE_UPDATE_LOCKED:this._pendingDeviceStatus=de.LOCKED;return;case M.DEVICE_STATE_UPDATE_CONNECTED:this._pendingDeviceStatus=de.CONNECTED;return;case M.NEW_STATE:{let n=this._pendingDeviceStatus;return this._pendingDeviceStatus=de.BUSY,this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:n})}case M.DEVICE_STATE_UPDATE_UNKNOWN:return this.setDeviceSessionState({...this._deviceState.getValue(),deviceStatus:de.BUSY});case M.REFRESH_NEEDED:return;default:{let n=r;throw new Error(`Unhandled context type ${n}`)}}};_parseDeviceStatus(e){return I(e)?{sessionStateType:w.ReadyWithoutSecureChannel,deviceStatus:de.CONNECTED,currentApp:{name:e.data.name,version:e.data.version}}:(this._logger.debug("Error while parsing APDU response",{data:{parsedResponse:e}}),null)}unsubscribe(){this._subscription.unsubscribe()}};var Ft=class{_id;_connectedDevice;_deviceState;_managerApiService;_secureChannelService;_logger;_loggerModuleFactory;_refresherOptions;_pinger;_deviceSessionRefresher;_refresherService;_intentQueueService;_sessionEventDispatcher=new Pn;_bypassIntentQueue=!1;constructor({connectedDevice:e,id:r=Ge()},n,o,i,s,d=c=>new Bn(n,c)){this._id=r,this._connectedDevice=e,this._loggerModuleFactory=n,this._logger=n("device-session"),this._managerApiService=o,this._intentQueueService=d(this._sessionEventDispatcher),this._secureChannelService=i,this._refresherOptions={...Bs,...s},this._deviceState=new Te.BehaviorSubject({sessionStateType:w.Connected,deviceStatus:de.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id}),this._pinger=new qn(n,e,this._sessionEventDispatcher,(c,u)=>this.sendCommand(c,u)),this._deviceSessionRefresher=new Hn(n,this._refresherOptions,this._sessionEventDispatcher,this._connectedDevice),new zn(n,this._sessionEventDispatcher,this._connectedDevice,this._deviceState,c=>this.setDeviceSessionState(c)),this._refresherService=new Gn(n,{start:()=>this._deviceSessionRefresher.restartRefresher(),stop:()=>this._deviceSessionRefresher.stopRefresher()})}async initialiseSession(){try{this._refresherOptions.isRefresherDisabled?await this._pinger.ping():this._deviceSessionRefresher.startRefresher()}catch(e){throw this._logger.error("Error while initialising session",{data:{error:e}}),e}}get id(){return this._id}get connectedDevice(){return this._connectedDevice}get state(){return this._deviceState.asObservable()}getDeviceSessionState(){return this._deviceState.getValue()}setDeviceSessionState(e){this._deviceState.next(e)}sendApdu(e,r={isPolling:!1,triggersDisconnection:!1,abortTimeout:void 0}){return this._bypassIntentQueue?this._unsafeInternalSendApdu(e,r):this._internalSendApdu(e,r)}_internalSendApdu(e,r){let n=r.abortTimeout,o=Date.now(),{observable:i,cancel:s}=this._intentQueueService.enqueue({type:"send-apdu",execute:()=>(0,Te.from)((async()=>{let c=Date.now()-o;return await this._unsafeInternalSendApdu(e,{isPolling:r.isPolling,triggersDisconnection:r.triggersDisconnection,abortTimeout:n?n-c:void 0})})())}),d=n?i.pipe((0,Te.timeout)({each:n,with:()=>{throw s(),new zr}})):i;return(0,Te.lastValueFrom)(d)}async _unsafeInternalSendApdu(e,r={isPolling:!1,triggersDisconnection:!1,abortTimeout:void 0}){return this._logger.debug(Ps(e)),(await this._connectedDevice.sendApdu(e,r.triggersDisconnection,r.abortTimeout)).ifRight(n=>{this._logger.debug(Xo(n)),k.isLockedDeviceResponse(n)?this._sessionEventDispatcher.dispatch({eventName:M.DEVICE_STATE_UPDATE_LOCKED}):this._sessionEventDispatcher.dispatch({eventName:M.DEVICE_STATE_UPDATE_CONNECTED})}).ifLeft(()=>{this._sessionEventDispatcher.dispatch({eventName:M.DEVICE_STATE_UPDATE_UNKNOWN})})}sendCommand(e,r){return this._logger.debug(`[sendCommand] ${e.name}`),this._bypassIntentQueue?this._unsafeInternalSendCommand(e,r):this._internalSendCommand(e,r)}_internalSendCommand(e,r){let n=Date.now(),{observable:o,cancel:i}=this._intentQueueService.enqueue({type:"send-command",execute:()=>(0,Te.from)((async()=>{let d=Date.now()-n;return await this._unsafeInternalSendCommand(e,r?r-d:void 0)})())}),s=r?o.pipe((0,Te.timeout)({each:r,with:()=>{throw i(),new Wr}})):o;return(0,Te.lastValueFrom)(s)}async _unsafeInternalSendCommand(e,r){let n=e.getApdu();return(await this._unsafeInternalSendApdu(n.getRawApdu(),{isPolling:!1,triggersDisconnection:e.triggersDisconnection??!1,abortTimeout:r})).caseOf({Left:o=>{throw this._logger.error("[sendCommand] error",{data:{err:o}}),o},Right:o=>{let i=e.parseResponse(o,this._connectedDevice.deviceModel.id);return this._logger.debug("[sendCommand] result",{data:{result:i}}),i}})}executeDeviceAction(e){return this._bypassIntentQueue?this._unsafeInternalExecuteDeviceAction(e):this._internalExecuteDeviceAction(e)}_internalExecuteDeviceAction(e){let r,{observable:n,cancel:o}=this._intentQueueService.enqueue({type:"device-action",execute:()=>{let{observable:i,cancel:s}=this._unsafeInternalExecuteDeviceAction(e);return r=s,i}});return{observable:n,cancel:()=>{r?.(),o()}}}_unsafeInternalExecuteDeviceAction(e){let{observable:r,cancel:n}=e._execute({sendApdu:async o=>this._unsafeInternalSendApdu(o),sendCommand:async o=>this._unsafeInternalSendCommand(o),getDeviceModel:()=>this._connectedDevice.deviceModel,getDeviceSessionState:()=>this._deviceState.getValue(),getDeviceSessionStateObservable:()=>this.state,setDeviceSessionState:o=>(this.setDeviceSessionState(o),this._deviceState.getValue()),getManagerApiService:()=>this._managerApiService,getSecureChannelService:()=>this._secureChannelService,loggerFactory:this._loggerModuleFactory});return{observable:r,cancel:n}}close(){this._updateDeviceStatus(de.NOT_CONNECTED),this._deviceState.complete(),this._deviceSessionRefresher.stopRefresher(),this._pinger.unsubscribe()}disableRefresher(e){return this._refresherService.disableRefresher(e)}_unsafeBypassIntentQueue(e){this._bypassIntentQueue=e}_updateDeviceStatus(e){let r=this._deviceState.getValue();this._deviceState.next({...r,deviceStatus:e})}};var ke={SecureChannelService:Symbol.for("SecureChannelService"),SecureChannelDataSource:Symbol.for("SecureChannelDataSource"),DmkConfig:Symbol.for("SecureChannelDmkConfig")};var au=Object.defineProperty,cu=Object.getOwnPropertyDescriptor,uu=(t,e,r,n)=>{for(var o=n>1?void 0:n?cu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&au(e,r,o),o},br=(t,e)=>(r,n)=>e(r,n,t),Wn=class{_transportService;_sessionService;_loggerFactory;_managerApi;_secureChannel;_logger;constructor(t,e,r,n,o){this._sessionService=e,this._transportService=t,this._loggerFactory=r,this._logger=r("ConnectUseCase"),this._managerApi=n,this._secureChannel=o}handleDeviceDisconnect(t){this._sessionService.getDeviceSessionsByDeviceId(t).ifRight(e=>{e.forEach(r=>{this._sessionService.removeDeviceSession(r.id),this._logger.info("Session removed",{data:{deviceId:t,sessionId:r.id}})})})}async execute({device:t,sessionRefresherOptions:e}){let r=this._transportService.getTransport(t.transport),n="sessionId"in t?t.sessionId:void 0;return _.liftEither(r.toEither(new Xe(new Error("Unknown transport")))).chain(async o=>o.connect({deviceId:t.id,onDisconnect:i=>this.handleDeviceDisconnect(i)})).ifLeft(o=>{this._logger.error("Error connecting to device")}).map(async o=>{let i=new Ft({connectedDevice:o,id:n},this._loggerFactory,this._managerApi,this._secureChannel,e);return this._sessionService.addDeviceSession(i),await i.initialiseSession(),i.id}).caseOf({Left:o=>{throw o},Right:o=>o})}};Wn=uu([g(),br(0,m(J.TransportService)),br(1,m(x.DeviceSessionService)),br(2,m(E.LoggerPublisherServiceFactory)),br(3,m(ee.ManagerApiService)),br(4,m(ke.SecureChannelService))],Wn);var du=Object.defineProperty,pu=Object.getOwnPropertyDescriptor,lu=(t,e,r,n)=>{for(var o=n>1?void 0:n?pu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&du(e,r,o),o},Zo=(t,e)=>(r,n)=>e(r,n,t),Kn=class{_transportService;_sessionService;_logger;constructor(t,e,r){this._sessionService=e,this._transportService=t,this._logger=r("DisconnectUseCase")}async execute({sessionId:t}){return this._logger.debug("Disconnecting from device",{data:{test:this._sessionService.getDeviceSessions().map(e=>e.id)}}),_(async({liftEither:e})=>{let r=await e(this._sessionService.getDeviceSessionById(t).ifLeft(i=>{this._logger.error("Device session not found",{data:{sessionId:t,error:i}})})),n=r.connectedDevice.transport,o=await e(this._transportService.getTransport(n).toEither(new Xe(new Error("Unknown transport"))));r.close(),this._sessionService.removeDeviceSession(t),await o.disconnect({connectedDevice:r.connectedDevice})}).caseOf({Left:e=>{throw this._logger.error("Error disconnecting from device",{data:{error:e}}),e},Right:()=>{}})}};Kn=lu([g(),Zo(0,m(J.TransportService)),Zo(1,m(x.DeviceSessionService)),Zo(2,m(E.LoggerPublisherServiceFactory))],Kn);var qe=class{id;sessionId;modelId;name;type;transport;constructor({transportConnectedDevice:{id:e,deviceModel:{id:r,productName:n},type:o,transport:i,name:s},sessionId:d}){this.id=e,this.sessionId=d,this.modelId=r,this.name=s??n,this.type=o,this.transport=i}};var mu=Object.defineProperty,hu=Object.getOwnPropertyDescriptor,gu=(t,e,r,n)=>{for(var o=n>1?void 0:n?hu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&mu(e,r,o),o},Gs=(t,e)=>(r,n)=>e(r,n,t),Jn=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("GetConnectedDeviceUseCase")}execute({sessionId:t}){return this._sessionService.getDeviceSessionById(t).caseOf({Right:e=>new qe({sessionId:e.id,transportConnectedDevice:e.connectedDevice}),Left:e=>{throw this._logger.error("Error getting session",{data:{error:e}}),e}})}};Jn=gu([g(),Gs(0,m(x.DeviceSessionService)),Gs(1,m(E.LoggerPublisherServiceFactory))],Jn);var fu=Object.defineProperty,vu=Object.getOwnPropertyDescriptor,Su=(t,e,r,n)=>{for(var o=n>1?void 0:n?vu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&fu(e,r,o),o},qs=(t,e)=>(r,n)=>e(r,n,t),Xn=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("ListConnectedDeviceUseCase")}execute(){return this._logger.info("Listing connected devices"),this._sessionService.getDeviceSessions().map(t=>new qe({transportConnectedDevice:t.connectedDevice,sessionId:t.id}))}};Xn=Su([g(),qs(0,m(x.DeviceSessionService)),qs(1,m(E.LoggerPublisherServiceFactory))],Xn);var we=$(Ce());var yu=Object.defineProperty,Du=Object.getOwnPropertyDescriptor,Au=(t,e,r,n)=>{for(var o=n>1?void 0:n?Du(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&yu(e,r,o),o},$s=(t,e)=>(r,n)=>e(r,n,t),Qn=class{_transports;_transportService;_logger;constructor(t,e){this._transports=t.getAllTransports(),this._transportService=t,this._logger=e("ListenToAvailableDevicesUseCase")}mapTransportDiscoveredDeviceToDiscoveredDevice(t){let e=new ut({id:t.id,model:t.deviceModel.id,name:t.deviceModel.productName});return{id:t.id,deviceModel:e,transport:t.transport,name:t.name||e.name,rssi:t.rssi}}execute({transport:t}={}){if(this._logger.info("Listening to available devices"),this._transports.length===0)return this._logger.warn("No transports available"),(0,we.from)([[]]);if(!t){this._logger.info("Discovering all available transports");let e=this._transports.map((r,n)=>r.listenToAvailableDevices().pipe((0,we.map)(o=>({index:n,arr:o}))));return(0,we.merge)(...e).pipe((0,we.scan)((r,{index:n,arr:o})=>(r[n]=o,r),{}),(0,we.map)(r=>Object.values(r).flat().map(this.mapTransportDiscoveredDeviceToDiscoveredDevice)))}return this._logger.info(`Discovering devices on transport ${t}`),this._transportService.getTransport(t).caseOf({Nothing:()=>(this._logger.error(`Transport ${t} not found`),(0,we.of)([])),Just:e=>e.listenToAvailableDevices().pipe((0,we.map)(r=>r.map(this.mapTransportDiscoveredDeviceToDiscoveredDevice)))})}};Qn=Au([g(),$s(0,m(J.TransportService)),$s(1,m(E.LoggerPublisherServiceFactory))],Qn);var zs=$(Ce());var _u=Object.defineProperty,Eu=Object.getOwnPropertyDescriptor,xu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Eu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&_u(e,r,o),o},Hs=(t,e)=>(r,n)=>e(r,n,t),Yn=class{constructor(t,e){this._sessionService=t,this._logger=e("ListenToConnectedDeviceUseCase")}_logger;execute(){return this._logger.info("Observe connected devices"),this._sessionService.sessionsObs.pipe((0,zs.map)(t=>new qe({transportConnectedDevice:t.connectedDevice,sessionId:t.id})))}};Yn=xu([g(),Hs(0,m(x.DeviceSessionService)),Hs(1,m(E.LoggerPublisherServiceFactory))],Yn);var wu=Object.defineProperty,Cu=Object.getOwnPropertyDescriptor,bu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Cu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&wu(e,r,o),o},ei=(t,e)=>(r,n)=>e(r,n,t),Zn=class{constructor(t,e,r){this.connectUseCase=t,this.disconnectUseCase=e,this._logger=r("ReconnectUseCase")}_logger;async execute({device:t,sessionRefresherOptions:e}){return this._logger.debug("Reconnecting device session",{data:{deviceId:t.id,transport:t.transport}}),await this.disconnectUseCase.execute({sessionId:t.sessionId}),this.connectUseCase.execute({device:t,sessionRefresherOptions:e})}};Zn=bu([g(),ei(0,m(O.ConnectUseCase)),ei(1,m(O.DisconnectUseCase)),ei(2,m(E.LoggerPublisherServiceFactory))],Zn);var _t=$(Ce());var Iu=Object.defineProperty,Tu=Object.getOwnPropertyDescriptor,Uu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Tu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Iu(e,r,o),o},Ou=(t,e)=>(r,n)=>e(r,n,t),eo=class{constructor(t){this._transportService=t}mapDiscoveredDevice(t){let e=new ut({id:t.id,model:t.deviceModel.id,name:t.deviceModel.productName});return{id:t.id,deviceModel:e,transport:t.transport,name:t.name||e.name,rssi:t.rssi}}execute({transport:t}={}){if(!t){let e=this._transportService.getAllTransports();return(0,_t.of)(...e).pipe((0,_t.mergeMap)(r=>r.startDiscovering().pipe((0,_t.map)(n=>this.mapDiscoveredDevice(n)))))}return this._transportService.getTransport(t).caseOf({Just:e=>e.startDiscovering().pipe((0,_t.map)(r=>this.mapDiscoveredDevice(r))),Nothing:()=>{throw new Xe(new Error("Unknown transport"))}})}};eo=Uu([g(),Ou(0,m(J.TransportService))],eo);var Ru=Object.defineProperty,ku=Object.getOwnPropertyDescriptor,Lu=(t,e,r,n)=>{for(var o=n>1?void 0:n?ku(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Ru(e,r,o),o},Ws=(t,e)=>(r,n)=>e(r,n,t),to=class{constructor(t,e){this.transportService=t,this._logger=e("StopDiscoveringUseCase")}_logger;async execute(){this._logger.debug("Stopping discovering devices");for(let t of this.transportService.getAllTransports())await t.stopDiscovering()}};to=Lu([g(),Ws(0,m(J.TransportService)),Ws(1,m(E.LoggerPublisherServiceFactory))],to);var Ks=({stub:t=!1})=>new F(({bind:e,rebindSync:r})=>{e(O.ConnectUseCase).to(Wn),e(O.DisconnectUseCase).to(Kn),e(O.ReconnectUseCase).to(Zn),e(O.StartDiscoveringUseCase).to(eo),e(O.StopDiscoveringUseCase).to(to),e(O.GetConnectedDeviceUseCase).to(Jn),e(O.ListenToAvailableDevicesUseCase).to(Qn),e(O.ListenToConnectedDeviceUseCase).to(Yn),e(O.ListConnectedDevicesUseCase).to(Xn),t&&(r(O.ConnectUseCase).to(V),r(O.DisconnectUseCase).to(V),r(O.StartDiscoveringUseCase).to(V),r(O.StopDiscoveringUseCase).to(V),r(O.GetConnectedDeviceUseCase).to(V),r(O.ListenToAvailableDevicesUseCase).to(V),r(O.ListenToConnectedDeviceUseCase).to(V),r(O.ListConnectedDevicesUseCase).to(V))});var X=(t=>(t[t.Fatal=0]="Fatal",t[t.Error=1]="Error",t[t.Warning=2]="Warning",t[t.Info=3]="Info",t[t.Debug=4]="Debug",t))(X||{});var Ir=class{format(e){return Array.isArray(e)?e.map(r=>`[${r}]`).join(" "):`[${e}]`}};function ti(t,e){if(typeof t=="bigint")return t.toString();if(Array.isArray(t))return e.has(t)?"[Circular]":(e.add(t),t.map(r=>ti(r,e)));if(t!==null&&typeof t=="object"){if(e.has(t))return"[Circular]";e.add(t);let r={};for(let[n,o]of Object.entries(t))r[n]=ti(o,e);return r}return t}function Js(t){let e=new WeakSet;e.add(t);let r={};for(let[n,o]of Object.entries(t))r[n]=ti(o,e);return r}var Mu=Object.defineProperty,Nu=Object.getOwnPropertyDescriptor,Fu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Nu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Mu(e,r,o),o},ro=class{subscribers;tag;tagFormatter;constructor(t,e,r=new Ir){this.subscribers=t,this.tag=e,this.tagFormatter=r}_log(t,e,r){let n=r?.data?Js(r.data):void 0,o=r?.tag??this.tag,i=this.tagFormatter.format(o);this.subscribers.forEach(s=>{let d={timestamp:r?.timestamp??Date.now(),tag:i,data:n};s.log(t,e,d)})}info(t,e){this._log(X.Info,t,e)}warn(t,e){this._log(X.Warning,t,e)}debug(t,e){this._log(X.Debug,t,e)}error(t,e){this._log(X.Error,t,e)}};ro=Fu([g()],ro);var Xs=({subscribers:t}={subscribers:[]})=>new F(({bind:e})=>{e(E.LoggerPublisherServiceFactory).toFactory(r=>n=>new ro(t,n))});import $e from"axios";var Vt=(t=>(t.currency="currency",t.plugin="plugin",t.tool="tool",t.swap="swap",t))(Vt||{});var no="https://manager.api.live.ledger.com/api",oo="http://localhost:8080";var pe=class{constructor(e){this.error=e,this.originalError=e}_tag="FetchError";originalError};var Pt=(t=>(t.currency="currency",t.plugin="plugin",t.tool="tool",t.swap="swap",t))(Pt||{});var Vu=Object.defineProperty,Pu=Object.getOwnPropertyDescriptor,Bu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Pu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Vu(e,r,o),o},ju=(t,e)=>(r,n)=>e(r,n,t),io=class{_managerApiBaseUrl;_provider=1;_firmwareDistributionSalt="0";constructor({managerApiUrl:t,provider:e,firmwareDistributionSalt:r}){this._managerApiBaseUrl=t,this._provider=e,this._firmwareDistributionSalt=r}setProvider(t){this._provider===t||t<1||(this._provider=t)}getProvider(){return this._provider}getAppList(t){let{targetId:e,firmwareVersionName:r}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/v2/apps/by-target`,{params:{target_id:e,provider:this._provider,firmware_version_name:r}})).map(n=>n.data).chain(n=>this.mapApplicationDtoToApplication(n)).mapLeft(n=>new pe(n))}getMcuList(){return _(()=>$e.get(`${this._managerApiBaseUrl}/mcu_versions`,{})).map(t=>t.data).chain(t=>this.mapMcuDtoToMcu(t)).mapLeft(t=>new pe(t))}getDeviceVersion(t){let{targetId:e}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/get_device_version`,{params:{target_id:e,provider:this._provider}})).map(r=>r.data).chain(r=>this.mapDeviceVersionDto(r)).mapLeft(r=>new pe(r))}getFirmwareVersion(t){let{deviceId:e,version:r}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/get_firmware_version`,{params:{device_version:e,version_name:r,provider:this._provider}})).map(n=>n.data).chain(n=>this.mapFinalFirmwareDto(n)).mapLeft(n=>new pe(n))}getFirmwareVersionById(t){return _(()=>$e.get(`${this._managerApiBaseUrl}/firmware_final_versions/${t}`,{})).map(e=>e.data).chain(e=>this.mapFinalFirmwareDto(e)).mapLeft(e=>new pe(e))}getOsuFirmwareVersion(t){let{deviceId:e,version:r}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/get_osu_version`,{params:{device_version:e,version_name:r,provider:this._provider}})).map(n=>n.data).chain(n=>this.mapOsuFirmwareDto(n)).mapLeft(n=>new pe(n))}getLatestFirmwareVersion(t){let e="34.27.0",{currentFinalFirmwareId:r,deviceId:n}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/get_latest_firmware`,{params:{current_se_firmware_final_version:r,device_version:n,provider:this._provider,salt:this._firmwareDistributionSalt,livecommonversion:e}})).map(o=>o.data).chain(o=>this.mapLatestFirmwareDto(o)).mapLeft(o=>new pe(o))}getAppsByHash(t){let{hashes:e}=t;return _(()=>$e.post(`${this._managerApiBaseUrl}/v2/apps/hash`,e)).map(r=>r.data).chain(r=>this.mapNullableApplicationDtoToApplication(r)).mapLeft(r=>new pe(r))}getLanguagePackages(t){let{deviceId:e,currentFinalFirmwareId:r}=t;return _(()=>$e.get(`${this._managerApiBaseUrl}/language-packages`,{params:{device_version:e,current_se_firmware_final_version:r}})).map(n=>n.data).chain(n=>this.mapLanguagesDtoToLanguages(n)).mapLeft(n=>new pe(n))}mapAppTypeDtoToAppType(t){if(t===null)return null;switch(t){case Pt.currency:return Vt.currency;case Pt.plugin:return Vt.plugin;case Pt.tool:return Vt.tool;case Pt.swap:return Vt.swap}}mapApplicationDtoToApplication(t){return _(()=>Promise.resolve(t.map(e=>this.mapApplicationDto(e))))}mapNullableApplicationDtoToApplication(t){return _(()=>Promise.resolve(t.map(e=>e===null?null:this.mapApplicationDto(e))))}mapApplicationDto(t){if(typeof t!="object"||typeof t.versionId!="number"||typeof t.versionName!="string"||t.versionDisplayName!==null&&typeof t.versionDisplayName!="string"||typeof t.version!="string"||t.currencyId!==null&&typeof t.currencyId!="string"||t.description!==null&&typeof t.description!="string"||t.applicationType!==null&&typeof t.applicationType!="string"||typeof t.dateModified!="string"||t.icon!==null&&typeof t.icon!="string"||t.authorName!==null&&typeof t.authorName!="string"||t.supportURL!==null&&typeof t.supportURL!="string"||t.contactURL!==null&&typeof t.contactURL!="string"||t.sourceURL!==null&&typeof t.sourceURL!="string"||t.compatibleWallets!==null&&typeof t.compatibleWallets!="string"||typeof t.hash!="string"||typeof t.perso!="string"||typeof t.firmware!="string"||typeof t.firmwareKey!="string"||typeof t.delete!="string"||typeof t.deleteKey!="string"||t.bytes!==null&&typeof t.bytes!="number"||t.warning!==null&&typeof t.warning!="string"||typeof t.isDevTools!="boolean"||t.category!==null&&typeof t.category!="number"||t.parent!==null&&typeof t.parent!="number"||t.parentName!==null&&typeof t.parentName!="string")throw new Error(`Incomplete application: ${JSON.stringify(t)}`);let{applicationType:e,hash:r,perso:n,firmware:o,firmwareKey:i,delete:s,deleteKey:d,...c}=t;return{...c,hash:r,perso:n,firmware:o,firmwareKey:i,delete:s,deleteKey:d,applicationType:this.mapAppTypeDtoToAppType(e)}}mapMcuDtoToMcu(t){return _(()=>Promise.resolve(t.map(e=>{if(typeof e!="object"||typeof e.id!="number"||typeof e.name!="string")throw new Error(`Incomplete MCU version: ${JSON.stringify(e)}`);return{id:e.id,name:e.name}})))}mapDeviceVersionDto(t){return _(()=>{if(typeof t!="object"||typeof t.id!="number")throw new Error(`Incomplete device version: ${JSON.stringify(t)}`);let e={id:t.id};return Promise.resolve(e)})}mapFinalFirmwareDto(t){return _(()=>{if(typeof t!="object"||typeof t.id!="number"||typeof t.version!="string"||typeof t.perso!="string"||t.firmware!==null&&typeof t.firmware!="string"||t.firmware_key!==null&&typeof t.firmware_key!="string"||t.hash!==null&&typeof t.hash!="string"||t.bytes!==null&&typeof t.bytes!="number"||!Array.isArray(t.mcu_versions))throw new Error(`Incomplete final firmware: ${JSON.stringify(t)}`);let e={id:t.id,version:t.version,perso:t.perso,firmware:t.firmware,firmwareKey:t.firmware_key,hash:t.hash,bytes:t.bytes,mcuVersions:t.mcu_versions};return Promise.resolve(e)})}mapLatestFirmwareDto(t){return _(()=>{if(t.result!=="success"||!t.se_firmware_osu_version)throw new Error(`Latest firmware could not be retrieved: ${t.result}`);let e=t.se_firmware_osu_version;return Promise.resolve(e)}).chain(e=>this.mapOsuFirmwareDto(e))}mapOsuFirmwareDto(t){return _(()=>{if(typeof t!="object"||typeof t.id!="number"||typeof t.perso!="string"||typeof t.firmware!="string"||typeof t.firmware_key!="string"||t.hash!==null&&typeof t.hash!="string"||typeof t.next_se_firmware_final_version!="number")throw new Error(`Incomplete latest firmware: ${JSON.stringify(t)}`);let e={id:t.id,perso:t.perso,firmware:t.firmware,firmwareKey:t.firmware_key,hash:t.hash,nextFinalFirmware:t.next_se_firmware_final_version};return Promise.resolve(e)})}mapLanguagesDtoToLanguages(t){return _(()=>Promise.resolve(t.map(e=>this.mapLanguageDto(e))))}mapLanguageDto(t){if(typeof t!="object"||typeof t.language!="string"||typeof t.languagePackageVersionId!="number"||typeof t.version!="string"||typeof t.language_package_id!="number"||typeof t.apdu_install_url!="string"||typeof t.apdu_uninstall_url!="string"||typeof t.bytes!="number"||typeof t.date_creation!="string"||typeof t.date_last_modified!="string")throw new Error(`Incomplete language version: ${JSON.stringify(t)}`);return{language:t.language,languagePackageVersionId:t.languagePackageVersionId,version:t.version,languagePackageId:t.language_package_id,apduInstallUrl:t.apdu_install_url,apduUninstallUrl:t.apdu_uninstall_url,bytes:t.bytes,dateCreation:t.date_creation,dateLastModified:t.date_last_modified}}};io=Bu([g(),ju(0,m(ee.DmkConfig))],io);var Gu=Object.defineProperty,qu=Object.getOwnPropertyDescriptor,$u=(t,e,r,n)=>{for(var o=n>1?void 0:n?qu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Gu(e,r,o),o},Hu=(t,e)=>(r,n)=>e(r,n,t),so=class{constructor(t){this.dataSource=t}getAppList(t){let e={targetId:t.targetId.toString(),firmwareVersionName:t.seVersion};return this.dataSource.getAppList(e)}getDeviceVersion(t){let e={targetId:t.targetId.toString()};return this.dataSource.getDeviceVersion(e)}getFirmwareVersion(t,e){let r={version:t.seVersion,deviceId:e.id};return this.dataSource.getFirmwareVersion(r)}getOsuFirmwareVersion(t,e){let r={version:t.seVersion,deviceId:e.id};return this.dataSource.getOsuFirmwareVersion(r)}getLatestFirmwareVersion(t,e){let r={currentFinalFirmwareId:t.id,deviceId:e.id};return this.dataSource.getLatestFirmwareVersion(r)}getNextFirmwareVersion(t){return this.dataSource.getFirmwareVersionById(t.nextFinalFirmware)}getLanguagePackages(t,e){let r={deviceId:t.id,currentFinalFirmwareId:e.id};return this.dataSource.getLanguagePackages(r)}getMcuList(){return this.dataSource.getMcuList()}getAppsByHash(t){let e={hashes:t};return _(async({fromPromise:r,throwE:n})=>{if(e.hashes.length===0)return[];try{return await r(this.dataSource.getAppsByHash(e))}catch(o){return o instanceof pe?n(o):n(new pe(o))}})}};so=$u([g(),Hu(0,m(ee.ManagerApiDataSource))],so);var zu=Object.defineProperty,Wu=Object.getOwnPropertyDescriptor,Ku=(t,e,r,n)=>{for(var o=n>1?void 0:n?Wu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&zu(e,r,o),o},Qs=(t,e)=>(r,n)=>e(r,n,t),ao=class{constructor(t,e){this.sessionService=t,this.managerApiDataSource=e}execute(t){for(let e of this.sessionService.getDeviceSessions()){let r=e.getDeviceSessionState();r.sessionStateType!==w.Connected&&e.setDeviceSessionState({...r,firmwareUpdateContext:void 0,installedApps:[],appsUpdates:void 0,catalog:void 0})}this.managerApiDataSource.setProvider(t)}};ao=Ku([g(),Qs(0,m(x.DeviceSessionService)),Qs(1,m(ee.ManagerApiDataSource))],ao);var Ys=({stub:t,config:e})=>new F(({bind:r,rebindSync:n})=>{r(ee.DmkConfig).toConstantValue(e),r(ee.ManagerApiDataSource).to(io).inSingletonScope(),r(ee.ManagerApiService).to(so).inSingletonScope(),r(ee.SetProviderUseCase).to(ao),t&&(n(ee.ManagerApiDataSource).to(V),n(ee.ManagerApiService).to(V),n(ee.SetProviderUseCase).to(V))});var Zs=$(ci());import Bt from"url";var Ju=Object.defineProperty,Xu=Object.getOwnPropertyDescriptor,Qu=(t,e,r,n)=>{for(var o=n>1?void 0:n?Xu(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Ju(e,r,o),o},Yu=(t,e)=>(r,n)=>e(r,n,t),co=class{webSocketBaseUrl;constructor({webSocketUrl:t}){this.webSocketBaseUrl=t}genuineCheck(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/genuine`,query:t});return this._connectWebSocket(e)}installApp(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/install`,query:t});return this._connectWebSocket(e)}listInstalledApps(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/apps/list`,query:t});return this._connectWebSocket(e)}uninstallApp(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/install`,query:t});return this._connectWebSocket(e)}updateFirmware(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/install`,query:t});return this._connectWebSocket(e)}updateMcu(t){let e=Bt.format({pathname:`${this.webSocketBaseUrl}/mcu`,query:t});return this._connectWebSocket(e)}_connectWebSocket(t){try{return f(new Zs.default(t))}catch(e){return h(new on(e))}}};co=Qu([g(),Yu(0,m(ke.DmkConfig))],co);var Zu=Object.defineProperty,ed=Object.getOwnPropertyDescriptor,td=(t,e,r,n)=>{for(var o=n>1?void 0:n?ed(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&Zu(e,r,o),o},rd=(t,e)=>(r,n)=>e(r,n,t),uo=class{constructor(t){this.dataSource=t}genuineCheck(t,e){let r={targetId:t.targetId.toString(),perso:e.perso};return this.dataSource.genuineCheck(r)}installApp(t,e){let{perso:r,firmware:n,firmwareKey:o,hash:i}=e,s={targetId:t.targetId.toString(),perso:r,firmware:n,firmwareKey:o,hash:i};return this.dataSource.installApp(s)}listInstalledApps(t,e){let r={targetId:t.targetId.toString(),perso:e.perso};return this.dataSource.listInstalledApps(r)}uninstallApp(t,e){let{perso:r,delete:n,deleteKey:o,hash:i}=e,s={targetId:t.targetId.toString(),perso:r,firmware:n,firmwareKey:o,hash:i};return this.dataSource.uninstallApp(s)}updateFirmware(t,e){let r={targetId:t.targetId.toString(),perso:e.perso,firmware:e.firmware,firmwareKey:e.firmwareKey};return this.dataSource.updateFirmware(r)}updateMcu(t,e){let r={targetId:t.targetId.toString(),version:e.version};return this.dataSource.updateMcu(r)}};uo=td([g(),rd(0,m(ke.SecureChannelDataSource))],uo);var ea=({stub:t,config:e})=>new F(({bind:r})=>{r(ke.DmkConfig).toConstantValue(e),r(ke.SecureChannelDataSource).to(co),r(ke.SecureChannelService).to(uo)});var po="wss://scriptrunner.api.live.ledger.com/update";var nd=Object.defineProperty,od=Object.getOwnPropertyDescriptor,id=(t,e,r,n)=>{for(var o=n>1?void 0:n?od(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&nd(e,r,o),o},ta=(t,e)=>(r,n)=>e(r,n,t),lo=class{_sessionService;_logger;constructor(t,e){this._sessionService=t,this._logger=e("SendApduUseCase")}async execute({sessionId:t,apdu:e,abortTimeout:r,triggersDisconnection:n}){return this._sessionService.getDeviceSessionById(t).caseOf({Right:async o=>(await o.sendApdu(e,{abortTimeout:r,triggersDisconnection:n})).caseOf({Right:i=>i,Left:i=>{throw this._logger.error("Error sending APDU",{data:{sessionId:t,apdu:e,error:i}}),i}}),Left:o=>{throw this._logger.error("Error getting deviceSession",{data:{error:o}}),o}})}};lo=id([g(),ta(0,m(x.DeviceSessionService)),ta(1,m(E.LoggerPublisherServiceFactory))],lo);var ra=({stub:t=!1})=>new F(({bind:e,rebindSync:r})=>{e(xr.SendApduUseCase).to(lo),t&&r(xr.SendApduUseCase).to(V)});var sd=Object.defineProperty,ad=Object.getOwnPropertyDescriptor,cd=(t,e,r,n)=>{for(var o=n>1?void 0:n?ad(e,r):e,i=t.length-1,s;i>=0;i--)(s=t[i])&&(o=(n?s(e,r,o):s(o))||o);return n&&o&&sd(e,r,o),o},jt=(t,e)=>(r,n)=>e(r,n,t),mo=class{constructor(t,e,r,n,o,i){if(this._config=e,this._loggerModuleFactory=r,this._deviceModelDataSource=n,this._apduSenderServiceFactory=o,this._apduReceiverServiceFactory=i,this._logger=r("TransportService"),t.length===0)throw this._logger.warn("No transports provided, please check your configuration"),new Xr("No transports provided, please check your configuration");for(let s of t){let d=this.addTransport(s);if(d.isLeft())throw d.extract()}}_transports=new Map;_logger;addTransport(t){let e=t({deviceModelDataSource:this._deviceModelDataSource,loggerServiceFactory:this._loggerModuleFactory,config:this._config,apduSenderServiceFactory:this._apduSenderServiceFactory,apduReceiverServiceFactory:this._apduReceiverServiceFactory});return this.addTransportInternal(e)}addTransportInternal(t){return this.getTransport(t.getIdentifier()).isJust()?(this._logger.warn(`Transport ${t.getIdentifier()} already exists, please check your configuration`),h(new Kr(`Transport ${t.getIdentifier()} already exists, please check your configuration`))):(this._transports.set(t.getIdentifier(),t),f(void 0))}getTransport(t){return L.fromNullable(this._transports.get(t))}getAllTransports(){return Array.from(this._transports.values())}closeConnection(t){this.getTransport(t.transport).map(e=>e.disconnect({connectedDevice:t}))}};mo=cd([g(),jt(0,m(J.TransportsInput)),jt(1,m(J.DmkConfig)),jt(2,m(E.LoggerPublisherServiceFactory)),jt(3,m(kn.DeviceModelDataSource)),jt(4,m(x.ApduSenderServiceFactory)),jt(5,m(x.ApduReceiverServiceFactory))],mo);var na=({stub:t=!1,transports:e=[],config:r}={})=>new F(({bind:n})=>{n(J.TransportsInput).toConstantValue(e),n(J.TransportService).to(mo).inSingletonScope(),n(J.DmkConfig).toConstantValue(r)});var oa=({stub:t=!1,transports:e=[],loggers:r=[],config:n={mockUrl:oo,managerApiUrl:no,webSocketUrl:po,provider:1,firmwareDistributionSalt:"0"}})=>{let o=new fr;return o.loadSync(Os({stub:t}),Rs({stub:t}),na({stub:t,transports:e,config:n}),Ys({stub:t,config:n}),ea({stub:t,config:n}),Ks({stub:t}),Xs({subscribers:r}),Vs({stub:t}),ra({stub:t}),bs({stub:t}),Ts({stub:t})),o};var Or=class{container;constructor({stub:e,transports:r,loggers:n,config:o}={}){this.container=oa({stub:e,transports:r,loggers:n,config:o})}getVersion(){return this.container.get(Se.GetDmkVersionUseCase).getDmkVersion()}startDiscovering(e){return this.container.get(O.StartDiscoveringUseCase).execute(e)}stopDiscovering(){return this.container.get(O.StopDiscoveringUseCase).execute()}listenToAvailableDevices(e){return this.container.get(O.ListenToAvailableDevicesUseCase).execute(e)}async reconnect(e){return this.container.get(O.ReconnectUseCase).execute(e)}connect(e){return this.container.get(O.ConnectUseCase).execute(e)}disconnect(e){return this.container.get(O.DisconnectUseCase).execute(e)}sendApdu(e){return this.container.get(xr.SendApduUseCase).execute(e)}sendCommand(e){return this.container.get(Er.SendCommandUseCase).execute(e)}executeDeviceAction(e){return this.container.get(wr.ExecuteDeviceActionUseCase).execute(e)}getConnectedDevice(e){return this.container.get(O.GetConnectedDeviceUseCase).execute(e)}getDeviceSessionState(e){return this.container.get(x.GetDeviceSessionStateUseCase).execute(e)}close(){return this.container.get(x.CloseSessionsUseCase).execute()}listConnectedDevices(){return this.container.get(O.ListConnectedDevicesUseCase).execute()}listenToConnectedDevice(){return this.container.get(O.ListenToConnectedDeviceUseCase).execute()}disableDeviceSessionRefresher(e){return this.container.get(x.DisableDeviceSessionRefresherUseCase).execute(e)}_unsafeBypassIntentQueue(e){return this.container.get(x.UnsafeBypassIntentQueueUseCase).execute(e)}setProvider(e){return this.container.get(ee.SetProviderUseCase).execute(e)}getProvider(){return this.container.get(ee.ManagerApiDataSource).getProvider()}isEnvironmentSupported(){return this.container.get(J.TransportService).getAllTransports().some(e=>e.isSupported())}getLoggerFactory(){return this.container.get(E.LoggerPublisherServiceFactory)}};var ri=class{stub=!1;loggers=[];transports=[];config={managerApiUrl:no,mockUrl:oo,webSocketUrl:po,provider:1,firmwareDistributionSalt:"0"};build(){return new Or({stub:this.stub,transports:this.transports,loggers:this.loggers,config:this.config})}setStub(e){return this.stub=e,this}addTransport(e){return this.transports.push(e),this}addLogger(e){return this.loggers.push(e),this}addConfig(e){return this.config={...this.config,...e},this}};var ni=class{maxLevel;constructor(e=X.Debug){this.maxLevel=e}log(e,r,n){let o=n.tag;switch(e){case X.Info:{this.maxLevel>=X.Info&&this.logWithData(o,console.info,r,n);break}case X.Warning:{this.maxLevel>=X.Warning&&this.logWithData(o,console.warn,r,n);break}case X.Debug:{this.maxLevel>=X.Debug&&this.logWithData(o,console.debug,r,n);break}case X.Error:{this.maxLevel>=X.Error&&this.logWithData(o,console.error,r,n);break}case X.Fatal:{this.maxLevel>=X.Fatal&&this.logWithData(o,console.error,r,n);break}default:this.logWithData(o,console.log,r,n)}}logWithData(e,r,n,o){o.data?r(e,n,o.data):r(e,n)}};function ud(){let t=[];return function(e,r){if(r instanceof Uint8Array){let n=Array.from(r).map(o=>o.toString(16).padStart(2,"0"));return{hex:"0x"+n.join(""),readableHex:n.join(" "),value:r.toString()}}if(r instanceof Ft){let{connectedDevice:{deviceModel:n,type:o,id:i}}=r;return{id:r.id,connectedDevice:{deviceModel:n,type:o,id:i}}}if(typeof r!="object"||r===null)return r;for(;t.length>0&&t.at(-1)!==this;)t.pop();return t.includes(r)?"[Circular]":(t.push(r),r)}}var oi=class{logs=[];log(e,r,n){this.logs.push([e,r,n])}formatLogsToJSON(){let e=this.logs.map(([r,n,o])=>{let{timestamp:i,...s}=o;return{level:X[r],message:n,options:{...s,date:new Date(o.timestamp)}}});return JSON.stringify(e,ud(),2)}exportLogsToJSON(){let e=this.formatLogsToJSON(),r=new Blob([e],{type:"application/json"}),n=URL.createObjectURL(r),o=document.createElement("a");o.href=n,o.download=`ledger-device-management-kit-logs-${new Date().toISOString()}.json`,o.click()}};ie();var dd=1e4,ii=class{deviceId;deviceAdpuSender;machineActor;timeoutDuration;timeout=null;previousSendApduPromise=null;startReconnectionTimeout(){this.timeout=setTimeout(()=>{this.machineActor.send({type:"ReconnectionTimedOut"})},this.timeoutDuration)}constructor(e){this.deviceId=e.deviceId,this.deviceAdpuSender=e.deviceApduSender,this.timeoutDuration=e.timeoutDuration,this.machineActor=Lr(pd({sendApduFn:(r,n,o)=>this.sendApduToDeviceConnection(r,n,o),startReconnectionTimeout:()=>this.startReconnectionTimeout(),cancelReconnectionTimeout:()=>{this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},tryToReconnect:()=>{e.tryToReconnect(this.timeoutDuration)},onTerminated:e.onTerminated,closeConnection:()=>{this.deviceAdpuSender.closeConnection()}})),this.machineActor.start()}sendApduToDeviceConnection(e,r,n){this.deviceAdpuSender.sendApdu(e,r,n).then(o=>{o.caseOf({Left:i=>{this.machineActor.send({type:"ApduSendingError",error:i})},Right:i=>{this.machineActor.send({type:"ApduResponseReceived",apduResponse:i})}})}).catch(o=>{this.machineActor.send({type:"ApduSendingError",error:new at(o)})})}getDependencies(){return this.deviceAdpuSender.getDependencies()}setDependencies(e){this.deviceAdpuSender.setDependencies(e)}getDeviceId(){return this.deviceId}async sendApdu(e,r,n){this.machineActor.getSnapshot().context.apduInProgress.isJust()&&await Promise.race([new Promise(i=>setTimeout(i,dd)),this.previousSendApduPromise]);let o=new Promise(i=>{this.machineActor.send({type:"SendApduCalled",apdu:e,triggersDisconnection:!!r,abortTimeout:n,responseCallback:i})});return this.previousSendApduPromise=o,o.finally(()=>{this.previousSendApduPromise===o&&(this.previousSendApduPromise=null)}),o}async setupConnection(){await this.deviceAdpuSender.setupConnection()}eventDeviceConnected(){this.machineActor.send({type:"DeviceConnected"})}eventDeviceDisconnected(){this.machineActor.send({type:"DeviceDisconnected"})}closeConnection(){this.machineActor.send({type:"CloseConnectionCalled"})}};function pd({sendApduFn:t,startReconnectionTimeout:e,cancelReconnectionTimeout:r,tryToReconnect:n,onTerminated:o,closeConnection:i}){return R({types:{},actions:{startTimer:()=>{e()},cancelTimer:()=>{r()},reconnectionTimeoutEvent:ai({type:"ReconnectionTimedOut"}),sendApdu:({context:s})=>{s.apduInProgress.map(({apdu:d,abortTimeout:c})=>{t(d,!1,c)})},sendApduResponse:({context:s},d)=>{s.apduInProgress.map(({responseCallback:c})=>c(d.response))},sendGetAppAndVersion:()=>{t(new Ae().getApdu().getRawApdu(),!1)},tryToReconnect:()=>{n()},clearApduInProgress:l({apduInProgress:C}),clearApduResponse:l({apduResponse:C}),signalTermination:()=>{o()},closeConnection:()=>{i()}},guards:{isApduThatTriggersDisconnection:({context:s,event:d})=>d.type!=="ApduResponseReceived"?!1:s.apduInProgress.caseOf({Just:({triggersDisconnection:c,apdu:u})=>(c||k.isApduThatTriggersDisconnection(u))&&k.isSuccessResponse(d.apduResponse),Nothing:()=>!1}),isSendApduBusyError:({event:s})=>s.type!=="ApduResponseReceived"?!1:s.apduResponse.statusCode[0]===102&&s.apduResponse.statusCode[1]===1}}).createMachine({id:"deviceConnection",initial:"Connected",context:{apduInProgress:C,apduResponse:C},states:{Connected:{on:{DeviceDisconnected:{target:"WaitingForReconnection"},SendApduCalled:{target:"SendingApdu",actions:l({apduInProgress:({event:s})=>L.of({apdu:s.apdu,triggersDisconnection:s.triggersDisconnection,abortTimeout:s.abortTimeout,responseCallback:s.responseCallback})})},CloseConnectionCalled:{target:"Terminated"}}},SendingApdu:{entry:"sendApdu",on:{ApduResponseReceived:[{guard:"isApduThatTriggersDisconnection",target:"WaitingForDisconnection",actions:[l({apduResponse:({event:s})=>L.of(s.apduResponse)})]},{target:"Connected",actions:[{type:"sendApduResponse",params:({event:s})=>({response:f(s.apduResponse)})},{type:"clearApduInProgress"}]}],ApduSendingError:{target:"Connected",actions:[{type:"sendApduResponse",params:({event:s})=>({response:h(s.error)})},"clearApduInProgress"]},DeviceDisconnected:{target:"WaitingForReconnection",actions:[{type:"sendApduResponse",params:{response:h(new Qe)}},"clearApduInProgress"]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:h(new Qe)}},"clearApduInProgress"]},SendApduCalled:{actions:({event:s})=>{s.responseCallback(h(new Ct))}}}},WaitingForDisconnection:{entry:["sendGetAppAndVersion"],exit:[{type:"sendApduResponse",params:({context:s})=>({response:s.apduResponse.caseOf({Just:d=>f(d),Nothing:()=>h(new at)})})},{type:"clearApduInProgress"},{type:"clearApduResponse"}],on:{ApduResponseReceived:[{guard:"isSendApduBusyError",actions:["sendGetAppAndVersion"],target:"WaitingForDisconnection"},{target:"Connected"}],ApduSendingError:[{target:"WaitingForReconnection"}],SendApduCalled:{actions:({event:s})=>{s.responseCallback(h(new Ct))}},DeviceDisconnected:{target:"WaitingForReconnection"},CloseConnectionCalled:{target:"Terminated"}}},WaitingForReconnection:{entry:["startTimer","tryToReconnect"],on:{DeviceConnected:{target:"Connected",actions:"cancelTimer"},SendApduCalled:{target:"WaitingForReconnectionWithQueuedSendApdu",actions:l({apduInProgress:({event:s})=>L.of({apdu:s.apdu,triggersDisconnection:s.triggersDisconnection,abortTimeout:s.abortTimeout,responseCallback:s.responseCallback})})},ReconnectionTimedOut:{target:"Terminated"},CloseConnectionCalled:{target:"Terminated"}}},WaitingForReconnectionWithQueuedSendApdu:{on:{DeviceConnected:{target:"SendingApdu",actions:"cancelTimer"},ReconnectionTimedOut:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:h(new Jr)}},{type:"clearApduInProgress"}]},CloseConnectionCalled:{target:"Terminated",actions:[{type:"sendApduResponse",params:{response:h(new Qe)}},"clearApduInProgress"]},SendApduCalled:{actions:({event:s})=>{s.responseCallback(h(new Ct))}}}},Terminated:{entry:["signalTermination","closeConnection"],type:"final"}}})}var Rr=class{id;deviceModel;sendApdu;type;transport;name;constructor({id:e,deviceModel:r,type:n,transport:o,sendApdu:i,name:s}){this.id=e,this.deviceModel=r,this.sendApdu=i,this.type=n,this.transport=o,this.name=s}};function ia(t={}){return{id:T.NANO_X,productName:"Ledger Nano X",usbProductId:64,bootloaderUsbProductId:4,usbOnly:!1,memorySize:2*1024*1024,getBlockSize:()=>4*1024,masks:[855638016],bluetoothSpec:[{serviceUuid:"13d63400-2c97-0004-0000-4c6564676572",notifyUuid:"13d63400-2c97-0004-0001-4c6564676572",writeUuid:"13d63400-2c97-0004-0002-4c6564676572",writeCmdUuid:"13d63400-2c97-0004-0003-4c6564676572"}],...t}}var sa=({statusCode:t=Uint8Array.from([144,0]),data:e=Uint8Array.from([])}={})=>new Dt({statusCode:t,data:e});function ld(t={}){let e=ia();return new Rr({deviceModel:e,id:"42",type:"MOCK",transport:"USB",sendApdu:vi.fn(async()=>Promise.resolve(f(sa()))),...t})}function aa(t){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t)}function md(t){if(t.length===0)return new Uint8Array;if(!aa(t))return null;try{let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}catch{return Uint8Array.from(Buffer.from(t,"base64"))}}export{Gt as a,ua as b,ot as c,se as d,Et as e,it as f,qt as g,Ht as h,$t as i,H as j,zt as k,j as l,ye as m,Wt as n,ui as o,y as p,I as q,k as r,he as s,at as t,di as u,De as v,Fr as w,go as x,Y as y,ct as z,Ae as A,Vr as B,Kt as C,li as D,fo as E,T as F,ut as G,la as H,ue as I,Jt as J,yo as K,Xt as L,de as M,dt as N,S as O,L as P,q as Q,C as R,h as S,f as T,_ as U,te as V,lt as W,Ke as X,Je as Y,xt as Z,tr as _,mt as $,z as aa,N as ba,Ei as ca,Ao as da,U as ea,w as fa,ht as ga,W as ha,wi as ia,Ci as ja,bi as ka,Ii as la,Ti as ma,Xe as na,Ui as oa,zr as pa,Wr as qa,Oi as ra,Ri as sa,ki as ta,Li as ua,Mi as va,Kr as wa,Qe as xa,Ct as ya,Jr as za,Xr as Aa,Le as Ba,_o as Ca,re as Da,gt as Ea,Q as Fa,ft as Ga,rr as Ha,wo as Ia,Co as Ja,bo as Ka,m as La,g as Ma,F as Na,fr as Oa,vr as Pa,Oe as Qa,Re as Ra,Dt as Sa,Es as Ta,je as Ua,Sr as Va,rt as Wa,yr as Xa,qo as Ya,At as Za,$o as _a,Ho as $a,Ie as ab,ac as bb,lc as cb,su as db,Xo as eb,qe as fb,X as gb,Ir as hb,Or as ib,ri as jb,ni as kb,oi as lb,ii as mb,Rr as nb,ld as ob,aa as pb,md as qb};