@ledgerhq/device-signer-kit-ethereum 1.16.0 → 1.18.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 (131) hide show
  1. package/README.md +43 -0
  2. package/lib/cjs/api/SignerEthBuilder.js +1 -1
  3. package/lib/cjs/api/SignerEthBuilder.js.map +3 -3
  4. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +3 -3
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
  8. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.test.js +2 -0
  9. package/lib/cjs/api/app-binder/SignTransactionDeviceActionFactory.test.js.map +7 -0
  10. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  12. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionFactory.js +2 -0
  13. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionFactory.js.map +7 -0
  14. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionFactory.test.js +2 -0
  15. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionFactory.test.js.map +7 -0
  16. package/lib/cjs/api/index.js +1 -1
  17. package/lib/cjs/api/index.js.map +3 -3
  18. package/lib/cjs/api/model/EvmAddressBook.js +2 -0
  19. package/lib/cjs/api/model/EvmAddressBook.js.map +7 -0
  20. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  21. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  22. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  23. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  24. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  25. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
  26. package/lib/cjs/internal/app-binder/constants.js +1 -1
  27. package/lib/cjs/internal/app-binder/constants.js.map +3 -3
  28. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  29. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  30. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/task/BlindSigningDetectionTask.js +1 -1
  33. package/lib/cjs/internal/app-binder/task/BlindSigningDetectionTask.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/task/BlindSigningDetectionTask.test.js +1 -1
  35. package/lib/cjs/internal/app-binder/task/BlindSigningDetectionTask.test.js.map +3 -3
  36. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +1 -1
  37. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +1 -1
  39. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +3 -3
  40. package/lib/cjs/internal/di.js +1 -1
  41. package/lib/cjs/internal/di.js.map +3 -3
  42. package/lib/cjs/internal/externalTypes.js +1 -1
  43. package/lib/cjs/internal/externalTypes.js.map +2 -2
  44. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.js +2 -0
  45. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.js.map +7 -0
  46. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.test.js +2 -0
  47. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.test.js.map +7 -0
  48. package/lib/cjs/package.json +4 -3
  49. package/lib/esm/api/SignerEthBuilder.js +1 -1
  50. package/lib/esm/api/SignerEthBuilder.js.map +3 -3
  51. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  52. package/lib/esm/api/SignerEthBuilder.test.js.map +3 -3
  53. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js +2 -0
  54. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.js.map +7 -0
  55. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.test.js +2 -0
  56. package/lib/esm/api/app-binder/SignTransactionDeviceActionFactory.test.js.map +7 -0
  57. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  58. package/lib/esm/api/app-binder/SignTypedDataDeviceActionFactory.js +2 -0
  59. package/lib/esm/api/app-binder/SignTypedDataDeviceActionFactory.js.map +7 -0
  60. package/lib/esm/api/app-binder/SignTypedDataDeviceActionFactory.test.js +2 -0
  61. package/lib/esm/api/app-binder/SignTypedDataDeviceActionFactory.test.js.map +7 -0
  62. package/lib/esm/api/index.js +1 -1
  63. package/lib/esm/api/index.js.map +3 -3
  64. package/lib/esm/api/model/EvmAddressBook.js +2 -0
  65. package/lib/esm/api/model/EvmAddressBook.js.map +7 -0
  66. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  67. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  68. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  69. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  70. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  71. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
  72. package/lib/esm/internal/app-binder/constants.js +1 -1
  73. package/lib/esm/internal/app-binder/constants.js.map +3 -3
  74. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  75. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  76. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  77. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  78. package/lib/esm/internal/app-binder/task/BlindSigningDetectionTask.js +1 -1
  79. package/lib/esm/internal/app-binder/task/BlindSigningDetectionTask.js.map +3 -3
  80. package/lib/esm/internal/app-binder/task/BlindSigningDetectionTask.test.js +1 -1
  81. package/lib/esm/internal/app-binder/task/BlindSigningDetectionTask.test.js.map +3 -3
  82. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +1 -1
  83. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +3 -3
  84. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +1 -1
  85. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +3 -3
  86. package/lib/esm/internal/di.js +1 -1
  87. package/lib/esm/internal/di.js.map +3 -3
  88. package/lib/esm/internal/externalTypes.js +1 -1
  89. package/lib/esm/internal/externalTypes.js.map +2 -2
  90. package/lib/esm/internal/shared/utils/buildExternalContactPayload.js +2 -0
  91. package/lib/esm/internal/shared/utils/buildExternalContactPayload.js.map +7 -0
  92. package/lib/esm/internal/shared/utils/buildExternalContactPayload.test.js +2 -0
  93. package/lib/esm/internal/shared/utils/buildExternalContactPayload.test.js.map +7 -0
  94. package/lib/esm/package.json +4 -3
  95. package/lib/types/api/SignerEthBuilder.d.ts +12 -0
  96. package/lib/types/api/SignerEthBuilder.d.ts.map +1 -1
  97. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts +15 -0
  98. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.d.ts.map +1 -0
  99. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.test.d.ts +2 -0
  100. package/lib/types/api/app-binder/SignTransactionDeviceActionFactory.test.d.ts.map +1 -0
  101. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +3 -0
  102. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  103. package/lib/types/api/app-binder/SignTypedDataDeviceActionFactory.d.ts +13 -0
  104. package/lib/types/api/app-binder/SignTypedDataDeviceActionFactory.d.ts.map +1 -0
  105. package/lib/types/api/app-binder/SignTypedDataDeviceActionFactory.test.d.ts +2 -0
  106. package/lib/types/api/app-binder/SignTypedDataDeviceActionFactory.test.d.ts.map +1 -0
  107. package/lib/types/api/index.d.ts +3 -0
  108. package/lib/types/api/index.d.ts.map +1 -1
  109. package/lib/types/api/model/EvmAddressBook.d.ts +59 -0
  110. package/lib/types/api/model/EvmAddressBook.d.ts.map +1 -0
  111. package/lib/types/internal/DefaultSignerEth.d.ts +3 -1
  112. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  113. package/lib/types/internal/app-binder/EthAppBinder.d.ts +3 -1
  114. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  115. package/lib/types/internal/app-binder/constants.d.ts +1 -0
  116. package/lib/types/internal/app-binder/constants.d.ts.map +1 -1
  117. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  118. package/lib/types/internal/app-binder/task/BlindSigningDetectionTask.d.ts +8 -2
  119. package/lib/types/internal/app-binder/task/BlindSigningDetectionTask.d.ts.map +1 -1
  120. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +23 -0
  121. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -1
  122. package/lib/types/internal/di.d.ts +3 -1
  123. package/lib/types/internal/di.d.ts.map +1 -1
  124. package/lib/types/internal/externalTypes.d.ts +1 -0
  125. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  126. package/lib/types/internal/shared/utils/buildExternalContactPayload.d.ts +29 -0
  127. package/lib/types/internal/shared/utils/buildExternalContactPayload.d.ts.map +1 -0
  128. package/lib/types/internal/shared/utils/buildExternalContactPayload.test.d.ts +2 -0
  129. package/lib/types/internal/shared/utils/buildExternalContactPayload.test.d.ts.map +1 -0
  130. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  131. package/package.json +8 -7
package/README.md CHANGED
@@ -54,6 +54,49 @@ const signerEth = new SignerEthBuilder({ sdk, sessionId })
54
54
  .build();
55
55
  ```
56
56
 
57
+ ### Address book
58
+
59
+ Give the signer the user's address book to have the device show a saved contact
60
+ name in place of the raw recipient address when it reviews a transaction:
61
+
62
+ ```typescript
63
+ const signerEth = new SignerEthBuilder({ sdk, sessionId })
64
+ .withAddressBook({
65
+ contactGroups: [
66
+ {
67
+ contactName: "Alice",
68
+ groupHandle, // returned when the contact was registered on the device
69
+ hmacProof,
70
+ externalAddresses: [
71
+ {
72
+ scope: "Ethereum",
73
+ address: "0x...",
74
+ chainId: 1n,
75
+ hmacRest,
76
+ },
77
+ ],
78
+ },
79
+ ],
80
+ ledgerAccounts: [],
81
+ })
82
+ .build();
83
+ ```
84
+
85
+ Points to know:
86
+
87
+ - The snapshot must be complete, and it is read as-is: the signer neither
88
+ mutates nor persists it. Build a new signer to pick up later changes.
89
+ - Only EVM entries belong here. Filter by blockchain family before you build the
90
+ snapshot.
91
+ - A contact matches on address **and** `chainId`, and only against the
92
+ transaction recipient. A recipient carried in calldata — an ERC-20 `transfer`,
93
+ for example — still reviews as a raw address.
94
+ - A matched contact replaces the trusted name (ENS) for the same recipient.
95
+ - Nothing here can break a signature. An address book you do not supply, a
96
+ recipient that does not match, an app too old to support contacts, or a
97
+ contact the device rejects all leave the transaction signing as before,
98
+ against the raw address.
99
+
57
100
  ## 🔹 Use Cases
58
101
 
59
102
  The `SignerEthBuilder.build()` method will return a `SignerEth` instance that exposes 6 dedicated methods, each of which calls an independent use case. Each use case will return an object that contains an observable and a method called `cancel`.
@@ -1,2 +1,2 @@
1
- "use strict";var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var i in e)r(t,i,{get:e[i],enumerable:!0})},m=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of g(e))!l.call(t,o)&&o!==i&&r(t,o,{get:()=>e[o],enumerable:!(n=u(e,o))||n.enumerable});return t};var h=t=>m(r({},"__esModule",{value:!0}),t);var C={};c(C,{SignerEthBuilder:()=>a});module.exports=h(C);var s=require("@ledgerhq/context-module"),d=require("../internal/DefaultSignerEth");class a{_dmk;_sessionId;_customContextModule;_originToken;constructor({dmk:e,sessionId:i,originToken:n}){this._dmk=e,this._sessionId=i,this._originToken=n}withContextModule(e){return this._customContextModule=e,this}build(){const e=this._customContextModule??new s.ContextModuleBuilder({originToken:this._originToken,loggerFactory:i=>this._dmk.getLoggerFactory()(["ContextModule",i])}).setChain(s.ContextModuleChainID.Ethereum).build();return new d.DefaultSignerEth({dmk:this._dmk,sessionId:this._sessionId,contextModule:e})}}0&&(module.exports={SignerEthBuilder});
1
+ "use strict";var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var h=(t,e)=>{for(var o in e)r(t,o,{get:e[o],enumerable:!0})},a=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of m(e))!g.call(t,i)&&i!==o&&r(t,i,{get:()=>e[i],enumerable:!(s=u(e,i))||s.enumerable});return t};var l=t=>a(r({},"__esModule",{value:!0}),t);var k={};h(k,{SignerEthBuilder:()=>c});module.exports=l(k);var n=require("@ledgerhq/context-module"),d=require("../internal/DefaultSignerEth");class c{_dmk;_sessionId;_customContextModule;_originToken;_addressBook;constructor({dmk:e,sessionId:o,originToken:s}){this._dmk=e,this._sessionId=o,this._originToken=s}withContextModule(e){return this._customContextModule=e,this}withAddressBook(e){return this._addressBook=e,this}build(){const e=this._customContextModule??new n.ContextModuleBuilder({originToken:this._originToken,loggerFactory:o=>this._dmk.getLoggerFactory()(["ContextModule",o])}).setChain(n.ContextModuleChainID.Ethereum).build();return new d.DefaultSignerEth({dmk:this._dmk,sessionId:this._sessionId,contextModule:e,addressBook:this._addressBook})}}0&&(module.exports={SignerEthBuilder});
2
2
  //# sourceMappingURL=SignerEthBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/SignerEthBuilder.ts"],
4
- "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n ContextModuleChainID,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\n\ntype SignerEthBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n};\n\n/**\n * Builder for the `SignerEth` class.\n *\n * @example\n * ```\n * const dmk = new SignerEthBuilder(dmk)\n * .build();\n * ```\n */\nexport class SignerEthBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n }: SignerEthBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Build the ethereum signer\n *\n * @returns the ethereum signer\n */\n public build() {\n const contextModule =\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n })\n .setChain(ContextModuleChainID.Ethereum)\n .build();\n\n return new DefaultSignerEth({\n dmk: this._dmk,\n sessionId: this._sessionId,\n contextModule,\n });\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,oCAMPC,EAAiC,sCAiB1B,MAAMH,CAAiB,CACpB,KACA,WACA,qBACA,aAER,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,YAAAC,CACF,EAAoC,CAClC,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,CACtB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAOO,OAAQ,CACb,MAAMA,EACJ,KAAK,sBACL,IAAI,uBAAqB,CACvB,YAAa,KAAK,aAClB,cAAgBC,GACd,KAAK,KAAK,iBAAiB,EAAE,CAAC,gBAAiBA,CAAG,CAAC,CACvD,CAAC,EACE,SAAS,uBAAqB,QAAQ,EACtC,MAAM,EAEX,OAAO,IAAI,mBAAiB,CAC1B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,cAAAD,CACF,CAAC,CACH,CACF",
6
- "names": ["SignerEthBuilder_exports", "__export", "SignerEthBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerEth", "dmk", "sessionId", "originToken", "contextModule", "tag"]
4
+ "sourcesContent": ["import {\n type ContextModule,\n ContextModuleBuilder,\n ContextModuleChainID,\n} from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\n\ntype SignerEthBuilderConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n originToken?: string;\n};\n\n/**\n * Builder for the `SignerEth` class.\n *\n * @example\n * ```\n * const dmk = new SignerEthBuilder(dmk)\n * .build();\n * ```\n */\nexport class SignerEthBuilder {\n private _dmk: DeviceManagementKit;\n private _sessionId: DeviceSessionId;\n private _customContextModule: ContextModule | undefined;\n private _originToken: string | undefined;\n private _addressBook: EvmAddressBook | undefined;\n\n constructor({\n dmk,\n sessionId,\n originToken,\n }: SignerEthBuilderConstructorArgs) {\n this._dmk = dmk;\n this._sessionId = sessionId;\n this._originToken = originToken;\n }\n\n /**\n * Override the default context module\n *\n * @param contextModule\n * @returns this\n */\n withContextModule(contextModule: ContextModule) {\n this._customContextModule = contextModule;\n return this;\n }\n\n /**\n * Provide the EVM-compatible address book used to clear-sign contact names.\n *\n * The snapshot must be complete: the signer neither mutates nor persists it,\n * and reads it as-is. Rebuild the signer to pick up later changes.\n *\n * @param addressBook a complete EVM address-book snapshot\n * @returns this\n */\n withAddressBook(addressBook: EvmAddressBook) {\n this._addressBook = addressBook;\n return this;\n }\n\n /**\n * Build the ethereum signer\n *\n * @returns the ethereum signer\n */\n public build() {\n const contextModule =\n this._customContextModule ??\n new ContextModuleBuilder({\n originToken: this._originToken,\n loggerFactory: (tag: string) =>\n this._dmk.getLoggerFactory()([\"ContextModule\", tag]),\n })\n .setChain(ContextModuleChainID.Ethereum)\n .build();\n\n return new DefaultSignerEth({\n dmk: this._dmk,\n sessionId: this._sessionId,\n contextModule,\n addressBook: this._addressBook,\n });\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAIO,oCAOPC,EAAiC,sCAiB1B,MAAMH,CAAiB,CACpB,KACA,WACA,qBACA,aACA,aAER,YAAY,CACV,IAAAI,EACA,UAAAC,EACA,YAAAC,CACF,EAAoC,CAClC,KAAK,KAAOF,EACZ,KAAK,WAAaC,EAClB,KAAK,aAAeC,CACtB,CAQA,kBAAkBC,EAA8B,CAC9C,YAAK,qBAAuBA,EACrB,IACT,CAWA,gBAAgBC,EAA6B,CAC3C,YAAK,aAAeA,EACb,IACT,CAOO,OAAQ,CACb,MAAMD,EACJ,KAAK,sBACL,IAAI,uBAAqB,CACvB,YAAa,KAAK,aAClB,cAAgBE,GACd,KAAK,KAAK,iBAAiB,EAAE,CAAC,gBAAiBA,CAAG,CAAC,CACvD,CAAC,EACE,SAAS,uBAAqB,QAAQ,EACtC,MAAM,EAEX,OAAO,IAAI,mBAAiB,CAC1B,IAAK,KAAK,KACV,UAAW,KAAK,WAChB,cAAAF,EACA,YAAa,KAAK,YACpB,CAAC,CACH,CACF",
6
+ "names": ["SignerEthBuilder_exports", "__export", "SignerEthBuilder", "__toCommonJS", "import_context_module", "import_DefaultSignerEth", "dmk", "sessionId", "originToken", "contextModule", "addressBook", "tag"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=require("./SignerEthBuilder"),r=require("../internal/DefaultSignerEth"),s=require("../internal/externalTypes");const c={debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]};describe("SignerEthBuilder",()=>{const i={dmk:{getLoggerFactory:()=>()=>c},sessionId:"",originToken:"test"};test("should be an instance of SignerEth",()=>{const e=new n.SignerEthBuilder(i);e.build(),expect(e).toBeInstanceOf(n.SignerEthBuilder)}),test("should instanciate with default context module",()=>{const t=new n.SignerEthBuilder(i).build(),o=t._container.get(s.externalTypes.ContextModule);expect(t).toBeInstanceOf(r.DefaultSignerEth),expect(o).toBeDefined()}),test("should instanciate with custom context module",()=>{const e=new n.SignerEthBuilder(i),t={},o=e.withContextModule(t).build();expect(o).toBeInstanceOf(r.DefaultSignerEth),expect(o._container.get(s.externalTypes.ContextModule)).toBe(t)})});
1
+ "use strict";var n=require("./SignerEthBuilder"),c=require("../internal/DefaultSignerEth"),r=require("../internal/externalTypes");const i={debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]};describe("SignerEthBuilder",()=>{const s={dmk:{getLoggerFactory:()=>()=>i},sessionId:"",originToken:"test"};test("should be an instance of SignerEth",()=>{const t=new n.SignerEthBuilder(s);t.build(),expect(t).toBeInstanceOf(n.SignerEthBuilder)}),test("should instanciate with default context module",()=>{const e=new n.SignerEthBuilder(s).build(),o=e._container.get(r.externalTypes.ContextModule);expect(e).toBeInstanceOf(c.DefaultSignerEth),expect(o).toBeDefined()}),test("should instanciate with custom context module",()=>{const t=new n.SignerEthBuilder(s),e={},o=t.withContextModule(e).build();expect(o).toBeInstanceOf(c.DefaultSignerEth),expect(o._container.get(r.externalTypes.ContextModule)).toBe(e)}),test("should instanciate with an empty address book by default",()=>{const e=new n.SignerEthBuilder(s).build();expect(e).toBeInstanceOf(c.DefaultSignerEth),expect(e._container.get(r.externalTypes.AddressBook)).toEqual({contactGroups:[],ledgerAccounts:[]})}),test("should instanciate with a custom address book",()=>{const t=new n.SignerEthBuilder(s),e={contactGroups:[{contactName:"Alice",groupHandle:Uint8Array.from([1,2]),hmacProof:Uint8Array.from([3,4]),externalAddresses:[{scope:"ETH",address:"0x1111111111111111111111111111111111111111",chainId:1n,hmacRest:Uint8Array.from([5])}]}],ledgerAccounts:[{accountName:"Main account",derivationPath:"44'/60'/0'/0/0",chainId:1n,hmacProof:Uint8Array.from([6])}]},o=t.withAddressBook(e).build();expect(o).toBeInstanceOf(c.DefaultSignerEth),expect(o._container.get(r.externalTypes.AddressBook)).toBe(e)}),test("should preserve a contact group holding several addresses across chains",()=>{const t=new n.SignerEthBuilder(s),e={contactGroups:[{contactName:"Bob",groupHandle:Uint8Array.from([10]),hmacProof:Uint8Array.from([11]),externalAddresses:[{scope:"ETH",address:"0x2222222222222222222222222222222222222222",chainId:1n,hmacRest:Uint8Array.from([12])},{scope:"POL",address:"0x2222222222222222222222222222222222222222",chainId:137n,hmacRest:Uint8Array.from([13])}]}],ledgerAccounts:[]},d=t.withAddressBook(e).build()._container.get(r.externalTypes.AddressBook);expect(d.contactGroups).toHaveLength(1),expect(d.contactGroups[0].externalAddresses).toHaveLength(2),expect(d.contactGroups[0].externalAddresses.map(a=>a.chainId)).toEqual([1n,137n])})});
2
2
  //# sourceMappingURL=SignerEthBuilder.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/SignerEthBuilder.test.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport { SignerEthBuilder } from \"@api/SignerEthBuilder\";\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nconst mockLogger = {\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n};\n\ndescribe(\"SignerEthBuilder\", () => {\n const dmk: DeviceManagementKit = {\n getLoggerFactory: () => () => mockLogger,\n } as unknown as DeviceManagementKit;\n const defaultConstructorArgs = { dmk, sessionId: \"\", originToken: \"test\" };\n\n test(\"should be an instance of SignerEth\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n builder.build();\n\n // THEN\n expect(builder).toBeInstanceOf(SignerEthBuilder);\n });\n\n test(\"should instanciate with default context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n const signer = builder.build();\n const contextModule = signer[\"_container\"].get<ContextModule>(\n externalTypes.ContextModule,\n );\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(contextModule).toBeDefined();\n });\n\n test(\"should instanciate with custom context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n const contextModule = {} as ContextModule;\n\n // WHEN\n const signer = builder.withContextModule(contextModule).build();\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(\n signer[\"_container\"].get<ContextModule>(externalTypes.ContextModule),\n ).toBe(contextModule);\n });\n});\n"],
5
- "mappings": "aAGA,IAAAA,EAAiC,iCACjCC,EAAiC,sCACjCC,EAA8B,mCAE9B,MAAMC,EAAa,CACjB,MAAO,GAAG,GAAG,EACb,KAAM,GAAG,GAAG,EACZ,KAAM,GAAG,GAAG,EACZ,MAAO,GAAG,GAAG,EACb,YAAa,CAAC,CAChB,EAEA,SAAS,mBAAoB,IAAM,CAIjC,MAAMC,EAAyB,CAAE,IAHA,CAC/B,iBAAkB,IAAM,IAAMD,CAChC,EACsC,UAAW,GAAI,YAAa,MAAO,EAEzE,KAAK,qCAAsC,IAAM,CAE/C,MAAME,EAAU,IAAI,mBAAiBD,CAAsB,EAG3DC,EAAQ,MAAM,EAGd,OAAOA,CAAO,EAAE,eAAe,kBAAgB,CACjD,CAAC,EAED,KAAK,iDAAkD,IAAM,CAK3D,MAAMC,EAHU,IAAI,mBAAiBF,CAAsB,EAGpC,MAAM,EACvBG,EAAgBD,EAAO,WAAc,IACzC,gBAAc,aAChB,EAGA,OAAOA,CAAM,EAAE,eAAe,kBAAgB,EAC9C,OAAOC,CAAa,EAAE,YAAY,CACpC,CAAC,EAED,KAAK,gDAAiD,IAAM,CAE1D,MAAMF,EAAU,IAAI,mBAAiBD,CAAsB,EACrDG,EAAgB,CAAC,EAGjBD,EAASD,EAAQ,kBAAkBE,CAAa,EAAE,MAAM,EAG9D,OAAOD,CAAM,EAAE,eAAe,kBAAgB,EAC9C,OACEA,EAAO,WAAc,IAAmB,gBAAc,aAAa,CACrE,EAAE,KAAKC,CAAa,CACtB,CAAC,CACH,CAAC",
6
- "names": ["import_SignerEthBuilder", "import_DefaultSignerEth", "import_externalTypes", "mockLogger", "defaultConstructorArgs", "builder", "signer", "contextModule"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { SignerEthBuilder } from \"@api/SignerEthBuilder\";\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\nconst mockLogger = {\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n};\n\ndescribe(\"SignerEthBuilder\", () => {\n const dmk: DeviceManagementKit = {\n getLoggerFactory: () => () => mockLogger,\n } as unknown as DeviceManagementKit;\n const defaultConstructorArgs = { dmk, sessionId: \"\", originToken: \"test\" };\n\n test(\"should be an instance of SignerEth\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n builder.build();\n\n // THEN\n expect(builder).toBeInstanceOf(SignerEthBuilder);\n });\n\n test(\"should instanciate with default context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n const signer = builder.build();\n const contextModule = signer[\"_container\"].get<ContextModule>(\n externalTypes.ContextModule,\n );\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(contextModule).toBeDefined();\n });\n\n test(\"should instanciate with custom context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n const contextModule = {} as ContextModule;\n\n // WHEN\n const signer = builder.withContextModule(contextModule).build();\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(\n signer[\"_container\"].get<ContextModule>(externalTypes.ContextModule),\n ).toBe(contextModule);\n });\n\n test(\"should instanciate with an empty address book by default\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n const signer = builder.build();\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(\n signer[\"_container\"].get<EvmAddressBook>(externalTypes.AddressBook),\n ).toEqual({\n contactGroups: [],\n ledgerAccounts: [],\n });\n });\n\n test(\"should instanciate with a custom address book\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n const addressBook: EvmAddressBook = {\n contactGroups: [\n {\n contactName: \"Alice\",\n groupHandle: Uint8Array.from([0x01, 0x02]),\n hmacProof: Uint8Array.from([0x03, 0x04]),\n externalAddresses: [\n {\n scope: \"ETH\",\n address: \"0x1111111111111111111111111111111111111111\",\n chainId: 1n,\n hmacRest: Uint8Array.from([0x05]),\n },\n ],\n },\n ],\n ledgerAccounts: [\n {\n accountName: \"Main account\",\n derivationPath: \"44'/60'/0'/0/0\",\n chainId: 1n,\n hmacProof: Uint8Array.from([0x06]),\n },\n ],\n };\n\n // WHEN\n const signer = builder.withAddressBook(addressBook).build();\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(\n signer[\"_container\"].get<EvmAddressBook>(externalTypes.AddressBook),\n ).toBe(addressBook);\n });\n\n test(\"should preserve a contact group holding several addresses across chains\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n const addressBook: EvmAddressBook = {\n contactGroups: [\n {\n contactName: \"Bob\",\n groupHandle: Uint8Array.from([0x0a]),\n hmacProof: Uint8Array.from([0x0b]),\n externalAddresses: [\n {\n scope: \"ETH\",\n address: \"0x2222222222222222222222222222222222222222\",\n chainId: 1n,\n hmacRest: Uint8Array.from([0x0c]),\n },\n {\n scope: \"POL\",\n address: \"0x2222222222222222222222222222222222222222\",\n chainId: 137n,\n hmacRest: Uint8Array.from([0x0d]),\n },\n ],\n },\n ],\n ledgerAccounts: [],\n };\n\n // WHEN\n const signer = builder.withAddressBook(addressBook).build();\n const bound = signer[\"_container\"].get<EvmAddressBook>(\n externalTypes.AddressBook,\n );\n\n // THEN\n expect(bound.contactGroups).toHaveLength(1);\n expect(bound.contactGroups[0]!.externalAddresses).toHaveLength(2);\n expect(\n bound.contactGroups[0]!.externalAddresses.map((a) => a.chainId),\n ).toEqual([1n, 137n]);\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_SignerEthBuilder", "import_DefaultSignerEth", "import_externalTypes", "mockLogger", "defaultConstructorArgs", "builder", "signer", "contextModule", "addressBook", "bound"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var S=(t,n)=>{for(var e in n)r(t,e,{get:n[e],enumerable:!0})},g=(t,n,e,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of m(n))!d.call(t,o)&&o!==e&&r(t,o,{get:()=>n[o],enumerable:!(i=p(n,o))||i.enumerable});return t};var A=t=>g(r({},"__esModule",{value:!0}),t);var T={};S(T,{SignTransactionDeviceActionFactory:()=>u});module.exports=A(T);var a=require("../../internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction"),c=require("../../internal/transaction/service/mapper/EthersTransactionMapperService"),s=require("../../internal/transaction/service/parser/TransactionParserService");const u=t=>new a.SignTransactionDeviceAction({input:{derivationPath:t.derivationPath,transaction:t.transaction,contextModule:t.contextModule,addressBook:t.addressBook,options:t.options??{},mapper:new c.EthersTransactionMapperService,parser:new s.TransactionParserService},inspect:t.inspect,loggerFactory:t.loggerFactory});0&&(module.exports={SignTransactionDeviceActionFactory});
2
+ //# sourceMappingURL=SignTransactionDeviceActionFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionFactory.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type LoggerPublisherService,\n type XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { EthersTransactionMapperService } from \"@internal/transaction/service/mapper/EthersTransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport const SignTransactionDeviceActionFactory = (args: {\n derivationPath: string;\n transaction: Uint8Array;\n contextModule: ContextModule;\n addressBook?: EvmAddressBook;\n options?: TransactionOptions;\n inspect?: boolean;\n loggerFactory?: (tag: string) => LoggerPublisherService;\n}): XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> =>\n new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n contextModule: args.contextModule,\n addressBook: args.addressBook,\n options: args.options ?? {},\n mapper: new EthersTransactionMapperService(),\n parser: new TransactionParserService(),\n },\n inspect: args.inspect,\n loggerFactory: args.loggerFactory,\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wCAAAE,IAAA,eAAAC,EAAAH,GAeA,IAAAI,EAA4C,0FAC5CC,EAA+C,+EAC/CC,EAAyC,yEAElC,MAAMJ,EAAsCK,GAejD,IAAI,8BAA4B,CAC9B,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,cAAeA,EAAK,cACpB,YAAaA,EAAK,YAClB,QAASA,EAAK,SAAW,CAAC,EAC1B,OAAQ,IAAI,iCACZ,OAAQ,IAAI,0BACd,EACA,QAASA,EAAK,QACd,cAAeA,EAAK,aACtB,CAAC",
6
+ "names": ["SignTransactionDeviceActionFactory_exports", "__export", "SignTransactionDeviceActionFactory", "__toCommonJS", "import_SignTransactionDeviceAction", "import_EthersTransactionMapperService", "import_TransactionParserService", "args"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("vitest"),s=require("../../internal/app-binder/device-action/__test-utils__/makeInternalApi"),r=require("../../internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction"),d=require("../../internal/transaction/service/mapper/EthersTransactionMapperService"),p=require("../../internal/transaction/service/parser/TransactionParserService"),o=require("./SignTransactionDeviceActionFactory");e.vi.mock("@ledgerhq/device-management-kit",async n=>({...await n(),OpenAppDeviceAction:e.vi.fn(()=>({makeStateMachine:e.vi.fn()}))}));e.vi.mock("@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction",async n=>{const i=await n(),t=e.vi.fn().mockImplementation((...g)=>new i.SignTransactionDeviceAction(...g));return t.prototype=i.SignTransactionDeviceAction.prototype,{...i,SignTransactionDeviceAction:t}});const a={getContexts:e.vi.fn()},c=e.vi.fn(n=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]}));(0,e.describe)("SignTransactionDeviceActionFactory",()=>{(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should create a SignTransactionDeviceAction from the given arguments",()=>{const n=(0,o.SignTransactionDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",transaction:new Uint8Array([222,173]),contextModule:a});(0,e.expect)(n).toBeInstanceOf(r.SignTransactionDeviceAction)}),(0,e.it)("should wire mapper and parser internally (not required from caller)",()=>{const n=(0,o.SignTransactionDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",transaction:new Uint8Array([222,173]),contextModule:a});(0,e.expect)(n.input.mapper).toBeInstanceOf(d.EthersTransactionMapperService),(0,e.expect)(n.input.parser).toBeInstanceOf(p.TransactionParserService)}),(0,e.it)("should forward inspect to the device action",()=>{const n=(0,o.SignTransactionDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",transaction:new Uint8Array([222,173]),contextModule:a,inspect:!0});(0,e.expect)(n.inspect).toBe(!0)}),(0,e.it)("should forward loggerFactory so it is used instead of internalApi.loggerFactory",()=>{(0,o.SignTransactionDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",transaction:new Uint8Array([222,173]),contextModule:a,loggerFactory:c}),(0,e.expect)(e.vi.mocked(r.SignTransactionDeviceAction)).toHaveBeenCalledWith(e.expect.objectContaining({loggerFactory:c}))}),(0,e.it)("should return a device action usable as an XState actor",()=>{const n=(0,s.makeDeviceActionInternalApiMock)(),t=(0,o.SignTransactionDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",transaction:new Uint8Array([222,173]),contextModule:a}).makeStateMachine(n);(0,e.expect)(t).toBeDefined(),(0,e.expect)(typeof t.provide).toBe("function"),(0,e.expect)(t.config).toBeDefined()})});
2
+ //# sourceMappingURL=SignTransactionDeviceActionFactory.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionFactory.test.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { EthersTransactionMapperService } from \"@internal/transaction/service/mapper/EthersTransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nimport { SignTransactionDeviceActionFactory } from \"./SignTransactionDeviceActionFactory\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\nvi.mock(\n \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\",\n async (importOriginal) => {\n const actual =\n await importOriginal<\n typeof import(\"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\")\n >();\n const MockSignTransactionDeviceAction = vi\n .fn()\n .mockImplementation(\n (\n ...args: ConstructorParameters<\n typeof actual.SignTransactionDeviceAction\n >\n ) => new actual.SignTransactionDeviceAction(...args),\n );\n MockSignTransactionDeviceAction.prototype =\n actual.SignTransactionDeviceAction.prototype;\n return {\n ...actual,\n SignTransactionDeviceAction: MockSignTransactionDeviceAction,\n };\n },\n);\n\nconst contextModuleStub = {\n getContexts: vi.fn(),\n} as unknown as ContextModule;\n\nconst mockLoggerFactory = vi.fn(\n (_tag: string) =>\n ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n }) as unknown as LoggerPublisherService,\n);\n\ndescribe(\"SignTransactionDeviceActionFactory\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should create a SignTransactionDeviceAction from the given arguments\", () => {\n const deviceAction = SignTransactionDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n transaction: new Uint8Array([0xde, 0xad]),\n contextModule: contextModuleStub,\n });\n\n expect(deviceAction).toBeInstanceOf(SignTransactionDeviceAction);\n });\n\n it(\"should wire mapper and parser internally (not required from caller)\", () => {\n const deviceAction = SignTransactionDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n transaction: new Uint8Array([0xde, 0xad]),\n contextModule: contextModuleStub,\n });\n\n expect(deviceAction.input.mapper).toBeInstanceOf(\n EthersTransactionMapperService,\n );\n expect(deviceAction.input.parser).toBeInstanceOf(TransactionParserService);\n });\n\n it(\"should forward inspect to the device action\", () => {\n const deviceAction = SignTransactionDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n transaction: new Uint8Array([0xde, 0xad]),\n contextModule: contextModuleStub,\n inspect: true,\n });\n\n expect(deviceAction.inspect).toBe(true);\n });\n\n it(\"should forward loggerFactory so it is used instead of internalApi.loggerFactory\", () => {\n SignTransactionDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n transaction: new Uint8Array([0xde, 0xad]),\n contextModule: contextModuleStub,\n loggerFactory: mockLoggerFactory,\n });\n\n expect(vi.mocked(SignTransactionDeviceAction)).toHaveBeenCalledWith(\n expect.objectContaining({ loggerFactory: mockLoggerFactory }),\n );\n });\n\n it(\"should return a device action usable as an XState actor\", () => {\n const internalApi = makeDeviceActionInternalApiMock();\n const deviceAction = SignTransactionDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n transaction: new Uint8Array([0xde, 0xad]),\n contextModule: contextModuleStub,\n });\n\n const stateMachine = (\n deviceAction as SignTransactionDeviceAction\n ).makeStateMachine(internalApi);\n\n expect(stateMachine).toBeDefined();\n expect(typeof stateMachine.provide).toBe(\"function\");\n expect(stateMachine.config).toBeDefined();\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAqD,kBAErDC,EAAgD,6EAChDC,EAA4C,0FAC5CC,EAA+C,+EAC/CC,EAAyC,yEAEzCC,EAAmD,gDAEnD,KAAG,KAAK,kCAAmC,MAAOC,IAGzC,CACL,GAFA,MAAMA,EAAiE,EAGvE,oBAAqB,KAAG,GAAG,KAAO,CAChC,iBAAkB,KAAG,GAAG,CAC1B,EAAE,CACJ,EACD,EAED,KAAG,KACD,iFACA,MAAOA,GAAmB,CACxB,MAAMC,EACJ,MAAMD,EAEJ,EACEE,EAAkC,KACrC,GAAG,EACH,mBACC,IACKC,IAGA,IAAIF,EAAO,4BAA4B,GAAGE,CAAI,CACrD,EACF,OAAAD,EAAgC,UAC9BD,EAAO,4BAA4B,UAC9B,CACL,GAAGA,EACH,4BAA6BC,CAC/B,CACF,CACF,EAEA,MAAME,EAAoB,CACxB,YAAa,KAAG,GAAG,CACrB,EAEMC,EAAoB,KAAG,GAC1BC,IACE,CACC,MAAO,KAAG,GAAG,EACb,KAAM,KAAG,GAAG,EACZ,KAAM,KAAG,GAAG,EACZ,MAAO,KAAG,GAAG,EACb,YAAa,CAAC,CAChB,EACJ,KAEA,YAAS,qCAAsC,IAAM,IACnD,cAAW,IAAM,CACf,KAAG,cAAc,CACnB,CAAC,KAED,MAAG,uEAAwE,IAAM,CAC/E,MAAMC,KAAe,sCAAmC,CACtD,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACxC,cAAeH,CACjB,CAAC,KAED,UAAOG,CAAY,EAAE,eAAe,6BAA2B,CACjE,CAAC,KAED,MAAG,sEAAuE,IAAM,CAC9E,MAAMA,KAAe,sCAAmC,CACtD,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACxC,cAAeH,CACjB,CAAC,KAED,UAAOG,EAAa,MAAM,MAAM,EAAE,eAChC,gCACF,KACA,UAAOA,EAAa,MAAM,MAAM,EAAE,eAAe,0BAAwB,CAC3E,CAAC,KAED,MAAG,8CAA+C,IAAM,CACtD,MAAMA,KAAe,sCAAmC,CACtD,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACxC,cAAeH,EACf,QAAS,EACX,CAAC,KAED,UAAOG,EAAa,OAAO,EAAE,KAAK,EAAI,CACxC,CAAC,KAED,MAAG,kFAAmF,IAAM,IAC1F,sCAAmC,CACjC,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACxC,cAAeH,EACf,cAAeC,CACjB,CAAC,KAED,UAAO,KAAG,OAAO,6BAA2B,CAAC,EAAE,qBAC7C,SAAO,iBAAiB,CAAE,cAAeA,CAAkB,CAAC,CAC9D,CACF,CAAC,KAED,MAAG,0DAA2D,IAAM,CAClE,MAAMG,KAAc,mCAAgC,EAO9CC,KANe,sCAAmC,CACtD,eAAgB,iBAChB,YAAa,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EACxC,cAAeL,CACjB,CAAC,EAIC,iBAAiBI,CAAW,KAE9B,UAAOC,CAAY,EAAE,YAAY,KACjC,UAAO,OAAOA,EAAa,OAAO,EAAE,KAAK,UAAU,KACnD,UAAOA,EAAa,MAAM,EAAE,YAAY,CAC1C,CAAC,CACH,CAAC",
6
+ "names": ["import_vitest", "import_makeInternalApi", "import_SignTransactionDeviceAction", "import_EthersTransactionMapperService", "import_TransactionParserService", "import_SignTransactionDeviceActionFactory", "importOriginal", "actual", "MockSignTransactionDeviceAction", "args", "contextModuleStub", "mockLoggerFactory", "_tag", "deviceAction", "internalApi", "stateMachine"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(n,t)=>{for(var o in t)i(n,o,{get:t[o],enumerable:!0})},T=(n,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of c(t))!l.call(n,r)&&r!==o&&i(n,r,{get:()=>t[r],enumerable:!(a=p(t,r))||a.enumerable});return n};var y=n=>T(i({},"__esModule",{value:!0}),n);var d={};u(d,{SignTransactionDAStep:()=>s});module.exports=y(d);var s=(e=>(e.OPEN_APP="signer.eth.steps.openApp",e.GET_APP_CONFIG="signer.eth.steps.getAppConfig",e.GET_ADDRESS="signer.eth.steps.getAddress",e.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",e.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",e.PARSE_TRANSACTION="signer.eth.steps.parseTransaction",e.BUILD_CONTEXTS="signer.eth.steps.buildContexts",e.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",e.SIGN_TRANSACTION="signer.eth.steps.signTransaction",e.BLIND_SIGN_TRANSACTION_FALLBACK="signer.eth.steps.blindSignTransactionFallback",e.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",e))(s||{});0&&(module.exports={SignTransactionDAStep});
1
+ "use strict";var i=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(r,t)=>{for(var o in t)i(r,o,{get:t[o],enumerable:!0})},u=(r,t,o,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of c(t))!l.call(r,n)&&n!==o&&i(r,n,{get:()=>t[n],enumerable:!(a=p(t,n))||a.enumerable});return r};var y=r=>u(i({},"__esModule",{value:!0}),r);var T={};d(T,{SignTransactionDAStep:()=>s});module.exports=y(T);var s=(e=>(e.OPEN_APP="signer.eth.steps.openApp",e.GET_APP_CONFIG="signer.eth.steps.getAppConfig",e.GET_ADDRESS="signer.eth.steps.getAddress",e.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",e.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",e.PARSE_TRANSACTION="signer.eth.steps.parseTransaction",e.BUILD_CONTEXTS="signer.eth.steps.buildContexts",e.PROVIDE_CONTEXTS="signer.eth.steps.provideContexts",e.SIGN_TRANSACTION="signer.eth.steps.signTransaction",e.BLIND_SIGN_TRANSACTION_FALLBACK="signer.eth.steps.blindSignTransactionFallback",e.DETECT_BLIND_SIGNING="signer.eth.steps.detectBlindSigning",e))(s||{});0&&(module.exports={SignTransactionDAStep});
2
2
  //# sourceMappingURL=SignTransactionDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],
4
- "sourcesContent": ["import {\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type ContextWithSubContexts } from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport enum SignTransactionDAStep {\n OPEN_APP = \"signer.eth.steps.openApp\",\n GET_APP_CONFIG = \"signer.eth.steps.getAppConfig\",\n GET_ADDRESS = \"signer.eth.steps.getAddress\",\n WEB3_CHECKS_OPT_IN = \"signer.eth.steps.web3ChecksOptIn\",\n WEB3_CHECKS_OPT_IN_RESULT = \"signer.eth.steps.web3ChecksOptInResult\",\n PARSE_TRANSACTION = \"signer.eth.steps.parseTransaction\",\n BUILD_CONTEXTS = \"signer.eth.steps.buildContexts\",\n PROVIDE_CONTEXTS = \"signer.eth.steps.provideContexts\",\n SIGN_TRANSACTION = \"signer.eth.steps.signTransaction\",\n BLIND_SIGN_TRANSACTION_FALLBACK = \"signer.eth.steps.blindSignTransactionFallback\",\n DETECT_BLIND_SIGNING = \"signer.eth.steps.detectBlindSigning\",\n}\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly mapper: TransactionMapperService;\n readonly parser: TransactionParserService;\n readonly contextModule: ContextModule;\n readonly options: TransactionOptions;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTransactionDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTransaction;\n\nexport type SignTransactionDAIntermediateValue =\n | {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: Exclude<\n SignTransactionDAStep,\n SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT\n >;\n }\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly appConfig: GetConfigCommandResponse | null;\n readonly subset: TransactionSubset | null;\n readonly contexts: ContextWithSubContexts[];\n readonly clearSigningType: ClearSigningType | null;\n readonly contextErrorCount: number;\n readonly transactionType: TransactionType | null;\n readonly signature: Signature | null;\n readonly isBlindSign: boolean | null;\n readonly usedFallback: boolean;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAuBO,IAAKE,OACVA,EAAA,SAAW,2BACXA,EAAA,eAAiB,gCACjBA,EAAA,YAAc,8BACdA,EAAA,mBAAqB,mCACrBA,EAAA,0BAA4B,yCAC5BA,EAAA,kBAAoB,oCACpBA,EAAA,eAAiB,iCACjBA,EAAA,iBAAmB,mCACnBA,EAAA,iBAAmB,mCACnBA,EAAA,gCAAkC,gDAClCA,EAAA,qBAAuB,sCAXbA,OAAA",
4
+ "sourcesContent": ["import {\n type ContextModule,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type ClearSigningType } from \"@api/model/ClearSigningType\";\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type ContextWithSubContexts } from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport enum SignTransactionDAStep {\n OPEN_APP = \"signer.eth.steps.openApp\",\n GET_APP_CONFIG = \"signer.eth.steps.getAppConfig\",\n GET_ADDRESS = \"signer.eth.steps.getAddress\",\n WEB3_CHECKS_OPT_IN = \"signer.eth.steps.web3ChecksOptIn\",\n WEB3_CHECKS_OPT_IN_RESULT = \"signer.eth.steps.web3ChecksOptInResult\",\n PARSE_TRANSACTION = \"signer.eth.steps.parseTransaction\",\n BUILD_CONTEXTS = \"signer.eth.steps.buildContexts\",\n PROVIDE_CONTEXTS = \"signer.eth.steps.provideContexts\",\n SIGN_TRANSACTION = \"signer.eth.steps.signTransaction\",\n BLIND_SIGN_TRANSACTION_FALLBACK = \"signer.eth.steps.blindSignTransactionFallback\",\n DETECT_BLIND_SIGNING = \"signer.eth.steps.detectBlindSigning\",\n}\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly mapper: TransactionMapperService;\n readonly parser: TransactionParserService;\n readonly contextModule: ContextModule;\n /** Defaults to `EMPTY_EVM_ADDRESS_BOOK`, which matches no recipient. */\n readonly addressBook?: EvmAddressBook;\n readonly options: TransactionOptions;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTransactionDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTransaction;\n\nexport type SignTransactionDAIntermediateValue =\n | {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: Exclude<\n SignTransactionDAStep,\n SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT\n >;\n }\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: SignTransactionDAStep.WEB3_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly appConfig: GetConfigCommandResponse | null;\n readonly subset: TransactionSubset | null;\n readonly contexts: ContextWithSubContexts[];\n readonly clearSigningType: ClearSigningType | null;\n readonly contextErrorCount: number;\n readonly transactionType: TransactionType | null;\n readonly signature: Signature | null;\n readonly isBlindSign: boolean | null;\n readonly usedFallback: boolean;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAwBO,IAAKE,OACVA,EAAA,SAAW,2BACXA,EAAA,eAAiB,gCACjBA,EAAA,YAAc,8BACdA,EAAA,mBAAqB,mCACrBA,EAAA,0BAA4B,yCAC5BA,EAAA,kBAAoB,oCACpBA,EAAA,eAAiB,iCACjBA,EAAA,iBAAmB,mCACnBA,EAAA,iBAAmB,mCACnBA,EAAA,gCAAkC,gDAClCA,EAAA,qBAAuB,sCAXbA,OAAA",
6
6
  "names": ["SignTransactionDeviceActionTypes_exports", "__export", "SignTransactionDAStep", "__toCommonJS"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var p in t)r(e,p,{get:t[p],enumerable:!0})},m=(e,t,p,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of y(t))!S.call(e,a)&&a!==p&&r(e,a,{get:()=>t[a],enumerable:!(i=d(t,a))||i.enumerable});return e};var l=e=>m(r({},"__esModule",{value:!0}),e);var A={};g(A,{SignTypedDataDeviceActionFactory:()=>u});module.exports=l(A);var n=require("../../internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction"),o=require("../../internal/transaction/service/mapper/EthersTransactionMapperService"),D=require("../../internal/transaction/service/parser/TransactionParserService"),c=require("../../internal/typed-data/service/DefaultTypedDataParserService");const u=e=>new n.SignTypedDataDeviceAction({input:{derivationPath:e.derivationPath,data:e.data,contextModule:e.contextModule,skipOpenApp:e.skipOpenApp,parser:new c.DefaultTypedDataParserService,transactionMapper:new o.EthersTransactionMapperService,transactionParser:new D.TransactionParserService},inspect:e.inspect,loggerFactory:e.loggerFactory});0&&(module.exports={SignTypedDataDeviceActionFactory});
2
+ //# sourceMappingURL=SignTypedDataDeviceActionFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/SignTypedDataDeviceActionFactory.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type LoggerPublisherService,\n type XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n type SignTypedDataDAError,\n type SignTypedDataDAInput,\n type SignTypedDataDAIntermediateValue,\n type SignTypedDataDAInternalState,\n type SignTypedDataDAOutput,\n} from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { EthersTransactionMapperService } from \"@internal/transaction/service/mapper/EthersTransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\n\nexport const SignTypedDataDeviceActionFactory = (args: {\n derivationPath: string;\n data: TypedData;\n contextModule: ContextModule;\n skipOpenApp: boolean;\n inspect?: boolean;\n loggerFactory?: (tag: string) => LoggerPublisherService;\n}): XStateDeviceAction<\n SignTypedDataDAOutput,\n SignTypedDataDAInput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue,\n SignTypedDataDAInternalState\n> =>\n new SignTypedDataDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n data: args.data,\n contextModule: args.contextModule,\n skipOpenApp: args.skipOpenApp,\n parser: new DefaultTypedDataParserService(),\n transactionMapper: new EthersTransactionMapperService(),\n transactionParser: new TransactionParserService(),\n },\n inspect: args.inspect,\n loggerFactory: args.loggerFactory,\n });\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sCAAAE,IAAA,eAAAC,EAAAH,GAcA,IAAAI,EAA0C,sFAC1CC,EAA+C,+EAC/CC,EAAyC,yEACzCC,EAA8C,sEAEvC,MAAML,EAAoCM,GAc/C,IAAI,4BAA0B,CAC5B,MAAO,CACL,eAAgBA,EAAK,eACrB,KAAMA,EAAK,KACX,cAAeA,EAAK,cACpB,YAAaA,EAAK,YAClB,OAAQ,IAAI,gCACZ,kBAAmB,IAAI,iCACvB,kBAAmB,IAAI,0BACzB,EACA,QAASA,EAAK,QACd,cAAeA,EAAK,aACtB,CAAC",
6
+ "names": ["SignTypedDataDeviceActionFactory_exports", "__export", "SignTypedDataDeviceActionFactory", "__toCommonJS", "import_SignTypedDataDeviceAction", "import_EthersTransactionMapperService", "import_TransactionParserService", "import_DefaultTypedDataParserService", "args"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("vitest"),s=require("../../internal/app-binder/device-action/__test-utils__/makeInternalApi"),c=require("../../internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction"),d=require("../../internal/transaction/service/mapper/EthersTransactionMapperService"),m=require("../../internal/transaction/service/parser/TransactionParserService"),l=require("../../internal/typed-data/service/DefaultTypedDataParserService"),n=require("./SignTypedDataDeviceActionFactory");e.vi.mock("@ledgerhq/device-management-kit",async t=>({...await t(),OpenAppDeviceAction:e.vi.fn(()=>({makeStateMachine:e.vi.fn()}))}));e.vi.mock("@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction",async t=>{const o=await t(),a=e.vi.fn().mockImplementation((...f)=>new o.SignTypedDataDeviceAction(...f));return a.prototype=o.SignTypedDataDeviceAction.prototype,{...o,SignTypedDataDeviceAction:a}});const i={getContexts:e.vi.fn()},r={domain:{name:"Test"},types:{EIP712Domain:[{name:"name",type:"string"}]},message:{},primaryType:"EIP712Domain"},p=e.vi.fn(t=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]}));(0,e.describe)("SignTypedDataDeviceActionFactory",()=>{(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should create a SignTypedDataDeviceAction from the given arguments",()=>{const t=(0,n.SignTypedDataDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",data:r,contextModule:i,skipOpenApp:!1});(0,e.expect)(t).toBeInstanceOf(c.SignTypedDataDeviceAction)}),(0,e.it)("should wire parser, transactionMapper, and transactionParser internally (not required from caller)",()=>{const t=(0,n.SignTypedDataDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",data:r,contextModule:i,skipOpenApp:!1});(0,e.expect)(t.input.parser).toBeInstanceOf(l.DefaultTypedDataParserService),(0,e.expect)(t.input.transactionMapper).toBeInstanceOf(d.EthersTransactionMapperService),(0,e.expect)(t.input.transactionParser).toBeInstanceOf(m.TransactionParserService)}),(0,e.it)("should forward inspect to the device action",()=>{const t=(0,n.SignTypedDataDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",data:r,contextModule:i,skipOpenApp:!1,inspect:!0});(0,e.expect)(t.inspect).toBe(!0)}),(0,e.it)("should forward loggerFactory so it is used instead of internalApi.loggerFactory",()=>{(0,n.SignTypedDataDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",data:r,contextModule:i,skipOpenApp:!1,loggerFactory:p}),(0,e.expect)(e.vi.mocked(c.SignTypedDataDeviceAction)).toHaveBeenCalledWith(e.expect.objectContaining({loggerFactory:p}))}),(0,e.it)("should return a device action usable as an XState actor",()=>{const t=(0,s.makeDeviceActionInternalApiMock)(),a=(0,n.SignTypedDataDeviceActionFactory)({derivationPath:"44'/60'/0'/0/0",data:r,contextModule:i,skipOpenApp:!1}).makeStateMachine(t);(0,e.expect)(a).toBeDefined(),(0,e.expect)(typeof a.provide).toBe("function"),(0,e.expect)(a.config).toBeDefined()})});
2
+ //# sourceMappingURL=SignTypedDataDeviceActionFactory.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/app-binder/SignTypedDataDeviceActionFactory.test.ts"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { EthersTransactionMapperService } from \"@internal/transaction/service/mapper/EthersTransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { DefaultTypedDataParserService } from \"@internal/typed-data/service/DefaultTypedDataParserService\";\n\nimport { SignTypedDataDeviceActionFactory } from \"./SignTypedDataDeviceActionFactory\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\nvi.mock(\n \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\",\n async (importOriginal) => {\n const actual =\n await importOriginal<\n typeof import(\"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\")\n >();\n const MockSignTypedDataDeviceAction = vi\n .fn()\n .mockImplementation(\n (\n ...args: ConstructorParameters<\n typeof actual.SignTypedDataDeviceAction\n >\n ) => new actual.SignTypedDataDeviceAction(...args),\n );\n MockSignTypedDataDeviceAction.prototype =\n actual.SignTypedDataDeviceAction.prototype;\n return {\n ...actual,\n SignTypedDataDeviceAction: MockSignTypedDataDeviceAction,\n };\n },\n);\n\nconst contextModuleStub = {\n getContexts: vi.fn(),\n} as unknown as ContextModule;\n\nconst typedDataStub: TypedData = {\n domain: { name: \"Test\" },\n types: { EIP712Domain: [{ name: \"name\", type: \"string\" }] },\n message: {},\n primaryType: \"EIP712Domain\",\n};\n\nconst mockLoggerFactory = vi.fn(\n (_tag: string) =>\n ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n }) as unknown as LoggerPublisherService,\n);\n\ndescribe(\"SignTypedDataDeviceActionFactory\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should create a SignTypedDataDeviceAction from the given arguments\", () => {\n const deviceAction = SignTypedDataDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n data: typedDataStub,\n contextModule: contextModuleStub,\n skipOpenApp: false,\n });\n\n expect(deviceAction).toBeInstanceOf(SignTypedDataDeviceAction);\n });\n\n it(\"should wire parser, transactionMapper, and transactionParser internally (not required from caller)\", () => {\n const deviceAction = SignTypedDataDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n data: typedDataStub,\n contextModule: contextModuleStub,\n skipOpenApp: false,\n });\n\n expect(deviceAction.input.parser).toBeInstanceOf(\n DefaultTypedDataParserService,\n );\n expect(deviceAction.input.transactionMapper).toBeInstanceOf(\n EthersTransactionMapperService,\n );\n expect(deviceAction.input.transactionParser).toBeInstanceOf(\n TransactionParserService,\n );\n });\n\n it(\"should forward inspect to the device action\", () => {\n const deviceAction = SignTypedDataDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n data: typedDataStub,\n contextModule: contextModuleStub,\n skipOpenApp: false,\n inspect: true,\n });\n\n expect(deviceAction.inspect).toBe(true);\n });\n\n it(\"should forward loggerFactory so it is used instead of internalApi.loggerFactory\", () => {\n SignTypedDataDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n data: typedDataStub,\n contextModule: contextModuleStub,\n skipOpenApp: false,\n loggerFactory: mockLoggerFactory,\n });\n\n expect(vi.mocked(SignTypedDataDeviceAction)).toHaveBeenCalledWith(\n expect.objectContaining({ loggerFactory: mockLoggerFactory }),\n );\n });\n\n it(\"should return a device action usable as an XState actor\", () => {\n const internalApi = makeDeviceActionInternalApiMock();\n const deviceAction = SignTypedDataDeviceActionFactory({\n derivationPath: \"44'/60'/0'/0/0\",\n data: typedDataStub,\n contextModule: contextModuleStub,\n skipOpenApp: false,\n });\n\n const stateMachine = (\n deviceAction as SignTypedDataDeviceAction\n ).makeStateMachine(internalApi);\n\n expect(stateMachine).toBeDefined();\n expect(typeof stateMachine.provide).toBe(\"function\");\n expect(stateMachine.config).toBeDefined();\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAqD,kBAGrDC,EAAgD,6EAChDC,EAA0C,sFAC1CC,EAA+C,+EAC/CC,EAAyC,yEACzCC,EAA8C,sEAE9CC,EAAiD,8CAEjD,KAAG,KAAK,kCAAmC,MAAOC,IAGzC,CACL,GAFA,MAAMA,EAAiE,EAGvE,oBAAqB,KAAG,GAAG,KAAO,CAChC,iBAAkB,KAAG,GAAG,CAC1B,EAAE,CACJ,EACD,EAED,KAAG,KACD,6EACA,MAAOA,GAAmB,CACxB,MAAMC,EACJ,MAAMD,EAEJ,EACEE,EAAgC,KACnC,GAAG,EACH,mBACC,IACKC,IAGA,IAAIF,EAAO,0BAA0B,GAAGE,CAAI,CACnD,EACF,OAAAD,EAA8B,UAC5BD,EAAO,0BAA0B,UAC5B,CACL,GAAGA,EACH,0BAA2BC,CAC7B,CACF,CACF,EAEA,MAAME,EAAoB,CACxB,YAAa,KAAG,GAAG,CACrB,EAEMC,EAA2B,CAC/B,OAAQ,CAAE,KAAM,MAAO,EACvB,MAAO,CAAE,aAAc,CAAC,CAAE,KAAM,OAAQ,KAAM,QAAS,CAAC,CAAE,EAC1D,QAAS,CAAC,EACV,YAAa,cACf,EAEMC,EAAoB,KAAG,GAC1BC,IACE,CACC,MAAO,KAAG,GAAG,EACb,KAAM,KAAG,GAAG,EACZ,KAAM,KAAG,GAAG,EACZ,MAAO,KAAG,GAAG,EACb,YAAa,CAAC,CAChB,EACJ,KAEA,YAAS,mCAAoC,IAAM,IACjD,cAAW,IAAM,CACf,KAAG,cAAc,CACnB,CAAC,KAED,MAAG,qEAAsE,IAAM,CAC7E,MAAMC,KAAe,oCAAiC,CACpD,eAAgB,iBAChB,KAAMH,EACN,cAAeD,EACf,YAAa,EACf,CAAC,KAED,UAAOI,CAAY,EAAE,eAAe,2BAAyB,CAC/D,CAAC,KAED,MAAG,qGAAsG,IAAM,CAC7G,MAAMA,KAAe,oCAAiC,CACpD,eAAgB,iBAChB,KAAMH,EACN,cAAeD,EACf,YAAa,EACf,CAAC,KAED,UAAOI,EAAa,MAAM,MAAM,EAAE,eAChC,+BACF,KACA,UAAOA,EAAa,MAAM,iBAAiB,EAAE,eAC3C,gCACF,KACA,UAAOA,EAAa,MAAM,iBAAiB,EAAE,eAC3C,0BACF,CACF,CAAC,KAED,MAAG,8CAA+C,IAAM,CACtD,MAAMA,KAAe,oCAAiC,CACpD,eAAgB,iBAChB,KAAMH,EACN,cAAeD,EACf,YAAa,GACb,QAAS,EACX,CAAC,KAED,UAAOI,EAAa,OAAO,EAAE,KAAK,EAAI,CACxC,CAAC,KAED,MAAG,kFAAmF,IAAM,IAC1F,oCAAiC,CAC/B,eAAgB,iBAChB,KAAMH,EACN,cAAeD,EACf,YAAa,GACb,cAAeE,CACjB,CAAC,KAED,UAAO,KAAG,OAAO,2BAAyB,CAAC,EAAE,qBAC3C,SAAO,iBAAiB,CAAE,cAAeA,CAAkB,CAAC,CAC9D,CACF,CAAC,KAED,MAAG,0DAA2D,IAAM,CAClE,MAAMG,KAAc,mCAAgC,EAQ9CC,KAPe,oCAAiC,CACpD,eAAgB,iBAChB,KAAML,EACN,cAAeD,EACf,YAAa,EACf,CAAC,EAIC,iBAAiBK,CAAW,KAE9B,UAAOC,CAAY,EAAE,YAAY,KACjC,UAAO,OAAOA,EAAa,OAAO,EAAE,KAAK,UAAU,KACnD,UAAOA,EAAa,MAAM,EAAE,YAAY,CAC1C,CAAC,CACH,CAAC",
6
+ "names": ["import_vitest", "import_makeInternalApi", "import_SignTypedDataDeviceAction", "import_EthersTransactionMapperService", "import_TransactionParserService", "import_DefaultTypedDataParserService", "import_SignTypedDataDeviceActionFactory", "importOriginal", "actual", "MockSignTypedDataDeviceAction", "args", "contextModuleStub", "typedDataStub", "mockLoggerFactory", "_tag", "deviceAction", "internalApi", "stateMachine"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var T=(n,r)=>{for(var a in r)i(n,a,{get:r[a],enumerable:!0})},p=(n,r,a,D)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of u(r))!d.call(n,o)&&o!==a&&i(n,o,{get:()=>r[o],enumerable:!(D=s(r,o))||D.enumerable});return n},t=(n,r,a)=>(p(n,r,"default"),a&&p(a,r,"default"));var m=n=>p(i({},"__esModule",{value:!0}),n);var e={};T(e,{GetAddressDeviceActionFactory:()=>y.GetAddressDeviceActionFactory,SignPersonalMessageDeviceActionFactory:()=>A.SignPersonalMessageDeviceActionFactory,SignTransactionDAStep:()=>g.SignTransactionDAStep,SignTypedDataDAStateStep:()=>S.SignTypedDataDAStateStep});module.exports=m(e);var y=require("./app-binder/GetAddressDeviceActionFactory"),A=require("./app-binder/SignPersonalMessageDeviceActionFactory"),g=require("./app-binder/SignTransactionDeviceActionTypes"),S=require("./app-binder/SignTypedDataDeviceActionTypes");t(e,require("./model/Address"),module.exports);t(e,require("./model/AddressOptions"),module.exports);t(e,require("./model/Signature"),module.exports);t(e,require("./model/TransactionOptions"),module.exports);t(e,require("./model/TransactionType"),module.exports);t(e,require("./model/TypedData"),module.exports);t(e,require("./SignerEth"),module.exports);t(e,require("./SignerEthBuilder"),module.exports);0&&(module.exports={GetAddressDeviceActionFactory,SignPersonalMessageDeviceActionFactory,SignTransactionDAStep,SignTypedDataDAStateStep,...require("./model/Address"),...require("./model/AddressOptions"),...require("./model/Signature"),...require("./model/TransactionOptions"),...require("./model/TransactionType"),...require("./model/TypedData"),...require("./SignerEth"),...require("./SignerEthBuilder")});
1
+ "use strict";var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var c=(n,r)=>{for(var o in r)i(n,o,{get:r[o],enumerable:!0})},p=(n,r,o,D)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of m(r))!T.call(n,a)&&a!==o&&i(n,a,{get:()=>r[a],enumerable:!(D=d(r,a))||D.enumerable});return n},t=(n,r,o)=>(p(n,r,"default"),o&&p(o,r,"default"));var f=n=>p(i({},"__esModule",{value:!0}),n);var e={};c(e,{GetAddressDeviceActionFactory:()=>y.GetAddressDeviceActionFactory,SignPersonalMessageDeviceActionFactory:()=>A.SignPersonalMessageDeviceActionFactory,SignTransactionDAStep:()=>S.SignTransactionDAStep,SignTransactionDeviceActionFactory:()=>g.SignTransactionDeviceActionFactory,SignTypedDataDAStateStep:()=>u.SignTypedDataDAStateStep,SignTypedDataDeviceActionFactory:()=>s.SignTypedDataDeviceActionFactory});module.exports=f(e);var y=require("./app-binder/GetAddressDeviceActionFactory"),A=require("./app-binder/SignPersonalMessageDeviceActionFactory"),g=require("./app-binder/SignTransactionDeviceActionFactory"),S=require("./app-binder/SignTransactionDeviceActionTypes"),s=require("./app-binder/SignTypedDataDeviceActionFactory"),u=require("./app-binder/SignTypedDataDeviceActionTypes");t(e,require("./model/Address"),module.exports);t(e,require("./model/AddressOptions"),module.exports);t(e,require("./model/EvmAddressBook"),module.exports);t(e,require("./model/Signature"),module.exports);t(e,require("./model/TransactionOptions"),module.exports);t(e,require("./model/TransactionType"),module.exports);t(e,require("./model/TypedData"),module.exports);t(e,require("./SignerEth"),module.exports);t(e,require("./SignerEthBuilder"),module.exports);0&&(module.exports={GetAddressDeviceActionFactory,SignPersonalMessageDeviceActionFactory,SignTransactionDAStep,SignTransactionDeviceActionFactory,SignTypedDataDAStateStep,SignTypedDataDeviceActionFactory,...require("./model/Address"),...require("./model/AddressOptions"),...require("./model/EvmAddressBook"),...require("./model/Signature"),...require("./model/TransactionOptions"),...require("./model/TransactionType"),...require("./model/TypedData"),...require("./SignerEth"),...require("./SignerEthBuilder")});
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/index.ts"],
4
- "sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type SignDelegationAuthorizationDAError,\n type SignDelegationAuthorizationDAInput,\n type SignDelegationAuthorizationDAIntermediateValue,\n type SignDelegationAuthorizationDAOutput,\n type SignDelegationAuthorizationDAReturnType,\n type SignDelegationAuthorizationDAState,\n} from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nexport { SignPersonalMessageDeviceActionFactory } from \"@api/app-binder/SignPersonalMessageDeviceActionFactory\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n type SignTransactionDAState,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n type SignTypedDataDAError,\n type SignTypedDataDAInput,\n type SignTypedDataDAIntermediateValue,\n type SignTypedDataDAInternalState,\n type SignTypedDataDAOutput,\n type SignTypedDataDAReturnType,\n type SignTypedDataDAState,\n SignTypedDataDAStateStep,\n} from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nexport * from \"@api/model/Address\";\nexport * from \"@api/model/AddressOptions\";\nexport * from \"@api/model/Signature\";\nexport * from \"@api/model/TransactionOptions\";\nexport * from \"@api/model/TransactionType\";\nexport * from \"@api/model/TypedData\";\nexport * from \"@api/SignerEth\";\nexport * from \"@api/SignerEthBuilder\";\n"],
5
- "mappings": "2dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kRAAAE,EAAAF,GAAA,IAAAG,EAA8C,yDAe9CC,EAAuD,kEAOvDC,EASO,4DACPC,EASO,0DACPC,EAAAP,EAAc,8BA1Cd,gBA2CAO,EAAAP,EAAc,qCA3Cd,gBA4CAO,EAAAP,EAAc,gCA5Cd,gBA6CAO,EAAAP,EAAc,yCA7Cd,gBA8CAO,EAAAP,EAAc,sCA9Cd,gBA+CAO,EAAAP,EAAc,gCA/Cd,gBAgDAO,EAAAP,EAAc,0BAhDd,gBAiDAO,EAAAP,EAAc,iCAjDd",
6
- "names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignPersonalMessageDeviceActionFactory", "import_SignTransactionDeviceActionTypes", "import_SignTypedDataDeviceActionTypes", "__reExport"]
4
+ "sourcesContent": ["export { GetAddressDeviceActionFactory } from \"@api/app-binder/GetAddressDeviceActionFactory\";\nexport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type SignDelegationAuthorizationDAError,\n type SignDelegationAuthorizationDAInput,\n type SignDelegationAuthorizationDAIntermediateValue,\n type SignDelegationAuthorizationDAOutput,\n type SignDelegationAuthorizationDAReturnType,\n type SignDelegationAuthorizationDAState,\n} from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nexport { SignPersonalMessageDeviceActionFactory } from \"@api/app-binder/SignPersonalMessageDeviceActionFactory\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport { SignTransactionDeviceActionFactory } from \"@api/app-binder/SignTransactionDeviceActionFactory\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n type SignTransactionDAState,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport { SignTypedDataDeviceActionFactory } from \"@api/app-binder/SignTypedDataDeviceActionFactory\";\nexport {\n type SignTypedDataDAError,\n type SignTypedDataDAInput,\n type SignTypedDataDAIntermediateValue,\n type SignTypedDataDAInternalState,\n type SignTypedDataDAOutput,\n type SignTypedDataDAReturnType,\n type SignTypedDataDAState,\n SignTypedDataDAStateStep,\n} from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nexport * from \"@api/model/Address\";\nexport * from \"@api/model/AddressOptions\";\nexport * from \"@api/model/EvmAddressBook\";\nexport * from \"@api/model/Signature\";\nexport * from \"@api/model/TransactionOptions\";\nexport * from \"@api/model/TransactionType\";\nexport * from \"@api/model/TypedData\";\nexport * from \"@api/SignerEth\";\nexport * from \"@api/SignerEthBuilder\";\n"],
5
+ "mappings": "2dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,saAAAE,EAAAF,GAAA,IAAAG,EAA8C,yDAe9CC,EAAuD,kEAOvDC,EAAmD,8DACnDC,EASO,4DACPC,EAAiD,4DACjDC,EASO,0DACPC,EAAAT,EAAc,8BA5Cd,gBA6CAS,EAAAT,EAAc,qCA7Cd,gBA8CAS,EAAAT,EAAc,qCA9Cd,gBA+CAS,EAAAT,EAAc,gCA/Cd,gBAgDAS,EAAAT,EAAc,yCAhDd,gBAiDAS,EAAAT,EAAc,sCAjDd,gBAkDAS,EAAAT,EAAc,gCAlDd,gBAmDAS,EAAAT,EAAc,0BAnDd,gBAoDAS,EAAAT,EAAc,iCApDd",
6
+ "names": ["api_exports", "__export", "__toCommonJS", "import_GetAddressDeviceActionFactory", "import_SignPersonalMessageDeviceActionFactory", "import_SignTransactionDeviceActionFactory", "import_SignTransactionDeviceActionTypes", "import_SignTypedDataDeviceActionFactory", "import_SignTypedDataDeviceActionTypes", "__reExport"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var i=(t,e)=>{for(var o in e)n(t,o,{get:e[o],enumerable:!0})},p=(t,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of s(e))!d.call(t,r)&&r!==o&&n(t,r,{get:()=>e[r],enumerable:!(c=a(e,r))||c.enumerable});return t};var A=t=>p(n({},"__esModule",{value:!0}),t);var E={};i(E,{EMPTY_EVM_ADDRESS_BOOK:()=>m});module.exports=A(E);const m=Object.freeze({contactGroups:Object.freeze([]),ledgerAccounts:Object.freeze([])});0&&(module.exports={EMPTY_EVM_ADDRESS_BOOK});
2
+ //# sourceMappingURL=EvmAddressBook.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/api/model/EvmAddressBook.ts"],
4
+ "sourcesContent": ["/**\n * A complete snapshot of the EVM-compatible part of the address book.\n *\n * The signer never mutates this snapshot and never persists it: owning,\n * updating and persisting the address book remains the host's responsibility.\n *\n * Only EVM-family contacts and accounts belong here. The host filters by\n * blockchain family while building the snapshot, so the signer's in-flow\n * matching never needs a family discriminator and the models below do not\n * carry one.\n */\nexport type EvmAddressBook = {\n contactGroups: readonly EvmContactGroup[];\n ledgerAccounts: readonly EvmLedgerAccountContact[];\n};\n\n/**\n * A named contact and the external addresses registered under it.\n *\n * The group carries the name-level proof material that every one of its\n * addresses reuses, so matching an address always yields its group without a\n * lookup.\n */\nexport type EvmContactGroup = {\n contactName: string;\n groupHandle: Uint8Array;\n hmacProof: Uint8Array;\n externalAddresses: readonly EvmExternalAddress[];\n};\n\n/**\n * An external address registered under a contact group, for one chain.\n *\n * The derivation path used at registration time is deliberately absent: the\n * signer never needs it to provide the contact to the device.\n */\nexport type EvmExternalAddress = {\n scope: string;\n address: `0x${string}`;\n chainId: bigint;\n hmacRest: Uint8Array;\n};\n\n/**\n * A named Ledger account contact, identified by its derivation path and chain\n * rather than by an address string.\n */\nexport type EvmLedgerAccountContact = {\n accountName: string;\n derivationPath: string;\n chainId: bigint;\n hmacProof: Uint8Array;\n};\n\n/**\n * The book bound when the host supplies none. Matches nothing.\n *\n * Frozen because it is a process-wide singleton: it is the DI binding, the\n * device-action default and the fixture every test reuses, so a single stray\n * mutation would leak into every signer at once.\n */\nexport const EMPTY_EVM_ADDRESS_BOOK: EvmAddressBook = Object.freeze({\n contactGroups: Object.freeze([]),\n ledgerAccounts: Object.freeze([]),\n});\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GA6DO,MAAME,EAAyC,OAAO,OAAO,CAClE,cAAe,OAAO,OAAO,CAAC,CAAC,EAC/B,eAAgB,OAAO,OAAO,CAAC,CAAC,CAClC,CAAC",
6
+ "names": ["EvmAddressBook_exports", "__export", "EMPTY_EVM_ADDRESS_BOOK", "__toCommonJS"]
7
+ }
@@ -1,2 +1,2 @@
1
- "use strict";var n=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var D=(s,e)=>{for(var t in e)n(s,t,{get:e[t],enumerable:!0})},T=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of u(e))!A.call(s,i)&&i!==t&&n(s,i,{get:()=>e[i],enumerable:!(r=f(e,i))||r.enumerable});return s};var S=s=>T(n({},"__esModule",{value:!0}),s);var C={};D(C,{DefaultSignerEth:()=>c});module.exports=S(C);var o=require("./address/di/addressTypes"),a=require("./di"),p=require("./message/di/messageTypes"),m=require("./safe/di/safeTypes"),g=require("./transaction/di/transactionTypes"),y=require("./typed-data/di/typedDataTypes"),d=require("./eip7702/di/eip7702Types");class c{_container;constructor({dmk:e,sessionId:t,contextModule:r}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t,contextModule:r})}signTransaction(e,t,r){return this._container.get(g.transactionTypes.SignTransactionUseCase).execute(e,t,r)}signMessage(e,t,r){return this._container.get(p.messageTypes.SignMessageUseCase).execute(e,t,r)}signTypedData(e,t,r){return this._container.get(y.typedDataTypes.SignTypedDataUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(o.addressTypes.GetAddressUseCase).execute(e,t)}verifySafeAddress(e,t){return this._container.get(m.safeTypes.VerifySafeAddressUseCase).execute(e,t)}signDelegationAuthorization(e,t,r,i){return this._container.get(d.eip7702Types.SignDelegationAuthorizationUseCase).execute(e,i,r,t)}}0&&(module.exports={DefaultSignerEth});
1
+ "use strict";var n=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var D=(i,e)=>{for(var t in e)n(i,t,{get:e[t],enumerable:!0})},T=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of u(e))!A.call(i,s)&&s!==t&&n(i,s,{get:()=>e[s],enumerable:!(r=f(e,s))||r.enumerable});return i};var S=i=>T(n({},"__esModule",{value:!0}),i);var C={};D(C,{DefaultSignerEth:()=>c});module.exports=S(C);var o=require("./address/di/addressTypes"),a=require("./di"),p=require("./message/di/messageTypes"),m=require("./safe/di/safeTypes"),g=require("./transaction/di/transactionTypes"),y=require("./typed-data/di/typedDataTypes"),d=require("./eip7702/di/eip7702Types");class c{_container;constructor({dmk:e,sessionId:t,contextModule:r,addressBook:s}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t,contextModule:r,addressBook:s})}signTransaction(e,t,r){return this._container.get(g.transactionTypes.SignTransactionUseCase).execute(e,t,r)}signMessage(e,t,r){return this._container.get(p.messageTypes.SignMessageUseCase).execute(e,t,r)}signTypedData(e,t,r){return this._container.get(y.typedDataTypes.SignTypedDataUseCase).execute(e,t,r)}getAddress(e,t){return this._container.get(o.addressTypes.GetAddressUseCase).execute(e,t)}verifySafeAddress(e,t){return this._container.get(m.safeTypes.VerifySafeAddressUseCase).execute(e,t)}signDelegationAuthorization(e,t,r,s){return this._container.get(d.eip7702Types.SignDelegationAuthorizationUseCase).execute(e,s,r,t)}}0&&(module.exports={DefaultSignerEth});
2
2
  //# sourceMappingURL=DefaultSignerEth.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/DefaultSignerEth.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type VerifySafeAddressDAReturnType } from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type TypedDataOptions } from \"@api/model/TypedDataOptions\";\nimport { type SignerEth } from \"@api/SignerEth\";\nimport { addressTypes } from \"@internal/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/address/use-case/GetAddressUseCase\";\nimport { makeContainer } from \"@internal/di\";\nimport { messageTypes } from \"@internal/message/di/messageTypes\";\nimport { type SignMessageUseCase } from \"@internal/message/use-case/SignMessageUseCase\";\nimport { safeTypes } from \"@internal/safe/di/safeTypes\";\nimport { type VerifySafeAddressUseCase } from \"@internal/safe/use-case/VerifySafeAddressUseCase\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type SignTransactionUseCase } from \"@internal/transaction/use-case/SignTransactionUseCase\";\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { type SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nimport { eip7702Types } from \"./eip7702/di/eip7702Types\";\nimport { type SignDelegationAuthorizationUseCase } from \"./eip7702/use-case/SignDelegationAuthorizationUseCase\";\n\ntype DefaultSignerConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n};\n\nexport class DefaultSignerEth implements SignerEth {\n private _container: Container;\n\n constructor({ dmk, sessionId, contextModule }: DefaultSignerConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId, contextModule });\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(messageTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n signTypedData(\n derivationPath: string,\n typedData: TypedData,\n options?: TypedDataOptions,\n ): SignTypedDataDAReturnType {\n return this._container\n .get<SignTypedDataUseCase>(typedDataTypes.SignTypedDataUseCase)\n .execute(derivationPath, typedData, options);\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n verifySafeAddress(\n safeContractAddress: string,\n options?: SafeAddressOptions,\n ): VerifySafeAddressDAReturnType {\n return this._container\n .get<VerifySafeAddressUseCase>(safeTypes.VerifySafeAddressUseCase)\n .execute(safeContractAddress, options);\n }\n\n signDelegationAuthorization(\n derivationPath: string,\n chainId: number,\n contractAddress: string,\n nonce: number,\n ): SignDelegationAuthorizationDAReturnType {\n return this._container\n .get<SignDelegationAuthorizationUseCase>(\n eip7702Types.SignDelegationAuthorizationUseCase,\n )\n .execute(derivationPath, nonce, contractAddress, chainId);\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAoBA,IAAAI,EAA6B,6CAE7BC,EAA8B,wBAC9BC,EAA6B,6CAE7BC,EAA0B,uCAE1BC,EAAiC,qDAEjCC,EAA+B,kDAG/BC,EAA6B,qCAStB,MAAMR,CAAsC,CACzC,WAER,YAAY,CAAE,IAAAS,EAAK,UAAAC,EAAW,cAAAC,CAAc,EAAiC,CAC3E,KAAK,cAAa,iBAAc,CAAE,IAAAF,EAAK,UAAAC,EAAW,cAAAC,CAAc,CAAC,CACnE,CAEA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,mBAAiB,sBAAsB,EACnE,QAAQF,EAAgBC,EAAaC,CAAO,CACjD,CAEA,YACEF,EACAG,EACAD,EACiC,CACjC,OAAO,KAAK,WACT,IAAwB,eAAa,kBAAkB,EACvD,QAAQF,EAAgBG,EAASD,CAAO,CAC7C,CAEA,cACEF,EACAI,EACAF,EAC2B,CAC3B,OAAO,KAAK,WACT,IAA0B,iBAAe,oBAAoB,EAC7D,QAAQF,EAAgBI,EAAWF,CAAO,CAC/C,CAEA,WACEF,EACAE,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,eAAa,iBAAiB,EACrD,QAAQF,EAAgBE,CAAO,CACpC,CAEA,kBACEG,EACAH,EAC+B,CAC/B,OAAO,KAAK,WACT,IAA8B,YAAU,wBAAwB,EAChE,QAAQG,EAAqBH,CAAO,CACzC,CAEA,4BACEF,EACAM,EACAC,EACAC,EACyC,CACzC,OAAO,KAAK,WACT,IACC,eAAa,kCACf,EACC,QAAQR,EAAgBQ,EAAOD,EAAiBD,CAAO,CAC5D,CACF",
6
- "names": ["DefaultSignerEth_exports", "__export", "DefaultSignerEth", "__toCommonJS", "import_addressTypes", "import_di", "import_messageTypes", "import_safeTypes", "import_transactionTypes", "import_typedDataTypes", "import_eip7702Types", "dmk", "sessionId", "contextModule", "derivationPath", "transaction", "options", "message", "typedData", "safeContractAddress", "chainId", "contractAddress", "nonce"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type VerifySafeAddressDAReturnType } from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type TypedDataOptions } from \"@api/model/TypedDataOptions\";\nimport { type SignerEth } from \"@api/SignerEth\";\nimport { addressTypes } from \"@internal/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/address/use-case/GetAddressUseCase\";\nimport { makeContainer } from \"@internal/di\";\nimport { messageTypes } from \"@internal/message/di/messageTypes\";\nimport { type SignMessageUseCase } from \"@internal/message/use-case/SignMessageUseCase\";\nimport { safeTypes } from \"@internal/safe/di/safeTypes\";\nimport { type VerifySafeAddressUseCase } from \"@internal/safe/use-case/VerifySafeAddressUseCase\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type SignTransactionUseCase } from \"@internal/transaction/use-case/SignTransactionUseCase\";\nimport { typedDataTypes } from \"@internal/typed-data/di/typedDataTypes\";\nimport { type SignTypedDataUseCase } from \"@internal/typed-data/use-case/SignTypedDataUseCase\";\n\nimport { eip7702Types } from \"./eip7702/di/eip7702Types\";\nimport { type SignDelegationAuthorizationUseCase } from \"./eip7702/use-case/SignDelegationAuthorizationUseCase\";\n\ntype DefaultSignerConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n addressBook?: EvmAddressBook;\n};\n\nexport class DefaultSignerEth implements SignerEth {\n private _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n addressBook,\n }: DefaultSignerConstructorArgs) {\n this._container = makeContainer({\n dmk,\n sessionId,\n contextModule,\n addressBook,\n });\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(messageTypes.SignMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n signTypedData(\n derivationPath: string,\n typedData: TypedData,\n options?: TypedDataOptions,\n ): SignTypedDataDAReturnType {\n return this._container\n .get<SignTypedDataUseCase>(typedDataTypes.SignTypedDataUseCase)\n .execute(derivationPath, typedData, options);\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n verifySafeAddress(\n safeContractAddress: string,\n options?: SafeAddressOptions,\n ): VerifySafeAddressDAReturnType {\n return this._container\n .get<VerifySafeAddressUseCase>(safeTypes.VerifySafeAddressUseCase)\n .execute(safeContractAddress, options);\n }\n\n signDelegationAuthorization(\n derivationPath: string,\n chainId: number,\n contractAddress: string,\n nonce: number,\n ): SignDelegationAuthorizationDAReturnType {\n return this._container\n .get<SignDelegationAuthorizationUseCase>(\n eip7702Types.SignDelegationAuthorizationUseCase,\n )\n .execute(derivationPath, nonce, contractAddress, chainId);\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAqBA,IAAAI,EAA6B,6CAE7BC,EAA8B,wBAC9BC,EAA6B,6CAE7BC,EAA0B,uCAE1BC,EAAiC,qDAEjCC,EAA+B,kDAG/BC,EAA6B,qCAUtB,MAAMR,CAAsC,CACzC,WAER,YAAY,CACV,IAAAS,EACA,UAAAC,EACA,cAAAC,EACA,YAAAC,CACF,EAAiC,CAC/B,KAAK,cAAa,iBAAc,CAC9B,IAAAH,EACA,UAAAC,EACA,cAAAC,EACA,YAAAC,CACF,CAAC,CACH,CAEA,gBACEC,EACAC,EACAC,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4B,mBAAiB,sBAAsB,EACnE,QAAQF,EAAgBC,EAAaC,CAAO,CACjD,CAEA,YACEF,EACAG,EACAD,EACiC,CACjC,OAAO,KAAK,WACT,IAAwB,eAAa,kBAAkB,EACvD,QAAQF,EAAgBG,EAASD,CAAO,CAC7C,CAEA,cACEF,EACAI,EACAF,EAC2B,CAC3B,OAAO,KAAK,WACT,IAA0B,iBAAe,oBAAoB,EAC7D,QAAQF,EAAgBI,EAAWF,CAAO,CAC/C,CAEA,WACEF,EACAE,EACwB,CACxB,OAAO,KAAK,WACT,IAAuB,eAAa,iBAAiB,EACrD,QAAQF,EAAgBE,CAAO,CACpC,CAEA,kBACEG,EACAH,EAC+B,CAC/B,OAAO,KAAK,WACT,IAA8B,YAAU,wBAAwB,EAChE,QAAQG,EAAqBH,CAAO,CACzC,CAEA,4BACEF,EACAM,EACAC,EACAC,EACyC,CACzC,OAAO,KAAK,WACT,IACC,eAAa,kCACf,EACC,QAAQR,EAAgBQ,EAAOD,EAAiBD,CAAO,CAC5D,CACF",
6
+ "names": ["DefaultSignerEth_exports", "__export", "DefaultSignerEth", "__toCommonJS", "import_addressTypes", "import_di", "import_messageTypes", "import_safeTypes", "import_transactionTypes", "import_typedDataTypes", "import_eip7702Types", "dmk", "sessionId", "contextModule", "addressBook", "derivationPath", "transaction", "options", "message", "typedData", "safeContractAddress", "chainId", "contractAddress", "nonce"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)m(n,t,{get:e[t],enumerable:!0})},x=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!I.call(n,r)&&r!==t&&m(n,r,{get:()=>e[r],enumerable:!(i=y(e,r))||i.enumerable});return n};var O=n=>x(m({},"__esModule",{value:!0}),n),v=(n,e,t,i)=>{for(var r=i>1?void 0:i?y(e,t):e,d=n.length-1,g;d>=0;d--)(g=n[d])&&(r=(i?g(e,t,r):g(r))||r);return i&&r&&m(e,t,r),r},s=(n,e)=>(t,i)=>e(t,i,n);var L={};M(L,{EthAppBinder:()=>c});module.exports=O(L);var u=require("@ledgerhq/device-management-kit"),a=require("@ledgerhq/device-management-kit"),o=require("inversify"),k=require("../app-binder/device-action/SignTypedData/SignTypedDataDeviceAction"),l=require("../app-binder/task/SendSignPersonalMessageTask"),p=require("../externalTypes"),h=require("../transaction/di/transactionTypes"),D=require("./device-action/SignTransaction/SignTransactionDeviceAction"),S=require("./device-action/VerifySafeAddress/VerifySafeAddress"),T=require("./task/SendGetAddressTask"),f=require("./task/SendSignAuthorizationDelegationTask"),A=require("./constants");let c=class{constructor(e,t,i,r,d,g){this.dmk=e;this.contextModule=t;this.mapper=i;this.parser=r;this.sessionId=d;this.dmkLoggerFactory=g}getAddress(e){const t=this.dmkLoggerFactory("SendGetAddressTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new T.SendGetAddressTask(i,{contextModule:this.contextModule,derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice,returnChainCode:e.returnChainCode,chainId:e.chainId,loggerFactory:this.dmkLoggerFactory}).run(),appName:A.APP_NAME,requiredUserInteraction:e.checkOnDevice?a.UserInteractionRequired.VerifyAddress:a.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp},logger:t})})}verifySafeAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new S.VerifySafeAddressDeviceAction({input:{safeContractAddress:e.safeContractAddress,contextModule:this.contextModule,options:e.options??{chainId:1}},loggerFactory:this.dmkLoggerFactory})})}signPersonalMessage(e){const t=this.dmkLoggerFactory("SendSignPersonalMessageTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new l.SendSignPersonalMessageTask(i,{...e,logger:t}).run(),appName:A.APP_NAME,requiredUserInteraction:a.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("SendSignPersonalMessageTask")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new D.SignTransactionDeviceAction({input:{derivationPath:e.derivationPath,transaction:e.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,options:e.options??{}},loggerFactory:this.dmkLoggerFactory})})}signTypedData(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new k.SignTypedDataDeviceAction({input:{derivationPath:e.derivationPath,data:e.data,parser:e.parser,transactionMapper:this.mapper,transactionParser:this.parser,contextModule:this.contextModule,skipOpenApp:e.skipOpenApp},loggerFactory:this.dmkLoggerFactory})})}signDelegationAuthorization(e){const t=this.dmkLoggerFactory("SendSignAuthorizationDelegationTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new f.SendSignAuthorizationDelegationTask(i,{...e,logger:t}).run(),appName:A.APP_NAME,requiredUserInteraction:a.UserInteractionRequired.SignDelegationAuthorization,skipOpenApp:!1},logger:this.dmkLoggerFactory("SendSignAuthorizationDelegationTask")})})}};c=v([(0,o.injectable)(),s(0,(0,o.inject)(p.externalTypes.Dmk)),s(1,(0,o.inject)(p.externalTypes.ContextModule)),s(2,(0,o.inject)(h.transactionTypes.TransactionMapperService)),s(3,(0,o.inject)(h.transactionTypes.TransactionParserService)),s(4,(0,o.inject)(p.externalTypes.SessionId)),s(5,(0,o.inject)(p.externalTypes.DmkLoggerFactory))],c);0&&(module.exports={EthAppBinder});
1
+ "use strict";var m=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(o,e)=>{for(var t in e)m(o,t,{get:e[t],enumerable:!0})},x=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!I.call(o,r)&&r!==t&&m(o,r,{get:()=>e[r],enumerable:!(i=y(e,r))||i.enumerable});return o};var O=o=>x(m({},"__esModule",{value:!0}),o),v=(o,e,t,i)=>{for(var r=i>1?void 0:i?y(e,t):e,c=o.length-1,g;c>=0;c--)(g=o[c])&&(r=(i?g(e,t,r):g(r))||r);return i&&r&&m(e,t,r),r},s=(o,e)=>(t,i)=>e(t,i,o);var L={};M(L,{EthAppBinder:()=>d});module.exports=O(L);var u=require("@ledgerhq/device-management-kit"),p=require("@ledgerhq/device-management-kit"),n=require("inversify"),k=require("../app-binder/device-action/SignTypedData/SignTypedDataDeviceAction"),l=require("../app-binder/task/SendSignPersonalMessageTask"),a=require("../externalTypes"),h=require("../transaction/di/transactionTypes"),D=require("./device-action/SignTransaction/SignTransactionDeviceAction"),S=require("./device-action/VerifySafeAddress/VerifySafeAddress"),T=require("./task/SendGetAddressTask"),f=require("./task/SendSignAuthorizationDelegationTask"),A=require("./constants");let d=class{constructor(e,t,i,r,c,g,F){this.dmk=e;this.contextModule=t;this.mapper=i;this.parser=r;this.sessionId=c;this.dmkLoggerFactory=g;this.addressBook=F}getAddress(e){const t=this.dmkLoggerFactory("SendGetAddressTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new T.SendGetAddressTask(i,{contextModule:this.contextModule,derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice,returnChainCode:e.returnChainCode,chainId:e.chainId,loggerFactory:this.dmkLoggerFactory}).run(),appName:A.APP_NAME,requiredUserInteraction:e.checkOnDevice?p.UserInteractionRequired.VerifyAddress:p.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp},logger:t})})}verifySafeAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new S.VerifySafeAddressDeviceAction({input:{safeContractAddress:e.safeContractAddress,contextModule:this.contextModule,options:e.options??{chainId:1}},loggerFactory:this.dmkLoggerFactory})})}signPersonalMessage(e){const t=this.dmkLoggerFactory("SendSignPersonalMessageTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new l.SendSignPersonalMessageTask(i,{...e,logger:t}).run(),appName:A.APP_NAME,requiredUserInteraction:p.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("SendSignPersonalMessageTask")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new D.SignTransactionDeviceAction({input:{derivationPath:e.derivationPath,transaction:e.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,addressBook:this.addressBook,options:e.options??{}},loggerFactory:this.dmkLoggerFactory})})}signTypedData(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new k.SignTypedDataDeviceAction({input:{derivationPath:e.derivationPath,data:e.data,parser:e.parser,transactionMapper:this.mapper,transactionParser:this.parser,contextModule:this.contextModule,skipOpenApp:e.skipOpenApp},loggerFactory:this.dmkLoggerFactory})})}signDelegationAuthorization(e){const t=this.dmkLoggerFactory("SendSignAuthorizationDelegationTask");return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new u.CallTaskInAppDeviceAction({input:{task:async i=>new f.SendSignAuthorizationDelegationTask(i,{...e,logger:t}).run(),appName:A.APP_NAME,requiredUserInteraction:p.UserInteractionRequired.SignDelegationAuthorization,skipOpenApp:!1},logger:this.dmkLoggerFactory("SendSignAuthorizationDelegationTask")})})}};d=v([(0,n.injectable)(),s(0,(0,n.inject)(a.externalTypes.Dmk)),s(1,(0,n.inject)(a.externalTypes.ContextModule)),s(2,(0,n.inject)(h.transactionTypes.TransactionMapperService)),s(3,(0,n.inject)(h.transactionTypes.TransactionParserService)),s(4,(0,n.inject)(a.externalTypes.SessionId)),s(5,(0,n.inject)(a.externalTypes.DmkLoggerFactory)),s(6,(0,n.inject)(a.externalTypes.AddressBook))],d);0&&(module.exports={EthAppBinder});
2
2
  //# sourceMappingURL=EthAppBinder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/EthAppBinder.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { CallTaskInAppDeviceAction } from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { VerifySafeAddressDAReturnType } from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { SendSignPersonalMessageTask } from \"@internal/app-binder/task/SendSignPersonalMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { VerifySafeAddressDeviceAction } from \"./device-action/VerifySafeAddress/VerifySafeAddress\";\nimport { SendGetAddressTask } from \"./task/SendGetAddressTask\";\nimport { SendSignAuthorizationDelegationTask } from \"./task/SendSignAuthorizationDelegationTask\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class EthAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(transactionTypes.TransactionMapperService)\n private mapper: TransactionMapperService,\n @inject(transactionTypes.TransactionParserService)\n private parser: TransactionParserService,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n returnChainCode: boolean;\n skipOpenApp: boolean;\n chainId?: number;\n }): GetAddressDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\"SendGetAddressTask\");\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendGetAddressTask(internalApi, {\n contextModule: this.contextModule,\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n returnChainCode: args.returnChainCode,\n chainId: args.chainId,\n loggerFactory: this.dmkLoggerFactory,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: taskLogger,\n }),\n });\n }\n\n verifySafeAddress(args: {\n safeContractAddress: string;\n options?: SafeAddressOptions;\n }): VerifySafeAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: args.safeContractAddress,\n contextModule: this.contextModule,\n options: args.options ?? { chainId: 1 },\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n }): SignPersonalMessageDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\"SendSignPersonalMessageTask\");\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignPersonalMessageTask(internalApi, {\n ...args,\n logger: taskLogger,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"SendSignPersonalMessageTask\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n options?: TransactionOptions;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n mapper: this.mapper,\n parser: this.parser,\n contextModule: this.contextModule,\n options: args.options ?? {},\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signTypedData(args: {\n derivationPath: string;\n parser: TypedDataParserService;\n data: TypedData;\n skipOpenApp: boolean;\n }): SignTypedDataDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTypedDataDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n data: args.data,\n parser: args.parser,\n transactionMapper: this.mapper,\n transactionParser: this.parser,\n contextModule: this.contextModule,\n skipOpenApp: args.skipOpenApp,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signDelegationAuthorization(args: {\n derivationPath: string;\n chainId: number;\n address: string;\n nonce: number;\n }): SignDelegationAuthorizationDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\n \"SendSignAuthorizationDelegationTask\",\n );\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignAuthorizationDelegationTask(internalApi, {\n ...args,\n logger: taskLogger,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignDelegationAuthorization,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"SendSignAuthorizationDelegationTask\"),\n }),\n });\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAMA,IAAAI,EAA0C,2CAC1CA,EAAwC,2CACxCC,EAAmC,qBAWnCC,EAA0C,sFAC1CC,EAA4C,iEAC5CC,EAA8B,mCAC9BC,EAAiC,qDAKjCC,EAA4C,uEAC5CC,EAA8C,+DAC9CC,EAAmC,qCACnCC,EAAoD,sDACpDC,EAAyB,uBAGlB,IAAMC,EAAN,KAAmB,CACxB,YACqCC,EACUC,EAErCC,EAEAC,EACiCC,EAEjCC,EACR,CATmC,SAAAL,EACU,mBAAAC,EAErC,YAAAC,EAEA,YAAAC,EACiC,eAAAC,EAEjC,sBAAAC,CACP,CAEH,WAAWC,EAMgB,CACzB,MAAMC,EAAa,KAAK,iBAAiB,oBAAoB,EAC7D,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,qBAAmBA,EAAa,CAClC,cAAe,KAAK,cACpB,eAAgBF,EAAK,eACrB,cAAeA,EAAK,cACpB,gBAAiBA,EAAK,gBACtB,QAASA,EAAK,QACd,cAAe,KAAK,gBACtB,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyBA,EAAK,cAC1B,0BAAwB,cACxB,0BAAwB,KAC5B,YAAaA,EAAK,WACpB,EACA,OAAQC,CACV,CAAC,CACH,CAAC,CACH,CAEA,kBAAkBD,EAGgB,CAChC,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,gCAA8B,CAC9C,MAAO,CACL,oBAAqBA,EAAK,oBAC1B,cAAe,KAAK,cACpB,QAASA,EAAK,SAAW,CAAE,QAAS,CAAE,CACxC,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,oBAAoBA,EAIgB,CAClC,MAAMC,EAAa,KAAK,iBAAiB,6BAA6B,EACtE,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,8BAA4BA,EAAa,CAC3C,GAAGF,EACH,OAAQC,CACV,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyB,0BAAwB,oBACjD,YAAaD,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,6BAA6B,CAC7D,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,cAAe,KAAK,cACpB,QAASA,EAAK,SAAW,CAAC,CAC5B,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,cAAcA,EAKgB,CAC5B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,eAAgBA,EAAK,eACrB,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,kBAAmB,KAAK,OACxB,kBAAmB,KAAK,OACxB,cAAe,KAAK,cACpB,YAAaA,EAAK,WACpB,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,4BAA4BA,EAKgB,CAC1C,MAAMC,EAAa,KAAK,iBACtB,qCACF,EACA,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,sCAAoCA,EAAa,CACnD,GAAGF,EACH,OAAQC,CACV,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBACE,0BAAwB,4BAC1B,YAAa,EACf,EACA,OAAQ,KAAK,iBAAiB,qCAAqC,CACrE,CAAC,CACH,CAAC,CACH,CACF,EA7JaR,EAANU,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GACxBA,EAAA,eAAO,gBAAc,aAAa,GAClCA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,gBAAc,SAAS,GAC9BA,EAAA,eAAO,gBAAc,gBAAgB,IAT7BX",
6
- "names": ["EthAppBinder_exports", "__export", "EthAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_SignTypedDataDeviceAction", "import_SendSignPersonalMessageTask", "import_externalTypes", "import_transactionTypes", "import_SignTransactionDeviceAction", "import_VerifySafeAddress", "import_SendGetAddressTask", "import_SendSignAuthorizationDelegationTask", "import_constants", "EthAppBinder", "dmk", "contextModule", "mapper", "parser", "sessionId", "dmkLoggerFactory", "args", "taskLogger", "internalApi", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { CallTaskInAppDeviceAction } from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { VerifySafeAddressDAReturnType } from \"@api/app-binder/VerifySafeAddressDeviceActionTypes\";\nimport { type EvmAddressBook } from \"@api/model/EvmAddressBook\";\nimport { SafeAddressOptions } from \"@api/model/SafeAddressOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { SendSignPersonalMessageTask } from \"@internal/app-binder/task/SendSignPersonalMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { VerifySafeAddressDeviceAction } from \"./device-action/VerifySafeAddress/VerifySafeAddress\";\nimport { SendGetAddressTask } from \"./task/SendGetAddressTask\";\nimport { SendSignAuthorizationDelegationTask } from \"./task/SendSignAuthorizationDelegationTask\";\nimport { APP_NAME } from \"./constants\";\n\n@injectable()\nexport class EthAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(transactionTypes.TransactionMapperService)\n private mapper: TransactionMapperService,\n @inject(transactionTypes.TransactionParserService)\n private parser: TransactionParserService,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n @inject(externalTypes.AddressBook) private addressBook: EvmAddressBook,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n returnChainCode: boolean;\n skipOpenApp: boolean;\n chainId?: number;\n }): GetAddressDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\"SendGetAddressTask\");\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendGetAddressTask(internalApi, {\n contextModule: this.contextModule,\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n returnChainCode: args.returnChainCode,\n chainId: args.chainId,\n loggerFactory: this.dmkLoggerFactory,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: taskLogger,\n }),\n });\n }\n\n verifySafeAddress(args: {\n safeContractAddress: string;\n options?: SafeAddressOptions;\n }): VerifySafeAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new VerifySafeAddressDeviceAction({\n input: {\n safeContractAddress: args.safeContractAddress,\n contextModule: this.contextModule,\n options: args.options ?? { chainId: 1 },\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n }): SignPersonalMessageDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\"SendSignPersonalMessageTask\");\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignPersonalMessageTask(internalApi, {\n ...args,\n logger: taskLogger,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"SendSignPersonalMessageTask\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n options?: TransactionOptions;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n mapper: this.mapper,\n parser: this.parser,\n contextModule: this.contextModule,\n addressBook: this.addressBook,\n options: args.options ?? {},\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signTypedData(args: {\n derivationPath: string;\n parser: TypedDataParserService;\n data: TypedData;\n skipOpenApp: boolean;\n }): SignTypedDataDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTypedDataDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n data: args.data,\n parser: args.parser,\n transactionMapper: this.mapper,\n transactionParser: this.parser,\n contextModule: this.contextModule,\n skipOpenApp: args.skipOpenApp,\n },\n loggerFactory: this.dmkLoggerFactory,\n }),\n });\n }\n\n signDelegationAuthorization(args: {\n derivationPath: string;\n chainId: number;\n address: string;\n nonce: number;\n }): SignDelegationAuthorizationDAReturnType {\n const taskLogger = this.dmkLoggerFactory(\n \"SendSignAuthorizationDelegationTask\",\n );\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignAuthorizationDelegationTask(internalApi, {\n ...args,\n logger: taskLogger,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignDelegationAuthorization,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"SendSignAuthorizationDelegationTask\"),\n }),\n });\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAMA,IAAAI,EAA0C,2CAC1CA,EAAwC,2CACxCC,EAAmC,qBAYnCC,EAA0C,sFAC1CC,EAA4C,iEAC5CC,EAA8B,mCAC9BC,EAAiC,qDAKjCC,EAA4C,uEAC5CC,EAA8C,+DAC9CC,EAAmC,qCACnCC,EAAoD,sDACpDC,EAAyB,uBAGlB,IAAMC,EAAN,KAAmB,CACxB,YACqCC,EACUC,EAErCC,EAEAC,EACiCC,EAEjCC,EACmCC,EAC3C,CAVmC,SAAAN,EACU,mBAAAC,EAErC,YAAAC,EAEA,YAAAC,EACiC,eAAAC,EAEjC,sBAAAC,EACmC,iBAAAC,CAC1C,CAEH,WAAWC,EAMgB,CACzB,MAAMC,EAAa,KAAK,iBAAiB,oBAAoB,EAC7D,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,qBAAmBA,EAAa,CAClC,cAAe,KAAK,cACpB,eAAgBF,EAAK,eACrB,cAAeA,EAAK,cACpB,gBAAiBA,EAAK,gBACtB,QAASA,EAAK,QACd,cAAe,KAAK,gBACtB,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyBA,EAAK,cAC1B,0BAAwB,cACxB,0BAAwB,KAC5B,YAAaA,EAAK,WACpB,EACA,OAAQC,CACV,CAAC,CACH,CAAC,CACH,CAEA,kBAAkBD,EAGgB,CAChC,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,gCAA8B,CAC9C,MAAO,CACL,oBAAqBA,EAAK,oBAC1B,cAAe,KAAK,cACpB,QAASA,EAAK,SAAW,CAAE,QAAS,CAAE,CACxC,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,oBAAoBA,EAIgB,CAClC,MAAMC,EAAa,KAAK,iBAAiB,6BAA6B,EACtE,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,8BAA4BA,EAAa,CAC3C,GAAGF,EACH,OAAQC,CACV,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBAAyB,0BAAwB,oBACjD,YAAaD,EAAK,WACpB,EACA,OAAQ,KAAK,iBAAiB,6BAA6B,CAC7D,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,eAAgBA,EAAK,eACrB,YAAaA,EAAK,YAClB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,cAAe,KAAK,cACpB,YAAa,KAAK,YAClB,QAASA,EAAK,SAAW,CAAC,CAC5B,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,cAAcA,EAKgB,CAC5B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,eAAgBA,EAAK,eACrB,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,kBAAmB,KAAK,OACxB,kBAAmB,KAAK,OACxB,cAAe,KAAK,cACpB,YAAaA,EAAK,WACpB,EACA,cAAe,KAAK,gBACtB,CAAC,CACH,CAAC,CACH,CAEA,4BAA4BA,EAKgB,CAC1C,MAAMC,EAAa,KAAK,iBACtB,qCACF,EACA,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,sCAAoCA,EAAa,CACnD,GAAGF,EACH,OAAQC,CACV,CAAC,EAAE,IAAI,EACT,QAAS,WACT,wBACE,0BAAwB,4BAC1B,YAAa,EACf,EACA,OAAQ,KAAK,iBAAiB,qCAAqC,CACrE,CAAC,CACH,CAAC,CACH,CACF,EA/JaT,EAANW,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GACxBA,EAAA,eAAO,gBAAc,aAAa,GAClCA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,gBAAc,SAAS,GAC9BA,EAAA,eAAO,gBAAc,gBAAgB,GAErCA,EAAA,eAAO,gBAAc,WAAW,IAXxBZ",
6
+ "names": ["EthAppBinder_exports", "__export", "EthAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_SignTypedDataDeviceAction", "import_SendSignPersonalMessageTask", "import_externalTypes", "import_transactionTypes", "import_SignTransactionDeviceAction", "import_VerifySafeAddress", "import_SendGetAddressTask", "import_SendSignAuthorizationDelegationTask", "import_constants", "EthAppBinder", "dmk", "contextModule", "mapper", "parser", "sessionId", "dmkLoggerFactory", "addressBook", "args", "taskLogger", "internalApi", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var S=require("@ledgerhq/device-management-kit"),c=require("@ledgerhq/device-management-kit"),y=require("@ledgerhq/device-management-kit"),h=require("ethers"),m=require("rxjs"),f=require("./constants"),d=require("./EthAppBinder");const g=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("EthAppBinder",()=>{const i={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},l={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),report:vi.fn()},D={mapTransactionToSubset:vi.fn()},A={extractValue:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),describe("getAddress",()=>{it("should return the address, publicKey, and chainCode",()=>new Promise((o,a)=>{const t="0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",r="04e3785ca";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:{address:t,publicKey:r,chainCode:void 0}}]),cancel:vi.fn()});const p=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:s}=p.getAddress({derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1}),e=[];s.subscribe({next:n=>{e.push(n)},error:n=>{a(n)},complete:()=>{try{expect(e).toEqual([{status:c.DeviceActionStatus.Completed,output:{address:t,publicKey:r,chainCode:void 0}}]),o()}catch(n){a(n)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const o={derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1};test("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const t={...o,checkOnDevice:!0};new d.EthAppBinder(i,l,D,A,"sessionId",g).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:expect.objectContaining({appName:f.APP_NAME,requiredUserInteraction:y.UserInteractionRequired.VerifyAddress,skipOpenApp:!1,task:expect.any(Function)})})}))}),test("when checkOnDevice is false: UserInteractionRequired.None",()=>{const t={...o,checkOnDevice:!1};new d.EthAppBinder(i,l,D,A,"sessionId",g).getAddress(t),expect(i.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:expect.objectContaining({appName:f.APP_NAME,requiredUserInteraction:y.UserInteractionRequired.None,skipOpenApp:!1,task:expect.any(Function)})})}))})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((o,a)=>{const t={r:"0xDEAD",s:"0xBEEF",v:0},r=(0,S.hexaStringToBuffer)(h.Transaction.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized),u={};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const p=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:s}=p.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:r,options:u}),e=[];s.subscribe({next:n=>{e.push(n)},error:n=>{a(n)},complete:()=>{try{expect(e).toEqual([{status:c.DeviceActionStatus.Completed,output:t}]),o()}catch(n){a(n)}}})})),it("should return the signature without options",()=>new Promise((o,a)=>{const t={r:"0xDEAD",s:"0xBEEF",v:0},r=(0,S.hexaStringToBuffer)(h.Transaction.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized);vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const u=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:p}=u.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:r,options:void 0}),s=[];p.subscribe({next:e=>{s.push(e)},error:e=>{a(e)},complete:()=>{try{expect(s).toEqual([{status:c.DeviceActionStatus.Completed,output:t}]),o()}catch(e){a(e)}}})}))}),describe("signMessage",()=>{it("should return the signature",()=>new Promise((o,a)=>{const t={r:"0xDEAD",s:"0xBEEF",v:0},r="Hello, World!";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const u=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:p}=u.signPersonalMessage({derivationPath:"44'/60'/3'/2/1",message:r,skipOpenApp:!1}),s=[];p.subscribe({next:e=>{s.push(e)},error:e=>{a(e)},complete:()=>{try{expect(s).toEqual([{status:c.DeviceActionStatus.Completed,output:t}]),o()}catch(e){a(e)}}})}))}),describe("signDelegationAuthorization",()=>{it("should return the signature",()=>new Promise((o,a)=>{const t={r:"0xDEAD",s:"0xBEEF",v:0},r=2,u=42,p="0xaddress";vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const s=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:e}=s.signDelegationAuthorization({derivationPath:"44'/60'/3'/2/1",chainId:r,address:p,nonce:u}),n=[];e.subscribe({next:v=>{n.push(v)},error:v=>{a(v)},complete:()=>{try{expect(n).toEqual([{status:c.DeviceActionStatus.Completed,output:t}]),o()}catch(v){a(v)}}})}))}),describe("signTypedData",()=>{it("should return the signature",()=>new Promise((o,a)=>{const t={r:"0xDEAD",s:"0xBEEF",v:0},r={domain:{},types:{},primaryType:"test",message:{}},u={parse:vi.fn()};vi.spyOn(i,"executeDeviceAction").mockReturnValue({observable:(0,m.from)([{status:c.DeviceActionStatus.Completed,output:t}]),cancel:vi.fn()});const p=new d.EthAppBinder(i,l,D,A,"sessionId",g),{observable:s}=p.signTypedData({derivationPath:"44'/60'/3'/2/1",parser:u,data:r,skipOpenApp:!1}),e=[];s.subscribe({next:n=>{e.push(n)},error:n=>{a(n)},complete:()=>{try{expect(e).toEqual([{status:c.DeviceActionStatus.Completed,output:t}]),o()}catch(n){a(n)}}})}))})});
1
+ "use strict";var y=require("@ledgerhq/device-management-kit"),c=require("@ledgerhq/device-management-kit"),h=require("@ledgerhq/device-management-kit"),x=require("ethers"),v=require("rxjs"),g=require("../../api/model/EvmAddressBook"),f=require("./constants"),d=require("./EthAppBinder");const m=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("EthAppBinder",()=>{const o={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},l={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),report:vi.fn()},D={mapTransactionToSubset:vi.fn()},A={extractValue:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),describe("getAddress",()=>{it("should return the address, publicKey, and chainCode",()=>new Promise((i,n)=>{const e="0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",s="04e3785ca";vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:{address:e,publicKey:s,chainCode:void 0}}]),cancel:vi.fn()});const p=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:r}=p.getAddress({derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1}),t=[];r.subscribe({next:a=>{t.push(a)},error:a=>{n(a)},complete:()=>{try{expect(t).toEqual([{status:c.DeviceActionStatus.Completed,output:{address:e,publicKey:s,chainCode:void 0}}]),i()}catch(a){n(a)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const i={derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1};test("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const e={...i,checkOnDevice:!0};new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK).getAddress(e),expect(o.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:expect.objectContaining({appName:f.APP_NAME,requiredUserInteraction:h.UserInteractionRequired.VerifyAddress,skipOpenApp:!1,task:expect.any(Function)})})}))}),test("when checkOnDevice is false: UserInteractionRequired.None",()=>{const e={...i,checkOnDevice:!1};new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK).getAddress(e),expect(o.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:expect.objectContaining({input:expect.objectContaining({appName:f.APP_NAME,requiredUserInteraction:h.UserInteractionRequired.None,skipOpenApp:!1,task:expect.any(Function)})})}))})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((i,n)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=(0,y.hexaStringToBuffer)(x.Transaction.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized),u={};vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:e}]),cancel:vi.fn()});const p=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:r}=p.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:s,options:u}),t=[];r.subscribe({next:a=>{t.push(a)},error:a=>{n(a)},complete:()=>{try{expect(t).toEqual([{status:c.DeviceActionStatus.Completed,output:e}]),i()}catch(a){n(a)}}})})),it("should return the signature without options",()=>new Promise((i,n)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=(0,y.hexaStringToBuffer)(x.Transaction.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized);vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:e}]),cancel:vi.fn()});const u=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:p}=u.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:s,options:void 0}),r=[];p.subscribe({next:t=>{r.push(t)},error:t=>{n(t)},complete:()=>{try{expect(r).toEqual([{status:c.DeviceActionStatus.Completed,output:e}]),i()}catch(t){n(t)}}})})),it("passes the injected address book to the sign-transaction device action",()=>{const i={contactGroups:[{contactName:"Alice",groupHandle:new Uint8Array(64).fill(170),hmacProof:new Uint8Array(32).fill(187),externalAddresses:[{scope:"Ethereum",address:"0x1111111111111111111111111111111111111111",chainId:1n,hmacRest:new Uint8Array(32).fill(204)}]}],ledgerAccounts:[]},n=vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([]),cancel:vi.fn()});new d.EthAppBinder(o,l,D,A,"sessionId",m,i).signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:new Uint8Array([1])});const{deviceAction:e}=n.mock.calls[0][0];expect(e.input.addressBook).toBe(i)})}),describe("signMessage",()=>{it("should return the signature",()=>new Promise((i,n)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s="Hello, World!";vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:e}]),cancel:vi.fn()});const u=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:p}=u.signPersonalMessage({derivationPath:"44'/60'/3'/2/1",message:s,skipOpenApp:!1}),r=[];p.subscribe({next:t=>{r.push(t)},error:t=>{n(t)},complete:()=>{try{expect(r).toEqual([{status:c.DeviceActionStatus.Completed,output:e}]),i()}catch(t){n(t)}}})}))}),describe("signDelegationAuthorization",()=>{it("should return the signature",()=>new Promise((i,n)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=2,u=42,p="0xaddress";vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:e}]),cancel:vi.fn()});const r=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:t}=r.signDelegationAuthorization({derivationPath:"44'/60'/3'/2/1",chainId:s,address:p,nonce:u}),a=[];t.subscribe({next:S=>{a.push(S)},error:S=>{n(S)},complete:()=>{try{expect(a).toEqual([{status:c.DeviceActionStatus.Completed,output:e}]),i()}catch(S){n(S)}}})}))}),describe("signTypedData",()=>{it("should return the signature",()=>new Promise((i,n)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s={domain:{},types:{},primaryType:"test",message:{}},u={parse:vi.fn()};vi.spyOn(o,"executeDeviceAction").mockReturnValue({observable:(0,v.from)([{status:c.DeviceActionStatus.Completed,output:e}]),cancel:vi.fn()});const p=new d.EthAppBinder(o,l,D,A,"sessionId",m,g.EMPTY_EVM_ADDRESS_BOOK),{observable:r}=p.signTypedData({derivationPath:"44'/60'/3'/2/1",parser:u,data:s,skipOpenApp:!1}),t=[];r.subscribe({next:a=>{t.push(a)},error:a=>{n(a)},complete:()=>{try{expect(t).toEqual([{status:c.DeviceActionStatus.Completed,output:e}]),i()}catch(a){n(a)}}})}))})});
2
2
  //# sourceMappingURL=EthAppBinder.test.js.map