@ledgerhq/device-signer-kit-tron 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +41 -0
  2. package/lib/cjs/api/SignerTrxBuilder.js +1 -1
  3. package/lib/cjs/api/SignerTrxBuilder.js.map +3 -3
  4. package/lib/cjs/api/SignerTrxBuilder.test.js +1 -1
  5. package/lib/cjs/api/SignerTrxBuilder.test.js.map +3 -3
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  7. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +3 -3
  8. package/lib/cjs/api/index.js +1 -1
  9. package/lib/cjs/api/index.js.map +3 -3
  10. package/lib/cjs/api/model/TronAddressBook.js +1 -1
  11. package/lib/cjs/api/model/TronAddressBook.js.map +3 -3
  12. package/lib/cjs/internal/DefaultSignerTrx.js +1 -1
  13. package/lib/cjs/internal/DefaultSignerTrx.js.map +3 -3
  14. package/lib/cjs/internal/app-binder/TronAppBinder.js +1 -1
  15. package/lib/cjs/internal/app-binder/TronAppBinder.js.map +3 -3
  16. package/lib/cjs/internal/app-binder/TronAppBinder.test.js +1 -1
  17. package/lib/cjs/internal/app-binder/TronAppBinder.test.js.map +3 -3
  18. package/lib/cjs/internal/app-binder/TronApplicationResolver.js +2 -0
  19. package/lib/cjs/internal/app-binder/TronApplicationResolver.js.map +7 -0
  20. package/lib/cjs/internal/app-binder/TronApplicationResolver.test.js +2 -0
  21. package/lib/cjs/internal/app-binder/TronApplicationResolver.test.js.map +7 -0
  22. package/lib/cjs/internal/app-binder/constants.js +1 -1
  23. package/lib/cjs/internal/app-binder/constants.js.map +3 -3
  24. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +2 -0
  25. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +7 -0
  26. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +2 -0
  27. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +7 -0
  28. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
  29. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
  30. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
  31. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
  32. package/lib/cjs/internal/app-binder/services/TransactionSerializer.js +1 -1
  33. package/lib/cjs/internal/app-binder/services/TransactionSerializer.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/services/TransactionSerializer.test.js +1 -1
  35. package/lib/cjs/internal/app-binder/services/TransactionSerializer.test.js.map +3 -3
  36. package/lib/cjs/internal/app-binder/task/GetTokenPayloadsTask.js +2 -0
  37. package/lib/cjs/internal/app-binder/task/GetTokenPayloadsTask.js.map +7 -0
  38. package/lib/cjs/internal/app-binder/task/GetTokenPayloadsTask.test.js +2 -0
  39. package/lib/cjs/internal/app-binder/task/GetTokenPayloadsTask.test.js.map +7 -0
  40. package/lib/cjs/internal/app-binder/task/ProvideContactTask.js +2 -0
  41. package/lib/cjs/internal/app-binder/task/ProvideContactTask.js.map +7 -0
  42. package/lib/cjs/internal/app-binder/task/ProvideContactTask.test.js +2 -0
  43. package/lib/cjs/internal/app-binder/task/ProvideContactTask.test.js.map +7 -0
  44. package/lib/cjs/internal/app-binder/task/SignTransactionTask.js +1 -1
  45. package/lib/cjs/internal/app-binder/task/SignTransactionTask.js.map +3 -3
  46. package/lib/cjs/internal/app-binder/task/SignTransactionTask.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/task/SignTransactionTask.test.js.map +3 -3
  48. package/lib/cjs/internal/di.js +1 -1
  49. package/lib/cjs/internal/di.js.map +3 -3
  50. package/lib/cjs/internal/externalTypes.js +1 -1
  51. package/lib/cjs/internal/externalTypes.js.map +2 -2
  52. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.js +2 -0
  53. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.js.map +7 -0
  54. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.test.js +2 -0
  55. package/lib/cjs/internal/shared/utils/buildExternalContactPayload.test.js.map +7 -0
  56. package/lib/cjs/internal/shared/utils/extractTransactionRecipient.js +2 -0
  57. package/lib/cjs/internal/shared/utils/extractTransactionRecipient.js.map +7 -0
  58. package/lib/cjs/internal/shared/utils/extractTransactionRecipient.test.js +2 -0
  59. package/lib/cjs/internal/shared/utils/extractTransactionRecipient.test.js.map +7 -0
  60. package/lib/cjs/internal/shared/utils/tronBase58Check.js +2 -0
  61. package/lib/cjs/internal/shared/utils/tronBase58Check.js.map +7 -0
  62. package/lib/cjs/internal/shared/utils/tronBase58Check.test.js +2 -0
  63. package/lib/cjs/internal/shared/utils/tronBase58Check.test.js.map +7 -0
  64. package/lib/cjs/package.json +6 -1
  65. package/lib/esm/api/SignerTrxBuilder.js +1 -1
  66. package/lib/esm/api/SignerTrxBuilder.js.map +3 -3
  67. package/lib/esm/api/SignerTrxBuilder.test.js +1 -1
  68. package/lib/esm/api/SignerTrxBuilder.test.js.map +3 -3
  69. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
  70. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +4 -4
  71. package/lib/esm/api/index.js +1 -1
  72. package/lib/esm/api/index.js.map +3 -3
  73. package/lib/esm/api/model/TronAddressBook.js +1 -0
  74. package/lib/esm/api/model/TronAddressBook.js.map +4 -4
  75. package/lib/esm/internal/DefaultSignerTrx.js +1 -1
  76. package/lib/esm/internal/DefaultSignerTrx.js.map +3 -3
  77. package/lib/esm/internal/app-binder/TronAppBinder.js +1 -1
  78. package/lib/esm/internal/app-binder/TronAppBinder.js.map +3 -3
  79. package/lib/esm/internal/app-binder/TronAppBinder.test.js +1 -1
  80. package/lib/esm/internal/app-binder/TronAppBinder.test.js.map +3 -3
  81. package/lib/esm/internal/app-binder/TronApplicationResolver.js +2 -0
  82. package/lib/esm/internal/app-binder/TronApplicationResolver.js.map +7 -0
  83. package/lib/esm/internal/app-binder/TronApplicationResolver.test.js +2 -0
  84. package/lib/esm/internal/app-binder/TronApplicationResolver.test.js.map +7 -0
  85. package/lib/esm/internal/app-binder/constants.js +1 -1
  86. package/lib/esm/internal/app-binder/constants.js.map +3 -3
  87. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +2 -0
  88. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +7 -0
  89. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +2 -0
  90. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +7 -0
  91. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +2 -0
  92. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +7 -0
  93. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +2 -0
  94. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +7 -0
  95. package/lib/esm/internal/app-binder/services/TransactionSerializer.js +1 -1
  96. package/lib/esm/internal/app-binder/services/TransactionSerializer.js.map +3 -3
  97. package/lib/esm/internal/app-binder/services/TransactionSerializer.test.js +1 -1
  98. package/lib/esm/internal/app-binder/services/TransactionSerializer.test.js.map +3 -3
  99. package/lib/esm/internal/app-binder/task/GetTokenPayloadsTask.js +2 -0
  100. package/lib/esm/internal/app-binder/task/GetTokenPayloadsTask.js.map +7 -0
  101. package/lib/esm/internal/app-binder/task/GetTokenPayloadsTask.test.js +2 -0
  102. package/lib/esm/internal/app-binder/task/GetTokenPayloadsTask.test.js.map +7 -0
  103. package/lib/esm/internal/app-binder/task/ProvideContactTask.js +2 -0
  104. package/lib/esm/internal/app-binder/task/ProvideContactTask.js.map +7 -0
  105. package/lib/esm/internal/app-binder/task/ProvideContactTask.test.js +2 -0
  106. package/lib/esm/internal/app-binder/task/ProvideContactTask.test.js.map +7 -0
  107. package/lib/esm/internal/app-binder/task/SignTransactionTask.js +1 -1
  108. package/lib/esm/internal/app-binder/task/SignTransactionTask.js.map +3 -3
  109. package/lib/esm/internal/app-binder/task/SignTransactionTask.test.js +1 -1
  110. package/lib/esm/internal/app-binder/task/SignTransactionTask.test.js.map +3 -3
  111. package/lib/esm/internal/di.js +1 -1
  112. package/lib/esm/internal/di.js.map +3 -3
  113. package/lib/esm/internal/externalTypes.js +1 -1
  114. package/lib/esm/internal/externalTypes.js.map +2 -2
  115. package/lib/esm/internal/shared/utils/buildExternalContactPayload.js +2 -0
  116. package/lib/esm/internal/shared/utils/buildExternalContactPayload.js.map +7 -0
  117. package/lib/esm/internal/shared/utils/buildExternalContactPayload.test.js +2 -0
  118. package/lib/esm/internal/shared/utils/buildExternalContactPayload.test.js.map +7 -0
  119. package/lib/esm/internal/shared/utils/extractTransactionRecipient.js +2 -0
  120. package/lib/esm/internal/shared/utils/extractTransactionRecipient.js.map +7 -0
  121. package/lib/esm/internal/shared/utils/extractTransactionRecipient.test.js +2 -0
  122. package/lib/esm/internal/shared/utils/extractTransactionRecipient.test.js.map +7 -0
  123. package/lib/esm/internal/shared/utils/tronBase58Check.js +2 -0
  124. package/lib/esm/internal/shared/utils/tronBase58Check.js.map +7 -0
  125. package/lib/esm/internal/shared/utils/tronBase58Check.test.js +2 -0
  126. package/lib/esm/internal/shared/utils/tronBase58Check.test.js.map +7 -0
  127. package/lib/esm/package.json +6 -1
  128. package/lib/types/api/SignerTrxBuilder.d.ts +12 -1
  129. package/lib/types/api/SignerTrxBuilder.d.ts.map +1 -1
  130. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +25 -1
  131. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  132. package/lib/types/api/index.d.ts +2 -1
  133. package/lib/types/api/index.d.ts.map +1 -1
  134. package/lib/types/api/model/TronAddressBook.d.ts +8 -3
  135. package/lib/types/api/model/TronAddressBook.d.ts.map +1 -1
  136. package/lib/types/internal/DefaultSignerTrx.d.ts +3 -1
  137. package/lib/types/internal/DefaultSignerTrx.d.ts.map +1 -1
  138. package/lib/types/internal/app-binder/TronAppBinder.d.ts +5 -1
  139. package/lib/types/internal/app-binder/TronAppBinder.d.ts.map +1 -1
  140. package/lib/types/internal/app-binder/TronApplicationResolver.d.ts +5 -0
  141. package/lib/types/internal/app-binder/TronApplicationResolver.d.ts.map +1 -0
  142. package/lib/types/internal/app-binder/TronApplicationResolver.test.d.ts +2 -0
  143. package/lib/types/internal/app-binder/TronApplicationResolver.test.d.ts.map +1 -0
  144. package/lib/types/internal/app-binder/constants.d.ts +3 -0
  145. package/lib/types/internal/app-binder/constants.d.ts.map +1 -1
  146. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +35 -0
  147. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -0
  148. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.d.ts +2 -0
  149. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.d.ts.map +1 -0
  150. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +4 -0
  151. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -0
  152. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +15 -0
  153. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -0
  154. package/lib/types/internal/app-binder/services/TransactionSerializer.d.ts +4 -1
  155. package/lib/types/internal/app-binder/services/TransactionSerializer.d.ts.map +1 -1
  156. package/lib/types/internal/app-binder/task/GetTokenPayloadsTask.d.ts +17 -0
  157. package/lib/types/internal/app-binder/task/GetTokenPayloadsTask.d.ts.map +1 -0
  158. package/lib/types/internal/app-binder/task/GetTokenPayloadsTask.test.d.ts +2 -0
  159. package/lib/types/internal/app-binder/task/GetTokenPayloadsTask.test.d.ts.map +1 -0
  160. package/lib/types/internal/app-binder/task/ProvideContactTask.d.ts +16 -0
  161. package/lib/types/internal/app-binder/task/ProvideContactTask.d.ts.map +1 -0
  162. package/lib/types/internal/app-binder/task/ProvideContactTask.test.d.ts +2 -0
  163. package/lib/types/internal/app-binder/task/ProvideContactTask.test.d.ts.map +1 -0
  164. package/lib/types/internal/app-binder/task/SignTransactionTask.d.ts +1 -0
  165. package/lib/types/internal/app-binder/task/SignTransactionTask.d.ts.map +1 -1
  166. package/lib/types/internal/di.d.ts +3 -1
  167. package/lib/types/internal/di.d.ts.map +1 -1
  168. package/lib/types/internal/externalTypes.d.ts +1 -0
  169. package/lib/types/internal/externalTypes.d.ts.map +1 -1
  170. package/lib/types/internal/shared/utils/buildExternalContactPayload.d.ts +11 -0
  171. package/lib/types/internal/shared/utils/buildExternalContactPayload.d.ts.map +1 -0
  172. package/lib/types/internal/shared/utils/buildExternalContactPayload.test.d.ts +2 -0
  173. package/lib/types/internal/shared/utils/buildExternalContactPayload.test.d.ts.map +1 -0
  174. package/lib/types/internal/shared/utils/extractTransactionRecipient.d.ts +2 -0
  175. package/lib/types/internal/shared/utils/extractTransactionRecipient.d.ts.map +1 -0
  176. package/lib/types/internal/shared/utils/extractTransactionRecipient.test.d.ts +2 -0
  177. package/lib/types/internal/shared/utils/extractTransactionRecipient.test.d.ts.map +1 -0
  178. package/lib/types/internal/shared/utils/tronBase58Check.d.ts +4 -0
  179. package/lib/types/internal/shared/utils/tronBase58Check.d.ts.map +1 -0
  180. package/lib/types/internal/shared/utils/tronBase58Check.test.d.ts +2 -0
  181. package/lib/types/internal/shared/utils/tronBase58Check.test.d.ts.map +1 -0
  182. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  183. package/package.json +13 -8
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/api/index.ts"],
4
- "sourcesContent": ["export {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n type GetAppConfigurationDAReturnType,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n type GetECDHSecretDAReturnType,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n type SignTransactionHashDAReturnType,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nexport { type AddressOptions } from \"@api/model/AddressOptions\";\nexport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nexport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nexport { type MessageOptions } from \"@api/model/MessageOptions\";\nexport { type Signature } from \"@api/model/Signature\";\nexport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nexport {\n type TronAddressBook,\n type TronContactGroup,\n type TronExternalAddress,\n type TronLedgerAccountContact,\n} from \"@api/model/TronAddressBook\";\nexport { type SignerTrx } from \"@api/SignerTrx\";\nexport { SignerTrxBuilder } from \"@api/SignerTrxBuilder\";\nexport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\n"],
5
- "mappings": "AAiDA,OAAS,oBAAAA,MAAwB",
6
- "names": ["SignerTrxBuilder"]
4
+ "sourcesContent": ["export {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n type GetAddressDAReturnType,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nexport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n type GetAppConfigurationDAReturnType,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nexport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n type GetECDHSecretDAReturnType,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nexport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n type SignPersonalMessageDAReturnType,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nexport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n type SignTransactionDAReturnType,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n type SignTransactionHashDAReturnType,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nexport { type AddressOptions } from \"@api/model/AddressOptions\";\nexport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nexport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nexport { type MessageOptions } from \"@api/model/MessageOptions\";\nexport { type Signature } from \"@api/model/Signature\";\nexport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nexport {\n EMPTY_TRON_ADDRESS_BOOK,\n type TronAddressBook,\n type TronContactGroup,\n type TronExternalAddress,\n type TronLedgerAccountContact,\n} from \"@api/model/TronAddressBook\";\nexport { type SignerTrx } from \"@api/SignerTrx\";\nexport { SignerTrxBuilder } from \"@api/SignerTrxBuilder\";\nexport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nexport {\n decodeTronAddress,\n encodeTronAddress,\n} from \"@internal/shared/utils/tronBase58Check\";\n"],
5
+ "mappings": "AA0CA,OACE,2BAAAA,MAKK,6BAEP,OAAS,oBAAAC,MAAwB,wBAEjC,OACE,qBAAAC,EACA,qBAAAC,MACK",
6
+ "names": ["EMPTY_TRON_ADDRESS_BOOK", "SignerTrxBuilder", "decodeTronAddress", "encodeTronAddress"]
7
7
  }
@@ -1 +1,2 @@
1
+ const r=Object.freeze({contactGroups:Object.freeze([]),ledgerAccounts:Object.freeze([])});export{r as EMPTY_TRON_ADDRESS_BOOK};
1
2
  //# sourceMappingURL=TronAddressBook.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../../src/api/model/TronAddressBook.ts"],
4
+ "sourcesContent": ["/**\n * A complete snapshot of the Tron-compatible part of the address book.\n *\n * The signer never mutates this snapshot and never persists it: owning,\n * updating and persisting the address book remains the host's responsibility.\n *\n * Only Tron-family contacts and accounts belong here. The host filters by\n * blockchain family while building the snapshot, so the signer's in-flow\n * matching never needs a family discriminator and the models below do not\n * carry one.\n *\n * The Tron models carry no chain id: the firmware specification only includes\n * one for Ethereum.\n */\nexport type TronAddressBook = {\n contactGroups: readonly TronContactGroup[];\n ledgerAccounts: readonly TronLedgerAccountContact[];\n};\n\n/**\n * A named contact and the external addresses registered under it.\n *\n * The group carries the name-level proof material that every one of its\n * addresses reuses, so matching an address always yields its group without a\n * lookup.\n */\nexport type TronContactGroup = {\n contactName: string;\n groupHandle: Uint8Array;\n hmacProof: Uint8Array;\n externalAddresses: readonly TronExternalAddress[];\n};\n\n/**\n * An external address registered under a contact group.\n *\n * The address is a base58 Tron address. The derivation path used at\n * registration time is deliberately absent: the signer never needs it to\n * provide the contact to the device.\n */\nexport type TronExternalAddress = {\n scope: string;\n address: string;\n hmacRest: Uint8Array;\n};\n\n/**\n * A named Ledger account contact, identified by its derivation path rather\n * than by an address string.\n */\nexport type TronLedgerAccountContact = {\n accountName: string;\n derivationPath: string;\n hmacProof: Uint8Array;\n};\n\n/**\n * The book bound when the host supplies none. Matches nothing, and is frozen\n * because every signer in the process shares this one instance.\n */\nexport const EMPTY_TRON_ADDRESS_BOOK: TronAddressBook = Object.freeze({\n contactGroups: Object.freeze([]),\n ledgerAccounts: Object.freeze([]),\n});\n"],
5
+ "mappings": "AA4DO,MAAMA,EAA2C,OAAO,OAAO,CACpE,cAAe,OAAO,OAAO,CAAC,CAAC,EAC/B,eAAgB,OAAO,OAAO,CAAC,CAAC,CAClC,CAAC",
6
+ "names": ["EMPTY_TRON_ADDRESS_BOOK"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{makeContainer as n}from"./di";import{addressTypes as i}from"./use-cases/address/di/addressTypes";import{appConfigurationTypes as o}from"./use-cases/app-configuration/di/appConfigurationTypes";import{ecdhTypes as a}from"./use-cases/ecdh/di/ecdhTypes";import{messageTypes as p}from"./use-cases/message/di/messageTypes";import{transactionTypes as s}from"./use-cases/transaction/di/transactionTypes";class C{_container;constructor({dmk:e,sessionId:t,addressBook:r}){this._container=n({dmk:e,sessionId:t,addressBook:r})}getAddress(e,t){return this._container.get(i.GetAddressUseCase).execute(e,t)}signTransaction(e,t,r){return this._container.get(s.SignTransactionUseCase).execute(e,t,r)}signTransactionHash(e,t,r){return this._container.get(s.SignTransactionHashUseCase).execute(e,t,r)}signPersonalMessage(e,t,r){return this._container.get(p.SignPersonalMessageUseCase).execute(e,t,r)}getAppConfiguration(){return this._container.get(o.GetAppConfigurationUseCase).execute()}getECDHSecret(e,t,r){return this._container.get(a.GetECDHSecretUseCase).execute(e,t,r)}}export{C as DefaultSignerTrx};
1
+ import{makeContainer as o}from"./di";import{addressTypes as i}from"./use-cases/address/di/addressTypes";import{appConfigurationTypes as a}from"./use-cases/app-configuration/di/appConfigurationTypes";import{ecdhTypes as p}from"./use-cases/ecdh/di/ecdhTypes";import{messageTypes as m}from"./use-cases/message/di/messageTypes";import{transactionTypes as n}from"./use-cases/transaction/di/transactionTypes";class d{_container;constructor({dmk:e,sessionId:t,contextModule:r,addressBook:s}){this._container=o({dmk:e,sessionId:t,contextModule:r,addressBook:s})}getAddress(e,t){return this._container.get(i.GetAddressUseCase).execute(e,t)}signTransaction(e,t,r){return this._container.get(n.SignTransactionUseCase).execute(e,t,r)}signTransactionHash(e,t,r){return this._container.get(n.SignTransactionHashUseCase).execute(e,t,r)}signPersonalMessage(e,t,r){return this._container.get(m.SignPersonalMessageUseCase).execute(e,t,r)}getAppConfiguration(){return this._container.get(a.GetAppConfigurationUseCase).execute()}getECDHSecret(e,t,r){return this._container.get(p.GetECDHSecretUseCase).execute(e,t,r)}}export{d as DefaultSignerTrx};
2
2
  //# sourceMappingURL=DefaultSignerTrx.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/internal/DefaultSignerTrx.ts"],
4
- "sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TronAddressBook } from \"@api/model/TronAddressBook\";\nimport { type SignerTrx } from \"@api/SignerTrx\";\nimport { makeContainer } from \"@internal/di\";\nimport { addressTypes } from \"@internal/use-cases/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { appConfigurationTypes } from \"@internal/use-cases/app-configuration/di/appConfigurationTypes\";\nimport { type GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { ecdhTypes } from \"@internal/use-cases/ecdh/di/ecdhTypes\";\nimport { type GetECDHSecretUseCase } from \"@internal/use-cases/ecdh/GetECDHSecretUseCase\";\nimport { messageTypes } from \"@internal/use-cases/message/di/messageTypes\";\nimport { type SignPersonalMessageUseCase } from \"@internal/use-cases/message/SignPersonalMessageUseCase\";\nimport { transactionTypes } from \"@internal/use-cases/transaction/di/transactionTypes\";\nimport { type SignTransactionHashUseCase } from \"@internal/use-cases/transaction/SignTransactionHashUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\ntype DefaultSignerTrxConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n addressBook?: TronAddressBook;\n};\n\nexport class DefaultSignerTrx implements SignerTrx {\n private readonly _container: Container;\n\n constructor({\n dmk,\n sessionId,\n addressBook,\n }: DefaultSignerTrxConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId, addressBook });\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signTransactionHash(\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionHashDAReturnType {\n return this._container\n .get<SignTransactionHashUseCase>(\n transactionTypes.SignTransactionHashUseCase,\n )\n .execute(derivationPath, transactionHash, options);\n }\n\n signPersonalMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignPersonalMessageUseCase>(messageTypes.SignPersonalMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(\n appConfigurationTypes.GetAppConfigurationUseCase,\n )\n .execute();\n }\n\n getECDHSecret(\n derivationPath: string,\n publicKey: Uint8Array,\n options?: EcdhOptions,\n ): GetECDHSecretDAReturnType {\n return this._container\n .get<GetECDHSecretUseCase>(ecdhTypes.GetECDHSecretUseCase)\n .execute(derivationPath, publicKey, options);\n }\n}\n"],
5
- "mappings": "AAkBA,OAAS,iBAAAA,MAAqB,eAC9B,OAAS,gBAAAC,MAAoB,8CAE7B,OAAS,yBAAAC,MAA6B,iEAEtC,OAAS,aAAAC,MAAiB,wCAE1B,OAAS,gBAAAC,MAAoB,8CAE7B,OAAS,oBAAAC,MAAwB,sDAU1B,MAAMC,CAAsC,CAChC,WAEjB,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,YAAAC,CACF,EAAoC,CAClC,KAAK,WAAaT,EAAc,CAAE,IAAAO,EAAK,UAAAC,EAAW,YAAAC,CAAY,CAAC,CACjE,CAEA,WACEC,EACAC,EACwB,CACxB,OAAO,KAAK,WACT,IAAuBV,EAAa,iBAAiB,EACrD,QAAQS,EAAgBC,CAAO,CACpC,CAEA,gBACED,EACAE,EACAD,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4BN,EAAiB,sBAAsB,EACnE,QAAQK,EAAgBE,EAAaD,CAAO,CACjD,CAEA,oBACED,EACAG,EACAF,EACiC,CACjC,OAAO,KAAK,WACT,IACCN,EAAiB,0BACnB,EACC,QAAQK,EAAgBG,EAAiBF,CAAO,CACrD,CAEA,oBACED,EACAI,EACAH,EACiC,CACjC,OAAO,KAAK,WACT,IAAgCP,EAAa,0BAA0B,EACvE,QAAQM,EAAgBI,EAASH,CAAO,CAC7C,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IACCT,EAAsB,0BACxB,EACC,QAAQ,CACb,CAEA,cACEQ,EACAK,EACAJ,EAC2B,CAC3B,OAAO,KAAK,WACT,IAA0BR,EAAU,oBAAoB,EACxD,QAAQO,EAAgBK,EAAWJ,CAAO,CAC/C,CACF",
6
- "names": ["makeContainer", "addressTypes", "appConfigurationTypes", "ecdhTypes", "messageTypes", "transactionTypes", "DefaultSignerTrx", "dmk", "sessionId", "addressBook", "derivationPath", "options", "transaction", "transactionHash", "message", "publicKey"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type EcdhOptions } from \"@api/model/EcdhOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TronAddressBook } from \"@api/model/TronAddressBook\";\nimport { type SignerTrx } from \"@api/SignerTrx\";\nimport { makeContainer } from \"@internal/di\";\nimport { addressTypes } from \"@internal/use-cases/address/di/addressTypes\";\nimport { type GetAddressUseCase } from \"@internal/use-cases/address/GetAddressUseCase\";\nimport { appConfigurationTypes } from \"@internal/use-cases/app-configuration/di/appConfigurationTypes\";\nimport { type GetAppConfigurationUseCase } from \"@internal/use-cases/app-configuration/GetAppConfigurationUseCase\";\nimport { ecdhTypes } from \"@internal/use-cases/ecdh/di/ecdhTypes\";\nimport { type GetECDHSecretUseCase } from \"@internal/use-cases/ecdh/GetECDHSecretUseCase\";\nimport { messageTypes } from \"@internal/use-cases/message/di/messageTypes\";\nimport { type SignPersonalMessageUseCase } from \"@internal/use-cases/message/SignPersonalMessageUseCase\";\nimport { transactionTypes } from \"@internal/use-cases/transaction/di/transactionTypes\";\nimport { type SignTransactionHashUseCase } from \"@internal/use-cases/transaction/SignTransactionHashUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/transaction/SignTransactionUseCase\";\n\ntype DefaultSignerTrxConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n contextModule: ContextModule;\n addressBook?: TronAddressBook;\n};\n\nexport class DefaultSignerTrx implements SignerTrx {\n private readonly _container: Container;\n\n constructor({\n dmk,\n sessionId,\n contextModule,\n addressBook,\n }: DefaultSignerTrxConstructorArgs) {\n this._container = makeContainer({\n dmk,\n sessionId,\n contextModule,\n addressBook,\n });\n }\n\n getAddress(\n derivationPath: string,\n options?: AddressOptions,\n ): GetAddressDAReturnType {\n return this._container\n .get<GetAddressUseCase>(addressTypes.GetAddressUseCase)\n .execute(derivationPath, options);\n }\n\n signTransaction(\n derivationPath: string,\n transaction: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionDAReturnType {\n return this._container\n .get<SignTransactionUseCase>(transactionTypes.SignTransactionUseCase)\n .execute(derivationPath, transaction, options);\n }\n\n signTransactionHash(\n derivationPath: string,\n transactionHash: Uint8Array,\n options?: TransactionOptions,\n ): SignTransactionHashDAReturnType {\n return this._container\n .get<SignTransactionHashUseCase>(\n transactionTypes.SignTransactionHashUseCase,\n )\n .execute(derivationPath, transactionHash, options);\n }\n\n signPersonalMessage(\n derivationPath: string,\n message: string | Uint8Array,\n options?: MessageOptions,\n ): SignPersonalMessageDAReturnType {\n return this._container\n .get<SignPersonalMessageUseCase>(messageTypes.SignPersonalMessageUseCase)\n .execute(derivationPath, message, options);\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this._container\n .get<GetAppConfigurationUseCase>(\n appConfigurationTypes.GetAppConfigurationUseCase,\n )\n .execute();\n }\n\n getECDHSecret(\n derivationPath: string,\n publicKey: Uint8Array,\n options?: EcdhOptions,\n ): GetECDHSecretDAReturnType {\n return this._container\n .get<GetECDHSecretUseCase>(ecdhTypes.GetECDHSecretUseCase)\n .execute(derivationPath, publicKey, options);\n }\n}\n"],
5
+ "mappings": "AAmBA,OAAS,iBAAAA,MAAqB,eAC9B,OAAS,gBAAAC,MAAoB,8CAE7B,OAAS,yBAAAC,MAA6B,iEAEtC,OAAS,aAAAC,MAAiB,wCAE1B,OAAS,gBAAAC,MAAoB,8CAE7B,OAAS,oBAAAC,MAAwB,sDAW1B,MAAMC,CAAsC,CAChC,WAEjB,YAAY,CACV,IAAAC,EACA,UAAAC,EACA,cAAAC,EACA,YAAAC,CACF,EAAoC,CAClC,KAAK,WAAaV,EAAc,CAC9B,IAAAO,EACA,UAAAC,EACA,cAAAC,EACA,YAAAC,CACF,CAAC,CACH,CAEA,WACEC,EACAC,EACwB,CACxB,OAAO,KAAK,WACT,IAAuBX,EAAa,iBAAiB,EACrD,QAAQU,EAAgBC,CAAO,CACpC,CAEA,gBACED,EACAE,EACAD,EAC6B,CAC7B,OAAO,KAAK,WACT,IAA4BP,EAAiB,sBAAsB,EACnE,QAAQM,EAAgBE,EAAaD,CAAO,CACjD,CAEA,oBACED,EACAG,EACAF,EACiC,CACjC,OAAO,KAAK,WACT,IACCP,EAAiB,0BACnB,EACC,QAAQM,EAAgBG,EAAiBF,CAAO,CACrD,CAEA,oBACED,EACAI,EACAH,EACiC,CACjC,OAAO,KAAK,WACT,IAAgCR,EAAa,0BAA0B,EACvE,QAAQO,EAAgBI,EAASH,CAAO,CAC7C,CAEA,qBAAuD,CACrD,OAAO,KAAK,WACT,IACCV,EAAsB,0BACxB,EACC,QAAQ,CACb,CAEA,cACES,EACAK,EACAJ,EAC2B,CAC3B,OAAO,KAAK,WACT,IAA0BT,EAAU,oBAAoB,EACxD,QAAQQ,EAAgBK,EAAWJ,CAAO,CAC/C,CACF",
6
+ "names": ["makeContainer", "addressTypes", "appConfigurationTypes", "ecdhTypes", "messageTypes", "transactionTypes", "DefaultSignerTrx", "dmk", "sessionId", "contextModule", "addressBook", "derivationPath", "options", "transaction", "transactionHash", "message", "publicKey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var k=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var u=(s,e,n,i)=>{for(var t=i>1?void 0:i?v(e,n):e,m=s.length-1,d;m>=0;m--)(d=s[m])&&(t=(i?d(e,n,t):d(t))||t);return i&&t&&k(e,n,t),t},a=(s,e)=>(n,i)=>e(n,i,s);import{CallTaskInAppDeviceAction as h,SendCommandInAppDeviceAction as p,UserInteractionRequired as r}from"@ledgerhq/device-management-kit";import{inject as g,injectable as y}from"inversify";import{GetAddressCommand as D}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as l}from"../app-binder/command/GetAppConfigurationCommand";import{GetECDHSecretCommand as T}from"../app-binder/command/GetECDHSecretCommand";import{SignTransactionHashCommand as f}from"../app-binder/command/SignTransactionHashCommand";import{APP_NAME as o}from"../app-binder/constants";import{SignPersonalMessageTask as S}from"../app-binder/task/SignPersonalMessageTask";import{SignTransactionTask as I}from"../app-binder/task/SignTransactionTask";import{externalTypes as A}from"../externalTypes";let c=class{constructor(e,n,i){this.dmk=e;this.sessionId=n;this.dmkLoggerFactory=i}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new p({input:{command:new D({derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice}),appName:o,requiredUserInteraction:e.checkOnDevice?r.VerifyAddress:r.None,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("GetAddressCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new h({input:{task:async n=>new I(n,{derivationPath:e.derivationPath,transaction:e.transaction}).run(),appName:o,requiredUserInteraction:r.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionTask")})})}getECDHSecret(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new p({input:{command:new T({derivationPath:e.derivationPath,publicKey:e.publicKey}),appName:o,requiredUserInteraction:r.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("GetECDHSecretCommand")})})}signTransactionHash(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new p({input:{command:new f({derivationPath:e.derivationPath,transactionHash:e.transactionHash}),appName:o,requiredUserInteraction:r.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionHashCommand")})})}signPersonalMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new h({input:{task:async n=>new S(n,{derivationPath:e.derivationPath,message:e.message}).run(),appName:o,requiredUserInteraction:r.SignPersonalMessage,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignPersonalMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new p({input:{command:new l,appName:o,requiredUserInteraction:r.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};c=u([y(),a(0,g(A.Dmk)),a(1,g(A.SessionId)),a(2,g(A.DmkLoggerFactory))],c);export{c as TronAppBinder};
1
+ var h=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var u=(s,e,t,i)=>{for(var n=i>1?void 0:i?k(e,t):e,d=s.length-1,A;d>=0;d--)(A=s[d])&&(n=(i?A(e,t,n):A(n))||n);return i&&n&&h(e,t,n),n},o=(s,e)=>(t,i)=>e(t,i,s);import{CallTaskInAppDeviceAction as v,SendCommandInAppDeviceAction as m,UserInteractionRequired as r}from"@ledgerhq/device-management-kit";import{inject as a,injectable as y}from"inversify";import{EMPTY_TRON_ADDRESS_BOOK as l}from"../../api/model/TronAddressBook";import{GetAddressCommand as D}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as f}from"../app-binder/command/GetAppConfigurationCommand";import{GetECDHSecretCommand as T}from"../app-binder/command/GetECDHSecretCommand";import{SignTransactionHashCommand as S}from"../app-binder/command/SignTransactionHashCommand";import{APP_NAME as p}from"../app-binder/constants";import{SignTransactionDeviceAction as P}from"../app-binder/device-action/SignTransaction/SignTransactionDeviceAction";import{SignPersonalMessageTask as I}from"../app-binder/task/SignPersonalMessageTask";import{externalTypes as c}from"../externalTypes";let g=class{constructor(e,t,i,n,d=l){this.dmk=e;this.sessionId=t;this.dmkLoggerFactory=i;this.contextModule=n;this.addressBook=d}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new D({derivationPath:e.derivationPath,checkOnDevice:e.checkOnDevice}),appName:p,requiredUserInteraction:e.checkOnDevice?r.VerifyAddress:r.None,skipOpenApp:e.skipOpenApp},logger:this.dmkLoggerFactory("GetAddressCommand")})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new P({input:{derivationPath:e.derivationPath,transaction:e.transaction,contextModule:this.contextModule,addressBook:this.addressBook,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionDeviceAction")})})}getECDHSecret(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new T({derivationPath:e.derivationPath,publicKey:e.publicKey}),appName:p,requiredUserInteraction:r.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("GetECDHSecretCommand")})})}signTransactionHash(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new S({derivationPath:e.derivationPath,transactionHash:e.transactionHash}),appName:p,requiredUserInteraction:r.SignTransaction,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignTransactionHashCommand")})})}signPersonalMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new v({input:{task:async t=>new I(t,{derivationPath:e.derivationPath,message:e.message}).run(),appName:p,requiredUserInteraction:r.SignPersonalMessage,skipOpenApp:e.skipOpenApp??!1},logger:this.dmkLoggerFactory("SignPersonalMessageTask")})})}getAppConfiguration(){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new m({input:{command:new f,appName:p,requiredUserInteraction:r.None,skipOpenApp:!1},logger:this.dmkLoggerFactory("GetAppConfigurationCommand")})})}};g=u([y(),o(0,a(c.Dmk)),o(1,a(c.SessionId)),o(2,a(c.DmkLoggerFactory)),o(3,a(c.ContextModule)),o(4,a(c.AddressBook))],g);export{g as TronAppBinder};
2
2
  //# sourceMappingURL=TronAppBinder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/TronAppBinder.ts"],
4
- "sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { SignPersonalMessageTask } from \"@internal/app-binder/task/SignPersonalMessageTask\";\nimport { SignTransactionTask } from \"@internal/app-binder/task/SignTransactionTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\n@injectable()\nexport class TronAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n }),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetAddressCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignTransactionTask(internalApi, {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionTask\"),\n }),\n });\n }\n\n getECDHSecret(args: {\n derivationPath: string;\n publicKey: Uint8Array;\n skipOpenApp?: boolean;\n }): GetECDHSecretDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath: args.derivationPath,\n publicKey: args.publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"GetECDHSecretCommand\"),\n }),\n });\n }\n\n signTransactionHash(args: {\n derivationPath: string;\n transactionHash: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionHashDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath: args.derivationPath,\n transactionHash: args.transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionHashCommand\"),\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: Uint8Array;\n skipOpenApp?: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignPersonalMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n message: args.message,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignPersonalMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["CallTaskInAppDeviceAction", "SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "GetAddressCommand", "GetAppConfigurationCommand", "GetECDHSecretCommand", "SignTransactionHashCommand", "APP_NAME", "SignPersonalMessageTask", "SignTransactionTask", "externalTypes", "TronAppBinder", "dmk", "sessionId", "dmkLoggerFactory", "args", "SendCommandInAppDeviceAction", "GetAddressCommand", "APP_NAME", "UserInteractionRequired", "CallTaskInAppDeviceAction", "internalApi", "SignTransactionTask", "GetECDHSecretCommand", "SignTransactionHashCommand", "SignPersonalMessageTask", "GetAppConfigurationCommand", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CallTaskInAppDeviceAction,\n type DeviceManagementKit,\n type DeviceSessionId,\n LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { type GetAppConfigurationDAReturnType } from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { type GetECDHSecretDAReturnType } from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTransactionHashDAReturnType } from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport {\n EMPTY_TRON_ADDRESS_BOOK,\n type TronAddressBook,\n} from \"@api/model/TronAddressBook\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { SignPersonalMessageTask } from \"@internal/app-binder/task/SignPersonalMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\n@injectable()\nexport class TronAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n @inject(externalTypes.DmkLoggerFactory)\n private dmkLoggerFactory: (tag: string) => LoggerPublisherService,\n @inject(externalTypes.ContextModule)\n private contextModule: ContextModule,\n @inject(externalTypes.AddressBook)\n private addressBook: TronAddressBook = EMPTY_TRON_ADDRESS_BOOK,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath: args.derivationPath,\n checkOnDevice: args.checkOnDevice,\n }),\n appName: APP_NAME,\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n logger: this.dmkLoggerFactory(\"GetAddressCommand\"),\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n contextModule: this.contextModule,\n addressBook: this.addressBook,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionDeviceAction\"),\n }),\n });\n }\n\n getECDHSecret(args: {\n derivationPath: string;\n publicKey: Uint8Array;\n skipOpenApp?: boolean;\n }): GetECDHSecretDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath: args.derivationPath,\n publicKey: args.publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"GetECDHSecretCommand\"),\n }),\n });\n }\n\n signTransactionHash(args: {\n derivationPath: string;\n transactionHash: Uint8Array;\n skipOpenApp?: boolean;\n }): SignTransactionHashDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath: args.derivationPath,\n transactionHash: args.transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignTransactionHashCommand\"),\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: Uint8Array;\n skipOpenApp?: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SignPersonalMessageTask(internalApi, {\n derivationPath: args.derivationPath,\n message: args.message,\n }).run(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp ?? false,\n },\n logger: this.dmkLoggerFactory(\"SignPersonalMessageTask\"),\n }),\n });\n }\n\n getAppConfiguration(): GetAppConfigurationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: this.dmkLoggerFactory(\"GetAppConfigurationCommand\"),\n }),\n });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CallTaskInAppDeviceAction", "SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "EMPTY_TRON_ADDRESS_BOOK", "GetAddressCommand", "GetAppConfigurationCommand", "GetECDHSecretCommand", "SignTransactionHashCommand", "APP_NAME", "SignTransactionDeviceAction", "SignPersonalMessageTask", "externalTypes", "TronAppBinder", "dmk", "sessionId", "dmkLoggerFactory", "contextModule", "addressBook", "EMPTY_TRON_ADDRESS_BOOK", "args", "SendCommandInAppDeviceAction", "GetAddressCommand", "APP_NAME", "UserInteractionRequired", "SignTransactionDeviceAction", "GetECDHSecretCommand", "SignTransactionHashCommand", "CallTaskInAppDeviceAction", "internalApi", "SignPersonalMessageTask", "GetAppConfigurationCommand", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CallTaskInAppDeviceAction as b,DeviceActionStatus as d,SendCommandInAppDeviceAction as D,UserInteractionRequired as l}from"@ledgerhq/device-management-kit";import{from as v}from"rxjs";import{GetAddressCommand as h}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as f}from"../app-binder/command/GetAppConfigurationCommand";import{GetECDHSecretCommand as S}from"../app-binder/command/GetECDHSecretCommand";import{SignTransactionHashCommand as x}from"../app-binder/command/SignTransactionHashCommand";import{APP_NAME as g}from"../app-binder/constants";import{TronAppBinder as a}from"./TronAppBinder";describe("TronAppBinder",()=>{const e={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},m={debug:vi.fn()},o=vi.fn().mockReturnValue(m);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const t=new a({},{},o);expect(t).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((t,n)=>{const s={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:s}]),cancel:vi.fn()});const i=new a(e,"sessionId",o),{observable:r}=i.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),u=[];r.subscribe({next:c=>u.push(c),error:n,complete:()=>{try{expect(u).toEqual([{status:d.Completed,output:s}]),t()}catch(c){n(c)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const t="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new a(e,"sessionId",o).getAddress({derivationPath:t,checkOnDevice:!1,skipOpenApp:!1}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new D({input:{command:new h({derivationPath:t,checkOnDevice:!1}),appName:g,requiredUserInteraction:l.None,skipOpenApp:!1},logger:m})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new a(e,"sessionId",o).getAddress({derivationPath:t,checkOnDevice:!0,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new D({input:{command:new h({derivationPath:t,checkOnDevice:!0}),appName:g,requiredUserInteraction:l.VerifyAddress,skipOpenApp:!0},logger:m})}))})})}),describe("signTransaction",()=>{const t="44'/195'/0'/0/0",n=Uint8Array.from([10,1,0]);it("should return the signature",()=>new Promise((s,i)=>{const r=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:r}]),cancel:vi.fn()});const u=new a(e,"sessionId",o),{observable:c}=u.signTransaction({derivationPath:t,transaction:n}),A=[];c.subscribe({next:p=>A.push(p),error:i,complete:()=>{try{expect(A).toEqual([{status:d.Completed,output:r}]),s()}catch(p){i(p)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const s=()=>{const i=vi.mocked(e.executeDeviceAction).mock.calls[0][0];return expect(i.sessionId).toBe("sessionId"),expect(i.deviceAction).toBeInstanceOf(b),i.deviceAction};it("requires the SignTransaction interaction",()=>{new a(e,"sessionId",o).signTransaction({derivationPath:t,transaction:n,skipOpenApp:!0});const r=s();expect(r.input.appName).toBe(g),expect(r.input.requiredUserInteraction).toBe(l.SignTransaction),expect(r.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new a(e,"sessionId",o).signTransaction({derivationPath:t,transaction:n}),expect(s().input.skipOpenApp).toBe(!1)})})}),describe("signTransactionHash",()=>{const t="44'/195'/0'/0/0",n=new Uint8Array(32).fill(37);it("should return the signature",()=>new Promise((s,i)=>{const r=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:r}]),cancel:vi.fn()});const u=new a(e,"sessionId",o),{observable:c}=u.signTransactionHash({derivationPath:t,transactionHash:n}),A=[];c.subscribe({next:p=>A.push(p),error:i,complete:()=>{try{expect(A).toEqual([{status:d.Completed,output:r}]),s()}catch(p){i(p)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new a(e,"sessionId",o).signTransactionHash({derivationPath:t,transactionHash:n,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new D({input:{command:new x({derivationPath:t,transactionHash:n}),appName:g,requiredUserInteraction:l.SignTransaction,skipOpenApp:!0},logger:m})}))}),it("defaults skipOpenApp to false",()=>{new a(e,"sessionId",o).signTransactionHash({derivationPath:t,transactionHash:n}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new D({input:{command:new x({derivationPath:t,transactionHash:n}),appName:g,requiredUserInteraction:l.SignTransaction,skipOpenApp:!1},logger:m})}))})})}),describe("signPersonalMessage",()=>{const t="44'/195'/0'/0/0",n=Uint8Array.from([104,101,108,108,111]);it("should return the signature",()=>new Promise((s,i)=>{const r=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:r}]),cancel:vi.fn()});const u=new a(e,"sessionId",o),{observable:c}=u.signPersonalMessage({derivationPath:t,message:n}),A=[];c.subscribe({next:p=>A.push(p),error:i,complete:()=>{try{expect(A).toEqual([{status:d.Completed,output:r}]),s()}catch(p){i(p)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const s=()=>{const i=vi.mocked(e.executeDeviceAction).mock.calls[0][0];return expect(i.sessionId).toBe("sessionId"),expect(i.deviceAction).toBeInstanceOf(b),i.deviceAction};it("requires the SignPersonalMessage interaction",()=>{new a(e,"sessionId",o).signPersonalMessage({derivationPath:t,message:n,skipOpenApp:!0});const r=s();expect(r.input.appName).toBe(g),expect(r.input.requiredUserInteraction).toBe(l.SignPersonalMessage),expect(r.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new a(e,"sessionId",o).signPersonalMessage({derivationPath:t,message:n}),expect(s().input.skipOpenApp).toBe(!1)})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((t,n)=>{const s={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:s}]),cancel:vi.fn()});const i=new a(e,"sessionId",o),{observable:r}=i.getAppConfiguration(),u=[];r.subscribe({next:c=>u.push(c),error:n,complete:()=>{try{expect(u).toEqual([{status:d.Completed,output:s}]),t()}catch(c){n(c)}}})})),it("should call executeDeviceAction with the correct params",()=>{new a(e,"sessionId",o).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new D({input:{command:new f,appName:g,requiredUserInteraction:l.None,skipOpenApp:!1},logger:m})}))})}),describe("getECDHSecret",()=>{const t="44'/195'/0'/0/0",n=new Uint8Array(65).fill(4);it("should return the shared secret",()=>new Promise((s,i)=>{const r=new Uint8Array(65).fill(205);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:v([{status:d.Completed,output:r}]),cancel:vi.fn()});const u=new a(e,"sessionId",o),{observable:c}=u.getECDHSecret({derivationPath:t,publicKey:n}),A=[];c.subscribe({next:p=>A.push(p),error:i,complete:()=>{try{expect(A).toEqual([{status:d.Completed,output:r}]),s()}catch(p){i(p)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new a(e,"sessionId",o).getECDHSecret({derivationPath:t,publicKey:n,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new D({input:{command:new S({derivationPath:t,publicKey:n}),appName:g,requiredUserInteraction:l.SignTransaction,skipOpenApp:!0},logger:m})}))}),it("defaults skipOpenApp to false",()=>{new a(e,"sessionId",o).getECDHSecret({derivationPath:t,publicKey:n}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new D({input:{command:new S({derivationPath:t,publicKey:n}),appName:g,requiredUserInteraction:l.SignTransaction,skipOpenApp:!1},logger:m})}))})})})});
1
+ import{CallTaskInAppDeviceAction as C,DeviceActionStatus as A,SendCommandInAppDeviceAction as v,UserInteractionRequired as g}from"@ledgerhq/device-management-kit";import{from as b}from"rxjs";import{EMPTY_TRON_ADDRESS_BOOK as I}from"../../api/model/TronAddressBook";import{GetAddressCommand as x}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as O}from"../app-binder/command/GetAppConfigurationCommand";import{GetECDHSecretCommand as f}from"../app-binder/command/GetECDHSecretCommand";import{SignTransactionHashCommand as S}from"../app-binder/command/SignTransactionHashCommand";import{APP_NAME as D}from"../app-binder/constants";import{SignTransactionDeviceAction as w}from"../app-binder/device-action/SignTransaction/SignTransactionDeviceAction";import{TronAppBinder as p}from"./TronAppBinder";describe("TronAppBinder",()=>{const e={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},m={debug:vi.fn()},c=vi.fn().mockReturnValue(m),a={getContexts:vi.fn().mockResolvedValue([])};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const t=new p({},{},c,a);expect(t).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((t,n)=>{const r={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:r}]),cancel:vi.fn()});const s=new p(e,"sessionId",c,a),{observable:i}=s.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),o=[];i.subscribe({next:u=>o.push(u),error:n,complete:()=>{try{expect(o).toEqual([{status:A.Completed,output:r}]),t()}catch(u){n(u)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const t="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new p(e,"sessionId",c,a).getAddress({derivationPath:t,checkOnDevice:!1,skipOpenApp:!1}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new v({input:{command:new x({derivationPath:t,checkOnDevice:!1}),appName:D,requiredUserInteraction:g.None,skipOpenApp:!1},logger:m})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new p(e,"sessionId",c,a).getAddress({derivationPath:t,checkOnDevice:!0,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new v({input:{command:new x({derivationPath:t,checkOnDevice:!0}),appName:D,requiredUserInteraction:g.VerifyAddress,skipOpenApp:!0},logger:m})}))})})}),describe("signTransaction",()=>{const t="44'/195'/0'/0/0",n=Uint8Array.from([10,1,0]),r=I;it("should return the signature",()=>new Promise((s,i)=>{const o=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:o}]),cancel:vi.fn()});const u=new p(e,"sessionId",c,a,r),{observable:l}=u.signTransaction({derivationPath:t,transaction:n}),d=[];l.subscribe({next:h=>d.push(h),error:i,complete:()=>{try{expect(d).toEqual([{status:A.Completed,output:o}]),s()}catch(h){i(h)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const s=()=>{const i=vi.mocked(e.executeDeviceAction).mock.calls[0][0];return expect(i.sessionId).toBe("sessionId"),expect(i.deviceAction).toBeInstanceOf(w),i.deviceAction};it("passes the transaction and the context module resolving its tokens",()=>{new p(e,"sessionId",c,a,r).signTransaction({derivationPath:t,transaction:n,skipOpenApp:!0});const o=s();expect(o.input.derivationPath).toBe(t),expect(o.input.transaction).toBe(n),expect(o.input.contextModule).toBe(a),expect(o.input.addressBook).toBe(r),expect(o.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new p(e,"sessionId",c,a).signTransaction({derivationPath:t,transaction:n}),expect(s().input.skipOpenApp).toBe(!1)})})}),describe("signTransactionHash",()=>{const t="44'/195'/0'/0/0",n=new Uint8Array(32).fill(37);it("should return the signature",()=>new Promise((r,s)=>{const i=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:i}]),cancel:vi.fn()});const o=new p(e,"sessionId",c,a),{observable:u}=o.signTransactionHash({derivationPath:t,transactionHash:n}),l=[];u.subscribe({next:d=>l.push(d),error:s,complete:()=>{try{expect(l).toEqual([{status:A.Completed,output:i}]),r()}catch(d){s(d)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new p(e,"sessionId",c,a).signTransactionHash({derivationPath:t,transactionHash:n,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new v({input:{command:new S({derivationPath:t,transactionHash:n}),appName:D,requiredUserInteraction:g.SignTransaction,skipOpenApp:!0},logger:m})}))}),it("defaults skipOpenApp to false",()=>{new p(e,"sessionId",c,a).signTransactionHash({derivationPath:t,transactionHash:n}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new v({input:{command:new S({derivationPath:t,transactionHash:n}),appName:D,requiredUserInteraction:g.SignTransaction,skipOpenApp:!1},logger:m})}))})})}),describe("signPersonalMessage",()=>{const t="44'/195'/0'/0/0",n=Uint8Array.from([104,101,108,108,111]);it("should return the signature",()=>new Promise((r,s)=>{const i=new Uint8Array(65).fill(171);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:i}]),cancel:vi.fn()});const o=new p(e,"sessionId",c,a),{observable:u}=o.signPersonalMessage({derivationPath:t,message:n}),l=[];u.subscribe({next:d=>l.push(d),error:s,complete:()=>{try{expect(l).toEqual([{status:A.Completed,output:i}]),r()}catch(d){s(d)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const r=()=>{const s=vi.mocked(e.executeDeviceAction).mock.calls[0][0];return expect(s.sessionId).toBe("sessionId"),expect(s.deviceAction).toBeInstanceOf(C),s.deviceAction};it("requires the SignPersonalMessage interaction",()=>{new p(e,"sessionId",c,a).signPersonalMessage({derivationPath:t,message:n,skipOpenApp:!0});const i=r();expect(i.input.appName).toBe(D),expect(i.input.requiredUserInteraction).toBe(g.SignPersonalMessage),expect(i.input.skipOpenApp).toBe(!0)}),it("defaults skipOpenApp to false",()=>{new p(e,"sessionId",c,a).signPersonalMessage({derivationPath:t,message:n}),expect(r().input.skipOpenApp).toBe(!1)})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((t,n)=>{const r={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:r}]),cancel:vi.fn()});const s=new p(e,"sessionId",c,a),{observable:i}=s.getAppConfiguration(),o=[];i.subscribe({next:u=>o.push(u),error:n,complete:()=>{try{expect(o).toEqual([{status:A.Completed,output:r}]),t()}catch(u){n(u)}}})})),it("should call executeDeviceAction with the correct params",()=>{new p(e,"sessionId",c,a).getAppConfiguration(),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new v({input:{command:new O,appName:D,requiredUserInteraction:g.None,skipOpenApp:!1},logger:m})}))})}),describe("getECDHSecret",()=>{const t="44'/195'/0'/0/0",n=new Uint8Array(65).fill(4);it("should return the shared secret",()=>new Promise((r,s)=>{const i=new Uint8Array(65).fill(205);vi.spyOn(e,"executeDeviceAction").mockReturnValue({observable:b([{status:A.Completed,output:i}]),cancel:vi.fn()});const o=new p(e,"sessionId",c,a),{observable:u}=o.getECDHSecret({derivationPath:t,publicKey:n}),l=[];u.subscribe({next:d=>l.push(d),error:s,complete:()=>{try{expect(l).toEqual([{status:A.Completed,output:i}]),r()}catch(d){s(d)}}})})),describe("calls executeDeviceAction with the correct params",()=>{it("requires the SignTransaction interaction",()=>{new p(e,"sessionId",c,a).getECDHSecret({derivationPath:t,publicKey:n,skipOpenApp:!0}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new v({input:{command:new f({derivationPath:t,publicKey:n}),appName:D,requiredUserInteraction:g.SignTransaction,skipOpenApp:!0},logger:m})}))}),it("defaults skipOpenApp to false",()=>{new p(e,"sessionId",c,a).getECDHSecret({derivationPath:t,publicKey:n}),expect(e.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({deviceAction:new v({input:{command:new f({derivationPath:t,publicKey:n}),appName:D,requiredUserInteraction:g.SignTransaction,skipOpenApp:!1},logger:m})}))})})})});
2
2
  //# sourceMappingURL=TronAppBinder.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
4
- "sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { type TronAppCommandError } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transaction = Uint8Array.from([0x0a, 0x01, 0x00]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionDAOutput = new Uint8Array(65).fill(0xab);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransaction({\n derivationPath,\n transaction,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignTransactionDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignTransaction\n >;\n };\n\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignTransaction,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransaction({ derivationPath, transaction });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"signTransactionHash\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transactionHash = new Uint8Array(32).fill(0x25);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionHashDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signTransactionHash({\n derivationPath,\n transactionHash,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({\n derivationPath,\n transactionHash,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signTransactionHash({ derivationPath, transactionHash });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signPersonalMessage\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const message = Uint8Array.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignPersonalMessageDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.signPersonalMessage({\n derivationPath,\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignPersonalMessageDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignPersonalMessage\n >;\n };\n\n it(\"requires the SignPersonalMessage interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({\n derivationPath,\n message,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignPersonalMessage,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.signPersonalMessage({ derivationPath, message });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n\n describe(\"getECDHSecret\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const publicKey = new Uint8Array(65).fill(0x04);\n\n it(\"should return the shared secret\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetECDHSecretDAOutput = new Uint8Array(65).fill(0xcd);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getECDHSecret({\n derivationPath,\n publicKey,\n });\n\n // THEN\n const states: DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey, skipOpenApp: true });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["CallTaskInAppDeviceAction", "DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAddressCommand", "GetAppConfigurationCommand", "GetECDHSecretCommand", "SignTransactionHashCommand", "APP_NAME", "TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath", "transaction", "executedDeviceAction", "args", "deviceAction", "transactionHash", "message", "publicKey"]
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n CallTaskInAppDeviceAction,\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport {\n type GetECDHSecretDAError,\n type GetECDHSecretDAIntermediateValue,\n type GetECDHSecretDAOutput,\n} from \"@api/app-binder/GetECDHSecretDeviceActionTypes\";\nimport {\n type SignPersonalMessageDAError,\n type SignPersonalMessageDAIntermediateValue,\n type SignPersonalMessageDAOutput,\n} from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport {\n type SignTransactionHashDAError,\n type SignTransactionHashDAIntermediateValue,\n type SignTransactionHashDAOutput,\n} from \"@api/app-binder/SignTransactionHashDeviceActionTypes\";\nimport { EMPTY_TRON_ADDRESS_BOOK } from \"@api/model/TronAddressBook\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { GetECDHSecretCommand } from \"@internal/app-binder/command/GetECDHSecretCommand\";\nimport { SignTransactionHashCommand } from \"@internal/app-binder/command/SignTransactionHashCommand\";\nimport { type TronAppCommandError } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n const contextModuleMock = {\n getContexts: vi.fn().mockResolvedValue([]),\n } as unknown as ContextModule;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n contextModuleMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signTransaction\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transaction = Uint8Array.from([0x0a, 0x01, 0x00]);\n const addressBook = EMPTY_TRON_ADDRESS_BOOK;\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionDAOutput = new Uint8Array(65).fill(0xab);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n addressBook,\n );\n const { observable } = binder.signTransaction({\n derivationPath,\n transaction,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The logger the binder attaches breaks reference equality, hence the\n // field by field assertions instead of toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(SignTransactionDeviceAction);\n return args.deviceAction as SignTransactionDeviceAction;\n };\n\n it(\"passes the transaction and the context module resolving its tokens\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n addressBook,\n );\n binder.signTransaction({\n derivationPath,\n transaction,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.derivationPath).toBe(derivationPath);\n expect(deviceAction.input.transaction).toBe(transaction);\n expect(deviceAction.input.contextModule).toBe(contextModuleMock);\n expect(deviceAction.input.addressBook).toBe(addressBook);\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.signTransaction({ derivationPath, transaction });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"signTransactionHash\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const transactionHash = new Uint8Array(32).fill(0x25);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignTransactionHashDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n const { observable } = binder.signTransactionHash({\n derivationPath,\n transactionHash,\n });\n\n // THEN\n const states: DeviceActionState<\n SignTransactionHashDAOutput,\n SignTransactionHashDAError,\n SignTransactionHashDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.signTransactionHash({\n derivationPath,\n transactionHash,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.signTransactionHash({ derivationPath, transactionHash });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new SignTransactionHashCommand({\n derivationPath,\n transactionHash,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"signPersonalMessage\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const message = Uint8Array.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]);\n\n it(\"should return the signature\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: SignPersonalMessageDAOutput = new Uint8Array(65).fill(\n 0xab,\n );\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n const { observable } = binder.signPersonalMessage({\n derivationPath,\n message,\n });\n\n // THEN\n const states: DeviceActionState<\n SignPersonalMessageDAOutput,\n SignPersonalMessageDAError,\n SignPersonalMessageDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n // The task closure breaks reference equality, so the device action is\n // asserted field by field instead of with toHaveBeenCalledWith.\n const executedDeviceAction = () => {\n const args = vi.mocked(mockedDmk.executeDeviceAction).mock\n .calls[0]![0]!;\n expect(args.sessionId).toBe(\"sessionId\");\n expect(args.deviceAction).toBeInstanceOf(CallTaskInAppDeviceAction);\n return args.deviceAction as CallTaskInAppDeviceAction<\n SignPersonalMessageDAOutput,\n TronAppCommandError,\n UserInteractionRequired.SignPersonalMessage\n >;\n };\n\n it(\"requires the SignPersonalMessage interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.signPersonalMessage({\n derivationPath,\n message,\n skipOpenApp: true,\n });\n\n // THEN\n const deviceAction = executedDeviceAction();\n expect(deviceAction.input.appName).toBe(APP_NAME);\n expect(deviceAction.input.requiredUserInteraction).toBe(\n UserInteractionRequired.SignPersonalMessage,\n );\n expect(deviceAction.input.skipOpenApp).toBe(true);\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.signPersonalMessage({ derivationPath, message });\n\n // THEN\n expect(executedDeviceAction().input.skipOpenApp).toBe(false);\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n\n describe(\"getECDHSecret\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const publicKey = new Uint8Array(65).fill(0x04);\n\n it(\"should return the shared secret\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetECDHSecretDAOutput = new Uint8Array(65).fill(0xcd);\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n const { observable } = binder.getECDHSecret({\n derivationPath,\n publicKey,\n });\n\n // THEN\n const states: DeviceActionState<\n GetECDHSecretDAOutput,\n GetECDHSecretDAError,\n GetECDHSecretDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n it(\"requires the SignTransaction interaction\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey, skipOpenApp: true });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"defaults skipOpenApp to false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n contextModuleMock,\n );\n binder.getECDHSecret({ derivationPath, publicKey });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetECDHSecretCommand({\n derivationPath,\n publicKey,\n }),\n appName: APP_NAME,\n requiredUserInteraction:\n UserInteractionRequired.SignTransaction,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["CallTaskInAppDeviceAction", "DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "EMPTY_TRON_ADDRESS_BOOK", "GetAddressCommand", "GetAppConfigurationCommand", "GetECDHSecretCommand", "SignTransactionHashCommand", "APP_NAME", "SignTransactionDeviceAction", "TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "contextModuleMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath", "transaction", "addressBook", "executedDeviceAction", "args", "deviceAction", "transactionHash", "message", "publicKey"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{DeviceSessionStateType as i}from"@ledgerhq/device-management-kit";import{APP_NAME as s}from"../app-binder/constants";const o="0.0.1";class a{resolve(e,n){if(e.sessionStateType===i.Connected)return{isCompatible:!1,version:o};const p=e.currentApp;return p?.name!==s?{isCompatible:!1,version:o}:{isCompatible:!0,version:p.version}}}export{a as TronApplicationResolver};
2
+ //# sourceMappingURL=TronApplicationResolver.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/app-binder/TronApplicationResolver.ts"],
4
+ "sourcesContent": ["import {\n type AppConfig,\n type ApplicationResolver,\n type DeviceSessionState,\n DeviceSessionStateType,\n type ResolvedApp,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nconst DEFAULT_VERSION = \"0.0.1\";\n\nexport class TronApplicationResolver implements ApplicationResolver {\n resolve(deviceState: DeviceSessionState, _appConfig: AppConfig): ResolvedApp {\n if (deviceState.sessionStateType === DeviceSessionStateType.Connected) {\n return { isCompatible: false, version: DEFAULT_VERSION };\n }\n\n const currentApp = deviceState.currentApp;\n if (currentApp?.name !== APP_NAME) {\n return { isCompatible: false, version: DEFAULT_VERSION };\n }\n\n return { isCompatible: true, version: currentApp.version };\n }\n}\n"],
5
+ "mappings": "AAAA,OAIE,0BAAAA,MAEK,kCAEP,OAAS,YAAAC,MAAgB,iCAEzB,MAAMC,EAAkB,QAEjB,MAAMC,CAAuD,CAClE,QAAQC,EAAiCC,EAAoC,CAC3E,GAAID,EAAY,mBAAqBJ,EAAuB,UAC1D,MAAO,CAAE,aAAc,GAAO,QAASE,CAAgB,EAGzD,MAAMI,EAAaF,EAAY,WAC/B,OAAIE,GAAY,OAASL,EAChB,CAAE,aAAc,GAAO,QAASC,CAAgB,EAGlD,CAAE,aAAc,GAAM,QAASI,EAAW,OAAQ,CAC3D,CACF",
6
+ "names": ["DeviceSessionStateType", "APP_NAME", "DEFAULT_VERSION", "TronApplicationResolver", "deviceState", "_appConfig", "currentApp"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DeviceModelId as r,DeviceSessionStateType as s,DeviceStatus as p}from"@ledgerhq/device-management-kit";import{TronApplicationResolver as a}from"./TronApplicationResolver";describe("TronApplicationResolver",()=>{const e=new a,t={version:"0.8.0"},o=(i,n)=>({sessionStateType:s.ReadyWithoutSecureChannel,deviceStatus:p.CONNECTED,installedApps:[],currentApp:{name:i,version:n},deviceModelId:r.FLEX,isSecureConnectionAllowed:!1});it("resolves the running Tron app version",()=>{expect(e.resolve(o("Tron","0.8.0-rc2"),t)).toEqual({isCompatible:!0,version:"0.8.0-rc2"})}),it("rejects another running app",()=>{expect(e.resolve(o("Ethereum","1.23.0"),t)).toEqual({isCompatible:!1,version:"0.0.1"})}),it("rejects the dashboard state",()=>{expect(e.resolve({...o("Tron","0.8.0"),sessionStateType:s.Connected},t)).toEqual({isCompatible:!1,version:"0.0.1"})})});
2
+ //# sourceMappingURL=TronApplicationResolver.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/app-binder/TronApplicationResolver.test.ts"],
4
+ "sourcesContent": ["import {\n type AppConfig,\n DeviceModelId,\n DeviceSessionStateType,\n DeviceStatus,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { TronApplicationResolver } from \"./TronApplicationResolver\";\n\ndescribe(\"TronApplicationResolver\", () => {\n const resolver = new TronApplicationResolver();\n const appConfig = { version: \"0.8.0\" } as AppConfig;\n\n const readyState = (name: string, version: string) => ({\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n installedApps: [],\n currentApp: { name, version },\n deviceModelId: DeviceModelId.FLEX,\n isSecureConnectionAllowed: false,\n });\n\n it(\"resolves the running Tron app version\", () => {\n expect(\n resolver.resolve(readyState(\"Tron\", \"0.8.0-rc2\"), appConfig),\n ).toEqual({\n isCompatible: true,\n version: \"0.8.0-rc2\",\n });\n });\n\n it(\"rejects another running app\", () => {\n expect(\n resolver.resolve(readyState(\"Ethereum\", \"1.23.0\"), appConfig),\n ).toEqual({\n isCompatible: false,\n version: \"0.0.1\",\n });\n });\n\n it(\"rejects the dashboard state\", () => {\n expect(\n resolver.resolve(\n {\n ...readyState(\"Tron\", \"0.8.0\"),\n sessionStateType: DeviceSessionStateType.Connected,\n },\n appConfig,\n ),\n ).toEqual({ isCompatible: false, version: \"0.0.1\" });\n });\n});\n"],
5
+ "mappings": "AAAA,OAEE,iBAAAA,EACA,0BAAAC,EACA,gBAAAC,MACK,kCAEP,OAAS,2BAAAC,MAA+B,4BAExC,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAW,IAAID,EACfE,EAAY,CAAE,QAAS,OAAQ,EAE/BC,EAAa,CAACC,EAAcC,KAAqB,CACrD,iBAAkBP,EAAuB,0BACzC,aAAcC,EAAa,UAC3B,cAAe,CAAC,EAChB,WAAY,CAAE,KAAAK,EAAM,QAAAC,CAAQ,EAC5B,cAAeR,EAAc,KAC7B,0BAA2B,EAC7B,GAEA,GAAG,wCAAyC,IAAM,CAChD,OACEI,EAAS,QAAQE,EAAW,OAAQ,WAAW,EAAGD,CAAS,CAC7D,EAAE,QAAQ,CACR,aAAc,GACd,QAAS,WACX,CAAC,CACH,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OACED,EAAS,QAAQE,EAAW,WAAY,QAAQ,EAAGD,CAAS,CAC9D,EAAE,QAAQ,CACR,aAAc,GACd,QAAS,OACX,CAAC,CACH,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OACED,EAAS,QACP,CACE,GAAGE,EAAW,OAAQ,OAAO,EAC7B,iBAAkBL,EAAuB,SAC3C,EACAI,CACF,CACF,EAAE,QAAQ,CAAE,aAAc,GAAO,QAAS,OAAQ,CAAC,CACrD,CAAC,CACH,CAAC",
6
+ "names": ["DeviceModelId", "DeviceSessionStateType", "DeviceStatus", "TronApplicationResolver", "resolver", "appConfig", "readyState", "name", "version"]
7
+ }
@@ -1,2 +1,2 @@
1
- const E="Tron",S=224,N={GET_ADDRESS:2,SIGN_TRANSACTION:4,SIGN_TRANSACTION_HASH:5,GET_APP_CONFIGURATION:6,SIGN_PERSONAL_MESSAGE:8,ECDH_SECRET:10},o=250,x=0,t=65,_=32,T=65,A={SINGLE:16,FIRST:0,SUBSEQUENT:128,LAST:144},I={FIRST:0,SUBSEQUENT:128};export{E as APP_NAME,_ as CHAIN_CODE_LENGTH,o as CHUNK_SIZE,T as ECDH_SECRET_LENGTH,N as INS,S as LEDGER_CLA,x as P2_NONE,t as SIGNATURE_LENGTH,I as SIGN_PERSONAL_MESSAGE_P1,A as SIGN_TRANSACTION_P1};
1
+ const E="Tron",S=224,N={GET_ADDRESS:2,SIGN_TRANSACTION:4,SIGN_TRANSACTION_HASH:5,GET_APP_CONFIGURATION:6,SIGN_PERSONAL_MESSAGE:8,ECDH_SECRET:10},_=250,x=0,o=65,t=32,A=65,T={SINGLE:16,FIRST:0,SUBSEQUENT:128,LAST:144,TRC10_NAME:160,LAST_TOKEN_FLAG:8},s=2,G={FIRST:0,SUBSEQUENT:128};export{E as APP_NAME,t as CHAIN_CODE_LENGTH,_ as CHUNK_SIZE,A as ECDH_SECRET_LENGTH,N as INS,S as LEDGER_CLA,s as MAX_TOKEN_FRAMES,x as P2_NONE,o as SIGNATURE_LENGTH,G as SIGN_PERSONAL_MESSAGE_P1,T as SIGN_TRANSACTION_P1};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/internal/app-binder/constants.ts"],
4
- "sourcesContent": ["export const APP_NAME = \"Tron\";\n\n// Tron application APDU class byte.\nexport const LEDGER_CLA = 0xe0;\n\n// Tron application instruction bytes\nexport const INS = {\n GET_ADDRESS: 0x02,\n SIGN_TRANSACTION: 0x04,\n SIGN_TRANSACTION_HASH: 0x05,\n GET_APP_CONFIGURATION: 0x06,\n SIGN_PERSONAL_MESSAGE: 0x08,\n ECDH_SECRET: 0x0a,\n} as const;\n\n// Maximum APDU payload chunk size used by the Tron application.\nexport const CHUNK_SIZE = 250;\n\n// Common P2 value for the Tron application commands.\nexport const P2_NONE = 0x00;\n\n// Length of a Tron signature (r[32] + s[32] + v[1]).\nexport const SIGNATURE_LENGTH = 65;\n\n// Length of a chain code returned by the GetAddress command.\nexport const CHAIN_CODE_LENGTH = 32;\n\n// Length of the ECDH shared point (0x04 || X || Y) returned by ECDH_SECRET.\nexport const ECDH_SECRET_LENGTH = 65;\n\n/**\n * P1 \"start byte\" values for the SIGN_TRANSACTION instruction.\n *\n * The Tron app frames a transaction across several APDUs and encodes the frame\n * position in P1. The multi-frame chunking is orchestrated by\n * `SignTransactionTask`.\n */\nexport const SIGN_TRANSACTION_P1 = {\n // First and only frame (transaction fits in a single APDU).\n SINGLE: 0x10,\n // First frame, more frames to follow.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n // Last continuation frame.\n LAST: 0x90,\n} as const;\n\n/**\n * P1 values for the SIGN_PERSONAL_MESSAGE instruction.\n */\nexport const SIGN_PERSONAL_MESSAGE_P1 = {\n // First frame.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n} as const;\n"],
5
- "mappings": "AAAO,MAAMA,EAAW,OAGXC,EAAa,IAGbC,EAAM,CACjB,YAAa,EACb,iBAAkB,EAClB,sBAAuB,EACvB,sBAAuB,EACvB,sBAAuB,EACvB,YAAa,EACf,EAGaC,EAAa,IAGbC,EAAU,EAGVC,EAAmB,GAGnBC,EAAoB,GAGpBC,EAAqB,GASrBC,EAAsB,CAEjC,OAAQ,GAER,MAAO,EAEP,WAAY,IAEZ,KAAM,GACR,EAKaC,EAA2B,CAEtC,MAAO,EAEP,WAAY,GACd",
6
- "names": ["APP_NAME", "LEDGER_CLA", "INS", "CHUNK_SIZE", "P2_NONE", "SIGNATURE_LENGTH", "CHAIN_CODE_LENGTH", "ECDH_SECRET_LENGTH", "SIGN_TRANSACTION_P1", "SIGN_PERSONAL_MESSAGE_P1"]
4
+ "sourcesContent": ["export const APP_NAME = \"Tron\";\n\n// Tron application APDU class byte.\nexport const LEDGER_CLA = 0xe0;\n\n// Tron application instruction bytes\nexport const INS = {\n GET_ADDRESS: 0x02,\n SIGN_TRANSACTION: 0x04,\n SIGN_TRANSACTION_HASH: 0x05,\n GET_APP_CONFIGURATION: 0x06,\n SIGN_PERSONAL_MESSAGE: 0x08,\n ECDH_SECRET: 0x0a,\n} as const;\n\n// Maximum APDU payload chunk size used by the Tron application.\nexport const CHUNK_SIZE = 250;\n\n// Common P2 value for the Tron application commands.\nexport const P2_NONE = 0x00;\n\n// Length of a Tron signature (r[32] + s[32] + v[1]).\nexport const SIGNATURE_LENGTH = 65;\n\n// Length of a chain code returned by the GetAddress command.\nexport const CHAIN_CODE_LENGTH = 32;\n\n// Length of the ECDH shared point (0x04 || X || Y) returned by ECDH_SECRET.\nexport const ECDH_SECRET_LENGTH = 65;\n\n/**\n * P1 \"start byte\" values for the SIGN_TRANSACTION instruction.\n *\n * The Tron app frames a transaction across several APDUs and encodes the frame\n * position in P1. The multi-frame chunking is orchestrated by\n * `SignTransactionTask`.\n */\nexport const SIGN_TRANSACTION_P1 = {\n // First and only frame (transaction fits in a single APDU).\n SINGLE: 0x10,\n // First frame, more frames to follow.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n // Last continuation frame.\n LAST: 0x90,\n // TRC10 token-name frame; the frame index is OR-ed into the low 3 bits.\n TRC10_NAME: 0xa0,\n // Marks the final TRC10 token-name frame, on which the device signs.\n LAST_TOKEN_FLAG: 0x08,\n} as const;\n\n// The Tron app rejects a TRC10 token-name frame whose index exceeds 1, so at\n// most two token names can ever be provided for a single transaction.\nexport const MAX_TOKEN_FRAMES = 2;\n\n/**\n * P1 values for the SIGN_PERSONAL_MESSAGE instruction.\n */\nexport const SIGN_PERSONAL_MESSAGE_P1 = {\n // First frame.\n FIRST: 0x00,\n // Continuation frame.\n SUBSEQUENT: 0x80,\n} as const;\n"],
5
+ "mappings": "AAAO,MAAMA,EAAW,OAGXC,EAAa,IAGbC,EAAM,CACjB,YAAa,EACb,iBAAkB,EAClB,sBAAuB,EACvB,sBAAuB,EACvB,sBAAuB,EACvB,YAAa,EACf,EAGaC,EAAa,IAGbC,EAAU,EAGVC,EAAmB,GAGnBC,EAAoB,GAGpBC,EAAqB,GASrBC,EAAsB,CAEjC,OAAQ,GAER,MAAO,EAEP,WAAY,IAEZ,KAAM,IAEN,WAAY,IAEZ,gBAAiB,CACnB,EAIaC,EAAmB,EAKnBC,EAA2B,CAEtC,MAAO,EAEP,WAAY,GACd",
6
+ "names": ["APP_NAME", "LEDGER_CLA", "INS", "CHUNK_SIZE", "P2_NONE", "SIGNATURE_LENGTH", "CHAIN_CODE_LENGTH", "ECDH_SECRET_LENGTH", "SIGN_TRANSACTION_P1", "MAX_TOKEN_FRAMES", "SIGN_PERSONAL_MESSAGE_P1"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ import{isSuccessCommandResult as l,OpenAppDeviceAction as S,UnknownDAError as g,UserInteractionRequired as o,XStateDeviceAction as A}from"@ledgerhq/device-management-kit";import{Left as m,Right as C}from"purify-ts";import{assign as n,fromPromise as p,setup as y}from"xstate";import{SignTransactionDAStep as i}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{GetAppConfigurationCommand as T}from"../../../app-binder/command/GetAppConfigurationCommand";import{APP_NAME as d}from"../../../app-binder/constants";import{GetTokenPayloadsTask as D}from"../../../app-binder/task/GetTokenPayloadsTask";import{ProvideContactTask as f}from"../../../app-binder/task/ProvideContactTask";import{SignTransactionTask as v}from"../../../app-binder/task/SignTransactionTask";class M extends A{makeStateMachine(r){const{getAppConfig:s,buildContext:c,provideContact:u,signTransaction:e}=this.extractDependencies(r);return y({types:{input:{},context:{},output:{}},actors:{getAppConfig:p(s),buildContext:p(c),provideContact:p(u),signTransaction:p(e),openAppStateMachine:new S({input:{appName:d}}).makeStateMachine(r)},guards:{skipOpenApp:({context:t})=>t.input.skipOpenApp,noInternalError:({context:t})=>t._internalState.error===null},actions:{assignErrorFromEvent:n({_internalState:t=>({...t.context._internalState,error:new g(t.event.error instanceof Error?t.event.error.message:String(t.event.error))})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:o.None,step:i.OPEN_APP},_internalState:{error:null,appConfig:null,tokenPayloads:null,signature:null}}),states:{InitialState:{always:[{target:"GetAppConfig",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{invoke:{id:"openAppStateMachine",src:"openAppStateMachine",input:{appName:d},onSnapshot:{actions:n({intermediateValue:t=>({...t.event.snapshot.context.intermediateValue,step:i.OPEN_APP})})},onDone:{target:"CheckOpenAppDeviceActionResult",actions:n({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:a=>({...t.context._internalState,error:a})})})}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:"noInternalError"},"Error"]},GetAppConfig:{entry:n({intermediateValue:{requiredUserInteraction:o.None,step:i.GET_APP_CONFIG}}),invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"BuildContext",actions:n({_internalState:({event:t,context:a})=>({...a._internalState,appConfig:l(t.output)?t.output.data:null})})},onError:{target:"BuildContext"}}},BuildContext:{entry:n({intermediateValue:{requiredUserInteraction:o.None,step:i.BUILD_CONTEXT}}),invoke:{id:"buildContext",src:"buildContext",input:({context:t})=>({transaction:t.input.transaction}),onDone:{target:"ProvideContact",actions:n({_internalState:({event:t,context:a})=>({...a._internalState,tokenPayloads:t.output})})},onError:{target:"ProvideContact",actions:n({_internalState:({context:t})=>({...t._internalState,tokenPayloads:[]})})}}},ProvideContact:{entry:n({intermediateValue:{requiredUserInteraction:o.None,step:i.PROVIDE_CONTACT}}),invoke:{id:"provideContact",src:"provideContact",input:({context:t})=>({transaction:t.input.transaction,appConfig:t._internalState.appConfig}),onDone:{target:"SignTransaction"},onError:{target:"SignTransaction"}}},SignTransaction:{entry:n({intermediateValue:{requiredUserInteraction:o.SignTransaction,step:i.SIGN_TRANSACTION}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:t})=>({transaction:t.input.transaction,tokenPayloads:t._internalState.tokenPayloads??[]}),onDone:{target:"SignTransactionResultCheck",actions:n({_internalState:({event:t,context:a})=>l(t.output)?{...a._internalState,signature:t.output.data}:{...a._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{target:"Success",guard:"noInternalError"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.signature?C(t._internalState.signature):m(t._internalState.error||new g("No error or signature available"))})}extractDependencies(r){const{addressBook:s,contextModule:c,derivationPath:u}=this.input;return{getAppConfig:()=>r.sendCommand(new T),buildContext:e=>new D({contextModule:c,transaction:e.input.transaction}).run(),provideContact:e=>new f(r,{addressBook:s,transaction:e.input.transaction,appConfig:e.input.appConfig}).run(),signTransaction:e=>new v(r,{derivationPath:u,transaction:e.input.transaction,tokenPayloads:e.input.tokenPayloads}).run()}}}export{M as SignTransactionDeviceAction};
2
+ //# sourceMappingURL=SignTransactionDeviceAction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.ts"],
4
+ "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n SignTransactionDAStep,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AppConfiguration } from \"@api/model/AppConfiguration\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { type TronAppErrorCodes } from \"@internal/app-binder/command/utils/tronApplicationErrors\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\nimport { GetTokenPayloadsTask } from \"@internal/app-binder/task/GetTokenPayloadsTask\";\nimport { ProvideContactTask } from \"@internal/app-binder/task/ProvideContactTask\";\nimport { SignTransactionTask } from \"@internal/app-binder/task/SignTransactionTask\";\n\nexport type MachineDependencies = {\n readonly getAppConfig: () => Promise<\n CommandResult<AppConfiguration, TronAppErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: { transaction: Uint8Array };\n }) => Promise<Uint8Array[]>;\n readonly provideContact: (arg0: {\n input: { transaction: Uint8Array; appConfig: AppConfiguration | null };\n }) => Promise<void>;\n readonly signTransaction: (arg0: {\n input: { transaction: Uint8Array; tokenPayloads: Uint8Array[] };\n }) => Promise<CommandResult<Signature, TronAppErrorCodes>>;\n};\n\n/**\n * Building the context is a state of its own rather than part of the signing\n * task so that `SignTransaction` is announced only once the device holds the\n * transaction, and not while the descriptor is still being fetched.\n */\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const { getAppConfig, buildContext, provideContact, signTransaction } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getAppConfig: fromPromise(getAppConfig),\n buildContext: fromPromise(buildContext),\n provideContact: fromPromise(provideContact),\n signTransaction: fromPromise(signTransaction),\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: APP_NAME },\n }).makeStateMachine(internalApi),\n },\n guards: {\n skipOpenApp: ({ context }) => context.input.skipOpenApp,\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: new UnknownDAError(\n _.event[\"error\"] instanceof Error\n ? _.event[\"error\"].message\n : String(_.event[\"error\"]),\n ),\n }),\n }),\n },\n }).createMachine({\n id: \"SignTransactionDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.OPEN_APP,\n },\n _internalState: {\n error: null,\n appConfig: null,\n tokenPayloads: null,\n signature: null,\n },\n }),\n states: {\n InitialState: {\n always: [\n { target: \"GetAppConfig\", guard: \"skipOpenApp\" },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n invoke: {\n id: \"openAppStateMachine\",\n src: \"openAppStateMachine\",\n input: { appName: APP_NAME },\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) => ({\n ..._.event.snapshot.context.intermediateValue,\n step: SignTransactionDAStep.OPEN_APP,\n }),\n }),\n },\n onDone: {\n target: \"CheckOpenAppDeviceActionResult\",\n actions: assign({\n _internalState: (_) =>\n _.event.output.caseOf<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({ ..._.context._internalState, error }),\n }),\n }),\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n { target: \"GetAppConfig\", guard: \"noInternalError\" },\n \"Error\",\n ],\n },\n GetAppConfig: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.GET_APP_CONFIG,\n },\n }),\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"BuildContext\",\n actions: assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n appConfig: isSuccessCommandResult(event.output)\n ? event.output.data\n : null,\n }),\n }),\n },\n onError: { target: \"BuildContext\" },\n },\n },\n BuildContext: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.BUILD_CONTEXT,\n },\n }),\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => ({\n transaction: context.input.transaction,\n }),\n onDone: {\n target: \"ProvideContact\",\n actions: assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n tokenPayloads: event.output,\n }),\n }),\n },\n // The task already folds a failed lookup into an empty set, so a\n // rejection is a host-side fault: review without the token name\n // rather than fail the signature.\n onError: {\n target: \"ProvideContact\",\n actions: assign({\n _internalState: ({ context }) => ({\n ...context._internalState,\n tokenPayloads: [],\n }),\n }),\n },\n },\n },\n ProvideContact: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: SignTransactionDAStep.PROVIDE_CONTACT,\n },\n }),\n invoke: {\n id: \"provideContact\",\n src: \"provideContact\",\n input: ({ context }) => ({\n transaction: context.input.transaction,\n appConfig: context._internalState.appConfig,\n }),\n onDone: { target: \"SignTransaction\" },\n onError: { target: \"SignTransaction\" },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: SignTransactionDAStep.SIGN_TRANSACTION,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n transaction: context.input.transaction,\n tokenPayloads: context._internalState.tokenPayloads ?? [],\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) =>\n isSuccessCommandResult(event.output)\n ? {\n ...context._internalState,\n signature: event.output.data,\n }\n : { ...context._internalState, error: event.output.error },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransactionResultCheck: {\n always: [\n { target: \"Success\", guard: \"noInternalError\" },\n { target: \"Error\" },\n ],\n },\n Success: { type: \"final\" },\n Error: { type: \"final\" },\n },\n output: ({ context }) =>\n context._internalState.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error or signature available\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const { addressBook, contextModule, derivationPath } = this.input;\n\n return {\n getAppConfig: () =>\n internalApi.sendCommand(new GetAppConfigurationCommand()),\n buildContext: (arg0: { input: { transaction: Uint8Array } }) =>\n new GetTokenPayloadsTask({\n contextModule,\n transaction: arg0.input.transaction,\n }).run(),\n provideContact: (arg0: {\n input: {\n transaction: Uint8Array;\n appConfig: AppConfiguration | null;\n };\n }) =>\n new ProvideContactTask(internalApi, {\n addressBook,\n transaction: arg0.input.transaction,\n appConfig: arg0.input.appConfig,\n }).run(),\n signTransaction: (arg0: {\n input: { transaction: Uint8Array; tokenPayloads: Uint8Array[] };\n }) =>\n new SignTransactionTask(internalApi, {\n derivationPath,\n transaction: arg0.input.transaction,\n tokenPayloads: arg0.input.tokenPayloads,\n }).run(),\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "SignTransactionDAStep", "GetAppConfigurationCommand", "APP_NAME", "GetTokenPayloadsTask", "ProvideContactTask", "SignTransactionTask", "SignTransactionDeviceAction", "internalApi", "getAppConfig", "buildContext", "provideContact", "signTransaction", "context", "_", "input", "error", "event", "addressBook", "contextModule", "derivationPath", "arg0"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{CommandResultFactory as C,DeviceActionStatus as e,UnknownDAError as I,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{SignTransactionDAStep as n}from"../../../../api/app-binder/SignTransactionDeviceActionTypes";import{EMPTY_TRON_ADDRESS_BOOK as A}from"../../../../api/model/TronAddressBook";import{makeDeviceActionInternalApiMock as P}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{testDeviceActionStates as d}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{SignTransactionDeviceAction as v}from"./SignTransactionDeviceAction";const O="44'/195'/0'/0/0",u=new Uint8Array([10,1,0]),N=new Uint8Array([170,187,204]),p=new Uint8Array([171,205]),T={version:"0.8.0",versionN:800,allowData:!0,allowContract:!0,truncateAddress:!1,signByHash:!1};describe("SignTransactionDeviceAction",()=>{const r=P(),m=vi.fn(),g=vi.fn(),a=vi.fn(),s=vi.fn(),c=()=>{const i=new v({input:{derivationPath:O,transaction:u,contextModule:{},addressBook:A,skipOpenApp:!0}});return vi.spyOn(i,"extractDependencies").mockReturnValue({getAppConfig:m,buildContext:g,provideContact:a,signTransaction:s}),i};beforeEach(()=>{vi.clearAllMocks(),m.mockResolvedValue(C({data:T})),g.mockResolvedValue([N]),a.mockResolvedValue(void 0),s.mockResolvedValue(C({data:p}))}),it("builds the context before announcing the review, then signs",()=>new Promise((i,o)=>{const l=c();d(l,[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTACT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION}},{status:e.Completed,output:p}],r,{onDone:()=>{expect(a).toHaveBeenCalledWith(expect.objectContaining({input:{transaction:u,appConfig:T}})),expect(s).toHaveBeenCalledWith(expect.objectContaining({input:{transaction:u,tokenPayloads:[N]}})),i()},onError:o})})),it("signs when app configuration cannot be read",()=>new Promise((i,o)=>{m.mockRejectedValue(new Error("unsupported")),d(c(),[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTACT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION}},{status:e.Completed,output:p}],r,{onDone:()=>{expect(a).toHaveBeenCalledWith(expect.objectContaining({input:{transaction:u,appConfig:null}})),i()},onError:o})})),it("signs when contact provisioning throws",()=>new Promise((i,o)=>{a.mockRejectedValue(new Error("rejected")),d(c(),[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTACT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION}},{status:e.Completed,output:p}],r,{onDone:i,onError:o})})),it("signs without a token name when building the context throws",()=>new Promise((i,o)=>{g.mockRejectedValue(new Error("boom")),d(c(),[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTACT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION}},{status:e.Completed,output:p}],r,{onDone:()=>{expect(s).toHaveBeenCalledWith(expect.objectContaining({input:{transaction:u,tokenPayloads:[]}})),i()},onError:o})})),it("reports the device error when signing fails",()=>new Promise((i,o)=>{const l=new I("rejected");s.mockResolvedValue(C({error:l})),d(c(),[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.GET_APP_CONFIG}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.BUILD_CONTEXT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None,step:n.PROVIDE_CONTACT}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.SignTransaction,step:n.SIGN_TRANSACTION}},{status:e.Error,error:l}],r,{onDone:i,onError:o})}))});
2
+ //# sourceMappingURL=SignTransactionDeviceAction.test.js.map