@ledgerhq/device-signer-kit-ethereum 0.0.0-transactionInspector-resolutionObj-20250916113438 → 0.0.0-trusted-names-native-transfer-1-20260121120757

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 (559) hide show
  1. package/README.md +61 -3
  2. package/lib/cjs/api/SignerEth.js +1 -1
  3. package/lib/cjs/api/SignerEth.js.map +1 -1
  4. package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  8. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  10. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  11. package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  12. package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
  13. package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
  14. package/lib/cjs/api/model/TransactionOptions.js +1 -1
  15. package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
  16. package/lib/cjs/internal/DefaultSignerEth.js +1 -1
  17. package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  19. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
  20. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  21. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
  22. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js +1 -1
  23. package/lib/cjs/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  25. package/lib/cjs/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  26. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  27. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
  28. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  30. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  32. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  34. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  35. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  36. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  37. package/lib/cjs/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  38. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  39. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  40. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  42. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
  44. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
  47. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
  48. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
  49. package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
  50. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  51. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  52. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  53. package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  54. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  55. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  56. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  57. package/lib/cjs/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  59. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  61. package/lib/cjs/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  62. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  63. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  64. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  65. package/lib/cjs/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  66. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  67. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  68. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  69. package/lib/cjs/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
  71. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
  72. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
  73. package/lib/cjs/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
  74. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  75. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  76. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  77. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  78. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  79. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  80. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  81. package/lib/cjs/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  82. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  83. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  84. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  85. package/lib/cjs/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  86. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  87. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  88. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  89. package/lib/cjs/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  90. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js +1 -1
  91. package/lib/cjs/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  92. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  93. package/lib/cjs/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  94. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +1 -1
  95. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
  96. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
  97. package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +3 -3
  98. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js +1 -1
  99. package/lib/cjs/internal/app-binder/command/SignEIP712Command.js.map +3 -3
  100. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  101. package/lib/cjs/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  102. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  103. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  104. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  105. package/lib/cjs/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  106. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js +1 -1
  107. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  108. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  109. package/lib/cjs/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  110. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js +1 -1
  111. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  112. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  113. package/lib/cjs/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  114. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  115. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  116. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  117. package/lib/cjs/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  118. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
  119. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
  120. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
  121. package/lib/cjs/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
  122. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  123. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  124. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  125. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  126. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  127. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  128. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  129. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  130. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  131. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  132. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  133. package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  134. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  135. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  136. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
  137. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  138. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  139. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  140. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  141. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  142. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  143. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  144. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  145. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  146. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  147. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  148. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  149. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  150. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  151. package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  152. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  153. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  154. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  155. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  156. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  157. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  158. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  159. package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  160. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
  161. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  162. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  163. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  164. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
  165. package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  166. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  167. package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  168. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  169. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  170. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  171. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  172. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  173. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  174. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  175. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  176. package/lib/cjs/internal/di.js +1 -1
  177. package/lib/cjs/internal/di.js.map +3 -3
  178. package/lib/cjs/internal/safe/di/safeModule.js +2 -0
  179. package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
  180. package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
  181. package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
  182. package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
  183. package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
  184. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  185. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  186. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  187. package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  188. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
  189. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
  190. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  191. package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
  192. package/lib/cjs/package.json +41 -37
  193. package/lib/esm/api/SignerEthBuilder.test.js +1 -1
  194. package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
  195. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  196. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  197. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  198. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  199. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
  200. package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
  201. package/lib/esm/api/model/SafeAddressOptions.js +1 -0
  202. package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
  203. package/lib/esm/internal/DefaultSignerEth.js +1 -1
  204. package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
  205. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  206. package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
  207. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  208. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
  209. package/lib/esm/internal/app-binder/command/GetAddressCommand.js +1 -1
  210. package/lib/esm/internal/app-binder/command/GetAddressCommand.js.map +2 -2
  211. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js +1 -1
  212. package/lib/esm/internal/app-binder/command/GetAddressCommand.test.js.map +2 -2
  213. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js +1 -1
  214. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.js.map +2 -2
  215. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js +1 -1
  216. package/lib/esm/internal/app-binder/command/GetAppConfigurationCommand.test.js.map +2 -2
  217. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js +1 -1
  218. package/lib/esm/internal/app-binder/command/GetChallengeCommand.js.map +2 -2
  219. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js +1 -1
  220. package/lib/esm/internal/app-binder/command/GetChallengeCommand.test.js.map +2 -2
  221. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js +1 -1
  222. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.js.map +2 -2
  223. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js +1 -1
  224. package/lib/esm/internal/app-binder/command/ProvideEnumCommand.test.js.map +3 -3
  225. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js +1 -1
  226. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.js.map +2 -2
  227. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js +1 -1
  228. package/lib/esm/internal/app-binder/command/ProvideNFTInformationCommand.test.js.map +3 -3
  229. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +1 -1
  230. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +2 -2
  231. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +1 -1
  232. package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +3 -3
  233. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +1 -1
  234. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +2 -2
  235. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +1 -1
  236. package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +3 -3
  237. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
  238. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
  239. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
  240. package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
  241. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js +1 -1
  242. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.js.map +2 -2
  243. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js +1 -1
  244. package/lib/esm/internal/app-binder/command/ProvideTokenInformationCommand.test.js.map +2 -2
  245. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js +1 -1
  246. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.js.map +2 -2
  247. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js +1 -1
  248. package/lib/esm/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.test.js.map +3 -3
  249. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js +1 -1
  250. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.js.map +2 -2
  251. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js +1 -1
  252. package/lib/esm/internal/app-binder/command/ProvideTransactionInformationCommand.test.js.map +3 -3
  253. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js +1 -1
  254. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.js.map +2 -2
  255. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js +1 -1
  256. package/lib/esm/internal/app-binder/command/ProvideTrustedNameCommand.test.js.map +3 -3
  257. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js +1 -1
  258. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.js.map +2 -2
  259. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js +1 -1
  260. package/lib/esm/internal/app-binder/command/ProvideWeb3CheckCommand.test.js.map +3 -3
  261. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  262. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  263. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  264. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  265. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js +1 -1
  266. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.js.map +2 -2
  267. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js +1 -1
  268. package/lib/esm/internal/app-binder/command/SendEIP712StructDefinitionCommand.test.js.map +3 -3
  269. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js +1 -1
  270. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.js.map +2 -2
  271. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js +1 -1
  272. package/lib/esm/internal/app-binder/command/SendEIP712StructImplemCommand.test.js.map +3 -3
  273. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js +1 -1
  274. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.js.map +2 -2
  275. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js +2 -2
  276. package/lib/esm/internal/app-binder/command/SetExternalPluginCommand.test.js.map +3 -3
  277. package/lib/esm/internal/app-binder/command/SetPluginCommand.js +1 -1
  278. package/lib/esm/internal/app-binder/command/SetPluginCommand.js.map +2 -2
  279. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js +2 -2
  280. package/lib/esm/internal/app-binder/command/SetPluginCommand.test.js.map +3 -3
  281. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +1 -1
  282. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +2 -2
  283. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +1 -1
  284. package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +3 -3
  285. package/lib/esm/internal/app-binder/command/SignEIP712Command.js +1 -1
  286. package/lib/esm/internal/app-binder/command/SignEIP712Command.js.map +2 -2
  287. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js +1 -1
  288. package/lib/esm/internal/app-binder/command/SignEIP712Command.test.js.map +2 -2
  289. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js +1 -1
  290. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.js.map +2 -2
  291. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js +1 -1
  292. package/lib/esm/internal/app-binder/command/SignPersonalMessageCommand.test.js.map +3 -3
  293. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js +1 -1
  294. package/lib/esm/internal/app-binder/command/SignTransactionCommand.js.map +2 -2
  295. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js +1 -1
  296. package/lib/esm/internal/app-binder/command/SignTransactionCommand.test.js.map +3 -3
  297. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js +1 -1
  298. package/lib/esm/internal/app-binder/command/StartTransactionCommand.js.map +2 -2
  299. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js +1 -1
  300. package/lib/esm/internal/app-binder/command/StartTransactionCommand.test.js.map +3 -3
  301. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js +1 -1
  302. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.js.map +2 -2
  303. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js +1 -1
  304. package/lib/esm/internal/app-binder/command/StoreTransactionCommand.test.js.map +3 -3
  305. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js +1 -1
  306. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.js.map +2 -2
  307. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js +1 -1
  308. package/lib/esm/internal/app-binder/command/Web3CheckOptInCommand.test.js.map +3 -3
  309. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  310. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  311. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  312. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  313. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  314. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  315. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  316. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  317. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
  318. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
  319. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
  320. package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
  321. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
  322. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
  323. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
  324. package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
  325. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
  326. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
  327. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  328. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  329. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  330. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  331. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
  332. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
  333. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
  334. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
  335. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
  336. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
  337. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
  338. package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
  339. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
  340. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
  341. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
  342. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
  343. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
  344. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
  345. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
  346. package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
  347. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
  348. package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
  349. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  350. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  351. package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
  352. package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
  353. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
  354. package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
  355. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  356. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  357. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  358. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  359. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
  360. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
  361. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
  362. package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
  363. package/lib/esm/internal/di.js +1 -1
  364. package/lib/esm/internal/di.js.map +3 -3
  365. package/lib/esm/internal/safe/di/safeModule.js +2 -0
  366. package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
  367. package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
  368. package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
  369. package/lib/esm/internal/safe/di/safeTypes.js +2 -0
  370. package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
  371. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
  372. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
  373. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
  374. package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
  375. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
  376. package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +2 -2
  377. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
  378. package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +2 -2
  379. package/lib/esm/package.json +41 -37
  380. package/lib/types/api/SignerEth.d.ts +3 -0
  381. package/lib/types/api/SignerEth.d.ts.map +1 -1
  382. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +10 -8
  383. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  384. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +6 -0
  385. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  386. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
  387. package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
  388. package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
  389. package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
  390. package/lib/types/api/model/TransactionOptions.d.ts +0 -1
  391. package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
  392. package/lib/types/internal/DefaultSignerEth.d.ts +3 -0
  393. package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
  394. package/lib/types/internal/app-binder/EthAppBinder.d.ts +6 -0
  395. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  396. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts +1 -0
  397. package/lib/types/internal/app-binder/command/GetAddressCommand.d.ts.map +1 -1
  398. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts +1 -0
  399. package/lib/types/internal/app-binder/command/GetAppConfigurationCommand.d.ts.map +1 -1
  400. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts +1 -0
  401. package/lib/types/internal/app-binder/command/GetChallengeCommand.d.ts.map +1 -1
  402. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts +1 -0
  403. package/lib/types/internal/app-binder/command/ProvideEnumCommand.d.ts.map +1 -1
  404. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts +1 -0
  405. package/lib/types/internal/app-binder/command/ProvideNFTInformationCommand.d.ts.map +1 -1
  406. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +1 -0
  407. package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -1
  408. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +1 -0
  409. package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -1
  410. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +35 -0
  411. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
  412. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
  413. package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
  414. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts +1 -0
  415. package/lib/types/internal/app-binder/command/ProvideTokenInformationCommand.d.ts.map +1 -1
  416. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts +1 -0
  417. package/lib/types/internal/app-binder/command/ProvideTransactionFieldDescriptionCommand.d.ts.map +1 -1
  418. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts +1 -0
  419. package/lib/types/internal/app-binder/command/ProvideTransactionInformationCommand.d.ts.map +1 -1
  420. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts +1 -0
  421. package/lib/types/internal/app-binder/command/ProvideTrustedNameCommand.d.ts.map +1 -1
  422. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts +1 -0
  423. package/lib/types/internal/app-binder/command/ProvideWeb3CheckCommand.d.ts.map +1 -1
  424. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +30 -1
  425. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  426. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts +1 -0
  427. package/lib/types/internal/app-binder/command/SendEIP712StructDefinitionCommand.d.ts.map +1 -1
  428. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts +1 -0
  429. package/lib/types/internal/app-binder/command/SendEIP712StructImplemCommand.d.ts.map +1 -1
  430. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts +1 -0
  431. package/lib/types/internal/app-binder/command/SetExternalPluginCommand.d.ts.map +1 -1
  432. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts +1 -0
  433. package/lib/types/internal/app-binder/command/SetPluginCommand.d.ts.map +1 -1
  434. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +1 -0
  435. package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -1
  436. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts +1 -0
  437. package/lib/types/internal/app-binder/command/SignEIP712Command.d.ts.map +1 -1
  438. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts +1 -0
  439. package/lib/types/internal/app-binder/command/SignPersonalMessageCommand.d.ts.map +1 -1
  440. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts +1 -0
  441. package/lib/types/internal/app-binder/command/SignTransactionCommand.d.ts.map +1 -1
  442. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts +1 -0
  443. package/lib/types/internal/app-binder/command/StartTransactionCommand.d.ts.map +1 -1
  444. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts +1 -0
  445. package/lib/types/internal/app-binder/command/StoreTransactionCommand.d.ts.map +1 -1
  446. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts +1 -0
  447. package/lib/types/internal/app-binder/command/Web3CheckOptInCommand.d.ts.map +1 -1
  448. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +18 -18
  449. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  450. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +9 -0
  451. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  452. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
  453. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
  454. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
  455. package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
  456. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
  457. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
  458. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +47 -0
  459. package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
  460. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
  461. package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
  462. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +10 -3
  463. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  464. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
  465. package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
  466. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
  467. package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
  468. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
  469. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
  470. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
  471. package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
  472. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
  473. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
  474. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
  475. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
  476. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
  477. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
  478. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
  479. package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
  480. package/lib/types/internal/app-binder/task/{PreBuildContextTask.d.ts → ParseTransactionTask.d.ts} +6 -6
  481. package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
  482. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
  483. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
  484. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
  485. package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
  486. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
  487. package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
  488. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +16 -5
  489. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  490. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
  491. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
  492. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
  493. package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
  494. package/lib/types/internal/di.d.ts.map +1 -1
  495. package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
  496. package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
  497. package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
  498. package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
  499. package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
  500. package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
  501. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
  502. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
  503. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
  504. package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
  505. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  506. package/package.json +36 -32
  507. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js +0 -2
  508. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
  509. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
  510. package/lib/cjs/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
  511. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  512. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  513. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  514. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  515. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  516. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  517. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  518. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  519. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js +0 -2
  520. package/lib/cjs/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
  521. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  522. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  523. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  524. package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  525. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js +0 -2
  526. package/lib/esm/internal/app-binder/task/BuildSubContextTask.js.map +0 -7
  527. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js +0 -2
  528. package/lib/esm/internal/app-binder/task/BuildSubContextTask.test.js.map +0 -7
  529. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
  530. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
  531. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
  532. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
  533. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +0 -2
  534. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +0 -7
  535. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +0 -2
  536. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +0 -7
  537. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js +0 -2
  538. package/lib/esm/internal/app-binder/task/PreBuildContextTask.js.map +0 -7
  539. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
  540. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
  541. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
  542. package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
  543. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts +0 -20
  544. package/lib/types/internal/app-binder/task/BuildSubContextTask.d.ts.map +0 -1
  545. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts +0 -2
  546. package/lib/types/internal/app-binder/task/BuildSubContextTask.test.d.ts.map +0 -1
  547. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -28
  548. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
  549. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
  550. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
  551. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -29
  552. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +0 -1
  553. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts +0 -2
  554. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.test.d.ts.map +0 -1
  555. package/lib/types/internal/app-binder/task/PreBuildContextTask.d.ts.map +0 -1
  556. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -44
  557. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
  558. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
  559. package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
@@ -1,2 +1,2 @@
1
- var C=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var w=(b,e,r,t)=>{for(var a=t>1?void 0:t?P(e,r):e,l=b.length-1,n;l>=0;l--)(n=b[l])&&(a=(t?n(e,r,a):n(a))||a);return t&&a&&C(e,r,a),a};import{ContainerPath as p,DataPathElementType as c,DataPathLeafType as d}from"@ledgerhq/context-module";import{ByteArrayBuilder as f,ByteArrayParser as I,hexaStringToBuffer as L}from"@ledgerhq/device-management-kit";import{injectable as N}from"inversify";import{Left as u,Maybe as E,Right as A}from"purify-ts";const F=4,h=32;let y=class{extractValue(e,r){const{to:t,data:a,value:l}=e;return r===p.FROM?u(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===p.TO?E.fromNullable(t).map(n=>L(n)).filter(n=>n!==null).map(n=>[n]).toEither(new Error("Faild to extract TO field of transaction")):r===p.VALUE?E.fromNullable(l).map(n=>new f().add256BitUIntToData(n).build()).map(n=>[n]).toEither(new Error("Faild to extract VALUE field of transaction")):E.fromNullable(a).toEither(new Error("Transaction calldata is empty")).chain(n=>E.fromNullable(L(n)).toEither(new Error(`Invalid hex string calldata: ${n}`))).chain(n=>this.extractCalldataValue(n,r))}extractCalldataValue(e,r){return e=e.slice(F),r.length===0?u(new Error("Path is empty")):this.extractCalldataValueAt(e,r,0,0)}extractCalldataValueAt(e,r,t,a){const l=r[r.length-1],n=l.type===c.SLICE?l:null;for(;r.length>0;){const i=r[0];switch(r=r.slice(1),i.type){case c.TUPLE:a=t,t+=i.offset*h;break;case c.ARRAY:return this.getU256(e.slice(t)).toEither(new Error(`Invalid array length at offset ${t}`)).chain(o=>{t+=h,a=t;const s=i.start===void 0?0:i.start<0?o+i.start:i.start,U=i.end===void 0?o:i.end<0?o+i.end:i.end;return s<0||s>=o||U>o||s>=U?u(new Error(`Array slice out of bounds, start=${i.start}, end=${i.end}`)):Array.from({length:U-s},(m,g)=>g).map(m=>t+(m+s)*i.itemSize*h).reduce((m,g)=>m.chain(T=>this.extractCalldataValueAt(e,r,g,a).map(x=>[...T,...x])),A([]))});case c.REF:if(this.getU256(e.slice(t)).ifJust(o=>t=a+o).isNothing())return u(new Error(`Invalid ref at offset ${t}`));break;case c.LEAF:switch(i.leafType){case d.ARRAY_LEAF:return u(new Error("Array leaf is not supported in v1 of protocol"));case d.TUPLE_LEAF:return u(new Error("Tuple leaf is not supported in v1 of protocol"));case d.STATIC_LEAF:return this.getSlice(e,t,h).chain(o=>n===null?A([o]):this.sliceLeaf(o,n));case d.DYNAMIC_LEAF:return this.getU256(e.slice(t)).toEither(new Error(`Invalid leaf length at offset ${t}`)).chain(o=>(t+=h,this.getSlice(e,t,o).chain(s=>n===null?A([s]):this.sliceLeaf(s,n))))}break;case c.SLICE:return u(new Error("Slice can only be used as last element of the path"))}}return u(new Error("Path did not resolve to a leaf element"))}sliceLeaf(e,r){const t=e.length,a=r.start===void 0?0:r.start<0?t+r.start:r.start,l=r.end===void 0?t:r.end<0?t+r.end:r.end;return a>=l?u(new Error(`invalid leaf slice: start ${a}, end ${l}`)):this.getSlice(e,a,l-a).map(n=>[n])}getSlice(e,r,t){return r<0||e.length<r+t?u(new Error(`calldata too small to slice at offset ${r} of length ${t}`)):A(e.slice(r,r+t))}getU256(e){return E.fromNullable(new I(e).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};y=w([N()],y);export{y as TransactionParserService};
1
+ var C=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var w=(b,t,r,e)=>{for(var a=e>1?void 0:e?P(t,r):t,l=b.length-1,n;l>=0;l--)(n=b[l])&&(a=(e?n(t,r,a):n(a))||a);return e&&a&&C(t,r,a),a};import{ContainerPath as p,DataPathElementType as c,DataPathLeafType as d}from"@ledgerhq/context-module";import{ByteArrayBuilder as f,ByteArrayParser as I,hexaStringToBuffer as L}from"@ledgerhq/device-management-kit";import{injectable as N}from"inversify";import{Left as u,Maybe as E,Right as A}from"purify-ts";const F=4,h=32;let y=class{extractValue(t,r){const{to:e,data:a,value:l}=t;return r===p.FROM?u(new Error("Cannot get 'FROM' field of an unsigned transaction")):r===p.TO?E.fromNullable(e).map(n=>L(n)).filter(n=>n!==null).map(n=>[n]).toEither(new Error("Failed to extract TO field of transaction")):r===p.VALUE?E.fromNullable(l).map(n=>new f().add256BitUIntToData(n).build()).map(n=>[n]).toEither(new Error("Failed to extract VALUE field of transaction")):E.fromNullable(a).toEither(new Error("Transaction calldata is empty")).chain(n=>E.fromNullable(L(n)).toEither(new Error(`Invalid hex string calldata: ${n}`))).chain(n=>this.extractCalldataValue(n,r))}extractCalldataValue(t,r){return t=t.slice(F),r.length===0?u(new Error("Path is empty")):this.extractCalldataValueAt(t,r,0,0)}extractCalldataValueAt(t,r,e,a){const l=r[r.length-1],n=l.type===c.SLICE?l:null;for(;r.length>0;){const i=r[0];switch(r=r.slice(1),i.type){case c.TUPLE:a=e,e+=i.offset*h;break;case c.ARRAY:return this.getU256(t.slice(e)).toEither(new Error(`Invalid array length at offset ${e}`)).chain(o=>{e+=h,a=e;const s=i.start===void 0?0:i.start<0?o+i.start:i.start,U=i.end===void 0?o:i.end<0?o+i.end:i.end;return s<0||s>=o||U>o||s>=U?u(new Error(`Array slice out of bounds, start=${i.start}, end=${i.end}`)):Array.from({length:U-s},(m,g)=>g).map(m=>e+(m+s)*i.itemSize*h).reduce((m,g)=>m.chain(T=>this.extractCalldataValueAt(t,r,g,a).map(x=>[...T,...x])),A([]))});case c.REF:if(this.getU256(t.slice(e)).ifJust(o=>e=a+o).isNothing())return u(new Error(`Invalid ref at offset ${e}`));break;case c.LEAF:switch(i.leafType){case d.ARRAY_LEAF:return u(new Error("Array leaf is not supported in v1 of protocol"));case d.TUPLE_LEAF:return u(new Error("Tuple leaf is not supported in v1 of protocol"));case d.STATIC_LEAF:return this.getSlice(t,e,h).chain(o=>n===null?A([o]):this.sliceLeaf(o,n));case d.DYNAMIC_LEAF:return this.getU256(t.slice(e)).toEither(new Error(`Invalid leaf length at offset ${e}`)).chain(o=>(e+=h,this.getSlice(t,e,o).chain(s=>n===null?A([s]):this.sliceLeaf(s,n))))}break;case c.SLICE:return u(new Error("Slice can only be used as last element of the path"))}}return u(new Error("Path did not resolve to a leaf element"))}sliceLeaf(t,r){const e=t.length,a=r.start===void 0?0:r.start<0?e+r.start:r.start,l=r.end===void 0?e:r.end<0?e+r.end:r.end;return a>=l?u(new Error(`invalid leaf slice: start ${a}, end ${l}`)):this.getSlice(t,a,l-a).map(n=>[n])}getSlice(t,r,e){return r<0||t.length<r+e?u(new Error(`calldata too small to slice at offset ${r} of length ${e}`)):A(t.slice(r,r+e))}getU256(t){return E.fromNullable(new I(t).extract256BitUInt(!0)).filter(r=>r<=Number.MAX_SAFE_INTEGER).map(r=>Number(r))}};y=w([N()],y);export{y as TransactionParserService};
2
2
  //# sourceMappingURL=TransactionParserService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.ts"],
4
- "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n subset: TransactionSubset,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n const { to, data, value } = subset;\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Faild to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type {\n DataPathElement,\n DataPathElementSlice,\n GenericPath,\n TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n ContainerPath,\n DataPathElementType,\n DataPathLeafType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n ByteArrayParser,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\nimport { injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\n\n/**\n * The goal of this service it to implement the GenericPath parser in the context\n * of an ethereum transaction.\n *\n * The abi of an ethereum transaction calldata is specified here:\n * https://docs.soliditylang.org/en/latest/abi-spec.html\n *\n * To be noted:\n * - calldata is composed of:\n * - the selector on 4 bytes\n * - chunks of 32 bytes, whatever the size of the item contained in that chunk\n * - static elements (fixed size) are encoded \"in-place\", always in 1 chunk padded with zeros\n * (even a bool is on 32 bytes)\n * - dynamic elements (variable size) are behind references (pointers) and then encoded with length+value\n *\n * Examples extracted from the abi specification:\n * - example for a function with static elements:\n * signature: baz(uint32 x, bool y)\n * parameters: x = 69\n * y = true\n * - Encoding:\n * 0xcdcd77c0: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000045: value = 69\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000001: value = true\n *\n * - example for a function with dynamic elements:\n * signature: g(uint256[][] x, string[] x)\n * parameters: x = [[1, 2], [3]]\n * y = [\"one\", \"two\", \"three\"]\n * - Encoding:\n * 0x2289b18c: the selector\n * [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n * [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n * [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n * [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n * [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n * [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n * [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n * [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n * [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n * [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n * [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n * [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n * [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n * [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n * [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n * [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n * [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n * [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n * [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n * [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n */\nconst SELECTOR_LENGTH = 4;\nconst CHUNK_SIZE = 32;\n\n@injectable()\nexport class TransactionParserService {\n public extractValue(\n subset: TransactionSubset,\n path: GenericPath,\n ): Either<Error, Uint8Array[]> {\n const { to, data, value } = subset;\n /**\n * We can first check container paths, which are in the transaction envelop\n */\n if (path === ContainerPath.FROM) {\n // 'from' is not part of the unsigned ethereum transaction, and can\n // only by recovered from the transaction signature later on.\n // Therefore we cannot extract it from a transaction before signing it.\n // It is not an issue since that field will typically be displayed as an\n // address on the device and therefore don't require additional descriptors.\n return Left(\n new Error(\"Cannot get 'FROM' field of an unsigned transaction\"),\n );\n } else if (path === ContainerPath.TO) {\n return Maybe.fromNullable(to)\n .map((str) => hexaStringToBuffer(str))\n .filter((bytes) => bytes !== null)\n .map((bytes) => [bytes])\n .toEither(new Error(\"Failed to extract TO field of transaction\"));\n } else if (path === ContainerPath.VALUE) {\n return Maybe.fromNullable(value)\n .map((num) => new ByteArrayBuilder().add256BitUIntToData(num).build())\n .map((bytes) => [bytes])\n .toEither(new Error(\"Failed to extract VALUE field of transaction\"));\n }\n\n /**\n * If it was not a path in the container, it means it's a path in the calldata\n */\n return Maybe.fromNullable(data)\n .toEither(new Error(\"Transaction calldata is empty\"))\n .chain((calldata) =>\n Maybe.fromNullable(hexaStringToBuffer(calldata)).toEither(\n new Error(`Invalid hex string calldata: ${calldata}`),\n ),\n )\n .chain((calldata) => this.extractCalldataValue(calldata, path));\n }\n\n private extractCalldataValue(\n data: Uint8Array,\n path: DataPathElement[],\n ): Either<Error, Uint8Array[]> {\n data = data.slice(SELECTOR_LENGTH); // Remove the selector from the calldata\n if (path.length === 0) {\n return Left(new Error(\"Path is empty\"));\n }\n return this.extractCalldataValueAt(data, path, 0, 0);\n }\n\n private extractCalldataValueAt(\n data: Uint8Array,\n path: DataPathElement[],\n offset: number,\n parentOffset: number,\n ): Either<Error, Uint8Array[]> {\n // If the path ends with a slice, store it now as it is only allowed at the end of a binary path.\n const lastElement = path[path.length - 1]!;\n const leafSlice: DataPathElementSlice | null =\n lastElement.type === DataPathElementType.SLICE ? lastElement : null;\n\n while (path.length > 0) {\n const element = path[0]!;\n path = path.slice(1);\n switch (element.type) {\n case DataPathElementType.TUPLE:\n // A tuple contain 1 element per chunk\n parentOffset = offset;\n offset += element.offset * CHUNK_SIZE;\n break;\n case DataPathElementType.ARRAY:\n // An array contains a length, followed by the list of elements.\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid array length at offset ${offset}`))\n .chain((length) => {\n // Skip the array length\n offset += CHUNK_SIZE;\n parentOffset = offset;\n // Select the array slice to iterate on\n const start =\n element.start === undefined\n ? 0\n : element.start < 0\n ? length + element.start\n : element.start;\n const end =\n element.end === undefined\n ? length\n : element.end < 0\n ? length + element.end\n : element.end;\n if (\n start < 0 ||\n start >= length ||\n end > length ||\n start >= end\n ) {\n return Left(\n new Error(\n `Array slice out of bounds, start=${element.start}, end=${element.end}`,\n ),\n );\n }\n // Iterate on the array slice\n return Array.from({ length: end - start }, (_, i) => i)\n .map(\n (i) => offset + (i + start) * element.itemSize * CHUNK_SIZE,\n )\n .reduce(\n (acc: Either<Error, Uint8Array[]>, arrayOffset) =>\n acc.chain((values) =>\n this.extractCalldataValueAt(\n data,\n path,\n arrayOffset,\n parentOffset,\n ).map((newValues) => [...values, ...newValues]),\n ),\n Right([]),\n );\n });\n case DataPathElementType.REF:\n // A reference means the current slot points to a new offset in the calldata (a kind of pointer).\n // That offset is relative to its 'parent' element, here named parentOffset.\n // See the examples with dynamic types at the top of this file for more informations.\n if (\n this.getU256(data.slice(offset))\n .ifJust((reference) => (offset = parentOffset + reference))\n .isNothing()\n ) {\n return Left(new Error(`Invalid ref at offset ${offset}`));\n }\n break;\n case DataPathElementType.LEAF:\n // A leaf means we reached the end of the path.\n // We have to check the leaf type to know how to extract the data.\n switch (element.leafType) {\n case DataPathLeafType.ARRAY_LEAF:\n return Left(\n new Error(\"Array leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.TUPLE_LEAF:\n return Left(\n new Error(\"Tuple leaf is not supported in v1 of protocol\"),\n );\n case DataPathLeafType.STATIC_LEAF:\n // A static leaf is the chunk of current offset (data of static size)\n return this.getSlice(data, offset, CHUNK_SIZE).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n case DataPathLeafType.DYNAMIC_LEAF:\n // A dynamic leaf is composed of a length followed by the actual value\n // (data of variable size such as a string).\n // See the examples with dynamic types at the top of this file for more informations.\n return this.getU256(data.slice(offset))\n .toEither(new Error(`Invalid leaf length at offset ${offset}`))\n .chain((length) => {\n // Skip dynamic leaf length\n offset += CHUNK_SIZE;\n return this.getSlice(data, offset, length).chain((leaf) => {\n if (leafSlice === null) {\n return Right([leaf]);\n } else {\n return this.sliceLeaf(leaf, leafSlice);\n }\n });\n });\n }\n break;\n case DataPathElementType.SLICE:\n // If the last element was a slice, it was already popped at the beginning of this function\n return Left(\n new Error(\"Slice can only be used as last element of the path\"),\n );\n }\n }\n // We should have early-returned on a leaf\n return Left(new Error(\"Path did not resolve to a leaf element\"));\n }\n\n private sliceLeaf(\n data: Uint8Array,\n leafSlice: DataPathElementSlice,\n ): Either<Error, Uint8Array[]> {\n const length = data.length;\n const start =\n leafSlice.start === undefined\n ? 0\n : leafSlice.start < 0\n ? length + leafSlice.start\n : leafSlice.start;\n const end =\n leafSlice.end === undefined\n ? length\n : leafSlice.end < 0\n ? length + leafSlice.end\n : leafSlice.end;\n if (start >= end) {\n return Left(new Error(`invalid leaf slice: start ${start}, end ${end}`));\n }\n return this.getSlice(data, start, end - start).map((leaf) => [leaf]);\n }\n\n getSlice(\n data: Uint8Array,\n offset: number,\n size: number,\n ): Either<Error, Uint8Array> {\n return offset < 0 || data.length < offset + size\n ? Left(\n new Error(\n `calldata too small to slice at offset ${offset} of length ${size}`,\n ),\n )\n : Right(data.slice(offset, offset + size));\n }\n\n getU256(data: Uint8Array): Maybe<number> {\n // https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding\n return Maybe.fromNullable(new ByteArrayParser(data).extract256BitUInt(true))\n .filter((res) => res <= Number.MAX_SAFE_INTEGER)\n .map((res) => Number(res));\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["ContainerPath", "DataPathElementType", "DataPathLeafType", "ByteArrayBuilder", "ByteArrayParser", "hexaStringToBuffer", "injectable", "Left", "Maybe", "Right", "SELECTOR_LENGTH", "CHUNK_SIZE", "TransactionParserService", "subset", "path", "to", "data", "value", "ContainerPath", "Left", "Maybe", "str", "hexaStringToBuffer", "bytes", "num", "ByteArrayBuilder", "calldata", "offset", "parentOffset", "lastElement", "leafSlice", "DataPathElementType", "element", "length", "start", "end", "_", "i", "acc", "arrayOffset", "values", "newValues", "Right", "reference", "DataPathLeafType", "leaf", "size", "ByteArrayParser", "res", "__decorateClass", "injectable"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerPath as r}from"@ledgerhq/context-module";import{bufferToHexaString as o,ByteArrayBuilder as p,hexaStringToBuffer as l}from"@ledgerhq/device-management-kit";import{TransactionParserService as E}from"./TransactionParserService";describe("TransactionParserService",()=>{const c=new E,i=l("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),s=81818275935222000n,n=new p().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:o(i),value:s},e=c.extractValue(a,r.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([i])}),it("should extract VALUE of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:o(i),value:s},e=c.extractValue(a,r.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([n])}),it("Unavailable container fields",()=>{const a={chainId:1,data:"0x",selector:"0x",to:void 0,from:void 0,value:s},e=c.extractValue(a,r.FROM),t=c.extractValue(a,r.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const a=l("0xdeadbeef"),e=c.extractValue(a,r.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001",selector:"0xcdcd77c",to:o(i),value:s};it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const a={to:o(i),value:s,chainId:1,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000",selector:"0x2289b18c"};it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000002"),l("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6f6e65"),l("0x74776f"),l("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6f6e65"),l("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006",selector:"0xcdcd77c",to:o(i),value:s};it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000003"),l("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000002"),l("0x0000000000000000000000000000000000000000000000000000000000000004"),l("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const a={chainId:1,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002",selector:"0x2289b18c",to:o(i),value:s};it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})})});
1
+ import{ContainerPath as r}from"@ledgerhq/context-module";import{bufferToHexaString as o,ByteArrayBuilder as p,hexaStringToBuffer as l}from"@ledgerhq/device-management-kit";import{TransactionParserService as E}from"./TransactionParserService";describe("TransactionParserService",()=>{const c=new E,i=l("0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f"),s=81818275935222000n,n=new p().add256BitUIntToData(81818275935222000n).build();beforeEach(()=>{vi.clearAllMocks()}),describe("Container paths",()=>{it("should extract TO of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:o(i),value:s},e=c.extractValue(a,r.TO);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([i])}),it("should extract VALUE of the container",()=>{const a={chainId:1,data:"0x",selector:"0x",to:o(i),value:s},e=c.extractValue(a,r.VALUE);expect(e.isRight()).toStrictEqual(!0),expect(e.unsafeCoerce()).toStrictEqual([n])}),it("Unavailable container fields",()=>{const a={chainId:1,data:"0x",selector:"0x",to:void 0,from:void 0,value:s},e=c.extractValue(a,r.FROM),t=c.extractValue(a,r.TO);expect(e.isRight()).toStrictEqual(!1),expect(t.isRight()).toStrictEqual(!1)}),it("invalid transaction format",()=>{const a=l("0xdeadbeef"),e=c.extractValue(a,r.FROM);expect(e.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with static elements",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001",selector:"0xcdcd77c",to:o(i),value:s};it("Extract the first element",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000045")])}),it("Extract the second element",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001")])}),it("Slice the static leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"},{type:"SLICE",start:-4}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x00000045")])}),it("Out of bounds",()=>{const e=[{type:"TUPLE",offset:2},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Data paths in a calldata with dynamic elements",()=>{const a={to:o(i),value:s,chainId:1,data:"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000",selector:"0x2289b18c"};it("Extract all the elements of x, concatenated together",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000002"),l("0x0000000000000000000000000000000000000000000000000000000000000003")])}),it("Extract all the elements of x[0]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Extract all the elements of x[0:-1][-1:]",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:-1},{type:"REF"},{type:"ARRAY",itemSize:1,start:-1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000002")])}),it("Array out of bounds",()=>{const e=[{type:"TUPLE",offset:0},{type:"REF"},{type:"ARRAY",itemSize:1,start:0,end:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Extract all the elements of x[1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6f6e65"),l("0x74776f"),l("0x7468726565")])}),it("Extract all the elements of x[1][:2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,end:2},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6f6e65"),l("0x74776f")])}),it("Slice the dynamic leaf with [1:-2]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:1,end:-2}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x6872")])}),it("Slice the dynamic leaf with [-1:]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:-1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x65")])}),it("Slice the dynamic leaf with [:1]",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"ARRAY",itemSize:1,start:2,end:3},{type:"REF"},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",end:1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x74")])}),it("Error no leaf",()=>{const e=[{type:"TUPLE",offset:1}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error slice not at the end",()=>{const e=[{type:"TUPLE",offset:1},{type:"SLICE",start:0,end:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Error empty slice",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"},{type:"SLICE",start:0,end:0}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})}),describe("Array of tuples, with bigger itemSize",()=>{const a={chainId:1,data:"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006",selector:"0xcdcd77c",to:o(i),value:s};it("Extract the first tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:0},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000001"),l("0x0000000000000000000000000000000000000000000000000000000000000003"),l("0x0000000000000000000000000000000000000000000000000000000000000005")])}),it("Extract the second tuple element of all array elements",()=>{const e=[{type:"REF"},{type:"ARRAY",itemSize:2},{type:"TUPLE",offset:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([l("0x0000000000000000000000000000000000000000000000000000000000000002"),l("0x0000000000000000000000000000000000000000000000000000000000000004"),l("0x0000000000000000000000000000000000000000000000000000000000000006")])})}),describe("Malformed calldata",()=>{const a={chainId:1,data:"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002",selector:"0x2289b18c",to:o(i),value:s};it("Dynamic leaf length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than dynamic leaf",()=>{const e=[{type:"TUPLE",offset:0},{type:"LEAF",leafType:"DYNAMIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Array length overflow",()=>{const e=[{type:"TUPLE",offset:1},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Calldata smaller than array length",()=>{const e=[{type:"TUPLE",offset:0},{type:"ARRAY",itemSize:1},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Ref out of bounds",()=>{const e=[{type:"TUPLE",offset:1},{type:"REF"},{type:"LEAF",leafType:"STATIC_LEAF"}],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)}),it("Empty array",()=>{const e=[],t=c.extractValue(a,e);expect(t.isRight()).toStrictEqual(!1)})})});
2
2
  //# sourceMappingURL=TransactionParserService.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/transaction/service/parser/TransactionParserService.test.ts"],
4
- "sourcesContent": ["import {\n ContainerPath,\n type DataPathElement,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: undefined,\n from: undefined,\n value: VALUE,\n };\n\n // WHEN\n const from = parser.extractValue(subset, ContainerPath.FROM);\n const to = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n \"0xdeadbeef\",\n ) as unknown as TransactionSubset;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const subset = {\n to: bufferToHexaString(TO),\n value: VALUE,\n chainId: 1,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n selector: \"0x2289b18c\",\n };\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const subset = {\n chainId: 1,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0x2289b18c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ContainerPath,\n type DataPathElement,\n type TransactionSubset,\n} from \"@ledgerhq/context-module\";\nimport {\n bufferToHexaString,\n ByteArrayBuilder,\n hexaStringToBuffer,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { TransactionParserService } from \"./TransactionParserService\";\n\ndescribe(\"TransactionParserService\", () => {\n const parser = new TransactionParserService();\n\n const TO = hexaStringToBuffer(\"0x3f32cF0B1DF94157EE1c3876c49BE3732C92a98f\")!;\n const VALUE = 81818275935222000n;\n const VALUE_BIN = new ByteArrayBuilder()\n .add256BitUIntToData(81818275935222000n)\n .build();\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"Container paths\", () => {\n it(\"should extract TO of the container\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([TO]);\n });\n\n it(\"should extract VALUE of the container\", () => {\n // GIVEN\n\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n // WHEN\n const value = parser.extractValue(subset, ContainerPath.VALUE);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([VALUE_BIN]);\n });\n\n it(\"Unavailable container fields\", () => {\n // GIVEN\n const subset = {\n chainId: 1,\n data: \"0x\",\n selector: \"0x\",\n to: undefined,\n from: undefined,\n value: VALUE,\n };\n\n // WHEN\n const from = parser.extractValue(subset, ContainerPath.FROM);\n const to = parser.extractValue(subset, ContainerPath.TO);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n expect(to.isRight()).toStrictEqual(false);\n });\n\n it(\"invalid transaction format\", () => {\n // GIVEN\n const transaction = hexaStringToBuffer(\n \"0xdeadbeef\",\n ) as unknown as TransactionSubset;\n\n // WHEN\n const from = parser.extractValue(transaction, ContainerPath.FROM);\n\n // THEN\n expect(from.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with static elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function baz(uint32 x, bool y)\n // parameters: x = 69\n // y = true\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000045\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000001\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000045\",\n )!,\n ]);\n });\n\n it(\"Extract the second element\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n ]);\n });\n\n it(\"Slice the static leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -4,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x00000045\")!,\n ]);\n });\n\n it(\"Out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 2,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Data paths in a calldata with dynamic elements\", () => {\n // Example from abi specification:\n // https://docs.soliditylang.org/en/latest/abi-spec.html\n //\n // function g(uint256[][] x, string[] x)\n // parameters: x = [[1, 2], [3]]\n // y = [\"one\", \"two\", \"three\"]\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000140: offset of y\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000040: offset of x[0]\n // [4] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of x[1]\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000002: length of x[0]\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000001: value of x[0][0] = 1\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000002: value of x[0][1] = 2\n // [8] 0x0000000000000000000000000000000000000000000000000000000000000001: length of x[1]\n // [9] 0x0000000000000000000000000000000000000000000000000000000000000003: value of x[1][0] = 3\n // [10] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y\n // [11] 0x0000000000000000000000000000000000000000000000000000000000000060: offset of y[0]\n // [12] 0x00000000000000000000000000000000000000000000000000000000000000a0: offset of y[1]\n // [13] 0x00000000000000000000000000000000000000000000000000000000000000e0: offset of y[2]\n // [14] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[0]\n // [15] 0x6f6e650000000000000000000000000000000000000000000000000000000000: value of y[0] = \"one\"\n // [16] 0x0000000000000000000000000000000000000000000000000000000000000003: length of y[1]\n // [17] 0x74776f0000000000000000000000000000000000000000000000000000000000: value of y[1] = \"two\"\n // [18] 0x0000000000000000000000000000000000000000000000000000000000000005: length of y[2]\n // [19] 0x7468726565000000000000000000000000000000000000000000000000000000: value of y[2] = \"three\"\n const subset = {\n to: bufferToHexaString(TO),\n value: VALUE,\n chainId: 1,\n data: \"0x2289b18c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000036f6e650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000374776f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057468726565000000000000000000000000000000000000000000000000000000\",\n selector: \"0x2289b18c\",\n };\n it(\"Extract all the elements of x, concatenated together\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Extract all the elements of x[0:-1][-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: -1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: -1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n ]);\n });\n\n it(\"Array out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 0,\n end: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Extract all the elements of x[1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n hexaStringToBuffer(\"0x7468726565\")!,\n ]);\n });\n\n it(\"Extract all the elements of x[1][:2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n end: 2,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6f6e65\")!,\n hexaStringToBuffer(\"0x74776f\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [1:-2]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 1,\n end: -2,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\"0x6872\")!,\n ]);\n });\n\n it(\"Slice the dynamic leaf with [-1:]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: -1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x65\")!]);\n });\n\n it(\"Slice the dynamic leaf with [:1]\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n start: 2,\n end: 3,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n end: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([hexaStringToBuffer(\"0x74\")!]);\n });\n\n it(\"Error no leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error slice not at the end\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Error empty slice\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n {\n type: \"SLICE\",\n start: 0,\n end: 0,\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n\n describe(\"Array of tuples, with bigger itemSize\", () => {\n // Example constructed with an array of tuples just for the tests\n //\n // function baz((uint32, uint32) myTuple[])\n // parameters: myTuple = [ (1, 2), (3, 4), (5, 6) ]\n // calldata:\n // 0xcdcd77c0\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000020\n // [1] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [2] 0x0000000000000000000000000000000000000000000000000000000000000001\n // [3] 0x0000000000000000000000000000000000000000000000000000000000000002\n // [4] 0x0000000000000000000000000000000000000000000000000000000000000003\n // [5] 0x0000000000000000000000000000000000000000000000000000000000000004\n // [6] 0x0000000000000000000000000000000000000000000000000000000000000005\n // [7] 0x0000000000000000000000000000000000000000000000000000000000000006\n const subset = {\n chainId: 1,\n data: \"0xcdcd77c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006\",\n selector: \"0xcdcd77c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Extract the first tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000005\",\n )!,\n ]);\n });\n\n it(\"Extract the second tuple element of all array elements\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"REF\",\n },\n {\n type: \"ARRAY\",\n itemSize: 2,\n },\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(true);\n expect(value.unsafeCoerce()).toStrictEqual([\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000004\",\n )!,\n hexaStringToBuffer(\n \"0x0000000000000000000000000000000000000000000000000000000000000006\",\n )!,\n ]);\n });\n });\n\n describe(\"Malformed calldata\", () => {\n // Example constructed with invalid data just for the tests\n //\n // calldata:\n // 0x2289b18c\n // [0] 0x0000000000000000000000000000000000000000000000000000000000000080\n // [1] 0xf000000000000000000000000000000000000000000000000000000000000140\n // [2] 0xf000000000000000000000000000000000000000000000000000000000000002\n const subset = {\n chainId: 1,\n data: \"0x2289b18c0000000000000000000000000000000000000000000000000000000000000080f000000000000000000000000000000000000000000000000000000000000140f000000000000000000000000000000000000000000000000000000000000002\",\n selector: \"0x2289b18c\",\n to: bufferToHexaString(TO),\n value: VALUE,\n };\n\n it(\"Dynamic leaf length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than dynamic leaf\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"LEAF\",\n leafType: \"DYNAMIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Array length overflow\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Calldata smaller than array length\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 0,\n },\n {\n type: \"ARRAY\",\n itemSize: 1,\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Ref out of bounds\", () => {\n // GIVEN\n const path: DataPathElement[] = [\n {\n type: \"TUPLE\",\n offset: 1,\n },\n {\n type: \"REF\",\n },\n {\n type: \"LEAF\",\n leafType: \"STATIC_LEAF\",\n },\n ];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n\n it(\"Empty array\", () => {\n // GIVEN\n const path: DataPathElement[] = [];\n\n // WHEN\n const value = parser.extractValue(subset, path);\n\n // THEN\n expect(value.isRight()).toStrictEqual(false);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["ContainerPath", "bufferToHexaString", "ByteArrayBuilder", "hexaStringToBuffer", "TransactionParserService", "parser", "TO", "VALUE", "VALUE_BIN", "subset", "value", "from", "to", "transaction", "path"]
7
7
  }
@@ -1,39 +1,4 @@
1
1
  {
2
- "name": "@ledgerhq/device-signer-kit-ethereum",
3
- "version": "1.6.0",
4
- "private": false,
5
- "license": "Apache-2.0",
6
- "exports": {
7
- ".": {
8
- "types": "./lib/types/index.d.ts",
9
- "import": "./lib/esm/index.js",
10
- "require": "./lib/cjs/index.js"
11
- },
12
- "./*": {
13
- "types": "./lib/types/*",
14
- "import": "./lib/esm/*",
15
- "require": "./lib/cjs/*"
16
- }
17
- },
18
- "files": [
19
- "./lib"
20
- ],
21
- "scripts": {
22
- "prebuild": "rimraf lib",
23
- "build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
24
- "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
25
- "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
26
- "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\"",
27
- "lint": "eslint",
28
- "lint:fix": "pnpm lint --fix",
29
- "postpack": "find . -name '*.tgz' -exec cp {} ../../../dist/ \\; ",
30
- "prettier": "prettier . --check",
31
- "prettier:fix": "prettier . --write",
32
- "typecheck": "tsc --noEmit",
33
- "test": "vitest run",
34
- "test:watch": "vitest",
35
- "test:coverage": "vitest run --coverage"
36
- },
37
2
  "dependencies": {
38
3
  "@ledgerhq/signer-utils": "workspace:*",
39
4
  "ethers": "catalog:",
@@ -46,8 +11,8 @@
46
11
  "devDependencies": {
47
12
  "@ledgerhq/context-module": "workspace:*",
48
13
  "@ledgerhq/device-management-kit": "workspace:*",
49
- "@ledgerhq/ldmk-tool": "workspace:*",
50
14
  "@ledgerhq/eslint-config-dsdk": "workspace:*",
15
+ "@ledgerhq/ldmk-tool": "workspace:*",
51
16
  "@ledgerhq/prettier-config-dsdk": "workspace:*",
52
17
  "@ledgerhq/tsconfig-dsdk": "workspace:*",
53
18
  "@ledgerhq/vitest-config-dmk": "workspace:*",
@@ -55,8 +20,47 @@
55
20
  "rxjs": "catalog:",
56
21
  "ts-node": "catalog:"
57
22
  },
23
+ "exports": {
24
+ ".": {
25
+ "import": "./lib/esm/index.js",
26
+ "require": "./lib/cjs/index.js",
27
+ "types": "./lib/types/index.d.ts"
28
+ },
29
+ "./*": {
30
+ "import": "./lib/esm/*",
31
+ "require": "./lib/cjs/*",
32
+ "types": "./lib/types/*"
33
+ }
34
+ },
35
+ "files": [
36
+ "./lib"
37
+ ],
38
+ "license": "Apache-2.0",
39
+ "name": "@ledgerhq/device-signer-kit-ethereum",
58
40
  "peerDependencies": {
59
41
  "@ledgerhq/context-module": "workspace:*",
60
42
  "@ledgerhq/device-management-kit": "workspace:*"
61
- }
43
+ },
44
+ "private": false,
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
48
+ },
49
+ "scripts": {
50
+ "build": "pnpm ldmk-tool build --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
51
+ "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
52
+ "lint": "eslint",
53
+ "lint:fix": "pnpm lint --fix",
54
+ "postpack": "find . -name '*.tgz' -exec cp {} ../../../dist/ \\; ",
55
+ "prebuild": "rimraf lib",
56
+ "prettier": "prettier . --check",
57
+ "prettier:fix": "prettier . --write",
58
+ "test": "vitest run",
59
+ "test:coverage": "vitest run --coverage",
60
+ "test:watch": "vitest",
61
+ "typecheck": "tsc --noEmit",
62
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
63
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
64
+ },
65
+ "version": "0.0.0-trusted-names-native-transfer-1-20260121120757"
62
66
  }
@@ -3,8 +3,10 @@ import { type SignDelegationAuthorizationDAReturnType } from "./app-binder/SignD
3
3
  import { type SignPersonalMessageDAReturnType } from "./app-binder/SignPersonalMessageDeviceActionTypes";
4
4
  import { type SignTransactionDAReturnType } from "./app-binder/SignTransactionDeviceActionTypes";
5
5
  import { type SignTypedDataDAReturnType } from "./app-binder/SignTypedDataDeviceActionTypes";
6
+ import { type VerifySafeAddressDAReturnType } from "./app-binder/VerifySafeAddressDeviceActionTypes";
6
7
  import { type AddressOptions } from "./model/AddressOptions";
7
8
  import { type MessageOptions } from "./model/MessageOptions";
9
+ import { type SafeAddressOptions } from "./model/SafeAddressOptions";
8
10
  import { type TransactionOptions } from "./model/TransactionOptions";
9
11
  import { type TypedData } from "./model/TypedData";
10
12
  import { type TypedDataOptions } from "./model/TypedDataOptions";
@@ -13,6 +15,7 @@ export interface SignerEth {
13
15
  signMessage: (derivationPath: string, message: string | Uint8Array, options?: MessageOptions) => SignPersonalMessageDAReturnType;
14
16
  signTypedData: (derivationPath: string, typedData: TypedData, options?: TypedDataOptions) => SignTypedDataDAReturnType;
15
17
  getAddress: (derivationPath: string, options?: AddressOptions) => GetAddressDAReturnType;
18
+ verifySafeAddress: (safeContractAddress: string, options?: SafeAddressOptions) => VerifySafeAddressDAReturnType;
16
19
  signDelegationAuthorization: (derivationPath: string, chainId: number, contractAddress: string, nonce: number) => SignDelegationAuthorizationDAReturnType;
17
20
  }
18
21
  //# sourceMappingURL=SignerEth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SignerEth.d.ts","sourceRoot":"","sources":["../../../src/api/SignerEth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,KAAK,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AAChH,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AAC5G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,CACf,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,kBAAkB,KACzB,2BAA2B,CAAC;IACjC,WAAW,EAAE,CACX,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,OAAO,CAAC,EAAE,cAAc,KACrB,+BAA+B,CAAC;IACrC,aAAa,EAAE,CACb,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,gBAAgB,KACvB,yBAAyB,CAAC;IAC/B,UAAU,EAAE,CACV,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,cAAc,KACrB,sBAAsB,CAAC;IAC5B,2BAA2B,EAAE,CAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,KACV,uCAAuC,CAAC;CAC9C"}
1
+ {"version":3,"file":"SignerEth.d.ts","sourceRoot":"","sources":["../../../src/api/SignerEth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,KAAK,uCAAuC,EAAE,MAAM,kDAAkD,CAAC;AAChH,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,sDAAsD,CAAC;AAC5G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACxG,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,CACf,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,UAAU,EACvB,OAAO,CAAC,EAAE,kBAAkB,KACzB,2BAA2B,CAAC;IACjC,WAAW,EAAE,CACX,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,OAAO,CAAC,EAAE,cAAc,KACrB,+BAA+B,CAAC;IACrC,aAAa,EAAE,CACb,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,gBAAgB,KACvB,yBAAyB,CAAC;IAC/B,UAAU,EAAE,CACV,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,cAAc,KACrB,sBAAsB,CAAC;IAC5B,iBAAiB,EAAE,CACjB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,kBAAkB,KACzB,6BAA6B,CAAC;IACnC,2BAA2B,EAAE,CAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,KACV,uCAAuC,CAAC;CAC9C"}
@@ -1,4 +1,4 @@
1
- import { type ClearSignContextSuccess, type ContextModule, type TransactionSubset } from "@ledgerhq/context-module";
1
+ import { type ContextModule, type TransactionSubset } from "@ledgerhq/context-module";
2
2
  import { type CommandErrorResult, type DeviceActionState, type ExecuteDeviceActionReturnType, type OpenAppDAError, type OpenAppDARequiredInteraction, type UserInteractionRequired } from "@ledgerhq/device-management-kit";
3
3
  import { type GetConfigCommandResponse } from "../app-binder/GetConfigCommandTypes";
4
4
  import { type ClearSigningType } from "../model/ClearSigningType";
@@ -6,17 +6,20 @@ import { type Signature } from "../model/Signature";
6
6
  import { type TransactionOptions } from "../model/TransactionOptions";
7
7
  import { type TransactionType } from "../model/TransactionType";
8
8
  import { type EthErrorCodes } from "../../internal/app-binder/command/utils/ethAppErrors";
9
+ import { type ContextWithSubContexts } from "../../internal/app-binder/task/BuildFullContextsTask";
9
10
  import { type TransactionMapperService } from "../../internal/transaction/service/mapper/TransactionMapperService";
10
11
  import { type TransactionParserService } from "../../internal/transaction/service/parser/TransactionParserService";
11
12
  export declare enum SignTransactionDAStep {
12
13
  OPEN_APP = "signer.eth.steps.openApp",
13
14
  GET_APP_CONFIG = "signer.eth.steps.getAppConfig",
15
+ GET_ADDRESS = "signer.eth.steps.getAddress",
14
16
  WEB3_CHECKS_OPT_IN = "signer.eth.steps.web3ChecksOptIn",
15
17
  WEB3_CHECKS_OPT_IN_RESULT = "signer.eth.steps.web3ChecksOptInResult",
16
- PRE_BUILD_CONTEXT = "signer.eth.steps.preBuildContext",
17
- BUILD_CONTEXT = "signer.eth.steps.buildContext",
18
- BUILD_SUB_CONTEXT_AND_PROVIDE = "signer.eth.steps.buildSubContextAndProvide",
19
- SIGN_TRANSACTION = "signer.eth.steps.signTransaction"
18
+ PARSE_TRANSACTION = "signer.eth.steps.parseTransaction",
19
+ BUILD_CONTEXTS = "signer.eth.steps.buildContexts",
20
+ PROVIDE_CONTEXTS = "signer.eth.steps.provideContexts",
21
+ SIGN_TRANSACTION = "signer.eth.steps.signTransaction",
22
+ BLIND_SIGN_TRANSACTION_FALLBACK = "signer.eth.steps.blindSignTransactionFallback"
20
23
  }
21
24
  export type SignTransactionDAOutput = Signature;
22
25
  export type SignTransactionDAInput = {
@@ -41,11 +44,10 @@ export type SignTransactionDAState = DeviceActionState<SignTransactionDAOutput,
41
44
  export type SignTransactionDAInternalState = {
42
45
  readonly error: SignTransactionDAError | null;
43
46
  readonly appConfig: GetConfigCommandResponse | null;
44
- readonly clearSignContexts: ClearSignContextSuccess[] | null;
45
- readonly clearSignContextsOptional: ClearSignContextSuccess[] | null;
46
47
  readonly subset: TransactionSubset | null;
47
- readonly transactionType: TransactionType | null;
48
+ readonly contexts: ContextWithSubContexts[];
48
49
  readonly clearSigningType: ClearSigningType | null;
50
+ readonly transactionType: TransactionType | null;
49
51
  readonly signature: Signature | null;
50
52
  };
51
53
  export type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<SignTransactionDAOutput, SignTransactionDAError, SignTransactionDAIntermediateValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"SignTransactionDeviceActionTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignTransactionDeviceActionTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,13 @@ import { type Signature } from "../model/Signature";
5
5
  import { type TypedData } from "../model/TypedData";
6
6
  import { type EthErrorCodes } from "../../internal/app-binder/command/utils/ethAppErrors";
7
7
  import type { ProvideEIP712ContextTaskArgs } from "../../internal/app-binder/task/ProvideEIP712ContextTask";
8
+ import { type TransactionMapperService } from "../../internal/transaction/service/mapper/TransactionMapperService";
9
+ import { type TransactionParserService } from "../../internal/transaction/service/parser/TransactionParserService";
8
10
  import { type TypedDataParserService } from "../../internal/typed-data/service/TypedDataParserService";
9
11
  export declare enum SignTypedDataDAStateStep {
10
12
  OPEN_APP = "signer.eth.steps.openApp",
11
13
  GET_APP_CONFIG = "signer.eth.steps.getAppConfig",
14
+ GET_ADDRESS = "signer.eth.steps.getAddress",
12
15
  WEB3_CHECKS_OPT_IN = "signer.eth.steps.web3ChecksOptIn",
13
16
  WEB3_CHECKS_OPT_IN_RESULT = "signer.eth.steps.web3ChecksOptInResult",
14
17
  BUILD_CONTEXT = "signer.eth.steps.buildContext",
@@ -22,6 +25,8 @@ export type SignTypedDataDAInput = {
22
25
  readonly derivationPath: string;
23
26
  readonly data: TypedData;
24
27
  readonly parser: TypedDataParserService;
28
+ readonly transactionMapper: TransactionMapperService;
29
+ readonly transactionParser: TransactionParserService;
25
30
  readonly contextModule: ContextModule;
26
31
  readonly skipOpenApp: boolean;
27
32
  };
@@ -39,6 +44,7 @@ export type SignTypedDataDAState = DeviceActionState<SignTypedDataDAOutput, Sign
39
44
  export type SignTypedDataDAInternalState = {
40
45
  readonly error: SignTypedDataDAError | null;
41
46
  readonly appConfig: GetConfigCommandResponse | null;
47
+ readonly from: string | null;
42
48
  readonly typedDataContext: ProvideEIP712ContextTaskArgs | null;
43
49
  readonly signature: Signature | null;
44
50
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SignTypedDataDeviceActionTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/app-binder/SignTypedDataDeviceActionTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AACvG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAElG,oBAAY,wBAAwB;IAClC,QAAQ,6BAA6B;IACrC,cAAc,kCAAkC;IAChD,kBAAkB,qCAAqC;IACvD,yBAAyB,2CAA2C;IACpE,aAAa,kCAAkC;IAC/C,eAAe,oCAAoC;IACnD,uBAAuB,2CAA2C;IAClE,eAAe,mCAAmC;IAClD,sBAAsB,yCAAyC;CAChE;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,kBAAkB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/C,KAAK,kCAAkC,GACnC,4BAA4B,GAC5B,uBAAuB,CAAC,eAAe,GACvC,uBAAuB,CAAC,aAAa,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GACxC;IACE,uBAAuB,EAAE,kCAAkC,CAAC;IAC5D,IAAI,EAAE,OAAO,CACX,wBAAwB,EACxB,wBAAwB,CAAC,yBAAyB,CACnD,CAAC;CACH,GACD;IACE,uBAAuB,EAAE,uBAAuB,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,wBAAwB,CAAC,yBAAyB,CAAC;IACzD,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAClD,qBAAqB,EACrB,oBAAoB,EACpB,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CACnE,qBAAqB,EACrB,oBAAoB,EACpB,gCAAgC,CACjC,CAAC"}
1
+ {"version":3,"file":"SignTypedDataDeviceActionTypes.d.ts","sourceRoot":"","sources":["../../../../src/api/app-binder/SignTypedDataDeviceActionTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,cAAc,EACnB,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAC;AACvG,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,+DAA+D,CAAC;AAC9G,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAElG,oBAAY,wBAAwB;IAClC,QAAQ,6BAA6B;IACrC,cAAc,kCAAkC;IAChD,WAAW,gCAAgC;IAC3C,kBAAkB,qCAAqC;IACvD,yBAAyB,2CAA2C;IACpE,aAAa,kCAAkC;IAC/C,eAAe,oCAAoC;IACnD,uBAAuB,2CAA2C;IAClE,eAAe,mCAAmC;IAClD,sBAAsB,yCAAyC;CAChE;AAED,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,kBAAkB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/C,KAAK,kCAAkC,GACnC,4BAA4B,GAC5B,uBAAuB,CAAC,eAAe,GACvC,uBAAuB,CAAC,aAAa,CAAC;AAE1C,MAAM,MAAM,gCAAgC,GACxC;IACE,uBAAuB,EAAE,kCAAkC,CAAC;IAC5D,IAAI,EAAE,OAAO,CACX,wBAAwB,EACxB,wBAAwB,CAAC,yBAAyB,CACnD,CAAC;CACH,GACD;IACE,uBAAuB,EAAE,uBAAuB,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,wBAAwB,CAAC,yBAAyB,CAAC;IACzD,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAClD,qBAAqB,EACrB,oBAAoB,EACpB,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC/D,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,6BAA6B,CACnE,qBAAqB,EACrB,oBAAoB,EACpB,gCAAgC,CACjC,CAAC"}