@swapkit/wallet-hardware 6.1.1 → 6.3.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.
Files changed (112) hide show
  1. package/dist/THIRD_PARTY_LICENSES.md +4 -4
  2. package/dist/{chunk-jzrytcrf.js → chunk-0k1b2ddn.js} +3 -3
  3. package/dist/{chunk-jzrytcrf.js.map → chunk-0k1b2ddn.js.map} +2 -2
  4. package/dist/{chunk-jewm2ag3.js → chunk-2tzsz8f3.js} +4 -4
  5. package/dist/{chunk-jewm2ag3.js.map → chunk-2tzsz8f3.js.map} +1 -1
  6. package/dist/{chunk-yrxe491r.js → chunk-410fpx61.js} +4 -4
  7. package/dist/{chunk-yrxe491r.js.map → chunk-410fpx61.js.map} +1 -1
  8. package/dist/chunk-8mkdjmw2.js +4 -0
  9. package/dist/chunk-8mkdjmw2.js.map +10 -0
  10. package/dist/{chunk-xmvg4cds.js → chunk-96p7njae.js} +3 -3
  11. package/dist/{chunk-xmvg4cds.js.map → chunk-96p7njae.js.map} +2 -2
  12. package/dist/chunk-97nsp4z6.js +5 -0
  13. package/dist/chunk-97nsp4z6.js.map +10 -0
  14. package/dist/{chunk-nhva847d.js → chunk-9a9gn4pb.js} +3 -3
  15. package/dist/{chunk-5p3ttw6y.js.map → chunk-9a9gn4pb.js.map} +1 -1
  16. package/dist/chunk-a39rm9nv.js +4 -0
  17. package/dist/{chunk-gr3eswf1.js.map → chunk-a39rm9nv.js.map} +5 -5
  18. package/dist/chunk-c8mwf9cn.js +4 -0
  19. package/dist/{chunk-k3thje6a.js.map → chunk-c8mwf9cn.js.map} +1 -1
  20. package/dist/{chunk-ds2m83jp.js → chunk-dhhmywmb.js} +4 -4
  21. package/dist/{chunk-ds2m83jp.js.map → chunk-dhhmywmb.js.map} +1 -1
  22. package/dist/{chunk-eenx3cv6.js → chunk-dsa641rq.js} +3 -3
  23. package/dist/{chunk-eenx3cv6.js.map → chunk-dsa641rq.js.map} +2 -2
  24. package/dist/{chunk-0arpsm5f.js → chunk-grj9nvte.js} +3 -3
  25. package/dist/{chunk-0arpsm5f.js.map → chunk-grj9nvte.js.map} +1 -1
  26. package/dist/{chunk-hg71hp4m.js → chunk-napm4102.js} +3 -3
  27. package/dist/{chunk-hg71hp4m.js.map → chunk-napm4102.js.map} +1 -1
  28. package/dist/{chunk-k3thje6a.js → chunk-nb08g045.js} +3 -3
  29. package/dist/{chunk-nhva847d.js.map → chunk-nb08g045.js.map} +1 -1
  30. package/dist/chunk-npe2r2ge.js +4 -0
  31. package/dist/{chunk-xx7cwpzq.js.map → chunk-npe2r2ge.js.map} +1 -1
  32. package/dist/chunk-p9mwkgye.js +4 -0
  33. package/dist/{chunk-09e51wma.js.map → chunk-p9mwkgye.js.map} +14 -12
  34. package/dist/{chunk-wfbg89d3.js → chunk-qjp8j8e5.js} +3 -3
  35. package/dist/{chunk-wfbg89d3.js.map → chunk-qjp8j8e5.js.map} +1 -1
  36. package/dist/{chunk-xn0fnag5.js → chunk-r1fk1sx9.js} +3 -3
  37. package/dist/{chunk-xn0fnag5.js.map → chunk-r1fk1sx9.js.map} +1 -1
  38. package/dist/{chunk-1amf58aq.js → chunk-ta7bqmy3.js} +3 -3
  39. package/dist/{chunk-1amf58aq.js.map → chunk-ta7bqmy3.js.map} +1 -1
  40. package/dist/{chunk-3t17wpjg.js → chunk-tgvgr630.js} +3 -3
  41. package/dist/{chunk-3t17wpjg.js.map → chunk-tgvgr630.js.map} +2 -2
  42. package/dist/chunk-v8x9ptxs.js +4 -0
  43. package/dist/chunk-v8x9ptxs.js.map +10 -0
  44. package/dist/{chunk-dptbnkzm.js → chunk-wm89desc.js} +20 -20
  45. package/dist/{chunk-dptbnkzm.js.map → chunk-wm89desc.js.map} +12 -10
  46. package/dist/{chunk-5c7b7z2d.js → chunk-wtyhjt5e.js} +3 -3
  47. package/dist/{chunk-5c7b7z2d.js.map → chunk-wtyhjt5e.js.map} +1 -1
  48. package/dist/{chunk-tm47brht.js → chunk-xskdbz15.js} +3 -3
  49. package/dist/{chunk-tm47brht.js.map → chunk-xskdbz15.js.map} +2 -2
  50. package/dist/{chunk-8m2sn76p.js → chunk-ytjqb1sd.js} +3 -3
  51. package/dist/{chunk-8m2sn76p.js.map → chunk-ytjqb1sd.js.map} +1 -1
  52. package/dist/{chunk-3h1f3hyp.js → chunk-zbesf7sy.js} +3 -3
  53. package/dist/{chunk-3h1f3hyp.js.map → chunk-zbesf7sy.js.map} +1 -1
  54. package/dist/keepkey/index.cjs +2 -2
  55. package/dist/keepkey/index.cjs.map +3 -3
  56. package/dist/keepkey/index.js +2 -2
  57. package/dist/keepkey/index.js.map +3 -3
  58. package/dist/ledger/index.cjs +30 -30
  59. package/dist/ledger/index.cjs.map +35 -27
  60. package/dist/ledger/index.js +2 -2
  61. package/dist/ledger/index.js.map +11 -8
  62. package/dist/trezor/index.cjs +2 -2
  63. package/dist/trezor/index.cjs.map +7 -5
  64. package/dist/trezor/index.js +2 -2
  65. package/dist/trezor/index.js.map +3 -3
  66. package/dist/types/helpers/cardano.d.ts +35 -0
  67. package/dist/types/helpers/cardano.d.ts.map +1 -0
  68. package/dist/types/keepkey/index.d.ts +1 -0
  69. package/dist/types/keepkey/index.d.ts.map +1 -1
  70. package/dist/types/ledger/clients/cardano.d.ts +24 -0
  71. package/dist/types/ledger/clients/cardano.d.ts.map +1 -0
  72. package/dist/types/ledger/clients/evm.d.ts +1 -0
  73. package/dist/types/ledger/clients/evm.d.ts.map +1 -1
  74. package/dist/types/ledger/clients/stellar.d.ts +13 -0
  75. package/dist/types/ledger/clients/stellar.d.ts.map +1 -0
  76. package/dist/types/ledger/clients/ton.d.ts +13 -0
  77. package/dist/types/ledger/clients/ton.d.ts.map +1 -0
  78. package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
  79. package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -1
  80. package/dist/types/ledger/helpers/getLedgerClient.d.ts +8 -1
  81. package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -1
  82. package/dist/types/ledger/index.d.ts +3 -2
  83. package/dist/types/ledger/index.d.ts.map +1 -1
  84. package/dist/types/ledger/types.d.ts +2 -2
  85. package/dist/types/ledger/types.d.ts.map +1 -1
  86. package/dist/types/trezor/cardanoSigner.d.ts.map +1 -1
  87. package/dist/types/trezor/hypercoreSigner.d.ts +22 -0
  88. package/dist/types/trezor/hypercoreSigner.d.ts.map +1 -0
  89. package/dist/types/trezor/index.d.ts +3 -2
  90. package/dist/types/trezor/index.d.ts.map +1 -1
  91. package/dist/types/trezor/stellarSigner.d.ts +1 -1
  92. package/package.json +25 -13
  93. package/src/helpers/cardano.ts +112 -0
  94. package/src/keepkey/index.ts +14 -14
  95. package/src/ledger/clients/cardano.ts +204 -0
  96. package/src/ledger/clients/evm.ts +4 -0
  97. package/src/ledger/clients/stellar.ts +83 -0
  98. package/src/ledger/clients/ton.ts +282 -0
  99. package/src/ledger/clients/zcash.ts +16 -6
  100. package/src/ledger/helpers/getLedgerAddress.ts +16 -0
  101. package/src/ledger/helpers/getLedgerClient.ts +13 -0
  102. package/src/ledger/index.ts +102 -30
  103. package/src/ledger/types.ts +2 -0
  104. package/src/trezor/cardanoSigner.ts +24 -80
  105. package/src/trezor/hypercoreSigner.ts +96 -0
  106. package/src/trezor/index.ts +153 -75
  107. package/dist/chunk-09e51wma.js +0 -4
  108. package/dist/chunk-5p3ttw6y.js +0 -4
  109. package/dist/chunk-gr3eswf1.js +0 -4
  110. package/dist/chunk-qjq7gvyx.js +0 -4
  111. package/dist/chunk-qjq7gvyx.js.map +0 -10
  112. package/dist/chunk-xx7cwpzq.js +0 -4
@@ -1,4 +1,4 @@
1
- import{I as Z5,J as ZZ,c as W,e as KQ,h as FQ,ha as N6,ka as B6,la as V4,ma as F4,n as V5,pa as N4,ua as D4,va as mZ,wa as gQ,xa as PZ}from"./chunk-09e51wma.js";import"./chunk-yrxe491r.js";import{Ba as x,Ca as $Q,Da as B4}from"./chunk-jzrytcrf.js";import{$a as a,$b as O,Ab as n5,Eb as sQ,Ib as D,Jb as _,Kb as k,La as t5,Lb as j,Lc as zQ,Mc as LQ,Na as _5,Nb as L,Nc as r5,Oa as s,Ob as T,Pa as WQ,Sd as p,Ta as v,Ua as HQ,Va as B,Wa as Z6,Xa as U,Ya as N,Zb as cZ,_b as R,ab as c5,ac as r,bb as z,cb as V,eb as MZ,hc as m,jd as M,kd as f,ld as ZQ,mc as t,md as V6,oc as eQ,pc as MQ,ub as R6,vb as E}from"./chunk-dptbnkzm.js";import{Wd as j4}from"./chunk-nhva847d.js";var f2=j4(t5(),1);var y="Ethereum",z5=10;var b={6001:{message:"Mode check fail"},6501:{message:"TransactionType not supported"},6502:{message:"Output buffer too small for chainId conversion"},6800:{message:"Internal error (Please report)"},6982:{message:"Security status not satisfied (Canceled by user)"},6983:{message:"Wrong Data length"},6984:{message:"Plugin not installed"},6985:{message:"Condition not satisfied"},"6a00":{message:"Error without info"},"6a80":{message:"Invalid data"},"6a84":{message:"Insufficient memory"},"6a88":{message:"Data not found"},"6b00":{message:"Incorrect parameter P1 or P2"},"6d00":{message:"Incorrect parameter INS"},"6e00":{message:"Incorrect parameter CLA"},"6f00":{message:"Technical problem (Internal error, please report)"},"911c":{message:"Command code not supported (i.e., Ledger-PKI not yet available)"}};class O5 extends MZ{constructor(Q){super({tag:"EthAppCommandError",...Q})}}var I=(Q)=>new O5(Q);var G5=32;class TQ{name="getAddress";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let Q={cla:224,ins:2,p1:this.args.checkOnDevice?1:0,p2:this.args.returnChainCode?1:0},Z=new B(Q),J=this.args.derivationPath,X=$Q.splitPath(J);if(Z.add8BitUIntToData(X.length),X.forEach((Y)=>{Z.add32BitUIntToData(Y)}),this.args.checkOnDevice){let Y=this.args.chainId??1;Z.add64BitUIntToData(Y)}return Z.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("Public key length is missing")});if(Z.testMinimalLength(J)===!1)return z({error:new N("Public key is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(J)),Y=Z.extract8BitUInt();if(Y===void 0)return z({error:new N("Ethereum address length is missing")});if(Z.testMinimalLength(Y)===!1)return z({error:new N("Ethereum address is missing")});let $=`0x${Z.encodeToString(Z.extractFieldByLength(Y))}`;if(_5($)===!1)return z({error:new N("Invalid Ethereum address")});let H;if(this.args.returnChainCode){if(Z.testMinimalLength(G5)===!1)return z({error:new N("Invalid Chaincode")});H=Z.encodeToHexaString(Z.extractFieldByLength(G5))}return z({data:{publicKey:X,address:$,chainCode:H}})})}}class $4{constructor(Q){this.args=Q}name="provideEnum";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:36,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class $Z{constructor(Q){this.args=Q}name="provideGatedSigning";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:56,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var CQ=((Q)=>(Q[Q.CONFIGURATION=0]="CONFIGURATION",Q[Q.ICON=1]="ICON",Q))(CQ||{});class EQ{constructor(Q){this.args=Q}name="provideNetworkConfiguration";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:48,p1:this.args.isFirstChunk?1:0,p2:this.args.configurationType};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class H4{constructor(Q){this.args=Q}name="provideNFTInformation";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:20,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class HZ{constructor(Q){this.args=Q}name="provideProxyInfo";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:42,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var SZ=((Q)=>(Q[Q.SAFE_DESCRIPTOR=0]="SAFE_DESCRIPTOR",Q[Q.SIGNER_DESCRIPTOR=1]="SIGNER_DESCRIPTOR",Q))(SZ||{});class kZ{constructor(Q){this.args=Q}name="provideSafeAccount";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:54,p1:this.args.isFirstChunk?1:0,p2:this.args.type};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class KZ{constructor(Q){this.args=Q}name="provideTokenInformation";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:10,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q).extract8BitUInt()??0;return z({data:{tokenIndex:Z}})})}}class K4{constructor(Q){this.args=Q}name="provideTransactionFieldDescription";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:40,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class W4{constructor(Q){this.args=Q}name="provideTransactionInformation";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:38,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class WZ{constructor(Q){this.args=Q}name="provideTrustedName";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:34,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class wZ{constructor(Q){this.args=Q}name="provideWeb3Check";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:50,p1:0,p2:this.args.isFirstChunk?1:0};return new B(Q).addBufferToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class w4{constructor(Q){this.args=Q}name="setExternalPlugin";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:18,p1:0,p2:0}).addHexaStringToData(this.args.payload).addHexaStringToData(this.args.signature??"").build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class z4{constructor(Q){this.args=Q}name="setPlugin";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:22,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class O4{static PAYLOAD_LENGTH_BYTES=2;static getBufferFromPayload(Q){let Z=s(Q);return Z===null||Z.length===0?null:new v(Z.length+this.PAYLOAD_LENGTH_BYTES).add16BitUIntToData(Z.length).addBufferToData(Z).build()}}class xQ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let{data:Q,commandFactory:Z}=this.args,J=new v(Q.length).addBufferToData(Q).build();for(let X=0;X<J.length;X+=HQ){let Y=X+HQ>=J.length,$=await this.api.sendCommand(Z({chunkedData:J.slice(X,X+HQ),isFirstChunk:X===0}));if(!V($))return $;if(Y)return z({data:$.data})}throw new N("No result")}}class VQ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let{payload:Q,withPayloadLength:Z=!0}=this.args,J=null;return Z?J=O4.getBufferFromPayload(Q):J=s(Q),J?new xQ(this.api,{data:J,commandFactory:this.args.commandFactory}).run():z({error:new N("Invalid payload")})}}class yQ{constructor(Q,Z,J=(X,Y)=>new VQ(X,Y)){this._api=Q,this._args=Z,this._sendPayloadInChunksTaskFactory=J,this._logger=Z.loggerFactory("ProvideContextTask")}_logger;async run(){let{type:Q,payload:Z,certificate:J}=this._args.context;switch(this._logger.debug("[run] Providing context",{data:{type:Q,payloadLength:typeof Z=="string"?Z.length:void 0,hasCertificate:!!J}}),J&&await this._api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload})),Q){case W.ETHEREUM_PLUGIN:return await this._api.sendCommand(new z4({payload:Z}));case W.ETHEREUM_EXTERNAL_PLUGIN:return await this._api.sendCommand(new w4({payload:Z}));case W.ETHEREUM_NFT:return await this._api.sendCommand(new H4({payload:Z}));case W.ETHEREUM_TOKEN:return await this._api.sendCommand(new KZ({payload:Z}));case W.ETHEREUM_TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new W4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new WZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new $4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new K4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRANSACTION_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new wZ({payload:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_PROXY_INFO:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new HZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.CONFIGURATION})}).run();case W.ETHEREUM_DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.ICON}),withPayloadLength:!1}).run();case W.ETHEREUM_SAFE:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new kZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,type:SZ.SAFE_DESCRIPTOR})}).run();case W.ETHEREUM_SIGNER:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new kZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,type:SZ.SIGNER_DESCRIPTOR})}).run();case W.ETHEREUM_GATED_SIGNING:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new $Z({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();default:return z({error:new N(`The context type [${Q}] is not covered`)})}}}class zZ{constructor(Q,Z){this._api=Q,this._args=Z,this._logger=Z.loggerFactory("SendGetAddressTask")}_logger;async run(){let{contextModule:Q,derivationPath:Z,checkOnDevice:J,returnChainCode:X,chainId:Y}=this._args,$=J&&Y!==void 0?Y:void 0;if($!==void 0){let H=this._api.getDeviceModel().id,w={chainId:$,deviceModelId:H};this._logger.debug("[run] Loading dynamic network context",{data:{chainId:$,deviceModelId:H}});let F=(await Q.getContexts(w,V5)).filter(FQ);for(let K of F){let G=await new yQ(this._api,{context:K,loggerFactory:this._args.loggerFactory}).run();V(G)||this._logger.debug("[run] Ignoring context provision error, continuing to getAddress",{data:{contextType:K.type,error:G.error}})}}return this._api.sendCommand(new TQ({derivationPath:Z,checkOnDevice:J,returnChainCode:X,...$!==void 0&&{chainId:$}}))}}var D6=(Q)=>new LQ({input:{task:async(Z)=>new zZ(Z,{contextModule:Q.contextModule,derivationPath:Q.derivationPath,checkOnDevice:Q.checkOnDevice,returnChainCode:Q.returnChainCode,chainId:Q.chainId,loggerFactory:Q.loggerFactory}).run(),appName:y,requiredUserInteraction:Q.checkOnDevice?D.VerifyAddress:D.None,skipOpenApp:Q.skipOpenApp}});var x6=32,P6=32;class G4{name="signPersonalMessage";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let{data:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:8,p1:Z?0:128,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(x6),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(P6),!0);return Y?z({data:k({r:X,s:Y,v:J})}):z({error:new N("S is missing")})})}}var b6=4;class OZ{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.logger}_logger;async run(){let{derivationPath:Q,message:Z}=this.args;this._logger.debug("[run] Starting SendSignPersonalMessageTask",{data:{derivationPath:Q,messageLength:Z.length,messageType:typeof Z=="string"?"string":"Uint8Array"}});let J=$Q.splitPath(Q),X=new v(Z.length+1+(J.length+1)*b6);X.add8BitUIntToData(J.length),J.forEach((H)=>{X.add32BitUIntToData(H)}),X.add32BitUIntToData(Z.length),typeof Z=="string"?X.addAsciiStringToData(Z):X.addBufferToData(Z);let Y=X.build();this._logger.debug("[run] Sending message in chunks",{data:{bufferLength:Y.length}});let $=await new xQ(this.api,{data:Y,commandFactory:(H)=>new G4({data:H.chunkedData,isFirstChunk:H.isFirstChunk})}).run();return V($)?(this._logger.debug("[run] Personal message signed successfully"),$.data.mapOrDefault((H)=>z({data:H}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to sign personal message",{data:{error:$.error}}),$)}}var I6=(Q)=>{let Z=Q.loggerFactory("SendSignPersonalMessageTask");return new LQ({input:{task:async(J)=>new OZ(J,{derivationPath:Q.derivationPath,message:Q.message,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignPersonalMessage,skipOpenApp:Q.skipOpenApp}})};var o=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.GET_APP_CONFIG="signer.eth.steps.getAppConfig",Q.GET_ADDRESS="signer.eth.steps.getAddress",Q.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",Q.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",Q.PARSE_TRANSACTION="signer.eth.steps.parseTransaction",Q.BUILD_CONTEXTS="signer.eth.steps.buildContexts",Q.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",Q.SIGN_TRANSACTION="signer.eth.steps.signTransaction",Q.BLIND_SIGN_TRANSACTION_FALLBACK="signer.eth.steps.blindSignTransactionFallback",Q.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",Q))(o||{});var JQ=((Q)=>(Q.BASIC="basic",Q.EIP7730="eip7730",Q))(JQ||{});var UZ=Object.freeze({contactGroups:Object.freeze([]),ledgerAccounts:Object.freeze([])});class GZ{name="getAppConfiguration";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:6,p1:0,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("Cannot extract config flags")});let X=Z.extract8BitUInt(),Y=Z.extract8BitUInt(),$=Z.extract8BitUInt();if(X===void 0||Y===void 0||$===void 0)return z({error:new N("Cannot extract version")});let H=!!(J&1),w=!!(J&16),F=!!(J&32),K={blindSigningEnabled:H,web3ChecksEnabled:w,web3ChecksOptIn:F,version:`${X}.${Y}.${$}`};return z({data:K})})}}class _Z{name="web3CheckOptIn";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:50,p1:1,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q).extract8BitUInt();return Z===void 0?z({data:{enabled:!1}}):z({data:{enabled:Z!==0}})})}}var _4="0.0.1";class i{resolve(Q,Z){if(Q.sessionStateType===MQ.Connected)return{isCompatible:!1,version:_4};let J=Q.currentApp,X=J?.name;return X?X==="Exchange"?{isCompatible:!1,version:_4}:{isCompatible:!0,version:X===y?J.version:Z.version}:{isCompatible:!1,version:_4}}}var j6=new Set([W.ETHEREUM_TRANSACTION_CHECK,W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON,W.ETHEREUM_GATED_SIGNING]);function q6(Q){return Q.usedFallback||Q.contextTypes&&Q.hasContext&&Q.contextTypes.length>0&&!Q.contextTypes.some((Z)=>!j6.has(Z))?!0:!Q.hasContext}function F5(Q){return Q.usedFallback?F4.DEVICE_REJECTED_CONTEXT:F4.NO_CLEAR_SIGNING_CONTEXT}function L6(Q,Z){let J=Q.type==="transaction"?V4.ETH_SIGN_TRANSACTION:V4.ETH_SIGN_TYPED_DATA;return{signatureId:B4(),signingMethod:J,isBlindSign:Z,chainId:Q.chainId,targetAddress:Q.targetAddress,blindSignReason:Z?F5(Q):null,modelId:D4(Q.deviceModelId),signerAppVersion:Q.signerAppVersion,deviceVersion:Q.deviceVersion,ethContext:Q.clearSigningType!==null?{clearSigningType:Q.clearSigningType,partialContextErrors:Q.partialContextErrors}:null}}function M6(Q,Z){let J=Q.type==="transaction"?N4.ETH_SIGN_TRANSACTION:N4.ETH_SIGN_TYPED_DATA;return{chain:"ETH",signatureId:B4(),signingMethod:J,isBlindSign:Z,chainId:Q.chainId,targetAddress:Q.targetAddress,blindSignReason:Z?F5(Q):null,modelId:D4(Q.deviceModelId),signerAppVersion:Q.signerAppVersion,deviceVersion:Q.deviceVersion,...Q.type==="transaction"&&Q.selectorId!==null&&{selectorId:Q.selectorId},...Q.clearSigningType!==null&&{clearSigningType:Q.clearSigningType,partialContextErrors:Q.partialContextErrors}}}class VZ{constructor(Q){this._args=Q,this._logger=Q.loggerFactory("BlindSigningDetectionTask")}_logger;async run(){let{input:Q,contextModule:Z}=this._args,J=q6(Q);this._logger.debug("[run] Blind signing detection result",{data:{isBlindSign:J,type:Q.type}});try{let X=L6(Q,J);await Z.report(X)}catch(X){this._logger.error("[run] Failed to report blind signing event",{data:{error:X}})}try{let X=M6(Q,J);await Z.signReport?.(X)}catch(X){this._logger.error("[run] Failed to report signing event",{data:{error:X}})}return{isBlindSign:J}}}var N5=4;class XQ{name="getChallenge";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:32,p1:0,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q);if(Z.testMinimalLength(N5)===!1)return z({error:new N("Challenge key is missing")});let J=Z.encodeToHexaString(Z.extractFieldByLength(N5));return z({data:{challenge:J}})})}}var RZ="1.22.0",B5="1.14.0",fZ="1.15.0";var S6=[W.ETHEREUM_TRUSTED_NAME,W.ETHEREUM_TRANSACTION_INFO,W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION,W.ETHEREUM_ENUM,W.ETHEREUM_PROXY_INFO],k6=[W.ETHEREUM_TRANSACTION_INFO,W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION,W.ETHEREUM_PROXY_INFO,W.ETHEREUM_TRANSACTION_CHECK,W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON,W.ETHEREUM_ENUM,W.ETHEREUM_TRUSTED_NAME,W.ETHEREUM_TOKEN,W.ETHEREUM_NFT,W.ETHEREUM_PLUGIN,W.ETHEREUM_EXTERNAL_PLUGIN,W.ETHEREUM_GATED_SIGNING];class x4{constructor(Q,Z){this._api=Q,this._args=Z}async run(){let{contextModule:Q,appConfig:Z,transaction:J,subset:X}=this._args,Y=J===void 0,$=!Y&&Z.web3ChecksEnabled,H=this._api.getDeviceSessionState(),w;if(H.deviceModelId!==E.NANO_S){let q=await this._api.sendCommand(new XQ);V(q)&&(w=q.data.challenge)}let F=await Q.getContexts({challenge:w,deviceModelId:H.deviceModelId,transaction:$?J:void 0,...X},Y?S6:k6),K=F.filter((q)=>q.type===W.ERROR).length,G=F.filter((q)=>q.type!==W.ERROR).filter(FQ),S=new p(H,Z,new i).withMinVersionInclusive(RZ).excludeDeviceModel(E.NANO_S).check()?G:G.filter((q)=>q.type!==W.ETHEREUM_GATED_SIGNING);return this._supportsGenericParser(H,Z)&&this._hasValidTransactionInfo(S)?this._getERC7730Contexts(S,K):this._getBasicContexts(S,K)}_getERC7730Contexts(Q,Z){let J=Q.filter((Y)=>this._isContextNeededForERC7730ClearSigning(Y)).sort((Y,$)=>this._getContextPriority(Y)-this._getContextPriority($)),X=Q.filter((Y)=>Y.type===W.ETHEREUM_ENUM);return{clearSignContexts:J,clearSignContextsOptional:X,clearSigningType:JQ.EIP7730,contextErrorCount:Z}}_getBasicContexts(Q,Z){return{clearSignContexts:Q.filter((J)=>this._isContextNeededForBasicClearSigning(J)).sort((J,X)=>this._getContextPriority(J)-this._getContextPriority(X)),clearSignContextsOptional:[],clearSigningType:JQ.BASIC,contextErrorCount:Z}}_isContextNeededForBasicClearSigning({type:Q}){switch(Q){case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_GATED_SIGNING:case W.ETHEREUM_PROXY_INFO:return!0;case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_ENUM:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return!1;default:throw Error(`Unhandled context type ${String(Q)}`)}}_isContextNeededForERC7730ClearSigning({type:Q}){switch(Q){case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_PROXY_INFO:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_GATED_SIGNING:return!0;case W.ETHEREUM_ENUM:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return!1;default:throw Error(`Unhandled context type ${String(Q)}`)}}_hasValidTransactionInfo(Q){return Q.find((Z)=>Z.type===W.ETHEREUM_TRANSACTION_INFO)?.certificate!==void 0}_supportsGenericParser(Q,Z){return new p(Q,Z,new i).withMinVersionExclusive(B5).excludeDeviceModel(E.NANO_S).check()}_getContextPriority({type:Q}){switch(Q){case W.ETHEREUM_PROXY_INFO:return 5;case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_GATED_SIGNING:return 10;case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:return 30;case W.ETHEREUM_TRANSACTION_INFO:return 50;case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_ENUM:return 70;case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return 90;default:throw Error(`Unhandled context type for priority: ${String(Q)}`)}}}class P4{constructor(Q,Z){this.api=Q,this.args=Z}run(){let Q=this.args.context,Z=Q.type;switch(Z){case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_ENUM:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:case W.ETHEREUM_GATED_SIGNING:return{subcontextCallbacks:[]};case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:return{subcontextCallbacks:Q.reference?this._getSubcontextsFromReference(Q.reference):[]};case W.ETHEREUM_PROXY_INFO:return{subcontextCallbacks:this._getSubcontextFromProxy(Q)};case W.ETHEREUM_TRUSTED_NAME:return{subcontextCallbacks:this._getSubcontextFromTrustedName(Q)};default:throw Error(`Uncovered type: ${Z}`)}}_getSubcontextsFromReference(Q){let Z=Q.type;switch(Z){case KQ.TOKEN:case KQ.NFT:return this._getSubcontextsFromTokenOrNftReference(Q);case KQ.ENUM:return this._getSubcontextsFromEnumReference(Q);case KQ.TRUSTED_NAME:return this._getSubcontextsFromTrustedNameReference(Q);case KQ.CALLDATA:return[];default:throw Error(`Uncovered reference type: ${Z}`)}}_getSubcontextsFromTokenOrNftReference(Q){if(Q.value!==void 0){let J={chainId:this.args.subset.chainId,address:Q.value,deviceModelId:this.args.deviceModelId},X=Q.type===KQ.TOKEN?W.ETHEREUM_TOKEN:W.ETHEREUM_NFT;return[()=>this.args.contextModule.getFieldContext(J,X)]}let Z=[];if(Q.valuePath!==void 0){let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J){let Y=WQ(X.slice(Math.max(0,X.length-20))),$=Q.type===KQ.TOKEN?W.ETHEREUM_TOKEN:W.ETHEREUM_NFT;Z.push(()=>this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:Y,deviceModelId:this.args.deviceModelId},$))}}return Z}_getSubcontextsFromEnumReference(Q){let Z=[];if(!Q.valuePath)return Z;let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J){let Y=X[X.length-1];if(Y===void 0)continue;let $=this.args.contextOptional.filter((H)=>H.type===W.ETHEREUM_ENUM).find((H)=>H.value===Y&&H.id===Q.id);$&&Z.push(()=>Promise.resolve($))}return Z}_getSubcontextsFromTrustedNameReference(Q){let Z=[];if(!Q.valuePath)return Z;let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J)Z.push(async()=>{let Y=WQ(X.slice(Math.max(0,X.length-20))),$=await this.api.sendCommand(new XQ);return V($)?await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:Y,challenge:$.data.challenge,types:Q.types,sources:Q.sources,deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME):{type:W.ERROR,error:Error("Failed to get challenge")}});return Z}_getSubcontextFromTrustedName(Q){return[async()=>{let Z=await this.api.sendCommand(new XQ);return V(Z)?await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:this.args.subset.to,challenge:Z.data.challenge,types:["eoa"],sources:["ens"],deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME):{type:W.ERROR,error:Error("Failed to get challenge")}}]}_getSubcontextFromProxy(Q){return[async()=>{let Z=await this.api.sendCommand(new XQ);return V(Z)?this.args.subset.to===void 0?{type:W.ERROR,error:Error("Failed to get proxy address")}:await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,proxyAddress:this.args.subset.to,calldata:this.args.subset.data,deviceModelId:this.args.deviceModelId,challenge:Z.data.challenge},W.ETHEREUM_PROXY_INFO):{type:W.ERROR,error:Error("Failed to get challenge")}}]}}var U6=10;class b4{constructor(Q){this._args=Q}run(){let{parser:Q,subset:Z,context:J}=this._args,X=[];if(!J.reference||J.reference.type!==KQ.CALLDATA||!J.reference.valuePath)throw Error("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.");let{valuePath:Y}=J.reference,$=Q.extractValue(Z,Y).unsafeCoerce(),H=Q.extractValue(Z,J.reference.callee).unsafeCoerce(),w=J.reference.selector?Q.extractValue(Z,J.reference.selector).orDefault([]):[],F=J.reference.chainId?Q.extractValue(Z,J.reference.chainId).orDefault([]):[];for(let K=0;K<$.length;K++){let G=$[K],S=F[K],q=H[K]?.slice(Math.max(0,H[K].length-20)),d=w[K],GQ={data:G?WQ(G):"0x",chainId:S?Number(S):Z.chainId,to:q?WQ(q):Z.to,selector:d?WQ(d):G?WQ(G).slice(0,U6):"0x"};X.push(GQ)}return{subsets:X}}}class iQ{constructor(Q,Z,J=($,H)=>new P4($,H),X=($,H)=>new x4($,H),Y=($)=>new b4($)){this._api=Q,this._args=Z,this._buildSubcontextsTaskFactory=J,this._buildBaseContextsTaskFactory=X,this._preBuildNestedCallDataTaskFactory=Y,this._logger=Z.loggerFactory("BuildFullContextsTask")}_logger;async run(){this._logger.debug("[run] Starting BuildFullContextsTask");let{clearSignContexts:Q,clearSigningType:Z,clearSignContextsOptional:J,contextErrorCount:X}=await this._buildBaseContextsTaskFactory(this._api,this._args).run();this._logger.debug("[run] Base contexts built",{data:{clearSigningType:Z,contextTypes:Q.map((H)=>H.type)}});let Y=Q.map((H)=>{let{subcontextCallbacks:w}=this._buildSubcontextsTaskFactory(this._api,{context:H,contextOptional:J,contextModule:this._args.contextModule,subset:this._args.subset,transactionParser:this._args.parser,deviceModelId:this._args.deviceModelId}).run();return{context:H,subcontextCallbacks:w}}),$=[];for(let H of Y)if($.push(H),H.context.type===W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION&&H.context.reference?.type===KQ.CALLDATA){let{subsets:w}=this._preBuildNestedCallDataTaskFactory({parser:this._args.parser,subset:this._args.subset,context:H.context}).run();for(let F of w){let{clearSignContexts:K}=await new iQ(this._api,{...this._args,transaction:void 0,subset:F},this._buildSubcontextsTaskFactory,this._buildBaseContextsTaskFactory,this._preBuildNestedCallDataTaskFactory).run();$.push(...K)}}return this._logger.debug("[run] BuildFullContextsTask completed",{data:{clearSigningType:Z,contextTypes:$.map((H)=>H.context.type),hasNestedContexts:$.length>Q.length}}),{clearSignContexts:$,clearSigningType:Z,contextErrorCount:X}}}class I4{constructor(Q){this._args=Q}run(){let{mapper:Q,transaction:Z}=this._args,{subset:J,type:X}=Q.mapTransactionToSubset(Z).unsafeCoerce();return{subset:J,type:X}}}var p0=j4(t5(),1);var wQ=j4(R6(),1),vZ="Ethereum",D5="Tron",f6={supported:!1},x5="1.11.0",P5="1.7.0",b5="1.2.0",I5="2.8.0",j5="1.7.0",v6="1.23.0",A6="0.8.0",FZ={[vZ]:v6,[D5]:A6},T6=`${x5}-rc3`,C6=`${P5}-rc3`,E6=`${b5}-rc3`,y6=`${I5}-rc3`,h6=`${j5}-rc3`,q4={[E.NANO_S]:f6,[E.NANO_SP]:{supported:!0,minOsVersion:j5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:h6},[E.NANO_X]:{supported:!0,minOsVersion:I5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:y6},[E.STAX]:{supported:!0,minOsVersion:x5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:T6},[E.FLEX]:{supported:!0,minOsVersion:P5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:C6},[E.APEX]:{supported:!0,minOsVersion:b5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:E6}};function aQ(Q){return q4[Q]}function L4(Q,Z){let J=wQ.valid(wQ.coerce(Q)),X=wQ.valid(wQ.coerce(Z));return J===null||X===null?!1:wQ.gte(J,X)}function u6(Q,Z){let J=wQ.valid(Q),X=wQ.valid(Z);return J===null||X===null?!1:wQ.lt(J,X)}function q5(Q,Z){let J=q4[Q];if(!J.supported)return!1;let X=J.renameDerivationPathRequiredBelowOsVersion;return X===void 0?!1:u6(Z,X)}var L5="0.0.0";class M4{resolve(Q,Z){return Q.sessionStateType===MQ.Connected?{isCompatible:!1,version:L5}:Q.currentApp?.name?{isCompatible:!0,version:Z.version}:{isCompatible:!1,version:L5}}}function M5(Q){return Q.supported}function S5(Q,Z){let J=Q.getDeviceSessionState(),X=aQ(J.deviceModelId);return M5(X)?L4(Z,X.minOsVersion):!1}function nQ(Q,Z){let J=Q.getDeviceSessionState(),X=aQ(J.deviceModelId);if(!M5(X))return!1;let Y=X.minAppVersion[Z.name];return Y===void 0?!1:new p(J,{version:Z.version},new M4).withMinVersionInclusiveAcceptingPrerelease(Y).check()}var g6="6982",l6={[g6]:{message:"This address-book entry was registered with a different seed. Connect the Ledger device that registered it to modify this contact."},6800:{message:"Internal error (Please report)"},6983:{message:"Wrong data length"},6984:{message:"Unsupported address-book operation for this device or app configuration"},6985:{message:"Condition not satisfied"},"686a":{message:"This device's firmware is out of date for the address book. Update your Ledger device to the latest firmware, then try again."},"6a80":{message:"Invalid contact data, or operation refused on device"},"6a84":{message:"Insufficient memory: the device address book is full"},"6a88":{message:"Contact data not found"},"6af0":{message:"Invalid value for this contact entry"},"6b00":{message:"The app rejected the contact data"},"6f00":{message:"Technical problem (Internal error, please report)"}};class k5 extends MZ{constructor(Q){super({tag:"ContactsCommandError",...Q})}}var c6=(Q)=>new k5(Q);class _Q extends x{constructor(){super(l6,c6)}getError(Q){let Z=super.getError(Q);if(Z===void 0||V(Z)||Z.error._tag!=="UnknownDeviceExchangeError")return Z;let J=new U(Q).encodeToHexaString(Q.statusCode);return a({error:new N(`The device returned an unexpected status word (0x${J}) for this address-book operation. Update your Ledger device and Ethereum app to the latest version, then try again.`)})}}class PQ{constructor(Q="The connected device or app does not meet the Contacts version requirements."){this.message=Q}_tag="ContactsVersionRequirementError";originalError}var SQ=176,kQ=16,AZ=1,TZ=32,CZ=3,EZ=4,U5=224,R5=46,yZ=0,f5=64,v5=32,rQ=32,A5=32,n={bitcoin:0,ethereum:1,solana:2,polkadot:3,cosmos:4,cardano:5,tron:6};var m6=33024,P={STRUCT_TYPE:1,STRUCT_VERSION:2,DERIVATION_PATH:105,CHAIN_ID:35,HMAC_PROOF:41,BLOCKCHAIN_FAMILY:81,CONTACT_NAME:240,SCOPE:241,ACCOUNT_IDENTIFIER:242,PREVIOUS_CONTACT_NAME:243,PREVIOUS_IDENTIFIER:244,PREVIOUS_SCOPE:245,GROUP_HANDLE:246,HMAC_REST:247},T5=45,hZ=46;var uZ=49,gZ=50,C5=51;var NQ=1;function S4(Q,Z){if(Z<128)Q.add8BitUIntToData(Z);else if(Z<=255)Q.add16BitUIntToData(m6+Z);else throw Error(`TLV tag ${Z} exceeds supported single-byte range`)}function E5(Q,Z){if(Z<128)Q.add8BitUIntToData(Z);else if(Z<=255)Q.add8BitUIntToData(129),Q.add8BitUIntToData(Z);else if(Z<=65535)Q.add8BitUIntToData(130),Q.add16BitUIntToData(Z);else throw Error(`TLV length ${Z} exceeds supported range`)}function d6(Q){let Z=typeof Q=="bigint"?Q:BigInt(Q);if(Z<=0n)throw Error(`chainId must be positive, got ${Q}`);if(Z>0xffffffffffffffffn)throw Error(`chainId ${Q} exceeds uint64 range`);let J=[],X=Z;for(;X>0n;)J.unshift(Number(X&0xffn)),X>>=8n;return Uint8Array.from(J)}function h(Q,Z,J){S4(Q,Z),Q.add8BitUIntToData(1),Q.add8BitUIntToData(J)}function c(Q,Z,J){S4(Q,Z);let X=new TextEncoder().encode(J);E5(Q,X.length),Q.addBufferToData(X)}function C(Q,Z,J){S4(Q,Z),E5(Q,J.length),Q.addBufferToData(J)}function UQ(Q,Z,J){C(Q,Z,d6(J))}function y5(Q){let Z=new v;return Z.add8BitUIntToData(Q.length),Q.forEach((J)=>Z.add32BitUIntToData(J)),Z.build()}var h5=uZ;function o6(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class k4{name="editExternalAddressIdentifier";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:CZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==h5)return z({error:new N(`Expected struct_type 0x${h5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=o6(Z,rQ);return X?z({data:{hmacRest:X}}):z({error:new N("hmac_rest missing or truncated")})})}}var p6=255,u5=0,g5=128;async function BQ(Q,{payload:Z,makeCommand:J,logger:X,commandTag:Y}){let $=s6(Z),H=i6($,p6),w=Y??"framed-contacts";for(let S=0;S<H.length-1;S++){let q=S===0?u5:g5,d=H[S];l5(X,w,S,H.length,q,d.length,$.length);let GQ=await Q.sendCommand(J(d,q));if(!c5(GQ))return GQ}let F=H.length-1,K=F===0?u5:g5,G=H[F];return l5(X,w,F,H.length,K,G.length,$.length),await Q.sendCommand(J(G,K))}function l5(Q,Z,J,X,Y,$,H){Q&&Q.debug(`[chunk ${J+1}/${X}] sending`,{tag:Z,data:{chunkIndex:J,chunkCount:X,p2:`0x${Y.toString(16).padStart(2,"0")}`,chunkLen:$,framedPayloadLen:H,isFirst:J===0,isLast:J===X-1}})}function s6(Q){let Z=Q.length,J=new Uint8Array(Z+2);return J[0]=Z>>8&255,J[1]=Z&255,J.set(Q,2),J}function i6(Q,Z){if(Q.length===0)return[Q];let J=[];for(let X=0;X<Q.length;X+=Z)J.push(Q.slice(X,Math.min(X+Z,Q.length)));return J}class U4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:CZ,makeCommand:(X,Y)=>new k4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendEditExternalAddressIdentifierTask"});if(!V(Z))return Z;let{hmacRest:J}=Z.data;return J?a({data:{hmacRest:J}}):a({error:new N("EditIdentifier final-chunk response did not carry hmac_rest")})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,uZ),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.newIdentifier),C(J,P.PREVIOUS_IDENTIFIER,Q.previousIdentifier),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),h(J,P.BLOCKCHAIN_FAMILY,Z),J.build()}}var bQ=33,hQ=33,RQ=64,DQ=32;var uQ=20;class A extends Error{_tag="ContactsValidationError";originalError;constructor(Q){super(Q),this.name="ContactsValidationError"}}var a6=32,n6=126,r6=new TextEncoder;function YQ(Q,Z){let{field:J,bufferLength:X}=Z;if(!Q)throw new A(`${J} must not be empty (firmware rejects empty strings).`);let Y=r6.encode(Q),$=X-1;if(Y.length>$)throw new A(`${J} ${JSON.stringify(Q)} is too long: ${Y.length} bytes encoded (max ${$}). The device buffer is ${X} bytes including the trailing NUL.`);let H=[];for(let w=0;w<Y.length;w++){let F=Y[w];(F<a6||F>n6)&&H.push(w)}if(H.length>0){let w=Array.from(new Set(H.map((F)=>Y[F]))).sort((F,K)=>F-K).map((F)=>`0x${F.toString(16).padStart(2,"0")}`).join(", ");throw new A(`${J} ${JSON.stringify(Q)} contains ${H.length} non-ASCII byte(s) at position(s) [${H.join(", ")}]: ${w}. The device buffer is byte-level isprint() — only 0x20-0x7E are accepted, no UTF-8 / accents / emoji.`)}}function u(Q,Z){let{field:J,expectedBytes:X}=Z;if(Q.length!==X)throw new A(`${J} is ${Q.length} bytes, expected ${X}.`)}function tQ(Q){let Z=typeof Q=="number";if(!Z&&typeof Q!="bigint")throw new A(`chainId must be number or bigint, got ${typeof Q}.`);if(Z&&!Number.isInteger(Q))throw new A(`chainId must be an integer, got ${Q}.`);let J=typeof Q=="bigint"?Q:BigInt(Q);if(J<=0n)throw new A(`chainId must be positive, got ${Q}.`);let X=(1n<<64n)-1n;if(J>X)throw new A(`chainId ${Q} exceeds uint64 range (max ${X}).`)}var t6=DQ;function m5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.scope,{field:"scope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.previousIdentifier,{field:"previousIdentifier",expectedBytes:uQ}),u(Q.newIdentifier,{field:"newIdentifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else{if(Q.previousIdentifier.length===0)throw new A("previousIdentifier must not be empty.");if(Q.newIdentifier.length===0)throw new A("newIdentifier must not be empty.")}return Q.chainId!==void 0&&tQ(Q.chainId),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),u(Q.hmacRest,{field:"hmacRest",expectedBytes:t6}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class R4 extends t{makeStateMachine(Q){let{isSupported:Z,editIdentifier:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),editIdentifier:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=m5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"EditExternalAddressIdentifierDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,hmacRest:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"EditIdentifier",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},EditIdentifier:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"editIdentifier",src:"editIdentifier",input:({context:Y})=>Y.input,onDone:{target:"EditIdentifierResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,hmacRest:Y.output.data.hmacRest}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},EditIdentifierResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{hmacRest:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({contactName:w.contactName,scope:w.scope,previousIdentifier:w.previousIdentifier,identifier:w.newIdentifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:w.groupHandle,hmacProof:w.hmacProof,hmacRest:$})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),editIdentifier:(Z)=>new U4(Q,{contactName:Z.contactName,scope:Z.scope,previousIdentifier:Z.previousIdentifier,newIdentifier:Z.newIdentifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,hmacRest:Z.hmacRest}).run()}}}var d5=gZ;function e6(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class f4{name="editExternalAddressScope";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:EZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==d5)return z({error:new N(`Expected struct_type 0x${d5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=e6(Z,rQ);return X?z({data:{hmacRest:X}}):z({error:new N("hmac_rest missing or truncated")})})}}class v4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:EZ,makeCommand:(X,Y)=>new f4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendEditExternalAddressScopeTask"});if(!V(Z))return Z;let{hmacRest:J}=Z.data;return J?a({data:{hmacRest:J}}):a({error:new N("EditScope final-chunk response did not carry hmac_rest")})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,gZ),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.newScope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),c(J,P.PREVIOUS_SCOPE,Q.previousScope),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),h(J,P.BLOCKCHAIN_FAMILY,Z),J.build()}}var Q9=DQ;function o5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.previousScope,{field:"previousScope",bufferLength:hQ}),YQ(Q.newScope,{field:"newScope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.identifier,{field:"identifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else if(Q.identifier.length===0)throw new A("identifier must not be empty.");return Q.chainId!==void 0&&tQ(Q.chainId),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),u(Q.hmacRest,{field:"hmacRest",expectedBytes:Q9}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class A4 extends t{makeStateMachine(Q){let{isSupported:Z,editScope:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),editScope:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=o5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"EditExternalAddressScopeDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,hmacRest:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"EditScope",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},EditScope:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"editScope",src:"editScope",input:({context:Y})=>Y.input,onDone:{target:"EditScopeResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,hmacRest:Y.output.data.hmacRest}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},EditScopeResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{hmacRest:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({contactName:w.contactName,previousScope:w.previousScope,scope:w.newScope,identifier:w.identifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:w.groupHandle,hmacProof:w.hmacProof,hmacRest:$})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),editScope:(Z)=>new v4(Q,{contactName:Z.contactName,previousScope:Z.previousScope,newScope:Z.newScope,identifier:Z.identifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,hmacRest:Z.hmacRest}).run()}}}var p5=45;function T4(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class C4{name="registerIdentity";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:AZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==p5)return z({error:new N(`Expected struct_type 0x${p5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=T4(Z,f5);if(!X)return z({error:new N("group_handle missing or truncated")});let Y=T4(Z,v5);if(!Y)return z({error:new N("hmac_name missing or truncated")});let $=T4(Z,rQ);return $?z({data:{groupHandle:X,hmacProof:Y,hmacRest:$}}):z({error:new N("hmac_rest missing or truncated")})})}}class E4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:AZ,makeCommand:($,H)=>new C4({data:$,p2:H}),logger:this.args.logger,commandTag:"SendRegisterIdentityTask"});if(!V(Z))return Z;let{groupHandle:J,hmacProof:X,hmacRest:Y}=Z.data;return!J||!X||!Y?a({error:new N("RegisterIdentity final-chunk response was incomplete")}):a({data:{groupHandle:J,hmacProof:X,hmacRest:Y}})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,T5),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),h(J,P.BLOCKCHAIN_FAMILY,Z),Q.existingContactGroup&&(C(J,P.GROUP_HANDLE,Q.existingContactGroup.groupHandle),C(J,P.HMAC_PROOF,Q.existingContactGroup.hmacProof)),J.build()}}function s5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.scope,{field:"scope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.identifier,{field:"identifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else if(Q.identifier.length===0)throw new A("identifier must not be empty.");return Q.chainId!==void 0&&tQ(Q.chainId),Q.existingContactGroup&&(u(Q.existingContactGroup.groupHandle,{field:"existingContactGroup.groupHandle",expectedBytes:RQ}),u(Q.existingContactGroup.hmacProof,{field:"existingContactGroup.hmacProof",expectedBytes:DQ})),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class y4 extends t{makeStateMachine(Q){let{isSupported:Z,registerIdentity:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),registerIdentity:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=s5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"RegisterExternalAddressDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,proofs:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"RegisterIdentity",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},RegisterIdentity:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"registerIdentity",src:"registerIdentity",input:({context:Y})=>Y.input,onDone:{target:"RegisterIdentityResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,proofs:Y.output.data}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},RegisterIdentityResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{proofs:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({mode:w.existingContactGroup?"existingContactGroup":"newContactGroup",contactName:w.contactName,scope:w.scope,identifier:w.identifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:$.groupHandle,hmacProof:$.hmacProof,hmacRest:$.hmacRest})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),registerIdentity:(Z)=>new E4(Q,{contactName:Z.contactName,scope:Z.scope,identifier:Z.identifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,existingContactGroup:Z.existingContactGroup}).run()}}}var i5=hZ;function Z9(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class h4{name="renameContact";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:U5,ins:R5,p1:yZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==i5)return z({error:new N(`Expected struct_type 0x${i5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=Z9(Z,A5);return X?z({data:{hmacProof:X}}):z({error:new N("hmac_name missing or truncated")})})}}class u4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:yZ,makeCommand:(X,Y)=>new h4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendRenameContactTask"});if(!V(Z))return Z;let{hmacProof:J}=Z.data;return J?a({data:{hmacProof:J}}):a({error:new N("RenameContact final-chunk response did not carry hmac_name")})}buildPayload(Q){let Z=new v;return h(Z,P.STRUCT_TYPE,hZ),h(Z,P.STRUCT_VERSION,NQ),c(Z,P.CONTACT_NAME,Q.newContactName),c(Z,P.PREVIOUS_CONTACT_NAME,Q.previousContactName),C(Z,P.GROUP_HANDLE,Q.groupHandle),Q.includeDerivationPath&&C(Z,P.DERIVATION_PATH,y5([2147483692,2147483708,2147483648,0,0])),C(Z,P.HMAC_PROOF,Q.hmacProof),Z.build()}}function a5(Q){try{return YQ(Q.newContactName,{field:"newContactName",bufferLength:bQ}),YQ(Q.previousContactName,{field:"previousContactName",bufferLength:bQ}),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class g4 extends t{makeStateMachine(Q){let{getOsVersion:Z,isOsVersionSupported:J,renameContact:X}=this.extractDependencies(Q),{deviceModelId:Y}=Q.getDeviceSessionState();return r({types:{input:{},context:{},output:{}},actors:{goToDashboardStateMachine:new r5({input:{}}).makeStateMachine(Q),getOsVersion:R(Z),renameContact:R(({input:$})=>X($.args,$.includeDerivationPath))},guards:{noInternalError:({context:$})=>$._internalState.error===null,contactsOsSupported:({context:$})=>{let{osVersion:H}=$._internalState;return H!==null&&J(H)}},actions:{assignValidationError:O({_internalState:({context:$})=>{let H=a5($.input);return H?{...$._internalState,error:H}:$._internalState}}),assignVersionError:O({_internalState:({context:$})=>({...$._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:$,event:H})=>({...$._internalState,error:new m(H.error instanceof Error?H.error.message:String(H.error))})})}}).createMachine({id:"RenameContactDeviceAction",initial:"InitialState",context:({input:$})=>({input:$,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,osVersion:null,proof:null}}),states:{InitialState:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboardStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:$})=>({requiredUserInteraction:$.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:O({_internalState:({event:$,context:H})=>$.output.caseOf({Right:()=>H._internalState,Left:(w)=>({...H._internalState,error:w})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"GetOsVersion",guard:"noInternalError"},{target:"Error"}]},GetOsVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"getOsVersion",src:"getOsVersion",onDone:{target:"GetOsVersionResultCheck",actions:O({_internalState:({event:$,context:H})=>V($.output)?{...H._internalState,osVersion:$.output.data.seVersion}:{...H._internalState,error:$.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetOsVersionResultCheck:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"RenameContact",guard:"contactsOsSupported"},{target:"Error",actions:"assignVersionError"}]},RenameContact:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"renameContact",src:"renameContact",input:({context:$})=>({args:$.input,includeDerivationPath:q5(Y,$._internalState.osVersion??"")}),onDone:{target:"RenameContactResultCheck",actions:O({_internalState:({event:$,context:H})=>V($.output)?{...H._internalState,proof:$.output.data}:{...H._internalState,error:$.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},RenameContactResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:$})=>{let{proof:H,error:w}=$._internalState;if(H){let{input:F}=$;return T({previousContactName:F.previousContactName,contactName:F.newContactName,groupHandle:F.groupHandle,hmacProof:H.hmacProof})}return L(w??new m("No error in final state"))}})}extractDependencies(Q){return{getOsVersion:()=>Q.sendCommand(new n5),isOsVersionSupported:(Z)=>S5(Q,Z),renameContact:(Z,J)=>new u4(Q,{previousContactName:Z.previousContactName,newContactName:Z.newContactName,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,includeDerivationPath:J}).run()}}}var NZ={Dmk:Symbol.for("Dmk"),SessionId:Symbol.for("SessionId"),AppName:Symbol.for("AppName")};var{defineProperty:J9,getOwnPropertyDescriptor:X9}=Object,Y9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?X9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&J9(Z,J,Y),Y},l4=(Q,Z)=>(J,X)=>Z(J,X,Q),c4=class{constructor(Q,Z,J){this.dmk=Q,this.sessionId=Z,this.appName=J}registerExternalAddress(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new y4({input:{...Q,appName:this.appName}})})}renameContact(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new g4({input:Q})})}editExternalAddressIdentifier(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new R4({input:{...Q,appName:this.appName}})})}editExternalAddressScope(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A4({input:{...Q,appName:this.appName}})})}};c4=Y9([f(),l4(0,M(NZ.Dmk)),l4(1,M(NZ.SessionId)),l4(2,M(NZ.AppName))],c4);var IQ={AppBinder:Symbol.for("AppBinder")};var{defineProperty:$9,getOwnPropertyDescriptor:H9}=Object,K9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?H9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&$9(Z,J,Y),Y},W9=(Q,Z)=>(J,X)=>Z(J,X,Q),m4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.editExternalAddressIdentifier(Q)}};m4=K9([f(),W9(0,M(IQ.AppBinder))],m4);var{defineProperty:w9,getOwnPropertyDescriptor:z9}=Object,O9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?z9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&w9(Z,J,Y),Y},G9=(Q,Z)=>(J,X)=>Z(J,X,Q),d4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.editExternalAddressScope(Q)}};d4=O9([f(),G9(0,M(IQ.AppBinder))],d4);var{defineProperty:_9,getOwnPropertyDescriptor:V9}=Object,F9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?V9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&_9(Z,J,Y),Y},N9=(Q,Z)=>(J,X)=>Z(J,X,Q),o4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.registerExternalAddress(Q)}};o4=F9([f(),N9(0,M(IQ.AppBinder))],o4);var{defineProperty:B9,getOwnPropertyDescriptor:D9}=Object,x9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?D9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&B9(Z,J,Y),Y},P9=(Q,Z)=>(J,X)=>Z(J,X,Q),p4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.renameContact(Q)}};p4=x9([f(),P9(0,M(IQ.AppBinder))],p4);class s4{name="provideContact";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:TZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>z({data:void 0}))}}function i4(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,C5),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),h(J,P.BLOCKCHAIN_FAMILY,Z),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),J.build()}function a4(Q,{payload:Z,logger:J}){return BQ(Q,{payload:Z,p1:TZ,makeCommand:(X,Y)=>new s4({data:X,p2:Y}),logger:J,commandTag:"provideContact"})}class n4{constructor(Q){this.args=Q}name="storeTransaction";errorHelper=new x(b,I);getApdu(){let{serializedTransaction:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:4,p1:Z?0:128,p2:1}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var I9="ethereum";function e5({addressBook:Q,subset:Z,deviceState:J,appConfig:X}){if(!j9(J,X))return;let Y=Z.to?.toLowerCase();if(Y!==void 0)for(let $ of Q.contactGroups){let H=$.externalAddresses.find((F)=>F.address.toLowerCase()===Y&&F.chainId===BigInt(Z.chainId));if(H===void 0)continue;let w=s(H.address);if(w!==null)return i4({contactName:$.contactName,scope:H.scope,identifier:w,groupHandle:$.groupHandle,hmacProof:$.hmacProof,hmacRest:H.hmacRest,blockchainFamily:I9,chainId:H.chainId})}}function j9(Q,Z){let J=aQ(Q.deviceModelId);if(!J.supported)return!1;let X=J.minAppVersion[vZ];return X===void 0?!1:new p(Q,Z,new i).withMinVersionInclusiveAcceptingPrerelease(X).check()}class BZ{constructor(Q,Z,J=(Y,$)=>new yQ(Y,$),X=(Y,$)=>new xQ(Y,$)){this._api=Q,this._args=Z,this._provideContextTaskFactory=J,this._sendCommandInChunksTaskFactory=X,this._logger=Z.loggerFactory("ProvideTransactionContextsTask")}_logger;async run(){this._logger.debug("[run] Starting ProvideTransactionContextsTask",{data:{derivationPath:this._args.derivationPath,contextTypes:this._args.contexts.map((J)=>J.context.type),subcontextCounts:this._args.contexts.map((J)=>J.subcontextCallbacks.length),transactionLength:this._args.serializedTransaction?.length}});let Q=!1,Z=await this._provideExternalContact();for(let{context:J,subcontextCallbacks:X}of this._args.contexts){if(Z&&J.type===W.ETHEREUM_TRUSTED_NAME)continue;for(let $ of X){let H=await $();H.type!==W.ERROR&&FQ(H)&&await this._provideContextTaskFactory(this._api,{context:H,loggerFactory:this._args.loggerFactory}).run()}if(J.type===W.ETHEREUM_PROXY_INFO||J.type===W.ETHEREUM_TRUSTED_NAME)continue;if(!Q&&this._args.serializedTransaction!==void 0&&J.type===W.ETHEREUM_TRANSACTION_INFO){Q=!0;let $=$Q.splitPath(this._args.derivationPath),H=new v;H.add8BitUIntToData($.length),$.forEach((w)=>{H.add32BitUIntToData(w)}),H.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:H.build(),commandFactory:(w)=>new n4({serializedTransaction:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run()}let Y=await this._provideContextTaskFactory(this._api,{context:J,loggerFactory:this._args.loggerFactory}).run();if(!V(Y))return this._logger.error("[run] Failed to provide context",{data:{contextType:J.type,error:Y.error}}),L(Y)}return this._logger.debug("[run] ProvideTransactionContextsTask completed successfully"),T(void 0)}async _provideExternalContact(){if(this._args.externalContact===void 0)return!1;let Q=e5({...this._args.externalContact,deviceState:this._api.getDeviceSessionState()});if(Q===void 0)return!1;let Z=await a4(this._api,{payload:Q,logger:this._logger});return V(Z)?!0:(this._logger.warn("[provideExternalContact] Contact rejected, signing without it",{data:{error:Z.error}}),!1)}}import{decodeRlp as k9,encodeRlp as U9}from"ethers";var lZ=((Q)=>(Q[Q.LEGACY=0]="LEGACY",Q[Q.EIP2930=1]="EIP2930",Q[Q.EIP1559=2]="EIP1559",Q[Q.EIP4844=3]="EIP4844",Q))(lZ||{});var q9=32,L9=32;class r4{name="signTransaction";errorHelper=new x(b,I);args;constructor(Q){this.args=Q}getApdu(){let{serializedTransaction:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:4,p1:Z?0:128,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(q9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(L9),!0);return Y?z({data:k({v:J,r:X,s:Y})}):z({error:new N("S is missing")})})}}var M9=32,S9=32;class t4{name="startTransaction";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:4,p1:0,p2:2}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("V is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(M9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(S9),!0);return Y?z({data:k({v:J,r:X,s:Y})}):z({error:new N("S is missing")})})}}var R9=4;class e4{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.loggerFactory("SendSignTransactionTask")}_logger;async run(){if(this._logger.debug("[run] Starting SendSignTransactionTask",{data:{derivationPath:this.args.derivationPath,chainId:this.args.chainId,transactionType:this.args.transactionType,clearSigningType:this.args.clearSigningType,transactionLength:this.args.serializedTransaction.length}}),this.args.clearSigningType===JQ.EIP7730){this._logger.debug("[run] Using EIP7730 clear signing, starting transaction");let w=await this.api.sendCommand(new t4);return V(w)?(this._logger.debug("[run] Transaction signed successfully (EIP7730)"),this.recoverSignature(w.data).mapOrDefault((F)=>z({data:F}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to start transaction",{data:{error:w.error}}),w)}let{derivationPath:Q,serializedTransaction:Z}=this.args,J=$Q.splitPath(Q),X=new v(Z.length+1+J.length*R9);X.add8BitUIntToData(J.length),J.forEach((w)=>{X.add32BitUIntToData(w)});let Y=X.build(),$=this.getChunks(Y,Z);this._logger.debug("[run] Sending transaction in chunks",{data:{chunksCount:$.length}});let H=j;for(let w=0;w<$.length;w++){let F=await this.api.sendCommand(new r4({serializedTransaction:$[w],isFirstChunk:w===0}));if(!V(F))return this._logger.error("[run] Failed to send transaction chunk",{data:{chunkIndex:w,error:F.error}}),F;H=F.data}return this._logger.debug("[run] Transaction signed successfully"),this.recoverSignature(H).mapOrDefault((w)=>z({data:w}),z({error:new N("no signature returned")}))}getChunks(Q,Z){let J=Uint8Array.from([...Q,...Z]),X=HQ;if(J.length<=X)return[J];if(this.args.transactionType===lZ.LEGACY)try{let H=k9(Z);if(Array.isArray(H)){let w=H.slice(-3),F=U9(w),K=s(F).subarray(1);for(X=HQ;X>Q.length;X--){let G=J.length%X;if(G===0||G>K.length)break}}}catch{X=HQ}let Y=0,$=[];for(;Y<J.length;)$.push(J.slice(Y,Y+X)),Y+=X;return $}recoverSignature(Q){return Q.map(({v:Z,r:J,s:X})=>{if(this.args.transactionType!==lZ.LEGACY)return{v:Z,r:J,s:X};let Y=4294967295,$=this.args.chainId;for(;$>Y;)$=$>>8;let H=$*2+35&255;return{v:(Z==H?0:1)+this.args.chainId*2+35,r:J,s:X}})}}class DZ extends t{makeStateMachine(Q){let{getAddress:Z,getAppConfig:J,web3CheckOptIn:X,parseTransaction:Y,buildContexts:$,signTransaction:H,provideContexts:w,detectBlindSigning:F}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),getAddress:R(Z),getAppConfig:R(J),web3CheckOptIn:R(X),parseTransaction:R(Y),buildContexts:R($),provideContexts:R(w),signTransaction:R(H),detectBlindSigning:R(F)},guards:{noInternalError:({context:K})=>K._internalState.error===null,notRefusedByUser:({context:K})=>K._internalState.error!==null&&(!("errorCode"in K._internalState.error)||K._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:K})=>new p(Q.getDeviceSessionState(),K._internalState.appConfig,new i).withMinVersionExclusive(fZ).excludeDeviceModel(E.NANO_S).excludeDeviceModel(E.NANO_SP).excludeDeviceModel(E.NANO_X).check(),shouldOptIn:({context:K})=>!K._internalState.appConfig.web3ChecksEnabled&&!K._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:K})=>!!K.input.options.skipOpenApp,hasSignature:({context:K})=>K._internalState.signature!==null},actions:{assignErrorFromEvent:O({_internalState:(K)=>({...K.context._internalState,error:K.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:K})=>({input:K,intermediateValue:{requiredUserInteraction:D.None,step:o.OPEN_APP},_internalState:{error:null,appConfig:null,subset:null,contexts:[],clearSigningType:null,contextErrorCount:0,transactionType:null,signature:null,isBlindSign:null,usedFallback:!1}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(K)=>({...K.event.snapshot.context.intermediateValue,step:o.OPEN_APP})})},onDone:{actions:O({_internalState:(K)=>K.event.output.caseOf({Right:()=>K.context._internalState,Left:(G)=>({...K.context._internalState,error:G})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:cZ(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"ParseTransaction",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:O({intermediateValue:{requiredUserInteraction:D.Web3ChecksOptIn,step:o.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:{...G._internalState.appConfig,web3ChecksEnabled:K.output.data.enabled}}:G._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:O(({context:K})=>({intermediateValue:{requiredUserInteraction:D.None,step:o.WEB3_CHECKS_OPT_IN_RESULT,result:K._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"ParseTransaction"}}},ParseTransaction:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.PARSE_TRANSACTION}}),invoke:{id:"parseTransaction",src:"parseTransaction",input:({context:K})=>({mapper:K.input.mapper,transaction:K.input.transaction}),onDone:{target:"GetAddress",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,subset:K.output.subset,transactionType:K.output.type})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAddress:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:K})=>({derivationPath:K.input.derivationPath,checkOnDevice:!1,returnChainCode:!1}),onDone:{target:"BuildContexts",actions:O({_internalState:({event:K,context:G})=>{if(V(K.output)){let S={...G._internalState.subset,from:K.output.data.address};return{...G._internalState,subset:S}}return{...G._internalState}}})},onError:{target:"Error"}}},BuildContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.BUILD_CONTEXTS}}),invoke:{id:"buildContexts",src:"buildContexts",input:({context:K})=>({contextModule:K.input.contextModule,mapper:K.input.mapper,parser:K.input.parser,options:K.input.options,appConfig:K._internalState.appConfig,derivationPath:K.input.derivationPath,subset:K._internalState.subset,transaction:K.input.transaction,deviceModelId:Q.getDeviceModel().id,loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"ProvideContexts",actions:[O({_internalState:({event:K,context:G})=>({...G._internalState,contexts:K.output.clearSignContexts,clearSigningType:K.output.clearSigningType,contextErrorCount:K.output.contextErrorCount})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.PROVIDE_CONTEXTS}}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:K})=>({contexts:K._internalState.contexts,derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,externalContact:{addressBook:K.input.addressBook??UZ,subset:K._internalState.subset,appConfig:K._internalState.appConfig},loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTransaction,step:o.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:K})=>({derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,chainId:K._internalState.subset.chainId,transactionType:K._internalState.transactionType,clearSigningType:K._internalState.clearSigningType}),onDone:{target:"SignTransactionResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"SignTransactionResultCheck",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"DetectBlindSigning"},{guard:"notRefusedByUser",target:"BlindSignTransactionFallback"},{target:"DetectBlindSigning"}]},BlindSignTransactionFallback:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.BLIND_SIGN_TRANSACTION_FALLBACK},_internalState:({context:K})=>({...K._internalState,usedFallback:!0})}),invoke:{id:"blindSignTransactionFallback",src:"signTransaction",input:({context:K})=>({derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,chainId:K._internalState.subset.chainId,transactionType:K._internalState.transactionType,clearSigningType:JQ.BASIC}),onDone:{target:"BlindSignTransactionFallbackResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},BlindSignTransactionFallbackResultCheck:{always:"DetectBlindSigning"},DetectBlindSigning:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.DETECT_BLIND_SIGNING}}),invoke:{id:"detectBlindSigning",src:"detectBlindSigning",input:({context:K})=>{let G=Q.getDeviceSessionState(),S=G.sessionStateType!==MQ.Connected?G.firmwareVersion?.os??null:null,{subset:q,contexts:d,usedFallback:GQ,clearSigningType:Y4,contextErrorCount:YZ}=K._internalState;return{input:{type:"transaction",hasContext:!(!!q?.data&&q.data.length>2)||d.length>0,contextTypes:d.map((pQ)=>pQ.context.type),usedFallback:GQ,chainId:q?.chainId??null,targetAddress:q?.to??null,selectorId:q?.selector&&q.selector.length===z5?q.selector:null,deviceModelId:Q.getDeviceModel().id,signerAppVersion:K._internalState.appConfig?.version??"",deviceVersion:S,clearSigningType:Y4,partialContextErrors:YZ},contextModule:K.input.contextModule,loggerFactory:this.getLoggerFactory(Q)}},onDone:[{guard:"hasSignature",target:"Success",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})},{target:"Error",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})}],onError:[{guard:"hasSignature",target:"Success"},{target:"Error"}]}},Success:{type:"final"},Error:{type:"final"}},output:({context:K})=>K._internalState.signature?T(K._internalState.signature):L(K._internalState.error||new m("No error in final state"))})}extractDependencies(Q){return{getAddress:async(Z)=>Q.sendCommand(new TQ(Z.input)),getAppConfig:async()=>Q.sendCommand(new GZ),web3CheckOptIn:async()=>Q.sendCommand(new _Z),parseTransaction:async(Z)=>Promise.resolve(new I4({mapper:Z.input.mapper,transaction:Z.input.transaction}).run()),buildContexts:async(Z)=>new iQ(Q,Z.input).run(),provideContexts:async(Z)=>new BZ(Q,Z.input).run(),signTransaction:async(Z)=>new e4(Q,{...Z.input,loggerFactory:this.getLoggerFactory(Q)}).run(),detectBlindSigning:async(Z)=>new VZ(Z.input).run()}}}import{ethers as T9,getBytes as C9}from"ethers";var{defineProperty:f9,getOwnPropertyDescriptor:v9}=Object,A9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?v9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&f9(Z,J,Y),Y},Q6=10,fQ=class{constructor(){}mapTransactionToSubset(Q){try{let Z=T9.Transaction.from(WQ(Q)),J=Number(Z.chainId.toString());return J<=0?L(Error("Pre-EIP-155 transactions are not supported")):T({subset:{chainId:J,to:Z.to??void 0,data:Z.data,selector:Z.data.length>=Q6?Z.data.slice(0,Q6):Z.data,value:Z.value},serializedTransaction:C9(Z.unsignedSerialized),type:Z.type||0})}catch{return L(Error("Invalid transaction"))}}};fQ=A9([f()],fQ);var{defineProperty:E9,getOwnPropertyDescriptor:y9}=Object,h9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?y9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&E9(Z,J,Y),Y},u9=4,xZ=32,vQ=class{extractValue(Q,Z){let{to:J,data:X,value:Y}=Q;return Z===mZ.FROM?L(Error("Cannot get 'FROM' field of an unsigned transaction")):Z===mZ.TO?_.fromNullable(J).map(($)=>s($)).filter(($)=>$!==null).map(($)=>[$]).toEither(Error("Failed to extract TO field of transaction")):Z===mZ.VALUE?_.fromNullable(Y).map(($)=>new v().add256BitUIntToData($).build()).map(($)=>[$]).toEither(Error("Failed to extract VALUE field of transaction")):_.fromNullable(X).toEither(Error("Transaction calldata is empty")).chain(($)=>_.fromNullable(s($)).toEither(Error(`Invalid hex string calldata: ${$}`))).chain(($)=>this.extractCalldataValue($,Z))}extractCalldataValue(Q,Z){return Q=Q.slice(u9),Z.length===0?L(Error("Path is empty")):this.extractCalldataValueAt(Q,Z,0,0)}extractCalldataValueAt(Q,Z,J,X){let Y=Z[Z.length-1],$=Y.type===gQ.SLICE?Y:null;for(;Z.length>0;){let H=Z[0];switch(Z=Z.slice(1),H.type){case gQ.TUPLE:X=J,J+=H.offset*xZ;break;case gQ.ARRAY:return this.getU256(Q.slice(J)).toEither(Error(`Invalid array length at offset ${J}`)).chain((w)=>{J+=xZ,X=J;let F=H.start===void 0?0:H.start<0?w+H.start:H.start,K=H.end===void 0?w:H.end<0?w+H.end:H.end;return F<0||F>=w||K>w||F>=K?L(Error(`Array slice out of bounds, start=${H.start}, end=${H.end}`)):Array.from({length:K-F},(G,S)=>S).map((G)=>J+(G+F)*H.itemSize*xZ).reduce((G,S)=>G.chain((q)=>this.extractCalldataValueAt(Q,Z,S,X).map((d)=>[...q,...d])),T([]))});case gQ.REF:if(this.getU256(Q.slice(J)).ifJust((w)=>J=X+w).isNothing())return L(Error(`Invalid ref at offset ${J}`));break;case gQ.LEAF:switch(H.leafType){case PZ.ARRAY_LEAF:return L(Error("Array leaf is not supported in v1 of protocol"));case PZ.TUPLE_LEAF:return L(Error("Tuple leaf is not supported in v1 of protocol"));case PZ.STATIC_LEAF:return this.getSlice(Q,J,xZ).chain((w)=>$===null?T([w]):this.sliceLeaf(w,$));case PZ.DYNAMIC_LEAF:return this.getU256(Q.slice(J)).toEither(Error(`Invalid leaf length at offset ${J}`)).chain((w)=>(J+=xZ,this.getSlice(Q,J,w).chain((F)=>$===null?T([F]):this.sliceLeaf(F,$))))}break;case gQ.SLICE:return L(Error("Slice can only be used as last element of the path"))}}return L(Error("Path did not resolve to a leaf element"))}sliceLeaf(Q,Z){let J=Q.length,X=Z.start===void 0?0:Z.start<0?J+Z.start:Z.start,Y=Z.end===void 0?J:Z.end<0?J+Z.end:Z.end;return X>=Y?L(Error(`invalid leaf slice: start ${X}, end ${Y}`)):this.getSlice(Q,X,Y-X).map(($)=>[$])}getSlice(Q,Z,J){return Z<0||Q.length<Z+J?L(Error(`calldata too small to slice at offset ${Z} of length ${J}`)):T(Q.slice(Z,Z+J))}getU256(Q){return _.fromNullable(new Z6(Q).extract256BitUInt(!0)).filter((Z)=>Z<=Number.MAX_SAFE_INTEGER).map((Z)=>Number(Z))}};vQ=h9([f()],vQ);var g9=(Q)=>new DZ({input:{derivationPath:Q.derivationPath,transaction:Q.transaction,contextModule:Q.contextModule,addressBook:Q.addressBook,options:Q.options??{},mapper:new fQ,parser:new vQ},inspect:Q.inspect,loggerFactory:Q.loggerFactory});var e=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.GET_APP_CONFIG="signer.eth.steps.getAppConfig",Q.GET_ADDRESS="signer.eth.steps.getAddress",Q.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",Q.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",Q.BUILD_CONTEXT="signer.eth.steps.buildContext",Q.PROVIDE_CONTEXT="signer.eth.steps.provideContext",Q.PROVIDE_GENERIC_CONTEXT="signer.eth.steps.provideGenericContext",Q.SIGN_TYPED_DATA="signer.eth.steps.signTypedData",Q.SIGN_TYPED_DATA_LEGACY="signer.eth.steps.signTypedDataLegacy",Q.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",Q))(e||{});var l9=32,c9=32;class bZ{constructor(Q){this.args=Q}name="signEIP712";errorHelper=new x(b,I);getApdu(){let{derivationPath:Q,legacyArgs:Z}=this.args,J={cla:224,ins:12,p1:0,p2:Z.isJust()?0:1},X=$Q.splitPath(Q),Y=new B(J);Y.add8BitUIntToData(X.length);for(let $ of X)Y.add32BitUIntToData($);return Z.ifJust(({domainHash:$,messageHash:H})=>{Y.addHexaStringToData($),Y.addHexaStringToData(H)}),Y.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("V is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(l9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(c9),!0);return Y?z({data:{r:X,s:Y,v:J}}):z({error:new N("S is missing")})})}}class lQ{constructor(Q,Z,J){this.typeName=Q,this.name=Z,this.size=J}}class jQ{constructor(Q,Z,J,X,Y){this.typeName=Q,this.rootType=Z,this.rowType=J,this.count=X,this.levels=Y}}class cQ{constructor(Q){this.typeName=Q}}class IZ{constructor(Q){this.root=Q}}class QZ{constructor(Q){this.length=Q}}class mQ{constructor(Q){this.data=Q}}var m9="0x0000000000000000000000000000000000000000";class Q5{constructor(Q,Z,J,X,Y,$,H,w,F,K,G=(S,q)=>new iQ(S,q)){this.api=Q,this.contextModule=Z,this.parser=J,this.transactionParser=X,this.transactionMapper=Y,this.data=$,this.derivationPath=H,this.appConfig=w,this.from=F,this.loggerFactory=K,this.buildFullContextFactory=G}async run(){let Q=this.parser.parse(this.data);if(Q.isLeft())throw Q.extract();let{types:Z,domain:J,message:X}=Q.unsafeCoerce(),Y=this.api.getDeviceSessionState(),$,H=await this.api.sendCommand(new XQ);V(H)&&($=H.data.challenge);let{contexts:w,contextErrorCount:F}=await this.getAdditionalContexts(Y,$),K=j,G={},S={},q=this.getClearSignVersion(Y);if(q.isJust()){let d=this.data.domain.verifyingContract?.toLowerCase()||m9,GQ=this.data.domain.chainId||0,Y4=X.filter((pQ)=>pQ.value instanceof mQ).map((pQ)=>({path:pQ.path,value:pQ.value.data})),YZ=await this.contextModule.getTypedDataFilters({verifyingContract:d,chainId:GQ,version:q.extract(),schema:this.data.types,challenge:$,deviceModelId:Y.deviceModelId,fieldsValues:Y4});YZ.type==="success"&&(K=k(YZ),{calldatasPreContexts:G,calldatasPostContexts:S}=await this.getCalldatasContexts(Y,YZ))}return{...{derivationPath:this.derivationPath,additionalContexts:w,types:Z,domain:J,message:X,clearSignContext:K,calldatasPreContexts:G,calldatasPostContexts:S,deviceModelId:Y.deviceModelId,loggerFactory:this.loggerFactory},clearSigningType:K.isJust()?JQ.EIP7730:JQ.BASIC,contextErrorCount:F}}async getAdditionalContexts(Q,Z){let J=new p(Q,this.appConfig,new i).withMinVersionInclusive(RZ).excludeDeviceModel(E.NANO_S).check(),X=[];J&&(X.push(W.ETHEREUM_GATED_SIGNING),Z!==void 0&&X.push(W.ETHEREUM_PROXY_INFO)),this.appConfig.web3ChecksEnabled&&X.push(W.ETHEREUM_TRANSACTION_CHECK),this.data.domain.chainId!==void 0&&X.push(W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON);let Y=await this.contextModule.getContexts({deviceModelId:Q.deviceModelId,data:this.data,from:this.from,chainId:this.data.domain.chainId||0,challenge:Z},X),$=Y.filter((H)=>H.type===W.ERROR).length;return{contexts:Y.filter(FQ).filter((H)=>X.includes(H.type)),contextErrorCount:$}}getClearSignVersion(Q){return new p(Q,this.appConfig,new i).withMinVersionInclusive("1.10.0").excludeDeviceModel(E.NANO_S).check()?new p(Q,this.appConfig,new i).withMinVersionInclusive("1.12.0").check()?k("v2"):k("v1"):j}async getCalldatasContexts(Q,Z){let J={},X={};for(let Y in Z.calldatas){let{subset:$}=Z.calldatas[Y],H=await this.buildFullContextFactory(this.api,{contextModule:this.contextModule,mapper:this.transactionMapper,parser:this.transactionParser,options:{},appConfig:this.appConfig,derivationPath:this.derivationPath,subset:$,deviceModelId:Q.deviceModelId,loggerFactory:this.loggerFactory}).run();if(H.clearSigningType===JQ.EIP7730||H.clearSigningType===JQ.BASIC&&H.clearSignContexts.every(({context:w})=>w.type===W.ETHEREUM_TRUSTED_NAME)){let w=H.clearSignContexts;J[Y]=w.filter((F)=>F.context.type===W.ETHEREUM_TRUSTED_NAME),X[Y]=w.filter((F)=>F.context.type!==W.ETHEREUM_TRUSTED_NAME)}}return{calldatasPreContexts:J,calldatasPostContexts:X}}}var g=((Q)=>(Q.Activation="activation",Q.DiscardedPath="discarded_path",Q.MessageInfo="message_info",Q.Datetime="datetime",Q.Raw="raw",Q.Amount="amount",Q.Token="token",Q.TrustedName="trusted-name",Q.CalldataInfo="calldata-info",Q.CalldataValue="calldata-value",Q.CalldataCallee="calldata-callee",Q.CalldataChainId="calldata-chain-id",Q.CalldataSelector="calldata-selector",Q.CalldataAmount="calldata-amount",Q.CalldataSpender="calldata-spender",Q))(g||{}),jZ=((Q)=>(Q[Q.None=0]="None",Q[Q.Present=1]="Present",Q[Q.VerifyingContract=2]="VerifyingContract",Q))(jZ||{}),d9={activation:0,discarded_path:1,message_info:15,"calldata-spender":244,"calldata-amount":245,"calldata-selector":246,"calldata-chain-id":247,"calldata-callee":248,"calldata-value":249,"calldata-info":250,"trusted-name":251,datetime:252,token:253,amount:254,raw:255};class l{constructor(Q){this.args=Q}name="sendEIP712Filtering";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:30,p1:"discarded"in this.args&&this.args.discarded?1:0,p2:d9[this.args.type]},Z=new B(Q);switch(this.args.type){case"message_info":Z.encodeInLVFromAscii(this.args.displayName).add8BitUIntToData(this.args.filtersCount).encodeInLVFromHexa(this.args.signature);break;case"discarded_path":Z.encodeInLVFromAscii(this.args.path);break;case"datetime":case"raw":Z.encodeInLVFromAscii(this.args.displayName).encodeInLVFromHexa(this.args.signature);break;case"trusted-name":Z.encodeInLVFromAscii(this.args.displayName).addHexaStringToData(this.args.typesAndSourcesPayload).encodeInLVFromHexa(this.args.signature);break;case"token":case"amount":this.args.type==="amount"&&Z.encodeInLVFromAscii(this.args.displayName),Z.add8BitUIntToData(this.args.tokenIndex).encodeInLVFromHexa(this.args.signature);break;case"calldata-info":Z.add8BitUIntToData(this.args.calldataIndex).add8BitUIntToData(this.args.valueFlag?1:0).add8BitUIntToData(this.args.calleeFlag).add8BitUIntToData(this.args.chainIdFlag?1:0).add8BitUIntToData(this.args.selectorFlag?1:0).add8BitUIntToData(this.args.amountFlag?1:0).add8BitUIntToData(this.args.spenderFlag).encodeInLVFromHexa(this.args.signature);break;case"calldata-value":case"calldata-callee":case"calldata-chain-id":case"calldata-selector":case"calldata-amount":case"calldata-spender":Z.add8BitUIntToData(this.args.calldataIndex).encodeInLVFromHexa(this.args.signature);break}return Z.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var dZ=((Q)=>(Q[Q.Name=0]="Name",Q[Q.Field=255]="Field",Q))(dZ||{});class oZ{constructor(Q){this.args=Q}name="sendEIP712StructDefinition";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:26,p1:0,p2:this.args.command};if(this.args.command===0)return new B(Q).addAsciiStringToData(this.args.name).build();let Z=new B(Q),J=this.constructTypeDescByte(this.args.type);if(Z.add8BitUIntToData(J),this.getTypeCustomName(this.args.type).ifJust((X)=>{Z.encodeInLVFromAscii(X)}),this.getTypeSize(this.args.type).ifJust((X)=>{Z.add8BitUIntToData(X)}),this.args.type instanceof jQ){Z.add8BitUIntToData(this.args.type.levels.length);for(let X of this.args.type.levels)X.caseOf({Just:(Y)=>{Z.add8BitUIntToData(1).add8BitUIntToData(Y)},Nothing:()=>{Z.add8BitUIntToData(0)}})}return Z.encodeInLVFromAscii(this.args.name).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}constructTypeDescByte(Q){let Z=Q instanceof jQ?1:0,J=this.getTypeSize(Q).isJust()?1:0,X=this.getType(Q);return Z<<7|J<<6|X}getTypeSize(Q){return Q instanceof jQ?this.getTypeSize(Q.rootType):Q instanceof lQ?Q.size:j}getTypeCustomName(Q){return Q instanceof jQ?this.getTypeCustomName(Q.rootType):Q instanceof cQ?k(Q.typeName):j}getType(Q){if(Q instanceof jQ)return this.getType(Q.rootType);if(Q instanceof cQ)return 0;switch(Q.name){case"int":return 1;case"uint":return 2;case"address":return 3;case"bool":return 4;case"string":return 5;case"bytes":return Q.size.isJust()?6:7}}}var AQ=((Q)=>(Q[Q.ROOT=0]="ROOT",Q[Q.ARRAY=15]="ARRAY",Q[Q.FIELD=255]="FIELD",Q))(AQ||{});class pZ{constructor(Q){this.args=Q}name="sendEIP712StructImplem";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:28,p1:this.args.type!=255||this.args.value.isLastChunk?0:1,p2:this.args.type};switch(this.args.type){case 0:return new B(Q).addAsciiStringToData(this.args.value).build();case 15:return new B(Q).add8BitUIntToData(this.args.value).build();case 255:return new B(Q).addBufferToData(this.args.value.data).build()}}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class qZ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){if(this.args.type!==AQ.FIELD)return await this.api.sendCommand(new pZ(this.args));let Q=z({data:void 0}),Z=new v(this.args.value.length+2).add16BitUIntToData(this.args.value.length).addBufferToData(this.args.value).build();for(let J=0;J<Z.length;J+=HQ)if(Q=await this.api.sendCommand(new pZ({type:AQ.FIELD,value:{data:Z.slice(J,J+HQ),isLastChunk:J>=Z.length-HQ}})),!V(Q))return Q;return Q}}var J6=5;class J5{constructor(Q,Z,J,X=(Y)=>new BZ(this.api,Y)){this.api=Q,this.contextModule=Z,this.args=J,this.provideContextFactory=X;for(let Y of this.args.domain)if(Y.path==="chainId"&&Y.value instanceof mQ){let $=BigInt(WQ(Y.value.data));$<=Number.MAX_SAFE_INTEGER&&(this.chainId=k(Number($)));break}}chainId=j;calldataMetadatas={};async run(){for(let H of this.args.additionalContexts)await this.provideContext(H);let Q=this.args.additionalContexts.some((H)=>H.type===W.ETHEREUM_PROXY_INFO),Z=this.args.clearSignContext.extract()?.proxy;Z!==void 0&&!Q&&await this.provideContext(Z);let J=this.args.clearSignContext.extract()?.certificate;J!==void 0&&await this.api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload}));let X=z({data:void 0}),Y=Object.entries(this.args.types).sort(([H],[w])=>H.localeCompare(w));for(let[H,w]of Y){let F=await this.api.sendCommand(new oZ({command:dZ.Name,name:H}));if(!V(F))return F;for(let[K,G]of Object.entries(w)){let S=await this.api.sendCommand(new oZ({command:dZ.Field,name:K,type:G}));if(!V(S))return S}}if(this.args.clearSignContext.isJust()){let H=await this.api.sendCommand(new l({type:g.Activation}));if(!V(H))return H}for(let H of this.args.domain){let w=await this.getImplementationTask(H).run();if(!V(w))return w}if(this.args.clearSignContext.isJust()){let H=this.args.clearSignContext.extract(),w=await this.api.sendCommand(new l({type:g.MessageInfo,displayName:H.messageInfo.displayName,filtersCount:H.messageInfo.filtersCount,signature:H.messageInfo.signature}));if(!V(w))return w}let $={indexes:{},nextIndex:0};for(let H of this.args.message){let w=await this.provideTokenInformation(H,$);if(w.isJust())return w.extract();let F=await this.provideTrustedName(H);if(F.isJust())return F.extract();let K=await this.filterValue(H,$);if(K.isJust()&&!V(K.extract()))return K.extract();let G=await this.getImplementationTask(H).run();if(!V(G))return G;if(await this.tryProvideTransactionContext(),this.args.clearSignContext.isJust()&&H.value instanceof QZ&&H.value.length===0){let S=Object.entries(this.args.clearSignContext.extract().filters).filter(([q])=>q.startsWith(`${H.path}.[]`)).map(([,q])=>q);for(let q of S){let d=await this.api.sendCommand(new l({type:g.DiscardedPath,path:q.path}));if(!V(d))return d;let GQ=await this.provideFiltering(q,$,!0);if(!V(GQ))return GQ}}}return X}async provideContext({type:Q,payload:Z,certificate:J}){switch(J&&await this.api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload})),Q){case W.ETHEREUM_TRANSACTION_CHECK:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new wZ({payload:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_DYNAMIC_NETWORK:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.CONFIGURATION})}).run();break;case W.ETHEREUM_DYNAMIC_NETWORK_ICON:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.ICON}),withPayloadLength:!1}).run();break;case W.ETHEREUM_PROXY_INFO:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new HZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_GATED_SIGNING:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new $Z({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_ENUM:case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:throw Error(`Context type ${Q} not supported in EIP712 messages`);default:throw Error(`Unhandled context type ${Q}`)}}getImplementationTask(Q){return Q.value instanceof IZ?new qZ(this.api,{type:AQ.ROOT,value:Q.value.root}):Q.value instanceof QZ?new qZ(this.api,{type:AQ.ARRAY,value:Q.value.length}):new qZ(this.api,{type:AQ.FIELD,value:Q.value.data})}async provideTokenInformation(Q,Z){if(this.args.clearSignContext.isJust()){let J=this.args.clearSignContext.extract().filters[Q.path];if(J!==void 0&&(J.type==="amount"||J.type==="token")&&Z.indexes[J.tokenIndex]===void 0){let X=J.tokenIndex,Y=this.args.clearSignContext.extract().tokens[X];if(Y===void 0)return j;let $=await this.api.sendCommand(new KZ({payload:Y}));if(!V($))return _.of($);let{tokenIndex:H}=$.data;Z.nextIndex=(H+1)%J6,Number(X)===Z5&&(H=Z5),Z.indexes[Number(X)]=H}}return j}async provideTrustedName(Q){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){let Z=this.args.clearSignContext.extract(),J=Z.filters[Q.path],X=Z.trustedNamesAddresses[Q.path];if(J!==void 0&&J.type==="trusted-name"&&X!==void 0){let Y=await this.api.sendCommand(new XQ);if(!V(Y))return k(Y);let $=await this.contextModule.getFieldContext({chainId:this.chainId.extract(),address:X,challenge:Y.data.challenge,types:J.types,sources:J.sources,deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME);if($.type===W.ETHEREUM_TRUSTED_NAME){$.certificate&&await this.api.sendCommand(new sQ({keyUsage:$.certificate.keyUsageNumber,certificate:$.certificate.payload}));let H=await new VQ(this.api,{payload:$.payload,commandFactory:(w)=>new WZ({data:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run();if(!V(H))return k(H)}}}return j}async filterValue(Q,Z){if(this.args.clearSignContext.isJust()){let J=this.args.clearSignContext.extract().filters[Q.path];if(J===void 0)return j;let X=await this.provideFiltering(J,Z,!1);return _.of(X)}return j}async provideFiltering(Q,Z,J){switch(Q.type){case"trusted-name":return await this.api.sendCommand(new l({type:g.TrustedName,discarded:J,displayName:Q.displayName,typesAndSourcesPayload:Q.typesAndSourcesPayload,signature:Q.signature}));case"datetime":return await this.api.sendCommand(new l({type:g.Datetime,discarded:J,displayName:Q.displayName,signature:Q.signature}));case"raw":return await this.api.sendCommand(new l({type:g.Raw,discarded:J,displayName:Q.displayName,signature:Q.signature}));case"token":return this.sanitizeDeviceIndex(Q.tokenIndex,Z),await this.api.sendCommand(new l({type:g.Token,discarded:J,tokenIndex:Z.indexes[Q.tokenIndex],signature:Q.signature}));case"amount":return this.sanitizeDeviceIndex(Q.tokenIndex,Z),await this.api.sendCommand(new l({type:g.Amount,discarded:J,displayName:Q.displayName,tokenIndex:Z.indexes[Q.tokenIndex],signature:Q.signature}));case"calldata-value":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataValue,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-callee":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataCallee,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-spender":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataSpender,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-chain-id":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataChainId,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-selector":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataSelector,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-amount":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataAmount,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));default:throw Error(`ProvideEIP712ContextTask/provideFiltering - Unhandled filter ${Q}`)}}async provideCalldataInfos(Q){if(this.args.clearSignContext.isJust()){if(this.calldataMetadatas[Q]!==void 0)return this.calldataMetadatas[Q].remainingFilters--,j;let Z=this.args.clearSignContext.extract().calldatas[Q];if(Z===void 0)return j;let J=[Z.filter.valueFlag,Z.filter.calleeFlag===ZZ.Present,Z.filter.chainIdFlag,Z.filter.selectorFlag,Z.filter.amountFlag,Z.filter.spenderFlag===ZZ.Present].filter((Y)=>Y).length,X=this.args.calldatasPreContexts[Q];return X?.length&&await this.provideContextFactory({contexts:X,derivationPath:this.args.derivationPath,loggerFactory:this.args.loggerFactory}).run(),this.calldataMetadatas[Q]={remainingFilters:J-1,postContexts:this.args.calldatasPostContexts[Q]},_.of(await this.api.sendCommand(new l({type:g.CalldataInfo,discarded:!1,calldataIndex:Q,valueFlag:Z.filter.valueFlag,calleeFlag:this.mapCalldataPresence(Z.filter.calleeFlag),chainIdFlag:Z.filter.chainIdFlag,selectorFlag:Z.filter.selectorFlag,amountFlag:Z.filter.amountFlag,spenderFlag:this.mapCalldataPresence(Z.filter.spenderFlag),signature:Z.filter.signature})))}return j}async tryProvideTransactionContext(){for(let Q in this.calldataMetadatas){let Z=this.calldataMetadatas[Q];Z.remainingFilters===0&&(Z.postContexts?.length&&await this.provideContextFactory({contexts:Z.postContexts,derivationPath:this.args.derivationPath,loggerFactory:this.args.loggerFactory}).run(),delete this.calldataMetadatas[Q])}}mapCalldataPresence(Q){switch(Q){case ZZ.None:return jZ.None;case ZZ.Present:return jZ.Present;case ZZ.VerifyingContract:return jZ.VerifyingContract;default:throw Error(`Unhandled presence ${Q}`)}}sanitizeDeviceIndex(Q,Z){Z.indexes[Q]===void 0&&(Z.indexes[Q]=Z.nextIndex,Z.nextIndex=(Z.nextIndex+1)%J6)}}import{TypedDataEncoder as X6}from"ethers";class X5{constructor(Q,Z,J,X){this.api=Q,this.data=Z,this.derivationPath=J,this._logger=X("SignTypedDataLegacyTask")}_logger;async run(){this._logger.debug("[run] Starting SignTypedDataLegacyTask",{data:{derivationPath:this.derivationPath,primaryType:this.data.primaryType}});let Q=X6.hashDomain(this.data.domain);if(!this.data.types[this.data.primaryType])throw this._logger.error("[run] Primary type not defined in types",{data:{primaryType:this.data.primaryType}}),Error(`Primary type "${this.data.primaryType}" is not defined in the types.`);let Z=this.data.types,{EIP712Domain:J,...X}=Z,Y=X6.hashStruct(this.data.primaryType,X,this.data.message);return this._logger.debug("[run] Computed hashes, sending blind sign command"),await this.api.sendCommand(new bZ({derivationPath:this.derivationPath,legacyArgs:k({domainHash:Q,messageHash:Y})}))}}function Y6(Q){if(Q==null)return null;if(typeof Q=="number")return Number.isSafeInteger(Q)?Q:null;if(typeof Q=="string"){if(Q.trim()==="")return null;let Z=Number(Q);return Number.isSafeInteger(Z)?Z:null}return null}class LZ extends t{makeStateMachine(Q){let{getAddress:Z,getAppConfig:J,web3CheckOptIn:X,buildContext:Y,provideContext:$,signTypedData:H,signTypedDataLegacy:w,detectBlindSigning:F}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),getAddress:R(Z),getAppConfig:R(J),web3CheckOptIn:R(X),buildContext:R(Y),provideContext:R($),signTypedData:R(H),signTypedDataLegacy:R(w),detectBlindSigning:R(F)},guards:{noInternalError:({context:K})=>K._internalState.error===null,notRefusedByUser:({context:K})=>K._internalState.error!==null&&(!("errorCode"in K._internalState.error)||K._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:K})=>new p(Q.getDeviceSessionState(),K._internalState.appConfig,new i).withMinVersionExclusive(fZ).excludeDeviceModel(E.NANO_S).excludeDeviceModel(E.NANO_SP).excludeDeviceModel(E.NANO_X).check(),shouldOptIn:({context:K})=>!K._internalState.appConfig.web3ChecksEnabled&&!K._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:K})=>K.input.skipOpenApp,hasSignature:({context:K})=>K._internalState.signature!==null},actions:{assignErrorFromEvent:O({_internalState:(K)=>({...K.context._internalState,error:K.event.error})})}}).createMachine({id:"SignTypedDataDeviceAction",initial:"InitialState",context:({input:K})=>({input:K,intermediateValue:{requiredUserInteraction:D.None,step:e.OPEN_APP},_internalState:{error:null,appConfig:null,from:null,typedDataContext:null,signature:null,isBlindSign:null,usedFallback:!1}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(K)=>({...K.event.snapshot.context.intermediateValue,step:e.OPEN_APP})})},onDone:{actions:O({_internalState:(K)=>K.event.output.caseOf({Right:()=>K.context._internalState,Left:(G)=>({...K.context._internalState,error:G})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:cZ(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"GetAddress",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:O({intermediateValue:{requiredUserInteraction:D.Web3ChecksOptIn,step:e.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:{...G._internalState.appConfig,web3ChecksEnabled:K.output.data.enabled}}:G._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:O(({context:K})=>({intermediateValue:{requiredUserInteraction:D.None,step:e.WEB3_CHECKS_OPT_IN_RESULT,result:K._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"GetAddress"}}},GetAddress:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:K})=>({derivationPath:K.input.derivationPath}),onDone:{target:"BuildContext",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,from:K.output.data.address}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error"}}},BuildContext:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.BUILD_CONTEXT}}),invoke:{id:"buildContext",src:"buildContext",input:({context:K})=>({contextModule:K.input.contextModule,parser:K.input.parser,transactionParser:K.input.transactionParser,transactionMapper:K.input.transactionMapper,data:K.input.data,appConfig:K._internalState.appConfig,derivationPath:K.input.derivationPath,from:K._internalState.from}),onDone:{target:"ProvideContext",actions:[O({_internalState:({event:K,context:G})=>({...G._internalState,typedDataContext:K.output})})]},onError:{target:"SignTypedDataLegacy"}}},ProvideContext:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.PROVIDE_CONTEXT}}),invoke:{id:"provideContext",src:"provideContext",input:({context:K})=>({contextModule:K.input.contextModule,taskArgs:K._internalState.typedDataContext}),onDone:{actions:O({_internalState:(K)=>V(K.event.output)?K.context._internalState:{...K.context._internalState,error:K.event.output.error}}),target:"ProvideContextResultCheck"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContextResultCheck:{always:[{guard:"noInternalError",target:"SignTypedData"},{guard:"notRefusedByUser",target:"SignTypedDataLegacy"},{target:"Error"}]},SignTypedData:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.SIGN_TYPED_DATA}}),invoke:{id:"signTypedData",src:"signTypedData",input:({context:K})=>({derivationPath:K.input.derivationPath}),onDone:{target:"SignTypedDataResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},SignTypedDataResultCheck:{always:[{guard:"noInternalError",target:"DetectBlindSigning"},{guard:"notRefusedByUser",target:"SignTypedDataLegacy"},{target:"DetectBlindSigning"}]},SignTypedDataLegacy:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.SIGN_TYPED_DATA_LEGACY},_internalState:({context:K})=>({...K._internalState,usedFallback:!0})}),invoke:{id:"signTypedDataLegacy",src:"signTypedDataLegacy",input:({context:K})=>({derivationPath:K.input.derivationPath,data:K.input.data}),onDone:{target:"SignTypedDataLegacyResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},SignTypedDataLegacyResultCheck:{always:"DetectBlindSigning"},DetectBlindSigning:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.DETECT_BLIND_SIGNING}}),invoke:{id:"detectBlindSigning",src:"detectBlindSigning",input:({context:K})=>{let G=Q.getDeviceSessionState(),S=G.sessionStateType!==MQ.Connected?G.firmwareVersion?.os??null:null;return{input:{type:"typedData",hasContext:K._internalState.typedDataContext?.clearSignContext.isJust()??!1,usedFallback:K._internalState.usedFallback,chainId:Y6(K.input.data.domain.chainId),targetAddress:K.input.data.domain.verifyingContract??null,deviceModelId:Q.getDeviceModel().id,signerAppVersion:K._internalState.appConfig?.version??"",deviceVersion:S,clearSigningType:K._internalState.typedDataContext?.clearSigningType??null,partialContextErrors:K._internalState.typedDataContext?.contextErrorCount??0},contextModule:K.input.contextModule,loggerFactory:this.getLoggerFactory(Q)}},onDone:[{guard:"hasSignature",target:"Success",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})},{target:"Error",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})}],onError:[{guard:"hasSignature",target:"Success"},{target:"Error"}]}},Success:{type:"final"},Error:{type:"final"}},output:({context:K})=>K._internalState.signature?T(K._internalState.signature):L(K._internalState.error||new m("No error in final state"))})}extractDependencies(Q){return{getAddress:async(Z)=>Q.sendCommand(new TQ(Z.input)),getAppConfig:async()=>Q.sendCommand(new GZ),web3CheckOptIn:async()=>Q.sendCommand(new _Z),buildContext:async(Z)=>new Q5(Q,Z.input.contextModule,Z.input.parser,Z.input.transactionParser,Z.input.transactionMapper,Z.input.data,Z.input.derivationPath,Z.input.appConfig,Z.input.from,this.getLoggerFactory(Q)).run(),provideContext:async(Z)=>new J5(Q,Z.input.contextModule,Z.input.taskArgs).run(),signTypedData:async(Z)=>Q.sendCommand(new bZ({derivationPath:Z.input.derivationPath,legacyArgs:j})),signTypedDataLegacy:async(Z)=>new X5(Q,Z.input.data,Z.input.derivationPath,this.getLoggerFactory(Q)).run(),detectBlindSigning:async(Z)=>new VZ(Z.input).run()}}}function $6(Q,Z){switch(Q.name){case"string":return typeof Z!="string"?j:k(new TextEncoder().encode(Z));case"bytes":case"address":return typeof Z!="string"?j:o9(Q,Z);case"bool":case"uint":case"int":return Q.name==="bool"&&typeof Z=="boolean"&&(Z=Number(Z)),typeof Z!="string"&&typeof Z!="number"&&typeof Z!="bigint"?j:p9(Q.name,Q.size.mapOrDefault((J)=>J*8,1),Z)}}function o9(Q,Z){let J=Q.name==="address"?k(20):Q.size;return _.fromNullable(s(Z)).filter((X)=>J.mapOrDefault((Y)=>X.length<=Y,!0))}function p9(Q,Z,J){let X;switch(typeof J){case"bigint":X=J;break;case"number":if(!Number.isInteger(J))return j;X=BigInt(J);break;case"string":if(J.length===0)return j;try{X=BigInt(J)}catch{return j}break}let Y=Q==="int";return s9(X,BigInt(Z),Y).chain(($)=>_.fromNullable(s($.toString(16))))}function s9(Q,Z,J){if(!J)return Q>=0n&&Q<1n<<Z?k(Q):j;let X=1n<<Z-1n;if(Q>=X||Q<-X)return j;if(Q<0n){let Y=(1n<<Z)-1n;Q=-Q,Q=(~Q&Y)+1n}return k(Q)}class Y5{domainTypeName="EIP712Domain";domainDefaultTypes={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"};structs;constructor(Q,Z){if(!(this.domainTypeName in Q)){let X=[];Object.entries(this.domainDefaultTypes).forEach(([Y,$])=>{Y in Z&&X.push({name:Y,type:$})}),X.length>0&&(Q[this.domainTypeName]=X)}let J={};for(let[X,Y]of Object.entries(Q)){let $={};for(let H of Y)$[H.name]=this.parseType(H.type);J[X]=$}this.structs=J}getStructDefinitions(){return this.structs}parse(Q,Z){if(!this.isRecord(Z))return L(Error("Message is not a record"));let J=[{path:"",type:"",value:new IZ(Q)}];return this.visitValue(Q,Z,"",(X)=>J.push(X))?T(J):L(Error("Failed to parse"))}isRecord(Q){return typeof Q=="object"&&Q!==null}parseType(Q){return this.tryParsePrimitiveType(Q).mapOrDefault((Z)=>Z,this.tryParseArrayType(Q).mapOrDefault((Z)=>Z,new cQ(Q)))}tryParsePrimitiveType(Q){{let Z=Q.match(/^(((u?)int)(\d+))$/);if(Z){let J=parseInt(Z[4]);return J%8!==0||J===0||J>256?j:k(new lQ(Z[1],Z[3]?"uint":"int",k(J/8)))}}{let Z=Q.match(/^((bytes)(\d*))$/);if(Z){let J=Z[3]?parseInt(Z[3]):null;return J!==null&&(J===0||J>32)?j:k(new lQ(Z[1],"bytes",_.fromNullable(J)))}}return Q==="address"||Q==="bool"||Q==="string"?k(new lQ(Q,Q,j)):j}tryParseArrayType(Q){let Z=Q.match(/^([^[[]*)(((\[\d*\])*)\[\d*\])$/);if(Z){let J=[...Z[2].matchAll(/\[(\d*)\]/g)];if(J&&J.length>0){let X=J.map(([,$])=>$?k(parseInt($)):j),Y=this.tryParsePrimitiveType(Z[1]).mapOrDefault(($)=>$,new cQ(Z[1]));return k(new jQ(Q,Y,Z[1]+Z[3],X[X.length-1],X))}}return j}visitValue(Q,Z,J,X){return this.tryVisitStructValue(Q,Z,J,X)||this.tryVisitPrimitiveValue(Q,Z,J,X)||this.tryVisitArrayValue(Q,Z,J,X)}tryVisitPrimitiveValue(Q,Z,J,X){return!this.isRecord(Z)&&!Array.isArray(Z)&&this.tryParsePrimitiveType(Q).chain((Y)=>$6(Y,Z).ifJust(($)=>{X({path:J,type:Q,value:new mQ($)})})).isJust()}tryVisitStructValue(Q,Z,J,X){let Y=this.structs[Q];if(Y===void 0||!this.isRecord(Z))return!1;for(let[$,H]of Object.entries(Y)){let w=Z[$];if(w===void 0)return!1;let F=J.length?`${J}.${$}`:$;if(!this.visitValue(H.typeName,w,`${F}`,X))return!1}return!0}tryVisitArrayValue(Q,Z,J,X){return Array.isArray(Z)&&this.tryParseArrayType(Q).filter((Y)=>Y.count.mapOrDefault(($)=>Z.length==$,!0)).mapOrDefault((Y)=>{X({path:J,type:Q,value:new QZ(Z.length)});for(let $ of Z){let H=J.length?`${J}.[]`:"[]";if(!this.visitValue(Y.rowType,$,`${H}`,X))return!1}return!0},!1)}}var{defineProperty:i9,getOwnPropertyDescriptor:a9}=Object,n9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?a9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&i9(Z,J,Y),Y},JZ=class{parse(Q){let Z=new Y5(Q.types,Q.domain),J=Z.getStructDefinitions(),X=Z.parse("EIP712Domain",Q.domain),Y=Z.parse(Q.primaryType,Q.message);return X.chain(($)=>Y.map((H)=>({types:J,domain:$,message:H})))}};JZ=n9([f()],JZ);var r9=(Q)=>new LZ({input:{derivationPath:Q.derivationPath,data:Q.data,contextModule:Q.contextModule,skipOpenApp:Q.skipOpenApp,parser:new JZ,transactionMapper:new fQ,transactionParser:new vQ},inspect:Q.inspect,loggerFactory:Q.loggerFactory});var sZ={GetAddressUseCase:Symbol.for("GetAddressUseCase")};var QQ={AppBinding:Symbol.for("AppBinder")};var{defineProperty:t9,getOwnPropertyDescriptor:e9}=Object,QJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?e9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&t9(Z,J,Y),Y},ZJ=(Q,Z)=>(J,X)=>Z(J,X,Q),iZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z){return this._appBinder.getAddress({derivationPath:Q,checkOnDevice:Z?.checkOnDevice??!1,returnChainCode:Z?.returnChainCode??!1,skipOpenApp:Z?.skipOpenApp??!1,chainId:Z?.chainId})}};iZ=QJ([f(),ZJ(0,M(QQ.AppBinding))],iZ);var H6=()=>new ZQ(({bind:Q})=>{Q(sZ.GetAddressUseCase).to(iZ)});var OQ={Dmk:Symbol.for("Dmk"),SessionId:Symbol.for("SessionId"),ContextModule:Symbol.for("ContextModule"),DmkLoggerFactory:Symbol.for("DmkLoggerFactory"),AddressBook:Symbol.for("AddressBook")};var qQ={SignTransactionUseCase:Symbol.for("SignTransactionUseCase"),TransactionParserService:Symbol.for("TransactionParserService"),TransactionMapperService:Symbol.for("TransactionMapperService"),TransactionMappers:Symbol.for("TransactionMappers")};var XZ=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.BUILD_CONTEXTS="signer.eth.steps.buildContexts",Q.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",Q.VERIFY_SAFE_ADDRESS="signer.eth.steps.verifySafeAddress",Q))(XZ||{});class $5{constructor(Q,Z){this._api=Q,this._args=Z,this._logger=Z.loggerFactory("BuildSafeAddressContextTask")}_logger;async run(){this._logger.debug("[run] Starting BuildSafeAddressContextTask",{data:{safeContractAddress:this._args.safeContractAddress,chainId:this._args.options.chainId}});let Q=await this._api.sendCommand(new XQ);if(!V(Q))throw this._logger.error("[run] Failed to get challenge"),Error("Failed to get challenge");let Z=Q.data.challenge,J=await this._args.contextModule.getContexts({safeContractAddress:this._args.safeContractAddress,chainId:this._args.options.chainId,deviceModelId:this._args.deviceModelId,challenge:Z},[W.ETHEREUM_SAFE,W.ETHEREUM_SIGNER]);if(J.forEach((X)=>{if(X.type===W.ERROR)throw Error(X.error.message)}),J.length!==2||J.find((X)=>X.type===W.ETHEREUM_SAFE)===void 0||J.find((X)=>X.type===W.ETHEREUM_SIGNER)===void 0)throw this._logger.error("[run] Invalid safe address contexts",{data:{receivedTypes:J.map((X)=>X.type),expectedTypes:[W.ETHEREUM_SAFE,W.ETHEREUM_SIGNER]}}),Error("Invalid safe address contexts");return this._logger.debug("[run] BuildSafeAddressContextTask completed successfully"),{clearSignContexts:J.filter(FQ)}}}class H5 extends t{makeStateMachine(Q){let{buildSafeAddressContexts:Z,provideContexts:J}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),buildSafeAddressContexts:R(Z),provideContexts:R(J)},guards:{noInternalError:({context:X})=>X._internalState.error===null,skipOpenApp:({context:X})=>!!X.input.options.skipOpenApp},actions:{assignErrorFromEvent:O({_internalState:(X)=>({...X.context._internalState,error:X.event.error})})}}).createMachine({id:"VerifySafeAddressDeviceAction",initial:"InitialState",context:({input:X})=>({input:X,intermediateValue:{requiredUserInteraction:D.None,step:XZ.OPEN_APP},_internalState:{error:null,contexts:[]}}),states:{InitialState:{always:[{target:"BuildSafeAddressContexts",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(X)=>({...X.event.snapshot.context.intermediateValue,step:XZ.OPEN_APP})})},onDone:{actions:O({_internalState:(X)=>X.event.output.caseOf({Right:()=>X.context._internalState,Left:(Y)=>({...X.context._internalState,error:Y})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"BuildSafeAddressContexts",guard:"noInternalError"},"Error"]},BuildSafeAddressContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:XZ.BUILD_CONTEXTS}}),invoke:{id:"buildSafeAddressContexts",src:"buildSafeAddressContexts",input:({context:X})=>({contextModule:X.input.contextModule,safeContractAddress:X.input.safeContractAddress,options:X.input.options,deviceModelId:Q.getDeviceModel().id,loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"ProvideContexts",actions:[O({_internalState:({event:X,context:Y})=>({...Y._internalState,contexts:X.output.clearSignContexts})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:XZ.VERIFY_SAFE_ADDRESS}}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:X})=>({contexts:X._internalState.contexts}),onDone:{target:"ProvideContextsResultCheck",actions:[O({_internalState:({event:X,context:Y})=>X.output.isLeft()?{...Y._internalState,error:X.output.extract()}:{...Y._internalState,error:null}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContextsResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:X})=>X._internalState.error?L(X._internalState.error):T(void 0)})}extractDependencies(Q){return{provideContexts:async(Z)=>{for(let J of Z.input.contexts){let X=await new yQ(Q,{context:J,loggerFactory:this.getLoggerFactory(Q)}).run();if(!V(X))return L(X.error)}return T(void 0)},buildSafeAddressContexts:async(Z)=>new $5(Q,Z.input).run()}}}var JJ=32,XJ=32;class K5{name="signEIP7702Authorization";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let{data:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:52,p1:Z?1:0,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(JJ),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(XJ),!0);return Y?z({data:k({r:X,s:Y,v:J})}):z({error:new N("S is missing")})})}}var YJ=0,$J=1,HJ=2,KJ=3;class W5{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.logger}_logger;async run(){let{derivationPath:Q,chainId:Z,address:J,nonce:X}=this.args;this._logger.debug("[run] Starting SendSignAuthorizationDelegationTask",{data:{derivationPath:Q,chainId:Z,address:J,nonce:X}});let Y=$Q.splitPath(Q),$=this.buildData(Y,Z,J,X);this._logger.debug("[run] Sending authorization delegation in chunks",{data:{bufferLength:$.length}});let H=await new xQ(this.api,{data:$,commandFactory:(w)=>new K5({data:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run();return V(H)?(this._logger.debug("[run] Authorization delegation signed successfully"),H.data.mapOrDefault((w)=>z({data:w}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to sign authorization delegation",{data:{error:H.error}}),H)}buildData(Q,Z,J,X){let Y=new v;Y.add8BitUIntToData(Q.length),Q.forEach((w)=>{Y.add32BitUIntToData(w)});let $=new v;$.encodeInTLVFromBuffer(YJ,Uint8Array.from([1])),$.encodeInTLVFromHexa($J,J),$.encodeInTLVFromUInt64(HJ,Z),$.encodeInTLVFromUInt64(KJ,X);let H=$.build();return Y.add16BitUIntToData(H.length).addBufferToData(H).build()}}var{defineProperty:WJ,getOwnPropertyDescriptor:wJ}=Object,zJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?wJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&WJ(Z,J,Y),Y},dQ=(Q,Z)=>(J,X)=>Z(J,X,Q),aZ=class{constructor(Q,Z,J,X,Y,$,H){this.dmk=Q,this.contextModule=Z,this.mapper=J,this.parser=X,this.sessionId=Y,this.dmkLoggerFactory=$,this.addressBook=H}getAddress(Q){let Z=this.dmkLoggerFactory("SendGetAddressTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new zZ(J,{contextModule:this.contextModule,derivationPath:Q.derivationPath,checkOnDevice:Q.checkOnDevice,returnChainCode:Q.returnChainCode,chainId:Q.chainId,loggerFactory:this.dmkLoggerFactory}).run(),appName:y,requiredUserInteraction:Q.checkOnDevice?D.VerifyAddress:D.None,skipOpenApp:Q.skipOpenApp},logger:Z})})}verifySafeAddress(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new H5({input:{safeContractAddress:Q.safeContractAddress,contextModule:this.contextModule,options:Q.options??{chainId:1}},loggerFactory:this.dmkLoggerFactory})})}signPersonalMessage(Q){let Z=this.dmkLoggerFactory("SendSignPersonalMessageTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new OZ(J,{...Q,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignPersonalMessage,skipOpenApp:Q.skipOpenApp},logger:this.dmkLoggerFactory("SendSignPersonalMessageTask")})})}signTransaction(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new DZ({input:{derivationPath:Q.derivationPath,transaction:Q.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,addressBook:this.addressBook,options:Q.options??{}},loggerFactory:this.dmkLoggerFactory})})}signTypedData(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LZ({input:{derivationPath:Q.derivationPath,data:Q.data,parser:Q.parser,transactionMapper:this.mapper,transactionParser:this.parser,contextModule:this.contextModule,skipOpenApp:Q.skipOpenApp},loggerFactory:this.dmkLoggerFactory})})}signDelegationAuthorization(Q){let Z=this.dmkLoggerFactory("SendSignAuthorizationDelegationTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new W5(J,{...Q,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignDelegationAuthorization,skipOpenApp:!1},logger:this.dmkLoggerFactory("SendSignAuthorizationDelegationTask")})})}};aZ=zJ([f(),dQ(0,M(OQ.Dmk)),dQ(1,M(OQ.ContextModule)),dQ(2,M(qQ.TransactionMapperService)),dQ(3,M(qQ.TransactionParserService)),dQ(4,M(OQ.SessionId)),dQ(5,M(OQ.DmkLoggerFactory)),dQ(6,M(OQ.AddressBook))],aZ);var K6=()=>new ZQ(({bind:Q})=>{Q(QQ.AppBinding).to(aZ)});var nZ={SignDelegationAuthorizationUseCase:Symbol.for("SignDelegationAuthorizationUseCase")};var{defineProperty:OJ,getOwnPropertyDescriptor:GJ}=Object,_J=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?GJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&OJ(Z,J,Y),Y},VJ=(Q,Z)=>(J,X)=>Z(J,X,Q),rZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z,J,X){return this._appBinder.signDelegationAuthorization({derivationPath:Q,nonce:Z,address:J,chainId:X})}};rZ=_J([f(),VJ(0,M(QQ.AppBinding))],rZ);var W6=()=>new ZQ(({bind:Q})=>{Q(nZ.SignDelegationAuthorizationUseCase).to(rZ)});var tZ={SignMessageUseCase:Symbol.for("SignMessageUseCase")};var{defineProperty:FJ,getOwnPropertyDescriptor:NJ}=Object,BJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?NJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&FJ(Z,J,Y),Y},DJ=(Q,Z)=>(J,X)=>Z(J,X,Q),eZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z,J){return this._appBinder.signPersonalMessage({derivationPath:Q,message:Z,skipOpenApp:J?.skipOpenApp??!1})}};eZ=BJ([f(),DJ(0,M(QQ.AppBinding))],eZ);var w6=()=>new ZQ(({bind:Q})=>{Q(tZ.SignMessageUseCase).to(eZ)});var{defineProperty:xJ,getOwnPropertyDescriptor:PJ}=Object,bJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?PJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&xJ(Z,J,Y),Y},IJ=(Q,Z)=>(J,X)=>Z(J,X,Q),Q4=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z){return this._appBinder.verifySafeAddress({safeContractAddress:Q,options:Z})}};Q4=bJ([f(),IJ(0,M(QQ.AppBinding))],Q4);var Z4={VerifySafeAddressUseCase:Symbol.for("VerifySafeAddressUseCase")};var z6=()=>new ZQ(({bind:Q})=>{Q(Z4.VerifySafeAddressUseCase).to(Q4)});var{defineProperty:jJ,getOwnPropertyDescriptor:qJ}=Object,LJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?qJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&jJ(Z,J,Y),Y},MJ=(Q,Z)=>(J,X)=>Z(J,X,Q),J4=class{_appBinding;constructor(Q){this._appBinding=Q}execute(Q,Z,J){return this._appBinding.signTransaction({derivationPath:Q,transaction:Z,options:J})}};J4=LJ([f(),MJ(0,M(QQ.AppBinding))],J4);var O6=()=>new ZQ(({bind:Q})=>{Q(qQ.SignTransactionUseCase).to(J4),Q(qQ.TransactionMapperService).to(fQ),Q(qQ.TransactionParserService).to(vQ)});var oQ={SignTypedDataUseCase:Symbol.for("SignTypedDataUseCase"),TypedDataParserService:Symbol.for("TypedDataParserService")};var{defineProperty:SJ,getOwnPropertyDescriptor:kJ}=Object,UJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?kJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&SJ(Z,J,Y),Y},G6=(Q,Z)=>(J,X)=>Z(J,X,Q),X4=class{_appBinding;_parser;constructor(Q,Z){this._appBinding=Q,this._parser=Z}execute(Q,Z,J){return this._appBinding.signTypedData({derivationPath:Q,parser:this._parser,data:Z,skipOpenApp:J?.skipOpenApp??!1})}};X4=UJ([f(),G6(0,M(QQ.AppBinding)),G6(1,M(oQ.TypedDataParserService))],X4);var _6=()=>new ZQ(({bind:Q})=>{Q(oQ.SignTypedDataUseCase).to(X4),Q(oQ.TypedDataParserService).to(JZ)});var F6=({dmk:Q,sessionId:Z,contextModule:J,addressBook:X})=>{let Y=new V6;return Y.bind(OQ.Dmk).toConstantValue(Q),Y.bind(OQ.ContextModule).toConstantValue(J),Y.bind(OQ.SessionId).toConstantValue(Z),Y.bind(OQ.AddressBook).toConstantValue(X??UZ),Y.bind(OQ.DmkLoggerFactory).toConstantValue(($)=>Q.getLoggerFactory()(["SignerEth",$])),Y.loadSync(H6(),K6(),W6(),w6(),O6(),_6(),z6()),Y};class w5{_container;constructor({dmk:Q,sessionId:Z,contextModule:J,addressBook:X}){this._container=F6({dmk:Q,sessionId:Z,contextModule:J,addressBook:X})}signTransaction(Q,Z,J){return this._container.get(qQ.SignTransactionUseCase).execute(Q,Z,J)}signMessage(Q,Z,J){return this._container.get(tZ.SignMessageUseCase).execute(Q,Z,J)}signTypedData(Q,Z,J){return this._container.get(oQ.SignTypedDataUseCase).execute(Q,Z,J)}getAddress(Q,Z){return this._container.get(sZ.GetAddressUseCase).execute(Q,Z)}verifySafeAddress(Q,Z){return this._container.get(Z4.VerifySafeAddressUseCase).execute(Q,Z)}signDelegationAuthorization(Q,Z,J,X){return this._container.get(nZ.SignDelegationAuthorizationUseCase).execute(Q,X,J,Z)}}class RJ{_dmk;_sessionId;_customContextModule;_originToken;_addressBook;constructor({dmk:Q,sessionId:Z,originToken:J}){this._dmk=Q,this._sessionId=Z,this._originToken=J}withContextModule(Q){return this._customContextModule=Q,this}withAddressBook(Q){return this._addressBook=Q,this}build(){let Q=this._customContextModule??new B6({originToken:this._originToken,loggerFactory:(Z)=>this._dmk.getLoggerFactory()(["ContextModule",Z])}).setChain(N6.Ethereum).build();return new w5({dmk:this._dmk,sessionId:this._sessionId,contextModule:Q,addressBook:this._addressBook})}}export{lZ as TransactionType,RJ as SignerEthBuilder,r9 as SignTypedDataDeviceActionFactory,e as SignTypedDataDAStateStep,g9 as SignTransactionDeviceActionFactory,o as SignTransactionDAStep,I6 as SignPersonalMessageDeviceActionFactory,D6 as GetAddressDeviceActionFactory,UZ as EMPTY_EVM_ADDRESS_BOOK};
1
+ import{I as Z5,J as ZZ,c as W,e as KQ,h as FQ,ja as N6,ma as B6,n as V5,na as V4,oa as F4,ra as N4,wa as D4,xa as mZ,ya as gQ,za as PZ}from"./chunk-p9mwkgye.js";import"./chunk-410fpx61.js";import{Da as x,Ea as $Q,Fa as B4}from"./chunk-0k1b2ddn.js";import{$a as N,Db as n5,Hb as sQ,Lb as D,Mb as _,Nb as k,Oa as t5,Ob as j,Oc as zQ,Pc as LQ,Qa as _5,Qb as L,Qc as r5,Ra as s,Rb as T,Sa as WQ,Vd as p,Wa as v,Xa as HQ,Ya as B,Za as Z6,_a as U,ac as cZ,bc as R,cb as a,cc as O,db as c5,dc as r,eb as z,fb as V,hb as MZ,kc as m,md as M,nd as f,od as ZQ,pc as t,pd as V6,rc as eQ,sc as MQ,xb as R6,yb as E}from"./chunk-wm89desc.js";import{Zd as j4}from"./chunk-9a9gn4pb.js";var f2=j4(t5(),1);var y="Ethereum",z5=10;var b={6001:{message:"Mode check fail"},6501:{message:"TransactionType not supported"},6502:{message:"Output buffer too small for chainId conversion"},6800:{message:"Internal error (Please report)"},6982:{message:"Security status not satisfied (Canceled by user)"},6983:{message:"Wrong Data length"},6984:{message:"Plugin not installed"},6985:{message:"Condition not satisfied"},"6a00":{message:"Error without info"},"6a80":{message:"Invalid data"},"6a84":{message:"Insufficient memory"},"6a88":{message:"Data not found"},"6b00":{message:"Incorrect parameter P1 or P2"},"6d00":{message:"Incorrect parameter INS"},"6e00":{message:"Incorrect parameter CLA"},"6f00":{message:"Technical problem (Internal error, please report)"},"911c":{message:"Command code not supported (i.e., Ledger-PKI not yet available)"}};class O5 extends MZ{constructor(Q){super({tag:"EthAppCommandError",...Q})}}var I=(Q)=>new O5(Q);var G5=32;class TQ{name="getAddress";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let Q={cla:224,ins:2,p1:this.args.checkOnDevice?1:0,p2:this.args.returnChainCode?1:0},Z=new B(Q),J=this.args.derivationPath,X=$Q.splitPath(J);if(Z.add8BitUIntToData(X.length),X.forEach((Y)=>{Z.add32BitUIntToData(Y)}),this.args.checkOnDevice){let Y=this.args.chainId??1;Z.add64BitUIntToData(Y)}return Z.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("Public key length is missing")});if(Z.testMinimalLength(J)===!1)return z({error:new N("Public key is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(J)),Y=Z.extract8BitUInt();if(Y===void 0)return z({error:new N("Ethereum address length is missing")});if(Z.testMinimalLength(Y)===!1)return z({error:new N("Ethereum address is missing")});let $=`0x${Z.encodeToString(Z.extractFieldByLength(Y))}`;if(_5($)===!1)return z({error:new N("Invalid Ethereum address")});let H;if(this.args.returnChainCode){if(Z.testMinimalLength(G5)===!1)return z({error:new N("Invalid Chaincode")});H=Z.encodeToHexaString(Z.extractFieldByLength(G5))}return z({data:{publicKey:X,address:$,chainCode:H}})})}}class $4{constructor(Q){this.args=Q}name="provideEnum";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:36,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class $Z{constructor(Q){this.args=Q}name="provideGatedSigning";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:56,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var CQ=((Q)=>(Q[Q.CONFIGURATION=0]="CONFIGURATION",Q[Q.ICON=1]="ICON",Q))(CQ||{});class EQ{constructor(Q){this.args=Q}name="provideNetworkConfiguration";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:48,p1:this.args.isFirstChunk?1:0,p2:this.args.configurationType};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class H4{constructor(Q){this.args=Q}name="provideNFTInformation";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:20,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class HZ{constructor(Q){this.args=Q}name="provideProxyInfo";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:42,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var SZ=((Q)=>(Q[Q.SAFE_DESCRIPTOR=0]="SAFE_DESCRIPTOR",Q[Q.SIGNER_DESCRIPTOR=1]="SIGNER_DESCRIPTOR",Q))(SZ||{});class kZ{constructor(Q){this.args=Q}name="provideSafeAccount";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:54,p1:this.args.isFirstChunk?1:0,p2:this.args.type};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class KZ{constructor(Q){this.args=Q}name="provideTokenInformation";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:10,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q).extract8BitUInt()??0;return z({data:{tokenIndex:Z}})})}}class K4{constructor(Q){this.args=Q}name="provideTransactionFieldDescription";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:40,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class W4{constructor(Q){this.args=Q}name="provideTransactionInformation";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:38,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class WZ{constructor(Q){this.args=Q}name="provideTrustedName";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:34,p1:this.args.isFirstChunk?1:0,p2:0};return new B(Q).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class wZ{constructor(Q){this.args=Q}name="provideWeb3Check";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:50,p1:0,p2:this.args.isFirstChunk?1:0};return new B(Q).addBufferToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class w4{constructor(Q){this.args=Q}name="setExternalPlugin";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:18,p1:0,p2:0}).addHexaStringToData(this.args.payload).addHexaStringToData(this.args.signature??"").build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class z4{constructor(Q){this.args=Q}name="setPlugin";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:22,p1:0,p2:0}).addHexaStringToData(this.args.payload).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class O4{static PAYLOAD_LENGTH_BYTES=2;static getBufferFromPayload(Q){let Z=s(Q);return Z===null||Z.length===0?null:new v(Z.length+this.PAYLOAD_LENGTH_BYTES).add16BitUIntToData(Z.length).addBufferToData(Z).build()}}class xQ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let{data:Q,commandFactory:Z}=this.args,J=new v(Q.length).addBufferToData(Q).build();for(let X=0;X<J.length;X+=HQ){let Y=X+HQ>=J.length,$=await this.api.sendCommand(Z({chunkedData:J.slice(X,X+HQ),isFirstChunk:X===0}));if(!V($))return $;if(Y)return z({data:$.data})}throw new N("No result")}}class VQ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let{payload:Q,withPayloadLength:Z=!0}=this.args,J=null;return Z?J=O4.getBufferFromPayload(Q):J=s(Q),J?new xQ(this.api,{data:J,commandFactory:this.args.commandFactory}).run():z({error:new N("Invalid payload")})}}class yQ{constructor(Q,Z,J=(X,Y)=>new VQ(X,Y)){this._api=Q,this._args=Z,this._sendPayloadInChunksTaskFactory=J,this._logger=Z.loggerFactory("ProvideContextTask")}_logger;async run(){let{type:Q,payload:Z,certificate:J}=this._args.context;switch(this._logger.debug("[run] Providing context",{data:{type:Q,payloadLength:typeof Z=="string"?Z.length:void 0,hasCertificate:!!J}}),J&&await this._api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload})),Q){case W.ETHEREUM_PLUGIN:return await this._api.sendCommand(new z4({payload:Z}));case W.ETHEREUM_EXTERNAL_PLUGIN:return await this._api.sendCommand(new w4({payload:Z}));case W.ETHEREUM_NFT:return await this._api.sendCommand(new H4({payload:Z}));case W.ETHEREUM_TOKEN:return await this._api.sendCommand(new KZ({payload:Z}));case W.ETHEREUM_TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new W4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new WZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new $4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new K4({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_TRANSACTION_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new wZ({payload:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_PROXY_INFO:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new HZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();case W.ETHEREUM_DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.CONFIGURATION})}).run();case W.ETHEREUM_DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.ICON}),withPayloadLength:!1}).run();case W.ETHEREUM_SAFE:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new kZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,type:SZ.SAFE_DESCRIPTOR})}).run();case W.ETHEREUM_SIGNER:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new kZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,type:SZ.SIGNER_DESCRIPTOR})}).run();case W.ETHEREUM_GATED_SIGNING:return this._sendPayloadInChunksTaskFactory(this._api,{payload:Z,commandFactory:(X)=>new $Z({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();default:return z({error:new N(`The context type [${Q}] is not covered`)})}}}class zZ{constructor(Q,Z){this._api=Q,this._args=Z,this._logger=Z.loggerFactory("SendGetAddressTask")}_logger;async run(){let{contextModule:Q,derivationPath:Z,checkOnDevice:J,returnChainCode:X,chainId:Y}=this._args,$=J&&Y!==void 0?Y:void 0;if($!==void 0){let H=this._api.getDeviceModel().id,w={chainId:$,deviceModelId:H};this._logger.debug("[run] Loading dynamic network context",{data:{chainId:$,deviceModelId:H}});let F=(await Q.getContexts(w,V5)).filter(FQ);for(let K of F){let G=await new yQ(this._api,{context:K,loggerFactory:this._args.loggerFactory}).run();V(G)||this._logger.debug("[run] Ignoring context provision error, continuing to getAddress",{data:{contextType:K.type,error:G.error}})}}return this._api.sendCommand(new TQ({derivationPath:Z,checkOnDevice:J,returnChainCode:X,...$!==void 0&&{chainId:$}}))}}var D6=(Q)=>new LQ({input:{task:async(Z)=>new zZ(Z,{contextModule:Q.contextModule,derivationPath:Q.derivationPath,checkOnDevice:Q.checkOnDevice,returnChainCode:Q.returnChainCode,chainId:Q.chainId,loggerFactory:Q.loggerFactory}).run(),appName:y,requiredUserInteraction:Q.checkOnDevice?D.VerifyAddress:D.None,skipOpenApp:Q.skipOpenApp}});var x6=32,P6=32;class G4{name="signPersonalMessage";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let{data:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:8,p1:Z?0:128,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(x6),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(P6),!0);return Y?z({data:k({r:X,s:Y,v:J})}):z({error:new N("S is missing")})})}}var b6=4;class OZ{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.logger}_logger;async run(){let{derivationPath:Q,message:Z}=this.args;this._logger.debug("[run] Starting SendSignPersonalMessageTask",{data:{derivationPath:Q,messageLength:Z.length,messageType:typeof Z=="string"?"string":"Uint8Array"}});let J=$Q.splitPath(Q),X=new v(Z.length+1+(J.length+1)*b6);X.add8BitUIntToData(J.length),J.forEach((H)=>{X.add32BitUIntToData(H)}),X.add32BitUIntToData(Z.length),typeof Z=="string"?X.addAsciiStringToData(Z):X.addBufferToData(Z);let Y=X.build();this._logger.debug("[run] Sending message in chunks",{data:{bufferLength:Y.length}});let $=await new xQ(this.api,{data:Y,commandFactory:(H)=>new G4({data:H.chunkedData,isFirstChunk:H.isFirstChunk})}).run();return V($)?(this._logger.debug("[run] Personal message signed successfully"),$.data.mapOrDefault((H)=>z({data:H}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to sign personal message",{data:{error:$.error}}),$)}}var I6=(Q)=>{let Z=Q.loggerFactory("SendSignPersonalMessageTask");return new LQ({input:{task:async(J)=>new OZ(J,{derivationPath:Q.derivationPath,message:Q.message,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignPersonalMessage,skipOpenApp:Q.skipOpenApp}})};var o=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.GET_APP_CONFIG="signer.eth.steps.getAppConfig",Q.GET_ADDRESS="signer.eth.steps.getAddress",Q.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",Q.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",Q.PARSE_TRANSACTION="signer.eth.steps.parseTransaction",Q.BUILD_CONTEXTS="signer.eth.steps.buildContexts",Q.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",Q.SIGN_TRANSACTION="signer.eth.steps.signTransaction",Q.BLIND_SIGN_TRANSACTION_FALLBACK="signer.eth.steps.blindSignTransactionFallback",Q.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",Q))(o||{});var JQ=((Q)=>(Q.BASIC="basic",Q.EIP7730="eip7730",Q))(JQ||{});var UZ=Object.freeze({contactGroups:Object.freeze([]),ledgerAccounts:Object.freeze([])});class GZ{name="getAppConfiguration";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:6,p1:0,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("Cannot extract config flags")});let X=Z.extract8BitUInt(),Y=Z.extract8BitUInt(),$=Z.extract8BitUInt();if(X===void 0||Y===void 0||$===void 0)return z({error:new N("Cannot extract version")});let H=!!(J&1),w=!!(J&16),F=!!(J&32),K={blindSigningEnabled:H,web3ChecksEnabled:w,web3ChecksOptIn:F,version:`${X}.${Y}.${$}`};return z({data:K})})}}class _Z{name="web3CheckOptIn";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:50,p1:1,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q).extract8BitUInt();return Z===void 0?z({data:{enabled:!1}}):z({data:{enabled:Z!==0}})})}}var _4="0.0.1";class i{resolve(Q,Z){if(Q.sessionStateType===MQ.Connected)return{isCompatible:!1,version:_4};let J=Q.currentApp,X=J?.name;return X?X==="Exchange"?{isCompatible:!1,version:_4}:{isCompatible:!0,version:X===y?J.version:Z.version}:{isCompatible:!1,version:_4}}}var j6=new Set([W.ETHEREUM_TRANSACTION_CHECK,W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON,W.ETHEREUM_GATED_SIGNING]);function q6(Q){return Q.usedFallback||Q.contextTypes&&Q.hasContext&&Q.contextTypes.length>0&&!Q.contextTypes.some((Z)=>!j6.has(Z))?!0:!Q.hasContext}function F5(Q){return Q.usedFallback?F4.DEVICE_REJECTED_CONTEXT:F4.NO_CLEAR_SIGNING_CONTEXT}function L6(Q,Z){let J=Q.type==="transaction"?V4.ETH_SIGN_TRANSACTION:V4.ETH_SIGN_TYPED_DATA;return{signatureId:B4(),signingMethod:J,isBlindSign:Z,chainId:Q.chainId,targetAddress:Q.targetAddress,blindSignReason:Z?F5(Q):null,modelId:D4(Q.deviceModelId),signerAppVersion:Q.signerAppVersion,deviceVersion:Q.deviceVersion,ethContext:Q.clearSigningType!==null?{clearSigningType:Q.clearSigningType,partialContextErrors:Q.partialContextErrors}:null}}function M6(Q,Z){let J=Q.type==="transaction"?N4.ETH_SIGN_TRANSACTION:N4.ETH_SIGN_TYPED_DATA;return{chain:"ETH",signatureId:B4(),signingMethod:J,isBlindSign:Z,chainId:Q.chainId,targetAddress:Q.targetAddress,blindSignReason:Z?F5(Q):null,modelId:D4(Q.deviceModelId),signerAppVersion:Q.signerAppVersion,deviceVersion:Q.deviceVersion,...Q.type==="transaction"&&Q.selectorId!==null&&{selectorId:Q.selectorId},...Q.clearSigningType!==null&&{clearSigningType:Q.clearSigningType,partialContextErrors:Q.partialContextErrors}}}class VZ{constructor(Q){this._args=Q,this._logger=Q.loggerFactory("BlindSigningDetectionTask")}_logger;async run(){let{input:Q,contextModule:Z}=this._args,J=q6(Q);this._logger.debug("[run] Blind signing detection result",{data:{isBlindSign:J,type:Q.type}});try{let X=L6(Q,J);await Z.report(X)}catch(X){this._logger.error("[run] Failed to report blind signing event",{data:{error:X}})}try{let X=M6(Q,J);await Z.signReport?.(X)}catch(X){this._logger.error("[run] Failed to report signing event",{data:{error:X}})}return{isBlindSign:J}}}var N5=4;class XQ{name="getChallenge";errorHelper=new x(b,I);constructor(){}getApdu(){return new B({cla:224,ins:32,p1:0,p2:0}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q);if(Z.testMinimalLength(N5)===!1)return z({error:new N("Challenge key is missing")});let J=Z.encodeToHexaString(Z.extractFieldByLength(N5));return z({data:{challenge:J}})})}}var RZ="1.22.0",B5="1.14.0",fZ="1.15.0";var S6=[W.ETHEREUM_TRUSTED_NAME,W.ETHEREUM_TRANSACTION_INFO,W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION,W.ETHEREUM_ENUM,W.ETHEREUM_PROXY_INFO],k6=[W.ETHEREUM_TRANSACTION_INFO,W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION,W.ETHEREUM_PROXY_INFO,W.ETHEREUM_TRANSACTION_CHECK,W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON,W.ETHEREUM_ENUM,W.ETHEREUM_TRUSTED_NAME,W.ETHEREUM_TOKEN,W.ETHEREUM_NFT,W.ETHEREUM_PLUGIN,W.ETHEREUM_EXTERNAL_PLUGIN,W.ETHEREUM_GATED_SIGNING];class x4{constructor(Q,Z){this._api=Q,this._args=Z}async run(){let{contextModule:Q,appConfig:Z,transaction:J,subset:X}=this._args,Y=J===void 0,$=!Y&&Z.web3ChecksEnabled,H=this._api.getDeviceSessionState(),w;if(H.deviceModelId!==E.NANO_S){let q=await this._api.sendCommand(new XQ);V(q)&&(w=q.data.challenge)}let F=await Q.getContexts({challenge:w,deviceModelId:H.deviceModelId,transaction:$?J:void 0,...X},Y?S6:k6),K=F.filter((q)=>q.type===W.ERROR).length,G=F.filter((q)=>q.type!==W.ERROR).filter(FQ),S=new p(H,Z,new i).withMinVersionInclusive(RZ).excludeDeviceModel(E.NANO_S).check()?G:G.filter((q)=>q.type!==W.ETHEREUM_GATED_SIGNING);return this._supportsGenericParser(H,Z)&&this._hasValidTransactionInfo(S)?this._getERC7730Contexts(S,K):this._getBasicContexts(S,K)}_getERC7730Contexts(Q,Z){let J=Q.filter((Y)=>this._isContextNeededForERC7730ClearSigning(Y)).sort((Y,$)=>this._getContextPriority(Y)-this._getContextPriority($)),X=Q.filter((Y)=>Y.type===W.ETHEREUM_ENUM);return{clearSignContexts:J,clearSignContextsOptional:X,clearSigningType:JQ.EIP7730,contextErrorCount:Z}}_getBasicContexts(Q,Z){return{clearSignContexts:Q.filter((J)=>this._isContextNeededForBasicClearSigning(J)).sort((J,X)=>this._getContextPriority(J)-this._getContextPriority(X)),clearSignContextsOptional:[],clearSigningType:JQ.BASIC,contextErrorCount:Z}}_isContextNeededForBasicClearSigning({type:Q}){switch(Q){case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_GATED_SIGNING:case W.ETHEREUM_PROXY_INFO:return!0;case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_ENUM:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return!1;default:throw Error(`Unhandled context type ${String(Q)}`)}}_isContextNeededForERC7730ClearSigning({type:Q}){switch(Q){case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_PROXY_INFO:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_GATED_SIGNING:return!0;case W.ETHEREUM_ENUM:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return!1;default:throw Error(`Unhandled context type ${String(Q)}`)}}_hasValidTransactionInfo(Q){return Q.find((Z)=>Z.type===W.ETHEREUM_TRANSACTION_INFO)?.certificate!==void 0}_supportsGenericParser(Q,Z){return new p(Q,Z,new i).withMinVersionExclusive(B5).excludeDeviceModel(E.NANO_S).check()}_getContextPriority({type:Q}){switch(Q){case W.ETHEREUM_PROXY_INFO:return 5;case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_GATED_SIGNING:return 10;case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:return 30;case W.ETHEREUM_TRANSACTION_INFO:return 50;case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_ENUM:return 70;case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:return 90;default:throw Error(`Unhandled context type for priority: ${String(Q)}`)}}}class P4{constructor(Q,Z){this.api=Q,this.args=Z}run(){let Q=this.args.context,Z=Q.type;switch(Z){case W.ETHEREUM_TRANSACTION_CHECK:case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_DYNAMIC_NETWORK:case W.ETHEREUM_DYNAMIC_NETWORK_ICON:case W.ETHEREUM_ENUM:case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:case W.ETHEREUM_GATED_SIGNING:return{subcontextCallbacks:[]};case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:return{subcontextCallbacks:Q.reference?this._getSubcontextsFromReference(Q.reference):[]};case W.ETHEREUM_PROXY_INFO:return{subcontextCallbacks:this._getSubcontextFromProxy(Q)};case W.ETHEREUM_TRUSTED_NAME:return{subcontextCallbacks:this._getSubcontextFromTrustedName(Q)};default:throw Error(`Uncovered type: ${Z}`)}}_getSubcontextsFromReference(Q){let Z=Q.type;switch(Z){case KQ.TOKEN:case KQ.NFT:return this._getSubcontextsFromTokenOrNftReference(Q);case KQ.ENUM:return this._getSubcontextsFromEnumReference(Q);case KQ.TRUSTED_NAME:return this._getSubcontextsFromTrustedNameReference(Q);case KQ.CALLDATA:return[];default:throw Error(`Uncovered reference type: ${Z}`)}}_getSubcontextsFromTokenOrNftReference(Q){if(Q.value!==void 0){let J={chainId:this.args.subset.chainId,address:Q.value,deviceModelId:this.args.deviceModelId},X=Q.type===KQ.TOKEN?W.ETHEREUM_TOKEN:W.ETHEREUM_NFT;return[()=>this.args.contextModule.getFieldContext(J,X)]}let Z=[];if(Q.valuePath!==void 0){let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J){let Y=WQ(X.slice(Math.max(0,X.length-20))),$=Q.type===KQ.TOKEN?W.ETHEREUM_TOKEN:W.ETHEREUM_NFT;Z.push(()=>this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:Y,deviceModelId:this.args.deviceModelId},$))}}return Z}_getSubcontextsFromEnumReference(Q){let Z=[];if(!Q.valuePath)return Z;let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J){let Y=X[X.length-1];if(Y===void 0)continue;let $=this.args.contextOptional.filter((H)=>H.type===W.ETHEREUM_ENUM).find((H)=>H.value===Y&&H.id===Q.id);$&&Z.push(()=>Promise.resolve($))}return Z}_getSubcontextsFromTrustedNameReference(Q){let Z=[];if(!Q.valuePath)return Z;let J=this.args.transactionParser.extractValue(this.args.subset,Q.valuePath).orDefault([]);for(let X of J)Z.push(async()=>{let Y=WQ(X.slice(Math.max(0,X.length-20))),$=await this.api.sendCommand(new XQ);return V($)?await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:Y,challenge:$.data.challenge,types:Q.types,sources:Q.sources,deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME):{type:W.ERROR,error:Error("Failed to get challenge")}});return Z}_getSubcontextFromTrustedName(Q){return[async()=>{let Z=await this.api.sendCommand(new XQ);return V(Z)?await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,address:this.args.subset.to,challenge:Z.data.challenge,types:["eoa"],sources:["ens"],deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME):{type:W.ERROR,error:Error("Failed to get challenge")}}]}_getSubcontextFromProxy(Q){return[async()=>{let Z=await this.api.sendCommand(new XQ);return V(Z)?this.args.subset.to===void 0?{type:W.ERROR,error:Error("Failed to get proxy address")}:await this.args.contextModule.getFieldContext({chainId:this.args.subset.chainId,proxyAddress:this.args.subset.to,calldata:this.args.subset.data,deviceModelId:this.args.deviceModelId,challenge:Z.data.challenge},W.ETHEREUM_PROXY_INFO):{type:W.ERROR,error:Error("Failed to get challenge")}}]}}var U6=10;class b4{constructor(Q){this._args=Q}run(){let{parser:Q,subset:Z,context:J}=this._args,X=[];if(!J.reference||J.reference.type!==KQ.CALLDATA||!J.reference.valuePath)throw Error("Invalid reference for nested call data. Expected a reference with type CALLDATA and a value path.");let{valuePath:Y}=J.reference,$=Q.extractValue(Z,Y).unsafeCoerce(),H=Q.extractValue(Z,J.reference.callee).unsafeCoerce(),w=J.reference.selector?Q.extractValue(Z,J.reference.selector).orDefault([]):[],F=J.reference.chainId?Q.extractValue(Z,J.reference.chainId).orDefault([]):[];for(let K=0;K<$.length;K++){let G=$[K],S=F[K],q=H[K]?.slice(Math.max(0,H[K].length-20)),d=w[K],GQ={data:G?WQ(G):"0x",chainId:S?Number(S):Z.chainId,to:q?WQ(q):Z.to,selector:d?WQ(d):G?WQ(G).slice(0,U6):"0x"};X.push(GQ)}return{subsets:X}}}class iQ{constructor(Q,Z,J=($,H)=>new P4($,H),X=($,H)=>new x4($,H),Y=($)=>new b4($)){this._api=Q,this._args=Z,this._buildSubcontextsTaskFactory=J,this._buildBaseContextsTaskFactory=X,this._preBuildNestedCallDataTaskFactory=Y,this._logger=Z.loggerFactory("BuildFullContextsTask")}_logger;async run(){this._logger.debug("[run] Starting BuildFullContextsTask");let{clearSignContexts:Q,clearSigningType:Z,clearSignContextsOptional:J,contextErrorCount:X}=await this._buildBaseContextsTaskFactory(this._api,this._args).run();this._logger.debug("[run] Base contexts built",{data:{clearSigningType:Z,contextTypes:Q.map((H)=>H.type)}});let Y=Q.map((H)=>{let{subcontextCallbacks:w}=this._buildSubcontextsTaskFactory(this._api,{context:H,contextOptional:J,contextModule:this._args.contextModule,subset:this._args.subset,transactionParser:this._args.parser,deviceModelId:this._args.deviceModelId}).run();return{context:H,subcontextCallbacks:w}}),$=[];for(let H of Y)if($.push(H),H.context.type===W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION&&H.context.reference?.type===KQ.CALLDATA){let{subsets:w}=this._preBuildNestedCallDataTaskFactory({parser:this._args.parser,subset:this._args.subset,context:H.context}).run();for(let F of w){let{clearSignContexts:K}=await new iQ(this._api,{...this._args,transaction:void 0,subset:F},this._buildSubcontextsTaskFactory,this._buildBaseContextsTaskFactory,this._preBuildNestedCallDataTaskFactory).run();$.push(...K)}}return this._logger.debug("[run] BuildFullContextsTask completed",{data:{clearSigningType:Z,contextTypes:$.map((H)=>H.context.type),hasNestedContexts:$.length>Q.length}}),{clearSignContexts:$,clearSigningType:Z,contextErrorCount:X}}}class I4{constructor(Q){this._args=Q}run(){let{mapper:Q,transaction:Z}=this._args,{subset:J,type:X}=Q.mapTransactionToSubset(Z).unsafeCoerce();return{subset:J,type:X}}}var p0=j4(t5(),1);var wQ=j4(R6(),1),vZ="Ethereum",D5="Tron",f6={supported:!1},x5="1.11.0",P5="1.7.0",b5="1.2.0",I5="2.8.0",j5="1.7.0",v6="1.23.0",A6="0.8.0",FZ={[vZ]:v6,[D5]:A6},T6=`${x5}-rc3`,C6=`${P5}-rc3`,E6=`${b5}-rc3`,y6=`${I5}-rc3`,h6=`${j5}-rc3`,q4={[E.NANO_S]:f6,[E.NANO_SP]:{supported:!0,minOsVersion:j5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:h6},[E.NANO_X]:{supported:!0,minOsVersion:I5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:y6},[E.STAX]:{supported:!0,minOsVersion:x5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:T6},[E.FLEX]:{supported:!0,minOsVersion:P5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:C6},[E.APEX]:{supported:!0,minOsVersion:b5,minAppVersion:FZ,renameDerivationPathRequiredBelowOsVersion:E6}};function aQ(Q){return q4[Q]}function L4(Q,Z){let J=wQ.valid(wQ.coerce(Q)),X=wQ.valid(wQ.coerce(Z));return J===null||X===null?!1:wQ.gte(J,X)}function u6(Q,Z){let J=wQ.valid(Q),X=wQ.valid(Z);return J===null||X===null?!1:wQ.lt(J,X)}function q5(Q,Z){let J=q4[Q];if(!J.supported)return!1;let X=J.renameDerivationPathRequiredBelowOsVersion;return X===void 0?!1:u6(Z,X)}var L5="0.0.0";class M4{resolve(Q,Z){return Q.sessionStateType===MQ.Connected?{isCompatible:!1,version:L5}:Q.currentApp?.name?{isCompatible:!0,version:Z.version}:{isCompatible:!1,version:L5}}}function M5(Q){return Q.supported}function S5(Q,Z){let J=Q.getDeviceSessionState(),X=aQ(J.deviceModelId);return M5(X)?L4(Z,X.minOsVersion):!1}function nQ(Q,Z){let J=Q.getDeviceSessionState(),X=aQ(J.deviceModelId);if(!M5(X))return!1;let Y=X.minAppVersion[Z.name];return Y===void 0?!1:new p(J,{version:Z.version},new M4).withMinVersionInclusiveAcceptingPrerelease(Y).check()}var g6="6982",l6={[g6]:{message:"This address-book entry was registered with a different seed. Connect the Ledger device that registered it to modify this contact."},6800:{message:"Internal error (Please report)"},6983:{message:"Wrong data length"},6984:{message:"Unsupported address-book operation for this device or app configuration"},6985:{message:"Condition not satisfied"},"686a":{message:"This device's firmware is out of date for the address book. Update your Ledger device to the latest firmware, then try again."},"6a80":{message:"Invalid contact data, or operation refused on device"},"6a84":{message:"Insufficient memory: the device address book is full"},"6a88":{message:"Contact data not found"},"6af0":{message:"Invalid value for this contact entry"},"6b00":{message:"The app rejected the contact data"},"6f00":{message:"Technical problem (Internal error, please report)"}};class k5 extends MZ{constructor(Q){super({tag:"ContactsCommandError",...Q})}}var c6=(Q)=>new k5(Q);class _Q extends x{constructor(){super(l6,c6)}getError(Q){let Z=super.getError(Q);if(Z===void 0||V(Z)||Z.error._tag!=="UnknownDeviceExchangeError")return Z;let J=new U(Q).encodeToHexaString(Q.statusCode);return a({error:new N(`The device returned an unexpected status word (0x${J}) for this address-book operation. Update your Ledger device and Ethereum app to the latest version, then try again.`)})}}class PQ{constructor(Q="The connected device or app does not meet the Contacts version requirements."){this.message=Q}_tag="ContactsVersionRequirementError";originalError}var SQ=176,kQ=16,AZ=1,TZ=32,CZ=3,EZ=4,U5=224,R5=46,yZ=0,f5=64,v5=32,rQ=32,A5=32,n={bitcoin:0,ethereum:1,solana:2,polkadot:3,cosmos:4,cardano:5,tron:6};var m6=33024,P={STRUCT_TYPE:1,STRUCT_VERSION:2,DERIVATION_PATH:105,CHAIN_ID:35,HMAC_PROOF:41,BLOCKCHAIN_FAMILY:81,CONTACT_NAME:240,SCOPE:241,ACCOUNT_IDENTIFIER:242,PREVIOUS_CONTACT_NAME:243,PREVIOUS_IDENTIFIER:244,PREVIOUS_SCOPE:245,GROUP_HANDLE:246,HMAC_REST:247},T5=45,hZ=46;var uZ=49,gZ=50,C5=51;var NQ=1;function S4(Q,Z){if(Z<128)Q.add8BitUIntToData(Z);else if(Z<=255)Q.add16BitUIntToData(m6+Z);else throw Error(`TLV tag ${Z} exceeds supported single-byte range`)}function E5(Q,Z){if(Z<128)Q.add8BitUIntToData(Z);else if(Z<=255)Q.add8BitUIntToData(129),Q.add8BitUIntToData(Z);else if(Z<=65535)Q.add8BitUIntToData(130),Q.add16BitUIntToData(Z);else throw Error(`TLV length ${Z} exceeds supported range`)}function d6(Q){let Z=typeof Q=="bigint"?Q:BigInt(Q);if(Z<=0n)throw Error(`chainId must be positive, got ${Q}`);if(Z>0xffffffffffffffffn)throw Error(`chainId ${Q} exceeds uint64 range`);let J=[],X=Z;for(;X>0n;)J.unshift(Number(X&0xffn)),X>>=8n;return Uint8Array.from(J)}function h(Q,Z,J){S4(Q,Z),Q.add8BitUIntToData(1),Q.add8BitUIntToData(J)}function c(Q,Z,J){S4(Q,Z);let X=new TextEncoder().encode(J);E5(Q,X.length),Q.addBufferToData(X)}function C(Q,Z,J){S4(Q,Z),E5(Q,J.length),Q.addBufferToData(J)}function UQ(Q,Z,J){C(Q,Z,d6(J))}function y5(Q){let Z=new v;return Z.add8BitUIntToData(Q.length),Q.forEach((J)=>Z.add32BitUIntToData(J)),Z.build()}var h5=uZ;function o6(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class k4{name="editExternalAddressIdentifier";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:CZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==h5)return z({error:new N(`Expected struct_type 0x${h5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=o6(Z,rQ);return X?z({data:{hmacRest:X}}):z({error:new N("hmac_rest missing or truncated")})})}}var p6=255,u5=0,g5=128;async function BQ(Q,{payload:Z,makeCommand:J,logger:X,commandTag:Y}){let $=s6(Z),H=i6($,p6),w=Y??"framed-contacts";for(let S=0;S<H.length-1;S++){let q=S===0?u5:g5,d=H[S];l5(X,w,S,H.length,q,d.length,$.length);let GQ=await Q.sendCommand(J(d,q));if(!c5(GQ))return GQ}let F=H.length-1,K=F===0?u5:g5,G=H[F];return l5(X,w,F,H.length,K,G.length,$.length),await Q.sendCommand(J(G,K))}function l5(Q,Z,J,X,Y,$,H){Q&&Q.debug(`[chunk ${J+1}/${X}] sending`,{tag:Z,data:{chunkIndex:J,chunkCount:X,p2:`0x${Y.toString(16).padStart(2,"0")}`,chunkLen:$,framedPayloadLen:H,isFirst:J===0,isLast:J===X-1}})}function s6(Q){let Z=Q.length,J=new Uint8Array(Z+2);return J[0]=Z>>8&255,J[1]=Z&255,J.set(Q,2),J}function i6(Q,Z){if(Q.length===0)return[Q];let J=[];for(let X=0;X<Q.length;X+=Z)J.push(Q.slice(X,Math.min(X+Z,Q.length)));return J}class U4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:CZ,makeCommand:(X,Y)=>new k4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendEditExternalAddressIdentifierTask"});if(!V(Z))return Z;let{hmacRest:J}=Z.data;return J?a({data:{hmacRest:J}}):a({error:new N("EditIdentifier final-chunk response did not carry hmac_rest")})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,uZ),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.newIdentifier),C(J,P.PREVIOUS_IDENTIFIER,Q.previousIdentifier),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),h(J,P.BLOCKCHAIN_FAMILY,Z),J.build()}}var bQ=33,hQ=33,RQ=64,DQ=32;var uQ=20;class A extends Error{_tag="ContactsValidationError";originalError;constructor(Q){super(Q),this.name="ContactsValidationError"}}var a6=32,n6=126,r6=new TextEncoder;function YQ(Q,Z){let{field:J,bufferLength:X}=Z;if(!Q)throw new A(`${J} must not be empty (firmware rejects empty strings).`);let Y=r6.encode(Q),$=X-1;if(Y.length>$)throw new A(`${J} ${JSON.stringify(Q)} is too long: ${Y.length} bytes encoded (max ${$}). The device buffer is ${X} bytes including the trailing NUL.`);let H=[];for(let w=0;w<Y.length;w++){let F=Y[w];(F<a6||F>n6)&&H.push(w)}if(H.length>0){let w=Array.from(new Set(H.map((F)=>Y[F]))).sort((F,K)=>F-K).map((F)=>`0x${F.toString(16).padStart(2,"0")}`).join(", ");throw new A(`${J} ${JSON.stringify(Q)} contains ${H.length} non-ASCII byte(s) at position(s) [${H.join(", ")}]: ${w}. The device buffer is byte-level isprint() — only 0x20-0x7E are accepted, no UTF-8 / accents / emoji.`)}}function u(Q,Z){let{field:J,expectedBytes:X}=Z;if(Q.length!==X)throw new A(`${J} is ${Q.length} bytes, expected ${X}.`)}function tQ(Q){let Z=typeof Q=="number";if(!Z&&typeof Q!="bigint")throw new A(`chainId must be number or bigint, got ${typeof Q}.`);if(Z&&!Number.isInteger(Q))throw new A(`chainId must be an integer, got ${Q}.`);let J=typeof Q=="bigint"?Q:BigInt(Q);if(J<=0n)throw new A(`chainId must be positive, got ${Q}.`);let X=(1n<<64n)-1n;if(J>X)throw new A(`chainId ${Q} exceeds uint64 range (max ${X}).`)}var t6=DQ;function m5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.scope,{field:"scope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.previousIdentifier,{field:"previousIdentifier",expectedBytes:uQ}),u(Q.newIdentifier,{field:"newIdentifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else{if(Q.previousIdentifier.length===0)throw new A("previousIdentifier must not be empty.");if(Q.newIdentifier.length===0)throw new A("newIdentifier must not be empty.")}return Q.chainId!==void 0&&tQ(Q.chainId),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),u(Q.hmacRest,{field:"hmacRest",expectedBytes:t6}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class R4 extends t{makeStateMachine(Q){let{isSupported:Z,editIdentifier:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),editIdentifier:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=m5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"EditExternalAddressIdentifierDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,hmacRest:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"EditIdentifier",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},EditIdentifier:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"editIdentifier",src:"editIdentifier",input:({context:Y})=>Y.input,onDone:{target:"EditIdentifierResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,hmacRest:Y.output.data.hmacRest}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},EditIdentifierResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{hmacRest:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({contactName:w.contactName,scope:w.scope,previousIdentifier:w.previousIdentifier,identifier:w.newIdentifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:w.groupHandle,hmacProof:w.hmacProof,hmacRest:$})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),editIdentifier:(Z)=>new U4(Q,{contactName:Z.contactName,scope:Z.scope,previousIdentifier:Z.previousIdentifier,newIdentifier:Z.newIdentifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,hmacRest:Z.hmacRest}).run()}}}var d5=gZ;function e6(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class f4{name="editExternalAddressScope";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:EZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==d5)return z({error:new N(`Expected struct_type 0x${d5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=e6(Z,rQ);return X?z({data:{hmacRest:X}}):z({error:new N("hmac_rest missing or truncated")})})}}class v4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:EZ,makeCommand:(X,Y)=>new f4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendEditExternalAddressScopeTask"});if(!V(Z))return Z;let{hmacRest:J}=Z.data;return J?a({data:{hmacRest:J}}):a({error:new N("EditScope final-chunk response did not carry hmac_rest")})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,gZ),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.newScope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),c(J,P.PREVIOUS_SCOPE,Q.previousScope),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),h(J,P.BLOCKCHAIN_FAMILY,Z),J.build()}}var Q9=DQ;function o5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.previousScope,{field:"previousScope",bufferLength:hQ}),YQ(Q.newScope,{field:"newScope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.identifier,{field:"identifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else if(Q.identifier.length===0)throw new A("identifier must not be empty.");return Q.chainId!==void 0&&tQ(Q.chainId),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),u(Q.hmacRest,{field:"hmacRest",expectedBytes:Q9}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class A4 extends t{makeStateMachine(Q){let{isSupported:Z,editScope:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),editScope:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=o5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"EditExternalAddressScopeDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,hmacRest:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"EditScope",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},EditScope:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"editScope",src:"editScope",input:({context:Y})=>Y.input,onDone:{target:"EditScopeResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,hmacRest:Y.output.data.hmacRest}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},EditScopeResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{hmacRest:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({contactName:w.contactName,previousScope:w.previousScope,scope:w.newScope,identifier:w.identifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:w.groupHandle,hmacProof:w.hmacProof,hmacRest:$})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),editScope:(Z)=>new v4(Q,{contactName:Z.contactName,previousScope:Z.previousScope,newScope:Z.newScope,identifier:Z.identifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,hmacRest:Z.hmacRest}).run()}}}var p5=45;function T4(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class C4{name="registerIdentity";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:AZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==p5)return z({error:new N(`Expected struct_type 0x${p5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=T4(Z,f5);if(!X)return z({error:new N("group_handle missing or truncated")});let Y=T4(Z,v5);if(!Y)return z({error:new N("hmac_name missing or truncated")});let $=T4(Z,rQ);return $?z({data:{groupHandle:X,hmacProof:Y,hmacRest:$}}):z({error:new N("hmac_rest missing or truncated")})})}}class E4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:AZ,makeCommand:($,H)=>new C4({data:$,p2:H}),logger:this.args.logger,commandTag:"SendRegisterIdentityTask"});if(!V(Z))return Z;let{groupHandle:J,hmacProof:X,hmacRest:Y}=Z.data;return!J||!X||!Y?a({error:new N("RegisterIdentity final-chunk response was incomplete")}):a({data:{groupHandle:J,hmacProof:X,hmacRest:Y}})}buildPayload(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,T5),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),h(J,P.BLOCKCHAIN_FAMILY,Z),Q.existingContactGroup&&(C(J,P.GROUP_HANDLE,Q.existingContactGroup.groupHandle),C(J,P.HMAC_PROOF,Q.existingContactGroup.hmacProof)),J.build()}}function s5(Q){try{YQ(Q.contactName,{field:"contactName",bufferLength:bQ}),YQ(Q.scope,{field:"scope",bufferLength:hQ});let Z=Q.blockchainFamily.toLowerCase();if(!(Z in n))throw new A(`Unsupported blockchain family: ${Q.blockchainFamily}`);if(Z==="ethereum"){if(u(Q.identifier,{field:"identifier",expectedBytes:uQ}),Q.chainId===void 0)throw new A("chainId is required for the Ethereum blockchain family.")}else if(Q.identifier.length===0)throw new A("identifier must not be empty.");return Q.chainId!==void 0&&tQ(Q.chainId),Q.existingContactGroup&&(u(Q.existingContactGroup.groupHandle,{field:"existingContactGroup.groupHandle",expectedBytes:RQ}),u(Q.existingContactGroup.hmacProof,{field:"existingContactGroup.hmacProof",expectedBytes:DQ})),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class y4 extends t{makeStateMachine(Q){let{isSupported:Z,registerIdentity:J}=this.extractDependencies(Q),X=this.input.appName;return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:X}}).makeStateMachine(Q),waitForAppAndVersionStateMachine:new eQ({input:{}}).makeStateMachine(Q),registerIdentity:R(({input:Y})=>J(Y))},guards:{skipOpenApp:({context:Y})=>Y.input.skipOpenApp===!0,noInternalError:({context:Y})=>Y._internalState.error===null,contactsSupported:({context:Y})=>{let{appAndVersion:$}=Y._internalState;return $!==null&&Z($)}},actions:{assignValidationError:O({_internalState:({context:Y})=>{let $=s5(Y.input);return $?{...Y._internalState,error:$}:Y._internalState}}),assignVersionError:O({_internalState:({context:Y})=>({...Y._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:Y,event:$})=>({...Y._internalState,error:new m($.error instanceof Error?$.error.message:String($.error))})})}}).createMachine({id:"RegisterExternalAddressDeviceAction",initial:"InitialState",context:({input:Y})=>({input:Y,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,appAndVersion:null,proofs:null}}),states:{InitialState:{always:[{target:"ValidateInput",guard:"skipOpenApp"},{target:"OpenAppDeviceAction"}]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:()=>({appName:X}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckOpenAppResult",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:()=>$._internalState,Left:(H)=>({...$._internalState,error:H})})})}}},CheckOpenAppResult:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"WaitForAppAndVersion",guard:"noInternalError"},{target:"Error"}]},WaitForAppAndVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"waitForAppAndVersion",src:"waitForAppAndVersionStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:Y})=>Y.snapshot.context.intermediateValue})},onDone:{target:"CheckAppAndVersion",actions:O({_internalState:({event:Y,context:$})=>Y.output.caseOf({Right:(H)=>({...$._internalState,appAndVersion:{name:H.name,version:H.version}}),Left:(H)=>({...$._internalState,error:H})})})}}},CheckAppAndVersion:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"RegisterIdentity",guard:"contactsSupported"},{target:"Error",actions:"assignVersionError"}]},RegisterIdentity:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"registerIdentity",src:"registerIdentity",input:({context:Y})=>Y.input,onDone:{target:"RegisterIdentityResultCheck",actions:O({_internalState:({event:Y,context:$})=>V(Y.output)?{...$._internalState,proofs:Y.output.data}:{...$._internalState,error:Y.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},RegisterIdentityResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:Y})=>{let{proofs:$,error:H}=Y._internalState;if($){let{input:w}=Y;return T({mode:w.existingContactGroup?"existingContactGroup":"newContactGroup",contactName:w.contactName,scope:w.scope,identifier:w.identifier,blockchainFamily:w.blockchainFamily,chainId:w.chainId,groupHandle:$.groupHandle,hmacProof:$.hmacProof,hmacRest:$.hmacRest})}return L(H??new m("No error in final state"))}})}extractDependencies(Q){return{isSupported:(Z)=>nQ(Q,Z),registerIdentity:(Z)=>new E4(Q,{contactName:Z.contactName,scope:Z.scope,identifier:Z.identifier,blockchainFamily:Z.blockchainFamily,chainId:Z.chainId,existingContactGroup:Z.existingContactGroup}).run()}}}var i5=hZ;function Z9(Q,Z){let J=Q.extractFieldByLength(Z);if(!(!J||J.length!==Z))return Uint8Array.from(J)}class h4{name="renameContact";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:U5,ins:R5,p1:yZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{if(Q.data.length===0)return z({data:{}});let Z=new U(Q),J=Z.extract8BitUInt();if(J!==i5)return z({error:new N(`Expected struct_type 0x${i5.toString(16)}, got ${J===void 0?"undefined":`0x${J.toString(16)}`}`)});let X=Z9(Z,A5);return X?z({data:{hmacProof:X}}):z({error:new N("hmac_name missing or truncated")})})}}class u4{constructor(Q,Z){this.api=Q,this.args=Z}async run(){let Q=this.buildPayload(this.args),Z=await BQ(this.api,{payload:Q,p1:yZ,makeCommand:(X,Y)=>new h4({data:X,p2:Y}),logger:this.args.logger,commandTag:"SendRenameContactTask"});if(!V(Z))return Z;let{hmacProof:J}=Z.data;return J?a({data:{hmacProof:J}}):a({error:new N("RenameContact final-chunk response did not carry hmac_name")})}buildPayload(Q){let Z=new v;return h(Z,P.STRUCT_TYPE,hZ),h(Z,P.STRUCT_VERSION,NQ),c(Z,P.CONTACT_NAME,Q.newContactName),c(Z,P.PREVIOUS_CONTACT_NAME,Q.previousContactName),C(Z,P.GROUP_HANDLE,Q.groupHandle),Q.includeDerivationPath&&C(Z,P.DERIVATION_PATH,y5([2147483692,2147483708,2147483648,0,0])),C(Z,P.HMAC_PROOF,Q.hmacProof),Z.build()}}function a5(Q){try{return YQ(Q.newContactName,{field:"newContactName",bufferLength:bQ}),YQ(Q.previousContactName,{field:"previousContactName",bufferLength:bQ}),u(Q.groupHandle,{field:"groupHandle",expectedBytes:RQ}),u(Q.hmacProof,{field:"hmacProof",expectedBytes:DQ}),null}catch(Z){if(Z instanceof A)return Z;throw Z}}class g4 extends t{makeStateMachine(Q){let{getOsVersion:Z,isOsVersionSupported:J,renameContact:X}=this.extractDependencies(Q),{deviceModelId:Y}=Q.getDeviceSessionState();return r({types:{input:{},context:{},output:{}},actors:{goToDashboardStateMachine:new r5({input:{}}).makeStateMachine(Q),getOsVersion:R(Z),renameContact:R(({input:$})=>X($.args,$.includeDerivationPath))},guards:{noInternalError:({context:$})=>$._internalState.error===null,contactsOsSupported:({context:$})=>{let{osVersion:H}=$._internalState;return H!==null&&J(H)}},actions:{assignValidationError:O({_internalState:({context:$})=>{let H=a5($.input);return H?{...$._internalState,error:H}:$._internalState}}),assignVersionError:O({_internalState:({context:$})=>({...$._internalState,error:new PQ})}),assignErrorFromEvent:O({_internalState:({context:$,event:H})=>({...$._internalState,error:new m(H.error instanceof Error?H.error.message:String(H.error))})})}}).createMachine({id:"RenameContactDeviceAction",initial:"InitialState",context:({input:$})=>({input:$,intermediateValue:{requiredUserInteraction:D.None},_internalState:{error:null,osVersion:null,proof:null}}),states:{InitialState:{always:{target:"GoToDashboard"}},GoToDashboard:{invoke:{id:"goToDashboard",src:"goToDashboardStateMachine",input:()=>({}),onSnapshot:{actions:O({intermediateValue:({event:$})=>({requiredUserInteraction:$.snapshot.context.intermediateValue.requiredUserInteraction})})},onDone:{target:"GoToDashboardCheck",actions:O({_internalState:({event:$,context:H})=>$.output.caseOf({Right:()=>H._internalState,Left:(w)=>({...H._internalState,error:w})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GoToDashboardCheck:{always:[{target:"ValidateInput",guard:"noInternalError"},{target:"Error"}]},ValidateInput:{entry:"assignValidationError",always:[{target:"GetOsVersion",guard:"noInternalError"},{target:"Error"}]},GetOsVersion:{entry:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"getOsVersion",src:"getOsVersion",onDone:{target:"GetOsVersionResultCheck",actions:O({_internalState:({event:$,context:H})=>V($.output)?{...H._internalState,osVersion:$.output.data.seVersion}:{...H._internalState,error:$.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetOsVersionResultCheck:{always:[{target:"VersionGuard",guard:"noInternalError"},{target:"Error"}]},VersionGuard:{always:[{target:"RenameContact",guard:"contactsOsSupported"},{target:"Error",actions:"assignVersionError"}]},RenameContact:{entry:O({intermediateValue:{requiredUserInteraction:D.RegisterWallet}}),exit:O({intermediateValue:{requiredUserInteraction:D.None}}),invoke:{id:"renameContact",src:"renameContact",input:({context:$})=>({args:$.input,includeDerivationPath:q5(Y,$._internalState.osVersion??"")}),onDone:{target:"RenameContactResultCheck",actions:O({_internalState:({event:$,context:H})=>V($.output)?{...H._internalState,proof:$.output.data}:{...H._internalState,error:$.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},RenameContactResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:$})=>{let{proof:H,error:w}=$._internalState;if(H){let{input:F}=$;return T({previousContactName:F.previousContactName,contactName:F.newContactName,groupHandle:F.groupHandle,hmacProof:H.hmacProof})}return L(w??new m("No error in final state"))}})}extractDependencies(Q){return{getOsVersion:()=>Q.sendCommand(new n5),isOsVersionSupported:(Z)=>S5(Q,Z),renameContact:(Z,J)=>new u4(Q,{previousContactName:Z.previousContactName,newContactName:Z.newContactName,groupHandle:Z.groupHandle,hmacProof:Z.hmacProof,includeDerivationPath:J}).run()}}}var NZ={Dmk:Symbol.for("Dmk"),SessionId:Symbol.for("SessionId"),AppName:Symbol.for("AppName")};var{defineProperty:J9,getOwnPropertyDescriptor:X9}=Object,Y9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?X9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&J9(Z,J,Y),Y},l4=(Q,Z)=>(J,X)=>Z(J,X,Q),c4=class{constructor(Q,Z,J){this.dmk=Q,this.sessionId=Z,this.appName=J}registerExternalAddress(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new y4({input:{...Q,appName:this.appName}})})}renameContact(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new g4({input:Q})})}editExternalAddressIdentifier(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new R4({input:{...Q,appName:this.appName}})})}editExternalAddressScope(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A4({input:{...Q,appName:this.appName}})})}};c4=Y9([f(),l4(0,M(NZ.Dmk)),l4(1,M(NZ.SessionId)),l4(2,M(NZ.AppName))],c4);var IQ={AppBinder:Symbol.for("AppBinder")};var{defineProperty:$9,getOwnPropertyDescriptor:H9}=Object,K9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?H9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&$9(Z,J,Y),Y},W9=(Q,Z)=>(J,X)=>Z(J,X,Q),m4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.editExternalAddressIdentifier(Q)}};m4=K9([f(),W9(0,M(IQ.AppBinder))],m4);var{defineProperty:w9,getOwnPropertyDescriptor:z9}=Object,O9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?z9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&w9(Z,J,Y),Y},G9=(Q,Z)=>(J,X)=>Z(J,X,Q),d4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.editExternalAddressScope(Q)}};d4=O9([f(),G9(0,M(IQ.AppBinder))],d4);var{defineProperty:_9,getOwnPropertyDescriptor:V9}=Object,F9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?V9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&_9(Z,J,Y),Y},N9=(Q,Z)=>(J,X)=>Z(J,X,Q),o4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.registerExternalAddress(Q)}};o4=F9([f(),N9(0,M(IQ.AppBinder))],o4);var{defineProperty:B9,getOwnPropertyDescriptor:D9}=Object,x9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?D9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&B9(Z,J,Y),Y},P9=(Q,Z)=>(J,X)=>Z(J,X,Q),p4=class{constructor(Q){this.appBinder=Q}execute(Q){return this.appBinder.renameContact(Q)}};p4=x9([f(),P9(0,M(IQ.AppBinder))],p4);class s4{name="provideContact";args;errorHelper=new _Q;constructor(Q){this.args=Q}getApdu(){return new B({cla:SQ,ins:kQ,p1:TZ,p2:this.args.p2}).addBufferToData(this.args.data).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>z({data:void 0}))}}function i4(Q){let Z=n[Q.blockchainFamily.toLowerCase()];if(Z===void 0)throw Error(`Unsupported blockchain family: ${Q.blockchainFamily}`);let J=new v;return h(J,P.STRUCT_TYPE,C5),h(J,P.STRUCT_VERSION,NQ),c(J,P.CONTACT_NAME,Q.contactName),c(J,P.SCOPE,Q.scope),C(J,P.ACCOUNT_IDENTIFIER,Q.identifier),C(J,P.GROUP_HANDLE,Q.groupHandle),Q.chainId!==void 0&&UQ(J,P.CHAIN_ID,Q.chainId),h(J,P.BLOCKCHAIN_FAMILY,Z),C(J,P.HMAC_PROOF,Q.hmacProof),C(J,P.HMAC_REST,Q.hmacRest),J.build()}function a4(Q,{payload:Z,logger:J}){return BQ(Q,{payload:Z,p1:TZ,makeCommand:(X,Y)=>new s4({data:X,p2:Y}),logger:J,commandTag:"provideContact"})}class n4{constructor(Q){this.args=Q}name="storeTransaction";errorHelper=new x(b,I);getApdu(){let{serializedTransaction:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:4,p1:Z?0:128,p2:1}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var I9="ethereum";function e5({addressBook:Q,subset:Z,deviceState:J,appConfig:X}){if(!j9(J,X))return;let Y=Z.to?.toLowerCase();if(Y!==void 0)for(let $ of Q.contactGroups){let H=$.externalAddresses.find((F)=>F.address.toLowerCase()===Y&&F.chainId===BigInt(Z.chainId));if(H===void 0)continue;let w=s(H.address);if(w!==null)return i4({contactName:$.contactName,scope:H.scope,identifier:w,groupHandle:$.groupHandle,hmacProof:$.hmacProof,hmacRest:H.hmacRest,blockchainFamily:I9,chainId:H.chainId})}}function j9(Q,Z){let J=aQ(Q.deviceModelId);if(!J.supported)return!1;let X=J.minAppVersion[vZ];return X===void 0?!1:new p(Q,Z,new i).withMinVersionInclusiveAcceptingPrerelease(X).check()}class BZ{constructor(Q,Z,J=(Y,$)=>new yQ(Y,$),X=(Y,$)=>new xQ(Y,$)){this._api=Q,this._args=Z,this._provideContextTaskFactory=J,this._sendCommandInChunksTaskFactory=X,this._logger=Z.loggerFactory("ProvideTransactionContextsTask")}_logger;async run(){this._logger.debug("[run] Starting ProvideTransactionContextsTask",{data:{derivationPath:this._args.derivationPath,contextTypes:this._args.contexts.map((J)=>J.context.type),subcontextCounts:this._args.contexts.map((J)=>J.subcontextCallbacks.length),transactionLength:this._args.serializedTransaction?.length}});let Q=!1,Z=await this._provideExternalContact();for(let{context:J,subcontextCallbacks:X}of this._args.contexts){if(Z&&J.type===W.ETHEREUM_TRUSTED_NAME)continue;for(let $ of X){let H=await $();H.type!==W.ERROR&&FQ(H)&&await this._provideContextTaskFactory(this._api,{context:H,loggerFactory:this._args.loggerFactory}).run()}if(J.type===W.ETHEREUM_PROXY_INFO||J.type===W.ETHEREUM_TRUSTED_NAME)continue;if(!Q&&this._args.serializedTransaction!==void 0&&J.type===W.ETHEREUM_TRANSACTION_INFO){Q=!0;let $=$Q.splitPath(this._args.derivationPath),H=new v;H.add8BitUIntToData($.length),$.forEach((w)=>{H.add32BitUIntToData(w)}),H.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:H.build(),commandFactory:(w)=>new n4({serializedTransaction:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run()}let Y=await this._provideContextTaskFactory(this._api,{context:J,loggerFactory:this._args.loggerFactory}).run();if(!V(Y))return this._logger.error("[run] Failed to provide context",{data:{contextType:J.type,error:Y.error}}),L(Y)}return this._logger.debug("[run] ProvideTransactionContextsTask completed successfully"),T(void 0)}async _provideExternalContact(){if(this._args.externalContact===void 0)return!1;let Q=e5({...this._args.externalContact,deviceState:this._api.getDeviceSessionState()});if(Q===void 0)return!1;let Z=await a4(this._api,{payload:Q,logger:this._logger});return V(Z)?!0:(this._logger.warn("[provideExternalContact] Contact rejected, signing without it",{data:{error:Z.error}}),!1)}}import{decodeRlp as k9,encodeRlp as U9}from"ethers";var lZ=((Q)=>(Q[Q.LEGACY=0]="LEGACY",Q[Q.EIP2930=1]="EIP2930",Q[Q.EIP1559=2]="EIP1559",Q[Q.EIP4844=3]="EIP4844",Q))(lZ||{});var q9=32,L9=32;class r4{name="signTransaction";errorHelper=new x(b,I);args;constructor(Q){this.args=Q}getApdu(){let{serializedTransaction:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:4,p1:Z?0:128,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(q9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(L9),!0);return Y?z({data:k({v:J,r:X,s:Y})}):z({error:new N("S is missing")})})}}var M9=32,S9=32;class t4{name="startTransaction";errorHelper=new x(b,I);getApdu(){return new B({cla:224,ins:4,p1:0,p2:2}).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("V is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(M9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(S9),!0);return Y?z({data:k({v:J,r:X,s:Y})}):z({error:new N("S is missing")})})}}var R9=4;class e4{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.loggerFactory("SendSignTransactionTask")}_logger;async run(){if(this._logger.debug("[run] Starting SendSignTransactionTask",{data:{derivationPath:this.args.derivationPath,chainId:this.args.chainId,transactionType:this.args.transactionType,clearSigningType:this.args.clearSigningType,transactionLength:this.args.serializedTransaction.length}}),this.args.clearSigningType===JQ.EIP7730){this._logger.debug("[run] Using EIP7730 clear signing, starting transaction");let w=await this.api.sendCommand(new t4);return V(w)?(this._logger.debug("[run] Transaction signed successfully (EIP7730)"),this.recoverSignature(w.data).mapOrDefault((F)=>z({data:F}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to start transaction",{data:{error:w.error}}),w)}let{derivationPath:Q,serializedTransaction:Z}=this.args,J=$Q.splitPath(Q),X=new v(Z.length+1+J.length*R9);X.add8BitUIntToData(J.length),J.forEach((w)=>{X.add32BitUIntToData(w)});let Y=X.build(),$=this.getChunks(Y,Z);this._logger.debug("[run] Sending transaction in chunks",{data:{chunksCount:$.length}});let H=j;for(let w=0;w<$.length;w++){let F=await this.api.sendCommand(new r4({serializedTransaction:$[w],isFirstChunk:w===0}));if(!V(F))return this._logger.error("[run] Failed to send transaction chunk",{data:{chunkIndex:w,error:F.error}}),F;H=F.data}return this._logger.debug("[run] Transaction signed successfully"),this.recoverSignature(H).mapOrDefault((w)=>z({data:w}),z({error:new N("no signature returned")}))}getChunks(Q,Z){let J=Uint8Array.from([...Q,...Z]),X=HQ;if(J.length<=X)return[J];if(this.args.transactionType===lZ.LEGACY)try{let H=k9(Z);if(Array.isArray(H)){let w=H.slice(-3),F=U9(w),K=s(F).subarray(1);for(X=HQ;X>Q.length;X--){let G=J.length%X;if(G===0||G>K.length)break}}}catch{X=HQ}let Y=0,$=[];for(;Y<J.length;)$.push(J.slice(Y,Y+X)),Y+=X;return $}recoverSignature(Q){return Q.map(({v:Z,r:J,s:X})=>{if(this.args.transactionType!==lZ.LEGACY)return{v:Z,r:J,s:X};let Y=4294967295,$=this.args.chainId;for(;$>Y;)$=$>>8;let H=$*2+35&255;return{v:(Z==H?0:1)+this.args.chainId*2+35,r:J,s:X}})}}class DZ extends t{makeStateMachine(Q){let{getAddress:Z,getAppConfig:J,web3CheckOptIn:X,parseTransaction:Y,buildContexts:$,signTransaction:H,provideContexts:w,detectBlindSigning:F}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),getAddress:R(Z),getAppConfig:R(J),web3CheckOptIn:R(X),parseTransaction:R(Y),buildContexts:R($),provideContexts:R(w),signTransaction:R(H),detectBlindSigning:R(F)},guards:{noInternalError:({context:K})=>K._internalState.error===null,notRefusedByUser:({context:K})=>K._internalState.error!==null&&(!("errorCode"in K._internalState.error)||K._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:K})=>new p(Q.getDeviceSessionState(),K._internalState.appConfig,new i).withMinVersionExclusive(fZ).excludeDeviceModel(E.NANO_S).excludeDeviceModel(E.NANO_SP).excludeDeviceModel(E.NANO_X).check(),shouldOptIn:({context:K})=>!K._internalState.appConfig.web3ChecksEnabled&&!K._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:K})=>!!K.input.options.skipOpenApp,hasSignature:({context:K})=>K._internalState.signature!==null},actions:{assignErrorFromEvent:O({_internalState:(K)=>({...K.context._internalState,error:K.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:K})=>({input:K,intermediateValue:{requiredUserInteraction:D.None,step:o.OPEN_APP},_internalState:{error:null,appConfig:null,subset:null,contexts:[],clearSigningType:null,contextErrorCount:0,transactionType:null,signature:null,isBlindSign:null,usedFallback:!1}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(K)=>({...K.event.snapshot.context.intermediateValue,step:o.OPEN_APP})})},onDone:{actions:O({_internalState:(K)=>K.event.output.caseOf({Right:()=>K.context._internalState,Left:(G)=>({...K.context._internalState,error:G})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:cZ(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"ParseTransaction",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:O({intermediateValue:{requiredUserInteraction:D.Web3ChecksOptIn,step:o.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:{...G._internalState.appConfig,web3ChecksEnabled:K.output.data.enabled}}:G._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:O(({context:K})=>({intermediateValue:{requiredUserInteraction:D.None,step:o.WEB3_CHECKS_OPT_IN_RESULT,result:K._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"ParseTransaction"}}},ParseTransaction:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.PARSE_TRANSACTION}}),invoke:{id:"parseTransaction",src:"parseTransaction",input:({context:K})=>({mapper:K.input.mapper,transaction:K.input.transaction}),onDone:{target:"GetAddress",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,subset:K.output.subset,transactionType:K.output.type})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAddress:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:K})=>({derivationPath:K.input.derivationPath,checkOnDevice:!1,returnChainCode:!1}),onDone:{target:"BuildContexts",actions:O({_internalState:({event:K,context:G})=>{if(V(K.output)){let S={...G._internalState.subset,from:K.output.data.address};return{...G._internalState,subset:S}}return{...G._internalState}}})},onError:{target:"Error"}}},BuildContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.BUILD_CONTEXTS}}),invoke:{id:"buildContexts",src:"buildContexts",input:({context:K})=>({contextModule:K.input.contextModule,mapper:K.input.mapper,parser:K.input.parser,options:K.input.options,appConfig:K._internalState.appConfig,derivationPath:K.input.derivationPath,subset:K._internalState.subset,transaction:K.input.transaction,deviceModelId:Q.getDeviceModel().id,loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"ProvideContexts",actions:[O({_internalState:({event:K,context:G})=>({...G._internalState,contexts:K.output.clearSignContexts,clearSigningType:K.output.clearSigningType,contextErrorCount:K.output.contextErrorCount})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.PROVIDE_CONTEXTS}}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:K})=>({contexts:K._internalState.contexts,derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,externalContact:{addressBook:K.input.addressBook??UZ,subset:K._internalState.subset,appConfig:K._internalState.appConfig},loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTransaction,step:o.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:K})=>({derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,chainId:K._internalState.subset.chainId,transactionType:K._internalState.transactionType,clearSigningType:K._internalState.clearSigningType}),onDone:{target:"SignTransactionResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"SignTransactionResultCheck",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"DetectBlindSigning"},{guard:"notRefusedByUser",target:"BlindSignTransactionFallback"},{target:"DetectBlindSigning"}]},BlindSignTransactionFallback:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.BLIND_SIGN_TRANSACTION_FALLBACK},_internalState:({context:K})=>({...K._internalState,usedFallback:!0})}),invoke:{id:"blindSignTransactionFallback",src:"signTransaction",input:({context:K})=>({derivationPath:K.input.derivationPath,serializedTransaction:K.input.transaction,chainId:K._internalState.subset.chainId,transactionType:K._internalState.transactionType,clearSigningType:JQ.BASIC}),onDone:{target:"BlindSignTransactionFallbackResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},BlindSignTransactionFallbackResultCheck:{always:"DetectBlindSigning"},DetectBlindSigning:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:o.DETECT_BLIND_SIGNING}}),invoke:{id:"detectBlindSigning",src:"detectBlindSigning",input:({context:K})=>{let G=Q.getDeviceSessionState(),S=G.sessionStateType!==MQ.Connected?G.firmwareVersion?.os??null:null,{subset:q,contexts:d,usedFallback:GQ,clearSigningType:Y4,contextErrorCount:YZ}=K._internalState;return{input:{type:"transaction",hasContext:!(!!q?.data&&q.data.length>2)||d.length>0,contextTypes:d.map((pQ)=>pQ.context.type),usedFallback:GQ,chainId:q?.chainId??null,targetAddress:q?.to??null,selectorId:q?.selector&&q.selector.length===z5?q.selector:null,deviceModelId:Q.getDeviceModel().id,signerAppVersion:K._internalState.appConfig?.version??"",deviceVersion:S,clearSigningType:Y4,partialContextErrors:YZ},contextModule:K.input.contextModule,loggerFactory:this.getLoggerFactory(Q)}},onDone:[{guard:"hasSignature",target:"Success",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})},{target:"Error",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})}],onError:[{guard:"hasSignature",target:"Success"},{target:"Error"}]}},Success:{type:"final"},Error:{type:"final"}},output:({context:K})=>K._internalState.signature?T(K._internalState.signature):L(K._internalState.error||new m("No error in final state"))})}extractDependencies(Q){return{getAddress:async(Z)=>Q.sendCommand(new TQ(Z.input)),getAppConfig:async()=>Q.sendCommand(new GZ),web3CheckOptIn:async()=>Q.sendCommand(new _Z),parseTransaction:async(Z)=>Promise.resolve(new I4({mapper:Z.input.mapper,transaction:Z.input.transaction}).run()),buildContexts:async(Z)=>new iQ(Q,Z.input).run(),provideContexts:async(Z)=>new BZ(Q,Z.input).run(),signTransaction:async(Z)=>new e4(Q,{...Z.input,loggerFactory:this.getLoggerFactory(Q)}).run(),detectBlindSigning:async(Z)=>new VZ(Z.input).run()}}}import{ethers as T9,getBytes as C9}from"ethers";var{defineProperty:f9,getOwnPropertyDescriptor:v9}=Object,A9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?v9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&f9(Z,J,Y),Y},Q6=10,fQ=class{constructor(){}mapTransactionToSubset(Q){try{let Z=T9.Transaction.from(WQ(Q)),J=Number(Z.chainId.toString());return J<=0?L(Error("Pre-EIP-155 transactions are not supported")):T({subset:{chainId:J,to:Z.to??void 0,data:Z.data,selector:Z.data.length>=Q6?Z.data.slice(0,Q6):Z.data,value:Z.value},serializedTransaction:C9(Z.unsignedSerialized),type:Z.type||0})}catch{return L(Error("Invalid transaction"))}}};fQ=A9([f()],fQ);var{defineProperty:E9,getOwnPropertyDescriptor:y9}=Object,h9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?y9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&E9(Z,J,Y),Y},u9=4,xZ=32,vQ=class{extractValue(Q,Z){let{to:J,data:X,value:Y}=Q;return Z===mZ.FROM?L(Error("Cannot get 'FROM' field of an unsigned transaction")):Z===mZ.TO?_.fromNullable(J).map(($)=>s($)).filter(($)=>$!==null).map(($)=>[$]).toEither(Error("Failed to extract TO field of transaction")):Z===mZ.VALUE?_.fromNullable(Y).map(($)=>new v().add256BitUIntToData($).build()).map(($)=>[$]).toEither(Error("Failed to extract VALUE field of transaction")):_.fromNullable(X).toEither(Error("Transaction calldata is empty")).chain(($)=>_.fromNullable(s($)).toEither(Error(`Invalid hex string calldata: ${$}`))).chain(($)=>this.extractCalldataValue($,Z))}extractCalldataValue(Q,Z){return Q=Q.slice(u9),Z.length===0?L(Error("Path is empty")):this.extractCalldataValueAt(Q,Z,0,0)}extractCalldataValueAt(Q,Z,J,X){let Y=Z[Z.length-1],$=Y.type===gQ.SLICE?Y:null;for(;Z.length>0;){let H=Z[0];switch(Z=Z.slice(1),H.type){case gQ.TUPLE:X=J,J+=H.offset*xZ;break;case gQ.ARRAY:return this.getU256(Q.slice(J)).toEither(Error(`Invalid array length at offset ${J}`)).chain((w)=>{J+=xZ,X=J;let F=H.start===void 0?0:H.start<0?w+H.start:H.start,K=H.end===void 0?w:H.end<0?w+H.end:H.end;return F<0||F>=w||K>w||F>=K?L(Error(`Array slice out of bounds, start=${H.start}, end=${H.end}`)):Array.from({length:K-F},(G,S)=>S).map((G)=>J+(G+F)*H.itemSize*xZ).reduce((G,S)=>G.chain((q)=>this.extractCalldataValueAt(Q,Z,S,X).map((d)=>[...q,...d])),T([]))});case gQ.REF:if(this.getU256(Q.slice(J)).ifJust((w)=>J=X+w).isNothing())return L(Error(`Invalid ref at offset ${J}`));break;case gQ.LEAF:switch(H.leafType){case PZ.ARRAY_LEAF:return L(Error("Array leaf is not supported in v1 of protocol"));case PZ.TUPLE_LEAF:return L(Error("Tuple leaf is not supported in v1 of protocol"));case PZ.STATIC_LEAF:return this.getSlice(Q,J,xZ).chain((w)=>$===null?T([w]):this.sliceLeaf(w,$));case PZ.DYNAMIC_LEAF:return this.getU256(Q.slice(J)).toEither(Error(`Invalid leaf length at offset ${J}`)).chain((w)=>(J+=xZ,this.getSlice(Q,J,w).chain((F)=>$===null?T([F]):this.sliceLeaf(F,$))))}break;case gQ.SLICE:return L(Error("Slice can only be used as last element of the path"))}}return L(Error("Path did not resolve to a leaf element"))}sliceLeaf(Q,Z){let J=Q.length,X=Z.start===void 0?0:Z.start<0?J+Z.start:Z.start,Y=Z.end===void 0?J:Z.end<0?J+Z.end:Z.end;return X>=Y?L(Error(`invalid leaf slice: start ${X}, end ${Y}`)):this.getSlice(Q,X,Y-X).map(($)=>[$])}getSlice(Q,Z,J){return Z<0||Q.length<Z+J?L(Error(`calldata too small to slice at offset ${Z} of length ${J}`)):T(Q.slice(Z,Z+J))}getU256(Q){return _.fromNullable(new Z6(Q).extract256BitUInt(!0)).filter((Z)=>Z<=Number.MAX_SAFE_INTEGER).map((Z)=>Number(Z))}};vQ=h9([f()],vQ);var g9=(Q)=>new DZ({input:{derivationPath:Q.derivationPath,transaction:Q.transaction,contextModule:Q.contextModule,addressBook:Q.addressBook,options:Q.options??{},mapper:new fQ,parser:new vQ},inspect:Q.inspect,loggerFactory:Q.loggerFactory});var e=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.GET_APP_CONFIG="signer.eth.steps.getAppConfig",Q.GET_ADDRESS="signer.eth.steps.getAddress",Q.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",Q.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",Q.BUILD_CONTEXT="signer.eth.steps.buildContext",Q.PROVIDE_CONTEXT="signer.eth.steps.provideContext",Q.PROVIDE_GENERIC_CONTEXT="signer.eth.steps.provideGenericContext",Q.SIGN_TYPED_DATA="signer.eth.steps.signTypedData",Q.SIGN_TYPED_DATA_LEGACY="signer.eth.steps.signTypedDataLegacy",Q.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",Q))(e||{});var l9=32,c9=32;class bZ{constructor(Q){this.args=Q}name="signEIP712";errorHelper=new x(b,I);getApdu(){let{derivationPath:Q,legacyArgs:Z}=this.args,J={cla:224,ins:12,p1:0,p2:Z.isJust()?0:1},X=$Q.splitPath(Q),Y=new B(J);Y.add8BitUIntToData(X.length);for(let $ of X)Y.add32BitUIntToData($);return Z.ifJust(({domainHash:$,messageHash:H})=>{Y.addHexaStringToData($),Y.addHexaStringToData(H)}),Y.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({error:new N("V is missing")});let X=Z.encodeToHexaString(Z.extractFieldByLength(l9),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(c9),!0);return Y?z({data:{r:X,s:Y,v:J}}):z({error:new N("S is missing")})})}}class lQ{constructor(Q,Z,J){this.typeName=Q,this.name=Z,this.size=J}}class jQ{constructor(Q,Z,J,X,Y){this.typeName=Q,this.rootType=Z,this.rowType=J,this.count=X,this.levels=Y}}class cQ{constructor(Q){this.typeName=Q}}class IZ{constructor(Q){this.root=Q}}class QZ{constructor(Q){this.length=Q}}class mQ{constructor(Q){this.data=Q}}var m9="0x0000000000000000000000000000000000000000";class Q5{constructor(Q,Z,J,X,Y,$,H,w,F,K,G=(S,q)=>new iQ(S,q)){this.api=Q,this.contextModule=Z,this.parser=J,this.transactionParser=X,this.transactionMapper=Y,this.data=$,this.derivationPath=H,this.appConfig=w,this.from=F,this.loggerFactory=K,this.buildFullContextFactory=G}async run(){let Q=this.parser.parse(this.data);if(Q.isLeft())throw Q.extract();let{types:Z,domain:J,message:X}=Q.unsafeCoerce(),Y=this.api.getDeviceSessionState(),$,H=await this.api.sendCommand(new XQ);V(H)&&($=H.data.challenge);let{contexts:w,contextErrorCount:F}=await this.getAdditionalContexts(Y,$),K=j,G={},S={},q=this.getClearSignVersion(Y);if(q.isJust()){let d=this.data.domain.verifyingContract?.toLowerCase()||m9,GQ=this.data.domain.chainId||0,Y4=X.filter((pQ)=>pQ.value instanceof mQ).map((pQ)=>({path:pQ.path,value:pQ.value.data})),YZ=await this.contextModule.getTypedDataFilters({verifyingContract:d,chainId:GQ,version:q.extract(),schema:this.data.types,challenge:$,deviceModelId:Y.deviceModelId,fieldsValues:Y4});YZ.type==="success"&&(K=k(YZ),{calldatasPreContexts:G,calldatasPostContexts:S}=await this.getCalldatasContexts(Y,YZ))}return{...{derivationPath:this.derivationPath,additionalContexts:w,types:Z,domain:J,message:X,clearSignContext:K,calldatasPreContexts:G,calldatasPostContexts:S,deviceModelId:Y.deviceModelId,loggerFactory:this.loggerFactory},clearSigningType:K.isJust()?JQ.EIP7730:JQ.BASIC,contextErrorCount:F}}async getAdditionalContexts(Q,Z){let J=new p(Q,this.appConfig,new i).withMinVersionInclusive(RZ).excludeDeviceModel(E.NANO_S).check(),X=[];J&&(X.push(W.ETHEREUM_GATED_SIGNING),Z!==void 0&&X.push(W.ETHEREUM_PROXY_INFO)),this.appConfig.web3ChecksEnabled&&X.push(W.ETHEREUM_TRANSACTION_CHECK),this.data.domain.chainId!==void 0&&X.push(W.ETHEREUM_DYNAMIC_NETWORK,W.ETHEREUM_DYNAMIC_NETWORK_ICON);let Y=await this.contextModule.getContexts({deviceModelId:Q.deviceModelId,data:this.data,from:this.from,chainId:this.data.domain.chainId||0,challenge:Z},X),$=Y.filter((H)=>H.type===W.ERROR).length;return{contexts:Y.filter(FQ).filter((H)=>X.includes(H.type)),contextErrorCount:$}}getClearSignVersion(Q){return new p(Q,this.appConfig,new i).withMinVersionInclusive("1.10.0").excludeDeviceModel(E.NANO_S).check()?new p(Q,this.appConfig,new i).withMinVersionInclusive("1.12.0").check()?k("v2"):k("v1"):j}async getCalldatasContexts(Q,Z){let J={},X={};for(let Y in Z.calldatas){let{subset:$}=Z.calldatas[Y],H=await this.buildFullContextFactory(this.api,{contextModule:this.contextModule,mapper:this.transactionMapper,parser:this.transactionParser,options:{},appConfig:this.appConfig,derivationPath:this.derivationPath,subset:$,deviceModelId:Q.deviceModelId,loggerFactory:this.loggerFactory}).run();if(H.clearSigningType===JQ.EIP7730||H.clearSigningType===JQ.BASIC&&H.clearSignContexts.every(({context:w})=>w.type===W.ETHEREUM_TRUSTED_NAME)){let w=H.clearSignContexts;J[Y]=w.filter((F)=>F.context.type===W.ETHEREUM_TRUSTED_NAME),X[Y]=w.filter((F)=>F.context.type!==W.ETHEREUM_TRUSTED_NAME)}}return{calldatasPreContexts:J,calldatasPostContexts:X}}}var g=((Q)=>(Q.Activation="activation",Q.DiscardedPath="discarded_path",Q.MessageInfo="message_info",Q.Datetime="datetime",Q.Raw="raw",Q.Amount="amount",Q.Token="token",Q.TrustedName="trusted-name",Q.CalldataInfo="calldata-info",Q.CalldataValue="calldata-value",Q.CalldataCallee="calldata-callee",Q.CalldataChainId="calldata-chain-id",Q.CalldataSelector="calldata-selector",Q.CalldataAmount="calldata-amount",Q.CalldataSpender="calldata-spender",Q))(g||{}),jZ=((Q)=>(Q[Q.None=0]="None",Q[Q.Present=1]="Present",Q[Q.VerifyingContract=2]="VerifyingContract",Q))(jZ||{}),d9={activation:0,discarded_path:1,message_info:15,"calldata-spender":244,"calldata-amount":245,"calldata-selector":246,"calldata-chain-id":247,"calldata-callee":248,"calldata-value":249,"calldata-info":250,"trusted-name":251,datetime:252,token:253,amount:254,raw:255};class l{constructor(Q){this.args=Q}name="sendEIP712Filtering";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:30,p1:"discarded"in this.args&&this.args.discarded?1:0,p2:d9[this.args.type]},Z=new B(Q);switch(this.args.type){case"message_info":Z.encodeInLVFromAscii(this.args.displayName).add8BitUIntToData(this.args.filtersCount).encodeInLVFromHexa(this.args.signature);break;case"discarded_path":Z.encodeInLVFromAscii(this.args.path);break;case"datetime":case"raw":Z.encodeInLVFromAscii(this.args.displayName).encodeInLVFromHexa(this.args.signature);break;case"trusted-name":Z.encodeInLVFromAscii(this.args.displayName).addHexaStringToData(this.args.typesAndSourcesPayload).encodeInLVFromHexa(this.args.signature);break;case"token":case"amount":this.args.type==="amount"&&Z.encodeInLVFromAscii(this.args.displayName),Z.add8BitUIntToData(this.args.tokenIndex).encodeInLVFromHexa(this.args.signature);break;case"calldata-info":Z.add8BitUIntToData(this.args.calldataIndex).add8BitUIntToData(this.args.valueFlag?1:0).add8BitUIntToData(this.args.calleeFlag).add8BitUIntToData(this.args.chainIdFlag?1:0).add8BitUIntToData(this.args.selectorFlag?1:0).add8BitUIntToData(this.args.amountFlag?1:0).add8BitUIntToData(this.args.spenderFlag).encodeInLVFromHexa(this.args.signature);break;case"calldata-value":case"calldata-callee":case"calldata-chain-id":case"calldata-selector":case"calldata-amount":case"calldata-spender":Z.add8BitUIntToData(this.args.calldataIndex).encodeInLVFromHexa(this.args.signature);break}return Z.build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}var dZ=((Q)=>(Q[Q.Name=0]="Name",Q[Q.Field=255]="Field",Q))(dZ||{});class oZ{constructor(Q){this.args=Q}name="sendEIP712StructDefinition";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:26,p1:0,p2:this.args.command};if(this.args.command===0)return new B(Q).addAsciiStringToData(this.args.name).build();let Z=new B(Q),J=this.constructTypeDescByte(this.args.type);if(Z.add8BitUIntToData(J),this.getTypeCustomName(this.args.type).ifJust((X)=>{Z.encodeInLVFromAscii(X)}),this.getTypeSize(this.args.type).ifJust((X)=>{Z.add8BitUIntToData(X)}),this.args.type instanceof jQ){Z.add8BitUIntToData(this.args.type.levels.length);for(let X of this.args.type.levels)X.caseOf({Just:(Y)=>{Z.add8BitUIntToData(1).add8BitUIntToData(Y)},Nothing:()=>{Z.add8BitUIntToData(0)}})}return Z.encodeInLVFromAscii(this.args.name).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}constructTypeDescByte(Q){let Z=Q instanceof jQ?1:0,J=this.getTypeSize(Q).isJust()?1:0,X=this.getType(Q);return Z<<7|J<<6|X}getTypeSize(Q){return Q instanceof jQ?this.getTypeSize(Q.rootType):Q instanceof lQ?Q.size:j}getTypeCustomName(Q){return Q instanceof jQ?this.getTypeCustomName(Q.rootType):Q instanceof cQ?k(Q.typeName):j}getType(Q){if(Q instanceof jQ)return this.getType(Q.rootType);if(Q instanceof cQ)return 0;switch(Q.name){case"int":return 1;case"uint":return 2;case"address":return 3;case"bool":return 4;case"string":return 5;case"bytes":return Q.size.isJust()?6:7}}}var AQ=((Q)=>(Q[Q.ROOT=0]="ROOT",Q[Q.ARRAY=15]="ARRAY",Q[Q.FIELD=255]="FIELD",Q))(AQ||{});class pZ{constructor(Q){this.args=Q}name="sendEIP712StructImplem";errorHelper=new x(b,I);getApdu(){let Q={cla:224,ins:28,p1:this.args.type!=255||this.args.value.isLastChunk?0:1,p2:this.args.type};switch(this.args.type){case 0:return new B(Q).addAsciiStringToData(this.args.value).build();case 15:return new B(Q).add8BitUIntToData(this.args.value).build();case 255:return new B(Q).addBufferToData(this.args.value.data).build()}}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefault(z({data:void 0}))}}class qZ{constructor(Q,Z){this.api=Q,this.args=Z}async run(){if(this.args.type!==AQ.FIELD)return await this.api.sendCommand(new pZ(this.args));let Q=z({data:void 0}),Z=new v(this.args.value.length+2).add16BitUIntToData(this.args.value.length).addBufferToData(this.args.value).build();for(let J=0;J<Z.length;J+=HQ)if(Q=await this.api.sendCommand(new pZ({type:AQ.FIELD,value:{data:Z.slice(J,J+HQ),isLastChunk:J>=Z.length-HQ}})),!V(Q))return Q;return Q}}var J6=5;class J5{constructor(Q,Z,J,X=(Y)=>new BZ(this.api,Y)){this.api=Q,this.contextModule=Z,this.args=J,this.provideContextFactory=X;for(let Y of this.args.domain)if(Y.path==="chainId"&&Y.value instanceof mQ){let $=BigInt(WQ(Y.value.data));$<=Number.MAX_SAFE_INTEGER&&(this.chainId=k(Number($)));break}}chainId=j;calldataMetadatas={};async run(){for(let H of this.args.additionalContexts)await this.provideContext(H);let Q=this.args.additionalContexts.some((H)=>H.type===W.ETHEREUM_PROXY_INFO),Z=this.args.clearSignContext.extract()?.proxy;Z!==void 0&&!Q&&await this.provideContext(Z);let J=this.args.clearSignContext.extract()?.certificate;J!==void 0&&await this.api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload}));let X=z({data:void 0}),Y=Object.entries(this.args.types).sort(([H],[w])=>H.localeCompare(w));for(let[H,w]of Y){let F=await this.api.sendCommand(new oZ({command:dZ.Name,name:H}));if(!V(F))return F;for(let[K,G]of Object.entries(w)){let S=await this.api.sendCommand(new oZ({command:dZ.Field,name:K,type:G}));if(!V(S))return S}}if(this.args.clearSignContext.isJust()){let H=await this.api.sendCommand(new l({type:g.Activation}));if(!V(H))return H}for(let H of this.args.domain){let w=await this.getImplementationTask(H).run();if(!V(w))return w}if(this.args.clearSignContext.isJust()){let H=this.args.clearSignContext.extract(),w=await this.api.sendCommand(new l({type:g.MessageInfo,displayName:H.messageInfo.displayName,filtersCount:H.messageInfo.filtersCount,signature:H.messageInfo.signature}));if(!V(w))return w}let $={indexes:{},nextIndex:0};for(let H of this.args.message){let w=await this.provideTokenInformation(H,$);if(w.isJust())return w.extract();let F=await this.provideTrustedName(H);if(F.isJust())return F.extract();let K=await this.filterValue(H,$);if(K.isJust()&&!V(K.extract()))return K.extract();let G=await this.getImplementationTask(H).run();if(!V(G))return G;if(await this.tryProvideTransactionContext(),this.args.clearSignContext.isJust()&&H.value instanceof QZ&&H.value.length===0){let S=Object.entries(this.args.clearSignContext.extract().filters).filter(([q])=>q.startsWith(`${H.path}.[]`)).map(([,q])=>q);for(let q of S){let d=await this.api.sendCommand(new l({type:g.DiscardedPath,path:q.path}));if(!V(d))return d;let GQ=await this.provideFiltering(q,$,!0);if(!V(GQ))return GQ}}}return X}async provideContext({type:Q,payload:Z,certificate:J}){switch(J&&await this.api.sendCommand(new sQ({keyUsage:J.keyUsageNumber,certificate:J.payload})),Q){case W.ETHEREUM_TRANSACTION_CHECK:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new wZ({payload:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_DYNAMIC_NETWORK:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.CONFIGURATION})}).run();break;case W.ETHEREUM_DYNAMIC_NETWORK_ICON:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new EQ({data:X.chunkedData,isFirstChunk:X.isFirstChunk,configurationType:CQ.ICON}),withPayloadLength:!1}).run();break;case W.ETHEREUM_PROXY_INFO:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new HZ({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_GATED_SIGNING:await new VQ(this.api,{payload:Z,commandFactory:(X)=>new $Z({data:X.chunkedData,isFirstChunk:X.isFirstChunk})}).run();break;case W.ETHEREUM_TOKEN:case W.ETHEREUM_NFT:case W.ETHEREUM_TRUSTED_NAME:case W.ETHEREUM_PLUGIN:case W.ETHEREUM_EXTERNAL_PLUGIN:case W.ETHEREUM_ENUM:case W.ETHEREUM_TRANSACTION_INFO:case W.ETHEREUM_TRANSACTION_FIELD_DESCRIPTION:case W.ETHEREUM_SAFE:case W.ETHEREUM_SIGNER:throw Error(`Context type ${Q} not supported in EIP712 messages`);default:throw Error(`Unhandled context type ${Q}`)}}getImplementationTask(Q){return Q.value instanceof IZ?new qZ(this.api,{type:AQ.ROOT,value:Q.value.root}):Q.value instanceof QZ?new qZ(this.api,{type:AQ.ARRAY,value:Q.value.length}):new qZ(this.api,{type:AQ.FIELD,value:Q.value.data})}async provideTokenInformation(Q,Z){if(this.args.clearSignContext.isJust()){let J=this.args.clearSignContext.extract().filters[Q.path];if(J!==void 0&&(J.type==="amount"||J.type==="token")&&Z.indexes[J.tokenIndex]===void 0){let X=J.tokenIndex,Y=this.args.clearSignContext.extract().tokens[X];if(Y===void 0)return j;let $=await this.api.sendCommand(new KZ({payload:Y}));if(!V($))return _.of($);let{tokenIndex:H}=$.data;Z.nextIndex=(H+1)%J6,Number(X)===Z5&&(H=Z5),Z.indexes[Number(X)]=H}}return j}async provideTrustedName(Q){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){let Z=this.args.clearSignContext.extract(),J=Z.filters[Q.path],X=Z.trustedNamesAddresses[Q.path];if(J!==void 0&&J.type==="trusted-name"&&X!==void 0){let Y=await this.api.sendCommand(new XQ);if(!V(Y))return k(Y);let $=await this.contextModule.getFieldContext({chainId:this.chainId.extract(),address:X,challenge:Y.data.challenge,types:J.types,sources:J.sources,deviceModelId:this.args.deviceModelId},W.ETHEREUM_TRUSTED_NAME);if($.type===W.ETHEREUM_TRUSTED_NAME){$.certificate&&await this.api.sendCommand(new sQ({keyUsage:$.certificate.keyUsageNumber,certificate:$.certificate.payload}));let H=await new VQ(this.api,{payload:$.payload,commandFactory:(w)=>new WZ({data:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run();if(!V(H))return k(H)}}}return j}async filterValue(Q,Z){if(this.args.clearSignContext.isJust()){let J=this.args.clearSignContext.extract().filters[Q.path];if(J===void 0)return j;let X=await this.provideFiltering(J,Z,!1);return _.of(X)}return j}async provideFiltering(Q,Z,J){switch(Q.type){case"trusted-name":return await this.api.sendCommand(new l({type:g.TrustedName,discarded:J,displayName:Q.displayName,typesAndSourcesPayload:Q.typesAndSourcesPayload,signature:Q.signature}));case"datetime":return await this.api.sendCommand(new l({type:g.Datetime,discarded:J,displayName:Q.displayName,signature:Q.signature}));case"raw":return await this.api.sendCommand(new l({type:g.Raw,discarded:J,displayName:Q.displayName,signature:Q.signature}));case"token":return this.sanitizeDeviceIndex(Q.tokenIndex,Z),await this.api.sendCommand(new l({type:g.Token,discarded:J,tokenIndex:Z.indexes[Q.tokenIndex],signature:Q.signature}));case"amount":return this.sanitizeDeviceIndex(Q.tokenIndex,Z),await this.api.sendCommand(new l({type:g.Amount,discarded:J,displayName:Q.displayName,tokenIndex:Z.indexes[Q.tokenIndex],signature:Q.signature}));case"calldata-value":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataValue,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-callee":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataCallee,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-spender":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataSpender,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-chain-id":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataChainId,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-selector":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataSelector,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));case"calldata-amount":return await this.provideCalldataInfos(Q.calldataIndex),await this.api.sendCommand(new l({type:g.CalldataAmount,discarded:J,calldataIndex:Q.calldataIndex,signature:Q.signature}));default:throw Error(`ProvideEIP712ContextTask/provideFiltering - Unhandled filter ${Q}`)}}async provideCalldataInfos(Q){if(this.args.clearSignContext.isJust()){if(this.calldataMetadatas[Q]!==void 0)return this.calldataMetadatas[Q].remainingFilters--,j;let Z=this.args.clearSignContext.extract().calldatas[Q];if(Z===void 0)return j;let J=[Z.filter.valueFlag,Z.filter.calleeFlag===ZZ.Present,Z.filter.chainIdFlag,Z.filter.selectorFlag,Z.filter.amountFlag,Z.filter.spenderFlag===ZZ.Present].filter((Y)=>Y).length,X=this.args.calldatasPreContexts[Q];return X?.length&&await this.provideContextFactory({contexts:X,derivationPath:this.args.derivationPath,loggerFactory:this.args.loggerFactory}).run(),this.calldataMetadatas[Q]={remainingFilters:J-1,postContexts:this.args.calldatasPostContexts[Q]},_.of(await this.api.sendCommand(new l({type:g.CalldataInfo,discarded:!1,calldataIndex:Q,valueFlag:Z.filter.valueFlag,calleeFlag:this.mapCalldataPresence(Z.filter.calleeFlag),chainIdFlag:Z.filter.chainIdFlag,selectorFlag:Z.filter.selectorFlag,amountFlag:Z.filter.amountFlag,spenderFlag:this.mapCalldataPresence(Z.filter.spenderFlag),signature:Z.filter.signature})))}return j}async tryProvideTransactionContext(){for(let Q in this.calldataMetadatas){let Z=this.calldataMetadatas[Q];Z.remainingFilters===0&&(Z.postContexts?.length&&await this.provideContextFactory({contexts:Z.postContexts,derivationPath:this.args.derivationPath,loggerFactory:this.args.loggerFactory}).run(),delete this.calldataMetadatas[Q])}}mapCalldataPresence(Q){switch(Q){case ZZ.None:return jZ.None;case ZZ.Present:return jZ.Present;case ZZ.VerifyingContract:return jZ.VerifyingContract;default:throw Error(`Unhandled presence ${Q}`)}}sanitizeDeviceIndex(Q,Z){Z.indexes[Q]===void 0&&(Z.indexes[Q]=Z.nextIndex,Z.nextIndex=(Z.nextIndex+1)%J6)}}import{TypedDataEncoder as X6}from"ethers";class X5{constructor(Q,Z,J,X){this.api=Q,this.data=Z,this.derivationPath=J,this._logger=X("SignTypedDataLegacyTask")}_logger;async run(){this._logger.debug("[run] Starting SignTypedDataLegacyTask",{data:{derivationPath:this.derivationPath,primaryType:this.data.primaryType}});let Q=X6.hashDomain(this.data.domain);if(!this.data.types[this.data.primaryType])throw this._logger.error("[run] Primary type not defined in types",{data:{primaryType:this.data.primaryType}}),Error(`Primary type "${this.data.primaryType}" is not defined in the types.`);let Z=this.data.types,{EIP712Domain:J,...X}=Z,Y=X6.hashStruct(this.data.primaryType,X,this.data.message);return this._logger.debug("[run] Computed hashes, sending blind sign command"),await this.api.sendCommand(new bZ({derivationPath:this.derivationPath,legacyArgs:k({domainHash:Q,messageHash:Y})}))}}function Y6(Q){if(Q==null)return null;if(typeof Q=="number")return Number.isSafeInteger(Q)?Q:null;if(typeof Q=="string"){if(Q.trim()==="")return null;let Z=Number(Q);return Number.isSafeInteger(Z)?Z:null}return null}class LZ extends t{makeStateMachine(Q){let{getAddress:Z,getAppConfig:J,web3CheckOptIn:X,buildContext:Y,provideContext:$,signTypedData:H,signTypedDataLegacy:w,detectBlindSigning:F}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),getAddress:R(Z),getAppConfig:R(J),web3CheckOptIn:R(X),buildContext:R(Y),provideContext:R($),signTypedData:R(H),signTypedDataLegacy:R(w),detectBlindSigning:R(F)},guards:{noInternalError:({context:K})=>K._internalState.error===null,notRefusedByUser:({context:K})=>K._internalState.error!==null&&(!("errorCode"in K._internalState.error)||K._internalState.error.errorCode!=="6985"),isWeb3ChecksSupported:({context:K})=>new p(Q.getDeviceSessionState(),K._internalState.appConfig,new i).withMinVersionExclusive(fZ).excludeDeviceModel(E.NANO_S).excludeDeviceModel(E.NANO_SP).excludeDeviceModel(E.NANO_X).check(),shouldOptIn:({context:K})=>!K._internalState.appConfig.web3ChecksEnabled&&!K._internalState.appConfig.web3ChecksOptIn,skipOpenApp:({context:K})=>K.input.skipOpenApp,hasSignature:({context:K})=>K._internalState.signature!==null},actions:{assignErrorFromEvent:O({_internalState:(K)=>({...K.context._internalState,error:K.event.error})})}}).createMachine({id:"SignTypedDataDeviceAction",initial:"InitialState",context:({input:K})=>({input:K,intermediateValue:{requiredUserInteraction:D.None,step:e.OPEN_APP},_internalState:{error:null,appConfig:null,from:null,typedDataContext:null,signature:null,isBlindSign:null,usedFallback:!1}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(K)=>({...K.event.snapshot.context.intermediateValue,step:e.OPEN_APP})})},onDone:{actions:O({_internalState:(K)=>K.event.output.caseOf({Right:()=>K.context._internalState,Left:(G)=>({...K.context._internalState,error:G})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:cZ(["noInternalError","isWeb3ChecksSupported","shouldOptIn"])},{target:"GetAddress",guard:"noInternalError"},{target:"Error"}]},Web3ChecksOptIn:{entry:O({intermediateValue:{requiredUserInteraction:D.Web3ChecksOptIn,step:e.WEB3_CHECKS_OPT_IN}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"Web3ChecksOptInResult",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,appConfig:{...G._internalState.appConfig,web3ChecksEnabled:K.output.data.enabled}}:G._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Web3ChecksOptInResult:{entry:O(({context:K})=>({intermediateValue:{requiredUserInteraction:D.None,step:e.WEB3_CHECKS_OPT_IN_RESULT,result:K._internalState.appConfig.web3ChecksEnabled}})),after:{0:{target:"GetAddress"}}},GetAddress:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.GET_ADDRESS}}),invoke:{id:"getAddress",src:"getAddress",input:({context:K})=>({derivationPath:K.input.derivationPath}),onDone:{target:"BuildContext",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,from:K.output.data.address}:{...G._internalState,error:K.output.error}})]},onError:{target:"Error"}}},BuildContext:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.BUILD_CONTEXT}}),invoke:{id:"buildContext",src:"buildContext",input:({context:K})=>({contextModule:K.input.contextModule,parser:K.input.parser,transactionParser:K.input.transactionParser,transactionMapper:K.input.transactionMapper,data:K.input.data,appConfig:K._internalState.appConfig,derivationPath:K.input.derivationPath,from:K._internalState.from}),onDone:{target:"ProvideContext",actions:[O({_internalState:({event:K,context:G})=>({...G._internalState,typedDataContext:K.output})})]},onError:{target:"SignTypedDataLegacy"}}},ProvideContext:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.PROVIDE_CONTEXT}}),invoke:{id:"provideContext",src:"provideContext",input:({context:K})=>({contextModule:K.input.contextModule,taskArgs:K._internalState.typedDataContext}),onDone:{actions:O({_internalState:(K)=>V(K.event.output)?K.context._internalState:{...K.context._internalState,error:K.event.output.error}}),target:"ProvideContextResultCheck"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContextResultCheck:{always:[{guard:"noInternalError",target:"SignTypedData"},{guard:"notRefusedByUser",target:"SignTypedDataLegacy"},{target:"Error"}]},SignTypedData:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.SIGN_TYPED_DATA}}),invoke:{id:"signTypedData",src:"signTypedData",input:({context:K})=>({derivationPath:K.input.derivationPath}),onDone:{target:"SignTypedDataResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},SignTypedDataResultCheck:{always:[{guard:"noInternalError",target:"DetectBlindSigning"},{guard:"notRefusedByUser",target:"SignTypedDataLegacy"},{target:"DetectBlindSigning"}]},SignTypedDataLegacy:{entry:O({intermediateValue:{requiredUserInteraction:D.SignTypedData,step:e.SIGN_TYPED_DATA_LEGACY},_internalState:({context:K})=>({...K._internalState,usedFallback:!0})}),invoke:{id:"signTypedDataLegacy",src:"signTypedDataLegacy",input:({context:K})=>({derivationPath:K.input.derivationPath,data:K.input.data}),onDone:{target:"SignTypedDataLegacyResultCheck",actions:[O({_internalState:({event:K,context:G})=>V(K.output)?{...G._internalState,signature:K.output.data}:{...G._internalState,error:K.output.error}})]},onError:{target:"DetectBlindSigning",actions:"assignErrorFromEvent"}}},SignTypedDataLegacyResultCheck:{always:"DetectBlindSigning"},DetectBlindSigning:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:e.DETECT_BLIND_SIGNING}}),invoke:{id:"detectBlindSigning",src:"detectBlindSigning",input:({context:K})=>{let G=Q.getDeviceSessionState(),S=G.sessionStateType!==MQ.Connected?G.firmwareVersion?.os??null:null;return{input:{type:"typedData",hasContext:K._internalState.typedDataContext?.clearSignContext.isJust()??!1,usedFallback:K._internalState.usedFallback,chainId:Y6(K.input.data.domain.chainId),targetAddress:K.input.data.domain.verifyingContract??null,deviceModelId:Q.getDeviceModel().id,signerAppVersion:K._internalState.appConfig?.version??"",deviceVersion:S,clearSigningType:K._internalState.typedDataContext?.clearSigningType??null,partialContextErrors:K._internalState.typedDataContext?.contextErrorCount??0},contextModule:K.input.contextModule,loggerFactory:this.getLoggerFactory(Q)}},onDone:[{guard:"hasSignature",target:"Success",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})},{target:"Error",actions:O({_internalState:({event:K,context:G})=>({...G._internalState,isBlindSign:K.output.isBlindSign})})}],onError:[{guard:"hasSignature",target:"Success"},{target:"Error"}]}},Success:{type:"final"},Error:{type:"final"}},output:({context:K})=>K._internalState.signature?T(K._internalState.signature):L(K._internalState.error||new m("No error in final state"))})}extractDependencies(Q){return{getAddress:async(Z)=>Q.sendCommand(new TQ(Z.input)),getAppConfig:async()=>Q.sendCommand(new GZ),web3CheckOptIn:async()=>Q.sendCommand(new _Z),buildContext:async(Z)=>new Q5(Q,Z.input.contextModule,Z.input.parser,Z.input.transactionParser,Z.input.transactionMapper,Z.input.data,Z.input.derivationPath,Z.input.appConfig,Z.input.from,this.getLoggerFactory(Q)).run(),provideContext:async(Z)=>new J5(Q,Z.input.contextModule,Z.input.taskArgs).run(),signTypedData:async(Z)=>Q.sendCommand(new bZ({derivationPath:Z.input.derivationPath,legacyArgs:j})),signTypedDataLegacy:async(Z)=>new X5(Q,Z.input.data,Z.input.derivationPath,this.getLoggerFactory(Q)).run(),detectBlindSigning:async(Z)=>new VZ(Z.input).run()}}}function $6(Q,Z){switch(Q.name){case"string":return typeof Z!="string"?j:k(new TextEncoder().encode(Z));case"bytes":case"address":return typeof Z!="string"?j:o9(Q,Z);case"bool":case"uint":case"int":return Q.name==="bool"&&typeof Z=="boolean"&&(Z=Number(Z)),typeof Z!="string"&&typeof Z!="number"&&typeof Z!="bigint"?j:p9(Q.name,Q.size.mapOrDefault((J)=>J*8,1),Z)}}function o9(Q,Z){let J=Q.name==="address"?k(20):Q.size;return _.fromNullable(s(Z)).filter((X)=>J.mapOrDefault((Y)=>X.length<=Y,!0))}function p9(Q,Z,J){let X;switch(typeof J){case"bigint":X=J;break;case"number":if(!Number.isInteger(J))return j;X=BigInt(J);break;case"string":if(J.length===0)return j;try{X=BigInt(J)}catch{return j}break}let Y=Q==="int";return s9(X,BigInt(Z),Y).chain(($)=>_.fromNullable(s($.toString(16))))}function s9(Q,Z,J){if(!J)return Q>=0n&&Q<1n<<Z?k(Q):j;let X=1n<<Z-1n;if(Q>=X||Q<-X)return j;if(Q<0n){let Y=(1n<<Z)-1n;Q=-Q,Q=(~Q&Y)+1n}return k(Q)}class Y5{domainTypeName="EIP712Domain";domainDefaultTypes={name:"string",version:"string",chainId:"uint256",verifyingContract:"address",salt:"bytes32"};structs;constructor(Q,Z){if(!(this.domainTypeName in Q)){let X=[];Object.entries(this.domainDefaultTypes).forEach(([Y,$])=>{Y in Z&&X.push({name:Y,type:$})}),X.length>0&&(Q[this.domainTypeName]=X)}let J={};for(let[X,Y]of Object.entries(Q)){let $={};for(let H of Y)$[H.name]=this.parseType(H.type);J[X]=$}this.structs=J}getStructDefinitions(){return this.structs}parse(Q,Z){if(!this.isRecord(Z))return L(Error("Message is not a record"));let J=[{path:"",type:"",value:new IZ(Q)}];return this.visitValue(Q,Z,"",(X)=>J.push(X))?T(J):L(Error("Failed to parse"))}isRecord(Q){return typeof Q=="object"&&Q!==null}parseType(Q){return this.tryParsePrimitiveType(Q).mapOrDefault((Z)=>Z,this.tryParseArrayType(Q).mapOrDefault((Z)=>Z,new cQ(Q)))}tryParsePrimitiveType(Q){{let Z=Q.match(/^(((u?)int)(\d+))$/);if(Z){let J=parseInt(Z[4]);return J%8!==0||J===0||J>256?j:k(new lQ(Z[1],Z[3]?"uint":"int",k(J/8)))}}{let Z=Q.match(/^((bytes)(\d*))$/);if(Z){let J=Z[3]?parseInt(Z[3]):null;return J!==null&&(J===0||J>32)?j:k(new lQ(Z[1],"bytes",_.fromNullable(J)))}}return Q==="address"||Q==="bool"||Q==="string"?k(new lQ(Q,Q,j)):j}tryParseArrayType(Q){let Z=Q.match(/^([^[[]*)(((\[\d*\])*)\[\d*\])$/);if(Z){let J=[...Z[2].matchAll(/\[(\d*)\]/g)];if(J&&J.length>0){let X=J.map(([,$])=>$?k(parseInt($)):j),Y=this.tryParsePrimitiveType(Z[1]).mapOrDefault(($)=>$,new cQ(Z[1]));return k(new jQ(Q,Y,Z[1]+Z[3],X[X.length-1],X))}}return j}visitValue(Q,Z,J,X){return this.tryVisitStructValue(Q,Z,J,X)||this.tryVisitPrimitiveValue(Q,Z,J,X)||this.tryVisitArrayValue(Q,Z,J,X)}tryVisitPrimitiveValue(Q,Z,J,X){return!this.isRecord(Z)&&!Array.isArray(Z)&&this.tryParsePrimitiveType(Q).chain((Y)=>$6(Y,Z).ifJust(($)=>{X({path:J,type:Q,value:new mQ($)})})).isJust()}tryVisitStructValue(Q,Z,J,X){let Y=this.structs[Q];if(Y===void 0||!this.isRecord(Z))return!1;for(let[$,H]of Object.entries(Y)){let w=Z[$];if(w===void 0)return!1;let F=J.length?`${J}.${$}`:$;if(!this.visitValue(H.typeName,w,`${F}`,X))return!1}return!0}tryVisitArrayValue(Q,Z,J,X){return Array.isArray(Z)&&this.tryParseArrayType(Q).filter((Y)=>Y.count.mapOrDefault(($)=>Z.length==$,!0)).mapOrDefault((Y)=>{X({path:J,type:Q,value:new QZ(Z.length)});for(let $ of Z){let H=J.length?`${J}.[]`:"[]";if(!this.visitValue(Y.rowType,$,`${H}`,X))return!1}return!0},!1)}}var{defineProperty:i9,getOwnPropertyDescriptor:a9}=Object,n9=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?a9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&i9(Z,J,Y),Y},JZ=class{parse(Q){let Z=new Y5(Q.types,Q.domain),J=Z.getStructDefinitions(),X=Z.parse("EIP712Domain",Q.domain),Y=Z.parse(Q.primaryType,Q.message);return X.chain(($)=>Y.map((H)=>({types:J,domain:$,message:H})))}};JZ=n9([f()],JZ);var r9=(Q)=>new LZ({input:{derivationPath:Q.derivationPath,data:Q.data,contextModule:Q.contextModule,skipOpenApp:Q.skipOpenApp,parser:new JZ,transactionMapper:new fQ,transactionParser:new vQ},inspect:Q.inspect,loggerFactory:Q.loggerFactory});var sZ={GetAddressUseCase:Symbol.for("GetAddressUseCase")};var QQ={AppBinding:Symbol.for("AppBinder")};var{defineProperty:t9,getOwnPropertyDescriptor:e9}=Object,QJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?e9(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&t9(Z,J,Y),Y},ZJ=(Q,Z)=>(J,X)=>Z(J,X,Q),iZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z){return this._appBinder.getAddress({derivationPath:Q,checkOnDevice:Z?.checkOnDevice??!1,returnChainCode:Z?.returnChainCode??!1,skipOpenApp:Z?.skipOpenApp??!1,chainId:Z?.chainId})}};iZ=QJ([f(),ZJ(0,M(QQ.AppBinding))],iZ);var H6=()=>new ZQ(({bind:Q})=>{Q(sZ.GetAddressUseCase).to(iZ)});var OQ={Dmk:Symbol.for("Dmk"),SessionId:Symbol.for("SessionId"),ContextModule:Symbol.for("ContextModule"),DmkLoggerFactory:Symbol.for("DmkLoggerFactory"),AddressBook:Symbol.for("AddressBook")};var qQ={SignTransactionUseCase:Symbol.for("SignTransactionUseCase"),TransactionParserService:Symbol.for("TransactionParserService"),TransactionMapperService:Symbol.for("TransactionMapperService"),TransactionMappers:Symbol.for("TransactionMappers")};var XZ=((Q)=>(Q.OPEN_APP="signer.eth.steps.openApp",Q.BUILD_CONTEXTS="signer.eth.steps.buildContexts",Q.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",Q.VERIFY_SAFE_ADDRESS="signer.eth.steps.verifySafeAddress",Q))(XZ||{});class $5{constructor(Q,Z){this._api=Q,this._args=Z,this._logger=Z.loggerFactory("BuildSafeAddressContextTask")}_logger;async run(){this._logger.debug("[run] Starting BuildSafeAddressContextTask",{data:{safeContractAddress:this._args.safeContractAddress,chainId:this._args.options.chainId}});let Q=await this._api.sendCommand(new XQ);if(!V(Q))throw this._logger.error("[run] Failed to get challenge"),Error("Failed to get challenge");let Z=Q.data.challenge,J=await this._args.contextModule.getContexts({safeContractAddress:this._args.safeContractAddress,chainId:this._args.options.chainId,deviceModelId:this._args.deviceModelId,challenge:Z},[W.ETHEREUM_SAFE,W.ETHEREUM_SIGNER]);if(J.forEach((X)=>{if(X.type===W.ERROR)throw Error(X.error.message)}),J.length!==2||J.find((X)=>X.type===W.ETHEREUM_SAFE)===void 0||J.find((X)=>X.type===W.ETHEREUM_SIGNER)===void 0)throw this._logger.error("[run] Invalid safe address contexts",{data:{receivedTypes:J.map((X)=>X.type),expectedTypes:[W.ETHEREUM_SAFE,W.ETHEREUM_SIGNER]}}),Error("Invalid safe address contexts");return this._logger.debug("[run] BuildSafeAddressContextTask completed successfully"),{clearSignContexts:J.filter(FQ)}}}class H5 extends t{makeStateMachine(Q){let{buildSafeAddressContexts:Z,provideContexts:J}=this.extractDependencies(Q);return r({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new zQ({input:{appName:y}}).makeStateMachine(Q),buildSafeAddressContexts:R(Z),provideContexts:R(J)},guards:{noInternalError:({context:X})=>X._internalState.error===null,skipOpenApp:({context:X})=>!!X.input.options.skipOpenApp},actions:{assignErrorFromEvent:O({_internalState:(X)=>({...X.context._internalState,error:X.event.error})})}}).createMachine({id:"VerifySafeAddressDeviceAction",initial:"InitialState",context:({input:X})=>({input:X,intermediateValue:{requiredUserInteraction:D.None,step:XZ.OPEN_APP},_internalState:{error:null,contexts:[]}}),states:{InitialState:{always:[{target:"BuildSafeAddressContexts",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",input:{appName:y},src:"openAppStateMachine",onSnapshot:{actions:O({intermediateValue:(X)=>({...X.event.snapshot.context.intermediateValue,step:XZ.OPEN_APP})})},onDone:{actions:O({_internalState:(X)=>X.event.output.caseOf({Right:()=>X.context._internalState,Left:(Y)=>({...X.context._internalState,error:Y})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"BuildSafeAddressContexts",guard:"noInternalError"},"Error"]},BuildSafeAddressContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:XZ.BUILD_CONTEXTS}}),invoke:{id:"buildSafeAddressContexts",src:"buildSafeAddressContexts",input:({context:X})=>({contextModule:X.input.contextModule,safeContractAddress:X.input.safeContractAddress,options:X.input.options,deviceModelId:Q.getDeviceModel().id,loggerFactory:this.getLoggerFactory(Q)}),onDone:{target:"ProvideContexts",actions:[O({_internalState:({event:X,context:Y})=>({...Y._internalState,contexts:X.output.clearSignContexts})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContexts:{entry:O({intermediateValue:{requiredUserInteraction:D.None,step:XZ.VERIFY_SAFE_ADDRESS}}),invoke:{id:"provideContexts",src:"provideContexts",input:({context:X})=>({contexts:X._internalState.contexts}),onDone:{target:"ProvideContextsResultCheck",actions:[O({_internalState:({event:X,context:Y})=>X.output.isLeft()?{...Y._internalState,error:X.output.extract()}:{...Y._internalState,error:null}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideContextsResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:X})=>X._internalState.error?L(X._internalState.error):T(void 0)})}extractDependencies(Q){return{provideContexts:async(Z)=>{for(let J of Z.input.contexts){let X=await new yQ(Q,{context:J,loggerFactory:this.getLoggerFactory(Q)}).run();if(!V(X))return L(X.error)}return T(void 0)},buildSafeAddressContexts:async(Z)=>new $5(Q,Z.input).run()}}}var JJ=32,XJ=32;class K5{name="signEIP7702Authorization";args;errorHelper=new x(b,I);constructor(Q){this.args=Q}getApdu(){let{data:Q,isFirstChunk:Z}=this.args;return new B({cla:224,ins:52,p1:Z?1:0,p2:0}).addBufferToData(Q).build()}parseResponse(Q){return _.fromNullable(this.errorHelper.getError(Q)).orDefaultLazy(()=>{let Z=new U(Q),J=Z.extract8BitUInt();if(J===void 0)return z({data:j});let X=Z.encodeToHexaString(Z.extractFieldByLength(JJ),!0);if(!X)return z({error:new N("R is missing")});let Y=Z.encodeToHexaString(Z.extractFieldByLength(XJ),!0);return Y?z({data:k({r:X,s:Y,v:J})}):z({error:new N("S is missing")})})}}var YJ=0,$J=1,HJ=2,KJ=3;class W5{constructor(Q,Z){this.api=Q,this.args=Z,this._logger=Z.logger}_logger;async run(){let{derivationPath:Q,chainId:Z,address:J,nonce:X}=this.args;this._logger.debug("[run] Starting SendSignAuthorizationDelegationTask",{data:{derivationPath:Q,chainId:Z,address:J,nonce:X}});let Y=$Q.splitPath(Q),$=this.buildData(Y,Z,J,X);this._logger.debug("[run] Sending authorization delegation in chunks",{data:{bufferLength:$.length}});let H=await new xQ(this.api,{data:$,commandFactory:(w)=>new K5({data:w.chunkedData,isFirstChunk:w.isFirstChunk})}).run();return V(H)?(this._logger.debug("[run] Authorization delegation signed successfully"),H.data.mapOrDefault((w)=>z({data:w}),z({error:new N("no signature returned")}))):(this._logger.error("[run] Failed to sign authorization delegation",{data:{error:H.error}}),H)}buildData(Q,Z,J,X){let Y=new v;Y.add8BitUIntToData(Q.length),Q.forEach((w)=>{Y.add32BitUIntToData(w)});let $=new v;$.encodeInTLVFromBuffer(YJ,Uint8Array.from([1])),$.encodeInTLVFromHexa($J,J),$.encodeInTLVFromUInt64(HJ,Z),$.encodeInTLVFromUInt64(KJ,X);let H=$.build();return Y.add16BitUIntToData(H.length).addBufferToData(H).build()}}var{defineProperty:WJ,getOwnPropertyDescriptor:wJ}=Object,zJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?wJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&WJ(Z,J,Y),Y},dQ=(Q,Z)=>(J,X)=>Z(J,X,Q),aZ=class{constructor(Q,Z,J,X,Y,$,H){this.dmk=Q,this.contextModule=Z,this.mapper=J,this.parser=X,this.sessionId=Y,this.dmkLoggerFactory=$,this.addressBook=H}getAddress(Q){let Z=this.dmkLoggerFactory("SendGetAddressTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new zZ(J,{contextModule:this.contextModule,derivationPath:Q.derivationPath,checkOnDevice:Q.checkOnDevice,returnChainCode:Q.returnChainCode,chainId:Q.chainId,loggerFactory:this.dmkLoggerFactory}).run(),appName:y,requiredUserInteraction:Q.checkOnDevice?D.VerifyAddress:D.None,skipOpenApp:Q.skipOpenApp},logger:Z})})}verifySafeAddress(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new H5({input:{safeContractAddress:Q.safeContractAddress,contextModule:this.contextModule,options:Q.options??{chainId:1}},loggerFactory:this.dmkLoggerFactory})})}signPersonalMessage(Q){let Z=this.dmkLoggerFactory("SendSignPersonalMessageTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new OZ(J,{...Q,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignPersonalMessage,skipOpenApp:Q.skipOpenApp},logger:this.dmkLoggerFactory("SendSignPersonalMessageTask")})})}signTransaction(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new DZ({input:{derivationPath:Q.derivationPath,transaction:Q.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,addressBook:this.addressBook,options:Q.options??{}},loggerFactory:this.dmkLoggerFactory})})}signTypedData(Q){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LZ({input:{derivationPath:Q.derivationPath,data:Q.data,parser:Q.parser,transactionMapper:this.mapper,transactionParser:this.parser,contextModule:this.contextModule,skipOpenApp:Q.skipOpenApp},loggerFactory:this.dmkLoggerFactory})})}signDelegationAuthorization(Q){let Z=this.dmkLoggerFactory("SendSignAuthorizationDelegationTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new LQ({input:{task:async(J)=>new W5(J,{...Q,logger:Z}).run(),appName:y,requiredUserInteraction:D.SignDelegationAuthorization,skipOpenApp:!1},logger:this.dmkLoggerFactory("SendSignAuthorizationDelegationTask")})})}};aZ=zJ([f(),dQ(0,M(OQ.Dmk)),dQ(1,M(OQ.ContextModule)),dQ(2,M(qQ.TransactionMapperService)),dQ(3,M(qQ.TransactionParserService)),dQ(4,M(OQ.SessionId)),dQ(5,M(OQ.DmkLoggerFactory)),dQ(6,M(OQ.AddressBook))],aZ);var K6=()=>new ZQ(({bind:Q})=>{Q(QQ.AppBinding).to(aZ)});var nZ={SignDelegationAuthorizationUseCase:Symbol.for("SignDelegationAuthorizationUseCase")};var{defineProperty:OJ,getOwnPropertyDescriptor:GJ}=Object,_J=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?GJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&OJ(Z,J,Y),Y},VJ=(Q,Z)=>(J,X)=>Z(J,X,Q),rZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z,J,X){return this._appBinder.signDelegationAuthorization({derivationPath:Q,nonce:Z,address:J,chainId:X})}};rZ=_J([f(),VJ(0,M(QQ.AppBinding))],rZ);var W6=()=>new ZQ(({bind:Q})=>{Q(nZ.SignDelegationAuthorizationUseCase).to(rZ)});var tZ={SignMessageUseCase:Symbol.for("SignMessageUseCase")};var{defineProperty:FJ,getOwnPropertyDescriptor:NJ}=Object,BJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?NJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&FJ(Z,J,Y),Y},DJ=(Q,Z)=>(J,X)=>Z(J,X,Q),eZ=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z,J){return this._appBinder.signPersonalMessage({derivationPath:Q,message:Z,skipOpenApp:J?.skipOpenApp??!1})}};eZ=BJ([f(),DJ(0,M(QQ.AppBinding))],eZ);var w6=()=>new ZQ(({bind:Q})=>{Q(tZ.SignMessageUseCase).to(eZ)});var{defineProperty:xJ,getOwnPropertyDescriptor:PJ}=Object,bJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?PJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&xJ(Z,J,Y),Y},IJ=(Q,Z)=>(J,X)=>Z(J,X,Q),Q4=class{_appBinder;constructor(Q){this._appBinder=Q}execute(Q,Z){return this._appBinder.verifySafeAddress({safeContractAddress:Q,options:Z})}};Q4=bJ([f(),IJ(0,M(QQ.AppBinding))],Q4);var Z4={VerifySafeAddressUseCase:Symbol.for("VerifySafeAddressUseCase")};var z6=()=>new ZQ(({bind:Q})=>{Q(Z4.VerifySafeAddressUseCase).to(Q4)});var{defineProperty:jJ,getOwnPropertyDescriptor:qJ}=Object,LJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?qJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&jJ(Z,J,Y),Y},MJ=(Q,Z)=>(J,X)=>Z(J,X,Q),J4=class{_appBinding;constructor(Q){this._appBinding=Q}execute(Q,Z,J){return this._appBinding.signTransaction({derivationPath:Q,transaction:Z,options:J})}};J4=LJ([f(),MJ(0,M(QQ.AppBinding))],J4);var O6=()=>new ZQ(({bind:Q})=>{Q(qQ.SignTransactionUseCase).to(J4),Q(qQ.TransactionMapperService).to(fQ),Q(qQ.TransactionParserService).to(vQ)});var oQ={SignTypedDataUseCase:Symbol.for("SignTypedDataUseCase"),TypedDataParserService:Symbol.for("TypedDataParserService")};var{defineProperty:SJ,getOwnPropertyDescriptor:kJ}=Object,UJ=(Q,Z,J,X)=>{for(var Y=X>1?void 0:X?kJ(Z,J):Z,$=Q.length-1,H;$>=0;$--)(H=Q[$])&&(Y=(X?H(Z,J,Y):H(Y))||Y);return X&&Y&&SJ(Z,J,Y),Y},G6=(Q,Z)=>(J,X)=>Z(J,X,Q),X4=class{_appBinding;_parser;constructor(Q,Z){this._appBinding=Q,this._parser=Z}execute(Q,Z,J){return this._appBinding.signTypedData({derivationPath:Q,parser:this._parser,data:Z,skipOpenApp:J?.skipOpenApp??!1})}};X4=UJ([f(),G6(0,M(QQ.AppBinding)),G6(1,M(oQ.TypedDataParserService))],X4);var _6=()=>new ZQ(({bind:Q})=>{Q(oQ.SignTypedDataUseCase).to(X4),Q(oQ.TypedDataParserService).to(JZ)});var F6=({dmk:Q,sessionId:Z,contextModule:J,addressBook:X})=>{let Y=new V6;return Y.bind(OQ.Dmk).toConstantValue(Q),Y.bind(OQ.ContextModule).toConstantValue(J),Y.bind(OQ.SessionId).toConstantValue(Z),Y.bind(OQ.AddressBook).toConstantValue(X??UZ),Y.bind(OQ.DmkLoggerFactory).toConstantValue(($)=>Q.getLoggerFactory()(["SignerEth",$])),Y.loadSync(H6(),K6(),W6(),w6(),O6(),_6(),z6()),Y};class w5{_container;constructor({dmk:Q,sessionId:Z,contextModule:J,addressBook:X}){this._container=F6({dmk:Q,sessionId:Z,contextModule:J,addressBook:X})}signTransaction(Q,Z,J){return this._container.get(qQ.SignTransactionUseCase).execute(Q,Z,J)}signMessage(Q,Z,J){return this._container.get(tZ.SignMessageUseCase).execute(Q,Z,J)}signTypedData(Q,Z,J){return this._container.get(oQ.SignTypedDataUseCase).execute(Q,Z,J)}getAddress(Q,Z){return this._container.get(sZ.GetAddressUseCase).execute(Q,Z)}verifySafeAddress(Q,Z){return this._container.get(Z4.VerifySafeAddressUseCase).execute(Q,Z)}signDelegationAuthorization(Q,Z,J,X){return this._container.get(nZ.SignDelegationAuthorizationUseCase).execute(Q,X,J,Z)}}class RJ{_dmk;_sessionId;_customContextModule;_originToken;_addressBook;constructor({dmk:Q,sessionId:Z,originToken:J}){this._dmk=Q,this._sessionId=Z,this._originToken=J}withContextModule(Q){return this._customContextModule=Q,this}withAddressBook(Q){return this._addressBook=Q,this}build(){let Q=this._customContextModule??new B6({originToken:this._originToken,loggerFactory:(Z)=>this._dmk.getLoggerFactory()(["ContextModule",Z])}).setChain(N6.Ethereum).build();return new w5({dmk:this._dmk,sessionId:this._sessionId,contextModule:Q,addressBook:this._addressBook})}}export{lZ as TransactionType,RJ as SignerEthBuilder,r9 as SignTypedDataDeviceActionFactory,e as SignTypedDataDAStateStep,g9 as SignTransactionDeviceActionFactory,o as SignTransactionDAStep,I6 as SignPersonalMessageDeviceActionFactory,D6 as GetAddressDeviceActionFactory,UZ as EMPTY_EVM_ADDRESS_BOOK};
2
2
 
3
- //# debugId=4B2AB42A104F293A64756E2164756E21
4
- //# sourceMappingURL=chunk-tm47brht.js.map
3
+ //# debugId=E05BA158AEC3E35564756E2164756E21
4
+ //# sourceMappingURL=chunk-xskdbz15.js.map