@ledgerhq/device-signer-kit-bitcoin 0.0.0-20250216001123 → 0.0.0-webhid-20250124103640

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 (179) hide show
  1. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
  2. package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
  3. package/lib/cjs/internal/DefaultSignerBtc.test.js +1 -1
  4. package/lib/cjs/internal/DefaultSignerBtc.test.js.map +2 -2
  5. package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
  6. package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +3 -3
  7. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
  8. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +3 -3
  9. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  10. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
  11. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
  12. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
  13. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
  14. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
  15. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js +1 -1
  16. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js.map +2 -2
  17. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js +1 -1
  18. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js.map +3 -3
  19. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js +1 -1
  20. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js.map +2 -2
  21. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js +1 -1
  22. package/lib/cjs/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js.map +2 -2
  23. package/lib/cjs/internal/app-binder/command/service/ClientCommandInterpreter.test.js +1 -1
  24. package/lib/cjs/internal/app-binder/command/service/ClientCommandInterpreter.test.js.map +2 -2
  25. package/lib/cjs/internal/app-binder/command/utils/bitcoinAppError.test.js +1 -1
  26. package/lib/cjs/internal/app-binder/command/utils/bitcoinAppError.test.js.map +2 -2
  27. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
  28. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +3 -3
  29. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
  30. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
  31. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
  32. package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
  33. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  34. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
  35. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  36. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  37. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  38. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  39. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  40. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  41. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js +1 -1
  42. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js.map +2 -2
  43. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  44. package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  45. package/lib/cjs/internal/app-binder/task/BuildPsbtTask.test.js +1 -1
  46. package/lib/cjs/internal/app-binder/task/BuildPsbtTask.test.js.map +2 -2
  47. package/lib/cjs/internal/app-binder/task/ContinueTask.test.js +1 -1
  48. package/lib/cjs/internal/app-binder/task/ContinueTask.test.js.map +2 -2
  49. package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js +1 -1
  50. package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js.map +2 -2
  51. package/lib/cjs/internal/app-binder/task/PrepareWalletPolicyTask.test.js +1 -1
  52. package/lib/cjs/internal/app-binder/task/PrepareWalletPolicyTask.test.js.map +2 -2
  53. package/lib/cjs/internal/app-binder/task/SignMessageTask.test.js +1 -1
  54. package/lib/cjs/internal/app-binder/task/SignMessageTask.test.js.map +2 -2
  55. package/lib/cjs/internal/app-binder/task/SignPsbtTask.test.js +1 -1
  56. package/lib/cjs/internal/app-binder/task/SignPsbtTask.test.js.map +2 -2
  57. package/lib/cjs/internal/app-binder/task/UpdatePsbtTask.test.js +1 -1
  58. package/lib/cjs/internal/app-binder/task/UpdatePsbtTask.test.js.map +2 -2
  59. package/lib/cjs/internal/data-store/model/DataStore.test.js +1 -1
  60. package/lib/cjs/internal/data-store/model/DataStore.test.js.map +2 -2
  61. package/lib/cjs/internal/data-store/service/DefaultDataStoreService.test.js +1 -1
  62. package/lib/cjs/internal/data-store/service/DefaultDataStoreService.test.js.map +2 -2
  63. package/lib/cjs/internal/merkle-tree/service/MerkleMapBuilder.test.js +1 -1
  64. package/lib/cjs/internal/merkle-tree/service/MerkleMapBuilder.test.js.map +2 -2
  65. package/lib/cjs/internal/merkle-tree/service/MerkleTreeBuilder.test.js +1 -1
  66. package/lib/cjs/internal/merkle-tree/service/MerkleTreeBuilder.test.js.map +2 -2
  67. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
  68. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
  69. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
  70. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
  71. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
  72. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +2 -2
  73. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
  74. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
  75. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
  76. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +2 -2
  77. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
  78. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +2 -2
  79. package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
  80. package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js.map +2 -2
  81. package/lib/cjs/internal/wallet/service/DefaultWalletSerializer.test.js +1 -1
  82. package/lib/cjs/internal/wallet/service/DefaultWalletSerializer.test.js.map +2 -2
  83. package/lib/cjs/package.json +5 -6
  84. package/lib/esm/internal/DefaultSignerBtc.test.js +1 -1
  85. package/lib/esm/internal/DefaultSignerBtc.test.js.map +2 -2
  86. package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
  87. package/lib/esm/internal/app-binder/BtcAppBinder.js.map +3 -3
  88. package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
  89. package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +3 -3
  90. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  91. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
  92. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
  93. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
  94. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
  95. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
  96. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js +1 -1
  97. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js.map +2 -2
  98. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js +1 -1
  99. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js.map +3 -3
  100. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js +1 -1
  101. package/lib/esm/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js.map +2 -2
  102. package/lib/esm/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js +1 -1
  103. package/lib/esm/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js.map +2 -2
  104. package/lib/esm/internal/app-binder/command/service/ClientCommandInterpreter.test.js +1 -1
  105. package/lib/esm/internal/app-binder/command/service/ClientCommandInterpreter.test.js.map +2 -2
  106. package/lib/esm/internal/app-binder/command/utils/bitcoinAppError.test.js +1 -1
  107. package/lib/esm/internal/app-binder/command/utils/bitcoinAppError.test.js.map +2 -2
  108. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
  109. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +3 -3
  110. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +2 -0
  111. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +7 -0
  112. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +2 -0
  113. package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +7 -0
  114. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  115. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
  116. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  117. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  118. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  119. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  120. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
  121. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
  122. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js +1 -1
  123. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js.map +2 -2
  124. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
  125. package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
  126. package/lib/esm/internal/app-binder/task/BuildPsbtTask.test.js +1 -1
  127. package/lib/esm/internal/app-binder/task/BuildPsbtTask.test.js.map +2 -2
  128. package/lib/esm/internal/app-binder/task/ContinueTask.test.js +1 -1
  129. package/lib/esm/internal/app-binder/task/ContinueTask.test.js.map +2 -2
  130. package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js +1 -1
  131. package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js.map +2 -2
  132. package/lib/esm/internal/app-binder/task/PrepareWalletPolicyTask.test.js +1 -1
  133. package/lib/esm/internal/app-binder/task/PrepareWalletPolicyTask.test.js.map +2 -2
  134. package/lib/esm/internal/app-binder/task/SignMessageTask.test.js +1 -1
  135. package/lib/esm/internal/app-binder/task/SignMessageTask.test.js.map +2 -2
  136. package/lib/esm/internal/app-binder/task/SignPsbtTask.test.js +1 -1
  137. package/lib/esm/internal/app-binder/task/SignPsbtTask.test.js.map +2 -2
  138. package/lib/esm/internal/app-binder/task/UpdatePsbtTask.test.js +1 -1
  139. package/lib/esm/internal/app-binder/task/UpdatePsbtTask.test.js.map +2 -2
  140. package/lib/esm/internal/data-store/model/DataStore.test.js +1 -1
  141. package/lib/esm/internal/data-store/model/DataStore.test.js.map +2 -2
  142. package/lib/esm/internal/data-store/service/DefaultDataStoreService.test.js +1 -1
  143. package/lib/esm/internal/data-store/service/DefaultDataStoreService.test.js.map +2 -2
  144. package/lib/esm/internal/merkle-tree/service/MerkleMapBuilder.test.js +1 -1
  145. package/lib/esm/internal/merkle-tree/service/MerkleMapBuilder.test.js.map +2 -2
  146. package/lib/esm/internal/merkle-tree/service/MerkleTreeBuilder.test.js +1 -1
  147. package/lib/esm/internal/merkle-tree/service/MerkleTreeBuilder.test.js.map +2 -2
  148. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
  149. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
  150. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
  151. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
  152. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
  153. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +2 -2
  154. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
  155. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
  156. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
  157. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +2 -2
  158. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
  159. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +2 -2
  160. package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
  161. package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js.map +2 -2
  162. package/lib/esm/internal/wallet/service/DefaultWalletSerializer.test.js +1 -1
  163. package/lib/esm/internal/wallet/service/DefaultWalletSerializer.test.js.map +2 -2
  164. package/lib/esm/package.json +5 -6
  165. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +12 -1
  166. package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
  167. package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
  168. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +19 -0
  169. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +1 -0
  170. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +2 -0
  171. package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +1 -0
  172. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +1 -2
  173. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  174. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  175. package/lib/types/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.d.ts.map +1 -1
  176. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +2 -5
  177. package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
  178. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  179. package/package.json +10 -11
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/PrepareWalletPolicyTask.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Mock } from \"vitest\";\n\nimport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n RegisteredWallet,\n type Wallet,\n} from \"@api/model/Wallet\";\nimport { PrepareWalletPolicyTask } from \"@internal/app-binder/task/PrepareWalletPolicyTask\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nconst fromDefaultWalletMock = vi.fn();\nconst fromRegisteredWalletMock = vi.fn();\n\ndescribe(\"PrepareWalletPolicyTask\", () => {\n let internalApi: { sendCommand: Mock };\n const walletBuilder = {\n fromDefaultWallet: fromDefaultWalletMock,\n fromRegisteredWallet: fromRegisteredWalletMock,\n } as unknown as WalletBuilder;\n beforeEach(() => {\n internalApi = {\n sendCommand: vi.fn(),\n };\n });\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a builded wallet from a default one\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n extendedPublicKey: \"xPublicKey\",\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n const wallet = {} as Wallet;\n fromDefaultWalletMock.mockReturnValue(wallet);\n // when\n const result = await task.run();\n // then\n expect(fromDefaultWalletMock).toHaveBeenCalledWith(\n Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n \"xPublicKey\",\n defaultWallet,\n );\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: wallet,\n }),\n );\n });\n\n it(\"should return a builded wallet from a registered one\", async () => {\n // given\n const registeredWallet = new RegisteredWallet(\n \"walletName\",\n DefaultDescriptorTemplate.LEGACY,\n [\"key0\", \"key1\"],\n Uint8Array.from([42]),\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: registeredWallet },\n walletBuilder,\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n extendedPublicKey: \"xPublicKey\",\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n const wallet = {} as Wallet;\n fromRegisteredWalletMock.mockReturnValue(wallet);\n // when\n const result = await task.run();\n // then\n expect(fromRegisteredWalletMock).toHaveBeenCalledWith(registeredWallet);\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: wallet,\n }),\n );\n });\n\n it(\"should return an error if getMasterFingerprint failed\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n const error = new UnknownDeviceExchangeError(\"Failed\");\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n error,\n }),\n ),\n );\n // when\n const result = await task.run();\n // then\n expect(result).toStrictEqual(CommandResultFactory({ error }));\n });\n\n it(\"should return an error if getExtendedPublicKey failed\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n const error = new UnknownDeviceExchangeError(\"Failed\");\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n error,\n }),\n ),\n );\n // when\n const result = await task.run();\n // then\n expect(result).toStrictEqual(CommandResultFactory({ error }));\n expect(result).toStrictEqual(\n CommandResultFactory({\n error,\n }),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n RegisteredWallet,\n type Wallet,\n} from \"@api/model/Wallet\";\nimport { PrepareWalletPolicyTask } from \"@internal/app-binder/task/PrepareWalletPolicyTask\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nconst fromDefaultWalletMock = jest.fn();\nconst fromRegisteredWalletMock = jest.fn();\n\ndescribe(\"PrepareWalletPolicyTask\", () => {\n let internalApi: { sendCommand: jest.Mock };\n const walletBuilder = {\n fromDefaultWallet: fromDefaultWalletMock,\n fromRegisteredWallet: fromRegisteredWalletMock,\n } as unknown as WalletBuilder;\n beforeEach(() => {\n internalApi = {\n sendCommand: jest.fn(),\n };\n });\n afterEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"should return a builded wallet from a default one\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n extendedPublicKey: \"xPublicKey\",\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n const wallet = {} as Wallet;\n fromDefaultWalletMock.mockReturnValue(wallet);\n // when\n const result = await task.run();\n // then\n expect(fromDefaultWalletMock).toHaveBeenCalledWith(\n Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n \"xPublicKey\",\n defaultWallet,\n );\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: wallet,\n }),\n );\n });\n\n it(\"should return a builded wallet from a registered one\", async () => {\n // given\n const registeredWallet = new RegisteredWallet(\n \"walletName\",\n DefaultDescriptorTemplate.LEGACY,\n [\"key0\", \"key1\"],\n Uint8Array.from([42]),\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: registeredWallet },\n walletBuilder,\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n extendedPublicKey: \"xPublicKey\",\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n const wallet = {} as Wallet;\n fromRegisteredWalletMock.mockReturnValue(wallet);\n // when\n const result = await task.run();\n // then\n expect(fromRegisteredWalletMock).toHaveBeenCalledWith(registeredWallet);\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: wallet,\n }),\n );\n });\n\n it(\"should return an error if getMasterFingerprint failed\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n const error = new UnknownDeviceExchangeError(\"Failed\");\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n error,\n }),\n ),\n );\n // when\n const result = await task.run();\n // then\n expect(result).toStrictEqual(CommandResultFactory({ error }));\n });\n\n it(\"should return an error if getExtendedPublicKey failed\", async () => {\n // given\n const defaultWallet = new DefaultWallet(\n \"49'/0'/0'\",\n DefaultDescriptorTemplate.LEGACY,\n );\n const task = new PrepareWalletPolicyTask(\n internalApi as unknown as InternalApi,\n { wallet: defaultWallet },\n walletBuilder,\n );\n const error = new UnknownDeviceExchangeError(\"Failed\");\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n data: {\n masterFingerprint: Uint8Array.from([0x42, 0x21, 0x12, 0x24]),\n },\n }),\n ),\n );\n internalApi.sendCommand.mockResolvedValueOnce(\n Promise.resolve(\n CommandResultFactory({\n error,\n }),\n ),\n );\n // when\n const result = await task.run();\n // then\n expect(result).toStrictEqual(CommandResultFactory({ error }));\n expect(result).toStrictEqual(\n CommandResultFactory({\n error,\n }),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["CommandResultFactory", "UnknownDeviceExchangeError", "DefaultDescriptorTemplate", "DefaultWallet", "RegisteredWallet", "PrepareWalletPolicyTask", "fromDefaultWalletMock", "fromRegisteredWalletMock", "internalApi", "walletBuilder", "defaultWallet", "task", "wallet", "result", "registeredWallet", "error"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as S,CommandResultFactory as r,InvalidStatusWordError as u}from"@ledgerhq/device-management-kit";import{CHUNK_SIZE as m,SHA256_SIZE as p}from"../../app-binder/command/utils/constants";import{DataStore as l}from"../../data-store/model/DataStore";import{SendSignMessageTask as s}from"./SignMessageTask";const f="a".repeat(m),v="a".repeat(m*2),c="44'/0'/0'/0/0",i=new Uint8Array(p).fill(1),d={v:27,r:"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e",s:"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce"},y=new Uint8Array([27,151,164,202,143,105,70,51,89,38,1,245,162,62,11,204,85,60,157,10,144,211,163,66,45,87,85,8,169,40,152,185,110,105,80,208,46,116,233,193,2,193,100,162,37,83,48,130,202,189,216,144,239,196,99,246,127,96,206,254,140,63,135,207,206]);describe("SignMessageTask",()=>{const x=r({data:new S({statusCode:new Uint8Array([144,0]),data:y})}),o={sendCommand:vi.fn()};afterEach(()=>{vi.resetAllMocks()}),describe("run",()=>{it("should correctly chunk a message that fits in 1 chunk",async()=>{const a={derivationPath:c,message:f},e={merklizeChunks:vi.fn().mockReturnValue(i)},t=()=>({run:vi.fn().mockReturnValue(x)}),n=await new s(o,a,e,t).run();expect(e.merklizeChunks).toHaveBeenCalledWith(expect.any(l),[Uint8Array.from(new Array(64).fill(97))]),expect(n).toStrictEqual(r({data:d}))}),it("should correctly chunk a message that fits in 2 chunks",async()=>{const a={derivationPath:c,message:v},e={merklizeChunks:vi.fn().mockReturnValue(i)},t=()=>({run:vi.fn().mockReturnValue(x)}),n=await new s(o,a,e,t).run();expect(e.merklizeChunks).toHaveBeenCalledWith(expect.any(l),[Uint8Array.from(new Array(64).fill(97)),Uint8Array.from(new Array(64).fill(97))]),expect(n).toStrictEqual(r({data:d}))}),it("should return an error if the initial SignMessageCommand fails",async()=>{const a={derivationPath:c,message:f},e=r({error:new u("error")}),t={merklizeChunks:vi.fn().mockReturnValue(i)},n=()=>({run:vi.fn().mockReturnValue(e)}),k=await new s(o,a,t,n).run();expect(k).toStrictEqual(r({error:new u("error")}))})})});
1
+ import{ApduResponse as S,CommandResultFactory as r,InvalidStatusWordError as u}from"@ledgerhq/device-management-kit";import{CHUNK_SIZE as m,SHA256_SIZE as p}from"../../app-binder/command/utils/constants";import{DataStore as l}from"../../data-store/model/DataStore";import{SendSignMessageTask as o}from"./SignMessageTask";const f="a".repeat(m),y="a".repeat(m*2),c="44'/0'/0'/0/0",x=new Uint8Array(p).fill(1),d={v:27,r:"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e",s:"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce"},A=new Uint8Array([27,151,164,202,143,105,70,51,89,38,1,245,162,62,11,204,85,60,157,10,144,211,163,66,45,87,85,8,169,40,152,185,110,105,80,208,46,116,233,193,2,193,100,162,37,83,48,130,202,189,216,144,239,196,99,246,127,96,206,254,140,63,135,207,206]);describe("SignMessageTask",()=>{const i=r({data:new S({statusCode:new Uint8Array([144,0]),data:A})}),s={sendCommand:jest.fn()};afterEach(()=>{jest.resetAllMocks()}),describe("run",()=>{it("should correctly chunk a message that fits in 1 chunk",async()=>{const t={derivationPath:c,message:f},e={merklizeChunks:jest.fn().mockReturnValue(x)},a=()=>({run:jest.fn().mockReturnValue(i)}),n=await new o(s,t,e,a).run();expect(e.merklizeChunks).toHaveBeenCalledWith(expect.any(l),[Uint8Array.from(new Array(64).fill(97))]),expect(n).toStrictEqual(r({data:d}))}),it("should correctly chunk a message that fits in 2 chunks",async()=>{const t={derivationPath:c,message:y},e={merklizeChunks:jest.fn().mockReturnValue(x)},a=()=>({run:jest.fn().mockReturnValue(i)}),n=await new o(s,t,e,a).run();expect(e.merklizeChunks).toHaveBeenCalledWith(expect.any(l),[Uint8Array.from(new Array(64).fill(97)),Uint8Array.from(new Array(64).fill(97))]),expect(n).toStrictEqual(r({data:d}))}),it("should return an error if the initial SignMessageCommand fails",async()=>{const t={derivationPath:c,message:f},e=r({error:new u("error")}),a={merklizeChunks:jest.fn().mockReturnValue(x)},n=()=>({run:jest.fn().mockReturnValue(e)}),k=await new o(s,t,a,n).run();expect(k).toStrictEqual(r({error:new u("error")}))})})});
2
2
  //# sourceMappingURL=SignMessageTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SignMessageTask.test.ts"],
4
- "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n CHUNK_SIZE,\n SHA256_SIZE,\n} from \"@internal/app-binder/command/utils/constants\";\nimport { type ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { DataStore } from \"@internal/data-store/model/DataStore\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\n\nimport { SendSignMessageTask } from \"./SignMessageTask\";\n\nconst EXACT_ONE_CHUNK_MESSAGE = \"a\".repeat(CHUNK_SIZE);\nconst EXACT_TWO_CHUNKS_MESSAGE = \"a\".repeat(CHUNK_SIZE * 2);\nconst DERIVATION_PATH = \"44'/0'/0'/0/0\";\nconst MERKLE_ROOT = new Uint8Array(SHA256_SIZE).fill(0x01);\n\nconst SIGNATURE: Signature = {\n v: 27,\n r: \"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e\",\n s: \"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce\",\n};\n\nconst SIGNATURE_APDU = new Uint8Array([\n 0x1b, 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5, 0xa2,\n 0x3e, 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3, 0x42, 0x2d, 0x57,\n 0x55, 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e, 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9,\n 0xc1, 0x02, 0xc1, 0x64, 0xa2, 0x25, 0x53, 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90,\n 0xef, 0xc4, 0x63, 0xf6, 0x7f, 0x60, 0xce, 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n]);\n\ndescribe(\"SignMessageTask\", () => {\n const signatureResult = CommandResultFactory<ApduResponse, void>({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: SIGNATURE_APDU,\n }),\n });\n const apiMock = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n\n afterEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should correctly chunk a message that fits in 1 chunk\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_ONE_CHUNK_MESSAGE,\n };\n\n const dataStoreService = {\n merklizeChunks: vi.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(signatureResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(dataStoreService.merklizeChunks).toHaveBeenCalledWith(\n expect.any(DataStore),\n [Uint8Array.from(new Array(64).fill(0x61))],\n );\n expect(result).toStrictEqual(CommandResultFactory({ data: SIGNATURE }));\n });\n\n it(\"should correctly chunk a message that fits in 2 chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_TWO_CHUNKS_MESSAGE,\n };\n\n const dataStoreService = {\n merklizeChunks: vi.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(signatureResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(dataStoreService.merklizeChunks).toHaveBeenCalledWith(\n expect.any(DataStore),\n [\n Uint8Array.from(new Array(64).fill(0x61)),\n Uint8Array.from(new Array(64).fill(0x61)),\n ],\n );\n expect(result).toStrictEqual(CommandResultFactory({ data: SIGNATURE }));\n });\n\n it(\"should return an error if the initial SignMessageCommand fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_ONE_CHUNK_MESSAGE,\n };\n\n const resultError = CommandResultFactory<Signature, void>({\n error: new InvalidStatusWordError(\"error\"),\n });\n const dataStoreService = {\n merklizeChunks: vi.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockReturnValue(resultError),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"error\"),\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport {\n CHUNK_SIZE,\n SHA256_SIZE,\n} from \"@internal/app-binder/command/utils/constants\";\nimport { type ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { DataStore } from \"@internal/data-store/model/DataStore\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\n\nimport { SendSignMessageTask } from \"./SignMessageTask\";\n\nconst EXACT_ONE_CHUNK_MESSAGE = \"a\".repeat(CHUNK_SIZE);\nconst EXACT_TWO_CHUNKS_MESSAGE = \"a\".repeat(CHUNK_SIZE * 2);\nconst DERIVATION_PATH = \"44'/0'/0'/0/0\";\nconst MERKLE_ROOT = new Uint8Array(SHA256_SIZE).fill(0x01);\n\nconst SIGNATURE: Signature = {\n v: 27,\n r: \"0x97a4ca8f694633592601f5a23e0bcc553c9d0a90d3a3422d575508a92898b96e\",\n s: \"0x6950d02e74e9c102c164a225533082cabdd890efc463f67f60cefe8c3f87cfce\",\n};\n\nconst SIGNATURE_APDU = new Uint8Array([\n 0x1b, 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5, 0xa2,\n 0x3e, 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3, 0x42, 0x2d, 0x57,\n 0x55, 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e, 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9,\n 0xc1, 0x02, 0xc1, 0x64, 0xa2, 0x25, 0x53, 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90,\n 0xef, 0xc4, 0x63, 0xf6, 0x7f, 0x60, 0xce, 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n]);\n\ndescribe(\"SignMessageTask\", () => {\n const signatureResult = CommandResultFactory<ApduResponse, void>({\n data: new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: SIGNATURE_APDU,\n }),\n });\n const apiMock = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n\n afterEach(() => {\n jest.resetAllMocks();\n });\n\n describe(\"run\", () => {\n it(\"should correctly chunk a message that fits in 1 chunk\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_ONE_CHUNK_MESSAGE,\n };\n\n const dataStoreService = {\n merklizeChunks: jest.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockReturnValue(signatureResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(dataStoreService.merklizeChunks).toHaveBeenCalledWith(\n expect.any(DataStore),\n [Uint8Array.from(new Array(64).fill(0x61))],\n );\n expect(result).toStrictEqual(CommandResultFactory({ data: SIGNATURE }));\n });\n\n it(\"should correctly chunk a message that fits in 2 chunks\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_TWO_CHUNKS_MESSAGE,\n };\n\n const dataStoreService = {\n merklizeChunks: jest.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockReturnValue(signatureResult),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(dataStoreService.merklizeChunks).toHaveBeenCalledWith(\n expect.any(DataStore),\n [\n Uint8Array.from(new Array(64).fill(0x61)),\n Uint8Array.from(new Array(64).fill(0x61)),\n ],\n );\n expect(result).toStrictEqual(CommandResultFactory({ data: SIGNATURE }));\n });\n\n it(\"should return an error if the initial SignMessageCommand fails\", async () => {\n // GIVEN\n const args = {\n derivationPath: DERIVATION_PATH,\n message: EXACT_ONE_CHUNK_MESSAGE,\n };\n\n const resultError = CommandResultFactory<Signature, void>({\n error: new InvalidStatusWordError(\"error\"),\n });\n const dataStoreService = {\n merklizeChunks: jest.fn().mockReturnValue(MERKLE_ROOT),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockReturnValue(resultError),\n }) as unknown as ContinueTask;\n\n // WHEN\n const result = await new SendSignMessageTask(\n apiMock,\n args,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"error\"),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["ApduResponse", "CommandResultFactory", "InvalidStatusWordError", "CHUNK_SIZE", "SHA256_SIZE", "DataStore", "SendSignMessageTask", "EXACT_ONE_CHUNK_MESSAGE", "EXACT_TWO_CHUNKS_MESSAGE", "DERIVATION_PATH", "MERKLE_ROOT", "SIGNATURE", "SIGNATURE_APDU", "signatureResult", "apiMock", "args", "dataStoreService", "continueTaskFactory", "result", "resultError"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as a,UnknownDeviceExchangeError as l}from"@ledgerhq/device-management-kit";import{Maybe as d,Nothing as b}from"purify-ts";import{SignPsbtCommand as m}from"../../app-binder/command/SignPsbtCommand";import{SignPsbtTask as c}from"../../app-binder/task/SignPsbtTask";const u=Uint8Array.from([0,32,241,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210]),p=Uint8Array.from([255,254,255,255,255,0,0,0,0,0,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60]),y=Uint8Array.from([255,255,255,255,255,0,0,0,0,0,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,1,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60]);describe("SignPsbtTask",()=>{describe("run",()=>{it("should return partial signatures",async()=>{const x={sendCommand:vi.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:vi.fn(()=>Uint8Array.from([5]))},f={getVarint:vi.fn(()=>d.of(42))},s=()=>({run:vi.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[u]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,f,s).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,pubkey:Uint8Array.from([241,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95]),signature:Uint8Array.from([18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210])}]}))}),it("should return musig partial signatures",async()=>{const x={sendCommand:vi.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:vi.fn(()=>Uint8Array.from([5]))},f={getVarint:vi.fn(()=>d.of(42))},s=()=>({run:vi.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[p]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,f,s).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,partialSignature:Uint8Array.from([232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18]),participantPubkey:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89]),aggregatedPubkey:Uint8Array.from([89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51]),tapleafHash:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60])}]}))}),it("should return musig pub nonce",async()=>{const x={sendCommand:vi.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:vi.fn(()=>Uint8Array.from([5]))},f={getVarint:vi.fn(()=>d.of(42))},s=()=>({run:vi.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[y]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,f,s).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,pubnonce:Uint8Array.from([232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,1]),participantPubkey:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89]),aggregatedPubkey:Uint8Array.from([89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51]),tapleafHash:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60])}]}))})}),describe("errors",()=>{it("should return an error if continue task fails",async()=>{const x={sendCommand:vi.fn()},e={getGlobalValue:vi.fn(()=>b)},t={},n={},r={},o={getId:vi.fn(()=>Uint8Array.from([5]))},f={getVarint:vi.fn(()=>d.of(42))},s=()=>({run:vi.fn().mockResolvedValue(a({error:new l("Failed")}))}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,f,s).run();expect(i).toStrictEqual(a({error:new l("Failed")}))})})});
1
+ import{CommandResultFactory as a,UnknownDeviceExchangeError as l}from"@ledgerhq/device-management-kit";import{Maybe as d,Nothing as b}from"purify-ts";import{SignPsbtCommand as m}from"../../app-binder/command/SignPsbtCommand";import{SignPsbtTask as c}from"../../app-binder/task/SignPsbtTask";const u=Uint8Array.from([0,32,241,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210]),p=Uint8Array.from([255,254,255,255,255,0,0,0,0,0,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60]),y=Uint8Array.from([255,255,255,255,255,0,0,0,0,0,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,1,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60]);describe("SignPsbtTask",()=>{describe("run",()=>{it("should return partial signatures",async()=>{const x={sendCommand:jest.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:jest.fn(()=>Uint8Array.from([5]))},s={getVarint:jest.fn(()=>d.of(42))},f=()=>({run:jest.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[u]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,s,f).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,pubkey:Uint8Array.from([241,232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95]),signature:Uint8Array.from([18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210])}]}))}),it("should return musig partial signatures",async()=>{const x={sendCommand:jest.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:jest.fn(()=>Uint8Array.from([5]))},s={getVarint:jest.fn(()=>d.of(42))},f=()=>({run:jest.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[p]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,s,f).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,partialSignature:Uint8Array.from([232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18]),participantPubkey:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89]),aggregatedPubkey:Uint8Array.from([89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51]),tapleafHash:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60])}]}))}),it("should return musig pub nonce",async()=>{const x={sendCommand:jest.fn()},e={getGlobalValue:()=>d.of(Uint8Array.from([3]))},t={hmac:Uint8Array.from([4])},n={globalCommitment:Uint8Array.from([3]),inputsRoot:Uint8Array.from([1]),outputsRoot:Uint8Array.from([2])},r={},o={getId:jest.fn(()=>Uint8Array.from([5]))},s={getVarint:jest.fn(()=>d.of(42))},f=()=>({run:jest.fn().mockResolvedValue(a({data:[]})),getYieldedResults:()=>[y]}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,s,f).run();expect(x.sendCommand).toHaveBeenCalledWith(new m({globalCommitment:Uint8Array.from([3]),inputsCount:42,inputsRoot:Uint8Array.from([1]),outputsCount:42,outputsRoot:Uint8Array.from([2]),walletId:Uint8Array.from([5]),walletHmac:Uint8Array.from([4])})),expect(i).toStrictEqual(a({data:[{inputIndex:0,pubnonce:Uint8Array.from([232,66,68,127,174,123,28,110,183,168,167,133,247,118,250,25,169,58,185,108,193,238,238,233,71,193,113,19,56,95,95,18,77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89,1]),participantPubkey:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60,89]),aggregatedPubkey:Uint8Array.from([89,65,19,229,113,0,6,61,157,204,215,143,179,147,130,219,248,10,143,17,80,253,89,217,254,183,158,37,59,210,254,238,51]),tapleafHash:Uint8Array.from([77,99,92,242,82,174,38,166,123,226,119,113,46,173,7,180,72,150,223,176,22,252,157,3,163,233,34,189,154,1,102,60])}]}))})}),describe("errors",()=>{it("should return an error if continue task fails",async()=>{const x={sendCommand:jest.fn()},e={getGlobalValue:jest.fn(()=>b)},t={},n={},r={},o={getId:jest.fn(()=>Uint8Array.from([5]))},s={getVarint:jest.fn(()=>d.of(42))},f=()=>({run:jest.fn().mockResolvedValue(a({error:new l("Failed")}))}),i=await new c(x,{psbt:e,wallet:t,psbtCommitment:n,dataStore:r},o,s,f).run();expect(i).toStrictEqual(a({error:new l("Failed")}))})})});
2
2
  //# sourceMappingURL=SignPsbtTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/SignPsbtTask.test.ts"],
4
- "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { SignPsbtCommand } from \"@internal/app-binder/command/SignPsbtCommand\";\nimport { type ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { SignPsbtTask } from \"@internal/app-binder/task/SignPsbtTask\";\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport type { PsbtCommitment } from \"@internal/data-store/service/DataStoreService\";\nimport { type Psbt } from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nconst SIGN_PSBT_YIELD_PARIAL_SIG_RESULT = Uint8Array.from([\n 0x00, 0x20, 0xf1, 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee,\n 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2,\n 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48,\n 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59,\n 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n]);\n\nconst SIGN_PSBT_YIELD_MUSIG_PARIAL_SIG_RESULT = Uint8Array.from([\n 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x42, 0x44,\n 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19,\n 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d,\n 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13,\n 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb,\n 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b,\n 0xd2, 0xfe, 0xee, 0x33, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b,\n 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc,\n 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c,\n]);\n\nconst SIGN_PSBT_YIELD_MUSIG_PUB_NONCE_RESULT = Uint8Array.from([\n 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x42, 0x44,\n 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19,\n 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d,\n 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x01, 0x4d, 0x63,\n 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07,\n 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd,\n 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d,\n 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11, 0x50,\n 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2, 0xfe, 0xee, 0x33, 0x4d,\n 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad,\n 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22,\n 0xbd, 0x9a, 0x01, 0x66, 0x3c,\n]);\n\ndescribe(\"SignPsbtTask\", () => {\n describe(\"run\", () => {\n it(\"should return partial signatures\", async () => {\n // given\n const api = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: vi.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: vi.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_PARIAL_SIG_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([\n 0xf1, 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7,\n 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9,\n 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f,\n ]),\n signature: Uint8Array.from([\n 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b,\n 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf,\n 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a,\n 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00,\n 0x06, 0x3d, 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb,\n 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7,\n 0x9e, 0x25, 0x3b, 0xd2,\n ]),\n },\n ],\n }),\n );\n });\n it(\"should return musig partial signatures\", async () => {\n // given\n const api = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: vi.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: vi.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_MUSIG_PARIAL_SIG_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n partialSignature: Uint8Array.from([\n 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c,\n 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f,\n 0x5f, 0x12,\n ]),\n participantPubkey: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59,\n ]),\n aggregatedPubkey: Uint8Array.from([\n 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11,\n 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n 0xfe, 0xee, 0x33,\n ]),\n tapleafHash: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c,\n ]),\n },\n ],\n }),\n );\n });\n it(\"should return musig pub nonce\", async () => {\n // given\n const api = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: vi.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: vi.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_MUSIG_PUB_NONCE_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubnonce: Uint8Array.from([\n 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c,\n 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f,\n 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6,\n 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96,\n 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd,\n 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x01,\n ]),\n participantPubkey: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59,\n ]),\n aggregatedPubkey: Uint8Array.from([\n 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11,\n 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n 0xfe, 0xee, 0x33,\n ]),\n tapleafHash: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c,\n ]),\n },\n ],\n }),\n );\n });\n });\n describe(\"errors\", () => {\n it(\"should return an error if continue task fails\", async () => {\n // given\n const api = {\n sendCommand: vi.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: vi.fn(() => Nothing),\n } as unknown as Psbt;\n const wallet = {} as Wallet;\n const psbtCommitment = {} as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: vi.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: vi.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: vi.fn().mockResolvedValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Failed\"),\n }),\n ),\n }) as unknown as ContinueTask;\n // when\n const result = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Failed\"),\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Maybe, Nothing } from \"purify-ts\";\n\nimport { SignPsbtCommand } from \"@internal/app-binder/command/SignPsbtCommand\";\nimport { type ContinueTask } from \"@internal/app-binder/task/ContinueTask\";\nimport { SignPsbtTask } from \"@internal/app-binder/task/SignPsbtTask\";\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport type { PsbtCommitment } from \"@internal/data-store/service/DataStoreService\";\nimport { type Psbt } from \"@internal/psbt/model/Psbt\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nconst SIGN_PSBT_YIELD_PARIAL_SIG_RESULT = Uint8Array.from([\n 0x00, 0x20, 0xf1, 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee,\n 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2,\n 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48,\n 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59,\n 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n]);\n\nconst SIGN_PSBT_YIELD_MUSIG_PARIAL_SIG_RESULT = Uint8Array.from([\n 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x42, 0x44,\n 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19,\n 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d,\n 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13,\n 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb,\n 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b,\n 0xd2, 0xfe, 0xee, 0x33, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b,\n 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc,\n 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c,\n]);\n\nconst SIGN_PSBT_YIELD_MUSIG_PUB_NONCE_RESULT = Uint8Array.from([\n 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x42, 0x44,\n 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19,\n 0xa9, 0x3a, 0xb9, 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d,\n 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x01, 0x4d, 0x63,\n 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07,\n 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd,\n 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d,\n 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11, 0x50,\n 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2, 0xfe, 0xee, 0x33, 0x4d,\n 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad,\n 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22,\n 0xbd, 0x9a, 0x01, 0x66, 0x3c,\n]);\n\ndescribe(\"SignPsbtTask\", () => {\n describe(\"run\", () => {\n it(\"should return partial signatures\", async () => {\n // given\n const api = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: jest.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: jest.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_PARIAL_SIG_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([\n 0xf1, 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7,\n 0xa8, 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9,\n 0x6c, 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38,\n 0x5f, 0x5f,\n ]),\n signature: Uint8Array.from([\n 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b,\n 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf,\n 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a,\n 0x01, 0x66, 0x3c, 0x59, 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00,\n 0x06, 0x3d, 0x9d, 0xcc, 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb,\n 0xf8, 0x0a, 0x8f, 0x11, 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7,\n 0x9e, 0x25, 0x3b, 0xd2,\n ]),\n },\n ],\n }),\n );\n });\n it(\"should return musig partial signatures\", async () => {\n // given\n const api = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: jest.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: jest.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_MUSIG_PARIAL_SIG_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n partialSignature: Uint8Array.from([\n 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c,\n 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f,\n 0x5f, 0x12,\n ]),\n participantPubkey: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59,\n ]),\n aggregatedPubkey: Uint8Array.from([\n 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11,\n 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n 0xfe, 0xee, 0x33,\n ]),\n tapleafHash: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c,\n ]),\n },\n ],\n }),\n );\n });\n it(\"should return musig pub nonce\", async () => {\n // given\n const api = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: () => Maybe.of(Uint8Array.from([0x03])),\n } as unknown as Psbt;\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as Wallet;\n const psbtCommitment = {\n globalCommitment: Uint8Array.from([0x03]),\n inputsRoot: Uint8Array.from([0x01]),\n outputsRoot: Uint8Array.from([0x02]),\n } as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: jest.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: jest.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n data: [],\n }),\n ),\n getYieldedResults: () => [SIGN_PSBT_YIELD_MUSIG_PUB_NONCE_RESULT],\n }) as unknown as ContinueTask;\n\n // when\n const signatures = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(api.sendCommand).toHaveBeenCalledWith(\n new SignPsbtCommand({\n globalCommitment: Uint8Array.from([0x03]),\n inputsCount: 42,\n inputsRoot: Uint8Array.from([0x01]),\n outputsCount: 42,\n outputsRoot: Uint8Array.from([0x02]),\n walletId: Uint8Array.from([0x05]),\n walletHmac: Uint8Array.from([0x04]),\n }),\n );\n expect(signatures).toStrictEqual(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubnonce: Uint8Array.from([\n 0xe8, 0x42, 0x44, 0x7f, 0xae, 0x7b, 0x1c, 0x6e, 0xb7, 0xa8,\n 0xa7, 0x85, 0xf7, 0x76, 0xfa, 0x19, 0xa9, 0x3a, 0xb9, 0x6c,\n 0xc1, 0xee, 0xee, 0xe9, 0x47, 0xc1, 0x71, 0x13, 0x38, 0x5f,\n 0x5f, 0x12, 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6,\n 0x7b, 0xe2, 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96,\n 0xdf, 0xb0, 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd,\n 0x9a, 0x01, 0x66, 0x3c, 0x59, 0x01,\n ]),\n participantPubkey: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c, 0x59,\n ]),\n aggregatedPubkey: Uint8Array.from([\n 0x59, 0x41, 0x13, 0xe5, 0x71, 0x00, 0x06, 0x3d, 0x9d, 0xcc,\n 0xd7, 0x8f, 0xb3, 0x93, 0x82, 0xdb, 0xf8, 0x0a, 0x8f, 0x11,\n 0x50, 0xfd, 0x59, 0xd9, 0xfe, 0xb7, 0x9e, 0x25, 0x3b, 0xd2,\n 0xfe, 0xee, 0x33,\n ]),\n tapleafHash: Uint8Array.from([\n 0x4d, 0x63, 0x5c, 0xf2, 0x52, 0xae, 0x26, 0xa6, 0x7b, 0xe2,\n 0x77, 0x71, 0x2e, 0xad, 0x07, 0xb4, 0x48, 0x96, 0xdf, 0xb0,\n 0x16, 0xfc, 0x9d, 0x03, 0xa3, 0xe9, 0x22, 0xbd, 0x9a, 0x01,\n 0x66, 0x3c,\n ]),\n },\n ],\n }),\n );\n });\n });\n describe(\"errors\", () => {\n it(\"should return an error if continue task fails\", async () => {\n // given\n const api = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n const psbt = {\n getGlobalValue: jest.fn(() => Nothing),\n } as unknown as Psbt;\n const wallet = {} as Wallet;\n const psbtCommitment = {} as PsbtCommitment;\n const dataStore = {} as DataStore;\n const walletSerializer = {\n getId: jest.fn(() => Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n const valueParser = {\n getVarint: jest.fn(() => Maybe.of(42)),\n } as unknown as ValueParser;\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Failed\"),\n }),\n ),\n }) as unknown as ContinueTask;\n // when\n const result = await new SignPsbtTask(\n api,\n {\n psbt,\n wallet,\n psbtCommitment,\n dataStore,\n },\n walletSerializer,\n valueParser,\n continueTaskFactory,\n ).run();\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Failed\"),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["CommandResultFactory", "UnknownDeviceExchangeError", "Maybe", "Nothing", "SignPsbtCommand", "SignPsbtTask", "SIGN_PSBT_YIELD_PARIAL_SIG_RESULT", "SIGN_PSBT_YIELD_MUSIG_PARIAL_SIG_RESULT", "SIGN_PSBT_YIELD_MUSIG_PUB_NONCE_RESULT", "api", "psbt", "wallet", "psbtCommitment", "dataStore", "walletSerializer", "valueParser", "continueTaskFactory", "signatures", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as x}from"@ledgerhq/device-management-kit";import{Right as p}from"purify-ts";import{UpdatePsbtTask as S}from"../../app-binder/task/UpdatePsbtTask";import{Key as n}from"../../psbt/model/Key";import{Psbt as a,PsbtGlobal as o,PsbtIn as r}from"../../psbt/model/Psbt";import{Value as t}from"../../psbt/model/Value";import{DefaultValueParser as U}from"../../psbt/service/value/DefaultValueParser";describe("UpdatePsbtTask",()=>{it("should update taproot psbt with signatures",async()=>{const e=Uint8Array.from(new Array(64).fill(100)),i={inputIndex:0,signature:e,pubkey:Uint8Array.from([33])},w=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.TAP_BIP32_DERIVATION,Uint8Array.from([1,3,4,17])).toHexaString(),new t(Uint8Array.from([16,18]))],[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),s={map:vi.fn(()=>p(w))},m=await new S({psbt:"",signatures:[i]},new U,s).run();expect(m).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTWITNESS).toHexaString(),new t(Uint8Array.from([1,64,...e]))]])])}))}),it("should update legacy psbt with signatures",async()=>{const e={inputIndex:0,signature:Uint8Array.from([66]),pubkey:Uint8Array.from([33])},i=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.BIP32_DERIVATION,Uint8Array.from([1,2])).toHexaString(),new t(Uint8Array.from([]))],[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),w={map:vi.fn(()=>p(i))},s=await new S({psbt:"",signatures:[e]},new U,w).run();expect(s).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTSIG).toHexaString(),new t(Uint8Array.from([1,66,1,33]))]])])}))}),it("should update legacy segwit psbt with signatures",async()=>{const e={inputIndex:0,signature:Uint8Array.from([66]),pubkey:Uint8Array.from([33])},i=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.BIP32_DERIVATION,Uint8Array.from([1,2])).toHexaString(),new t(Uint8Array.from([]))],[new n(r.WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),w={map:vi.fn(()=>p(i))},s=await new S({psbt:"",signatures:[e]},new U,w).run();expect(s).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTWITNESS).toHexaString(),new t(Uint8Array.from([2,1,66,1,33]))],[new n(r.FINAL_SCRIPTSIG).toHexaString(),new t(Uint8Array.from([2,9,153]))]])])}))})});
1
+ import{CommandResultFactory as x}from"@ledgerhq/device-management-kit";import{Right as p}from"purify-ts";import{UpdatePsbtTask as S}from"../../app-binder/task/UpdatePsbtTask";import{Key as n}from"../../psbt/model/Key";import{Psbt as a,PsbtGlobal as o,PsbtIn as r}from"../../psbt/model/Psbt";import{Value as t}from"../../psbt/model/Value";import{DefaultValueParser as U}from"../../psbt/service/value/DefaultValueParser";describe("UpdatePsbtTask",()=>{it("should update taproot psbt with signatures",async()=>{const e=Uint8Array.from(new Array(64).fill(100)),i={inputIndex:0,signature:e,pubkey:Uint8Array.from([33])},w=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.TAP_BIP32_DERIVATION,Uint8Array.from([1,3,4,17])).toHexaString(),new t(Uint8Array.from([16,18]))],[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),s={map:jest.fn(()=>p(w))},m=await new S({psbt:"",signatures:[i]},new U,s).run();expect(m).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTWITNESS).toHexaString(),new t(Uint8Array.from([1,64,...e]))]])])}))}),it("should update legacy psbt with signatures",async()=>{const e={inputIndex:0,signature:Uint8Array.from([66]),pubkey:Uint8Array.from([33])},i=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.BIP32_DERIVATION,Uint8Array.from([1,2])).toHexaString(),new t(Uint8Array.from([]))],[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),w={map:jest.fn(()=>p(i))},s=await new S({psbt:"",signatures:[e]},new U,w).run();expect(s).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.NON_WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTSIG).toHexaString(),new t(Uint8Array.from([1,66,1,33]))]])])}))}),it("should update legacy segwit psbt with signatures",async()=>{const e={inputIndex:0,signature:Uint8Array.from([66]),pubkey:Uint8Array.from([33])},i=new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.of(1))]]),[new Map([[new n(r.BIP32_DERIVATION,Uint8Array.from([1,2])).toHexaString(),new t(Uint8Array.from([]))],[new n(r.WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))]])]),w={map:jest.fn(()=>p(i))},s=await new S({psbt:"",signatures:[e]},new U,w).run();expect(s).toStrictEqual(x({data:new a(new Map([[new n(o.INPUT_COUNT).toHexaString(),new t(Uint8Array.from([1]))]]),[new Map([[new n(r.WITNESS_UTXO).toHexaString(),new t(Uint8Array.from([]))],[new n(r.REDEEM_SCRIPT).toHexaString(),new t(Uint8Array.from([9,153]))],[new n(r.FINAL_SCRIPTWITNESS).toHexaString(),new t(Uint8Array.from([2,1,66,1,33]))],[new n(r.FINAL_SCRIPTSIG).toHexaString(),new t(Uint8Array.from([2,9,153]))]])])}))})});
2
2
  //# sourceMappingURL=UpdatePsbtTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/UpdatePsbtTask.test.ts"],
4
- "sourcesContent": ["import { CommandResultFactory } from \"@ledgerhq/device-management-kit\";\nimport { Right } from \"purify-ts\";\n\nimport { UpdatePsbtTask } from \"@internal/app-binder/task/UpdatePsbtTask\";\nimport { Key } from \"@internal/psbt/model/Key\";\nimport { Psbt, PsbtGlobal, PsbtIn } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { DefaultValueParser } from \"@internal/psbt/service/value/DefaultValueParser\";\n\ndescribe(\"UpdatePsbtTask\", () => {\n it(\"should update taproot psbt with signatures\", async () => {\n // given\n const schnorr = Uint8Array.from(new Array(64).fill(0x64));\n const signature = {\n inputIndex: 0,\n signature: schnorr,\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.TAP_BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x03, 0x04, 0x11]),\n ).toHexaString(),\n new Value(Uint8Array.from([0x10, 0x12])),\n ],\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: vi.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTWITNESS).toHexaString(),\n new Value(Uint8Array.from([0x01, 0x40, ...schnorr])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n it(\"should update legacy psbt with signatures\", async () => {\n // given\n const signature = {\n inputIndex: 0,\n signature: Uint8Array.from([0x42]),\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x02]),\n ).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: vi.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTSIG).toHexaString(),\n new Value(Uint8Array.from([0x01, 0x42, 0x01, 0x21])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n it(\"should update legacy segwit psbt with signatures\", async () => {\n // given\n const signature = {\n inputIndex: 0,\n signature: Uint8Array.from([0x42]),\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x02]),\n ).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: vi.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTWITNESS).toHexaString(),\n new Value(Uint8Array.from([0x02, 0x01, 0x42, 0x01, 0x21])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTSIG).toHexaString(),\n new Value(Uint8Array.from([0x02, 0x09, 0x99])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { CommandResultFactory } from \"@ledgerhq/device-management-kit\";\nimport { Right } from \"purify-ts\";\n\nimport { UpdatePsbtTask } from \"@internal/app-binder/task/UpdatePsbtTask\";\nimport { Key } from \"@internal/psbt/model/Key\";\nimport { Psbt, PsbtGlobal, PsbtIn } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { DefaultValueParser } from \"@internal/psbt/service/value/DefaultValueParser\";\n\ndescribe(\"UpdatePsbtTask\", () => {\n it(\"should update taproot psbt with signatures\", async () => {\n // given\n const schnorr = Uint8Array.from(new Array(64).fill(0x64));\n const signature = {\n inputIndex: 0,\n signature: schnorr,\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.TAP_BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x03, 0x04, 0x11]),\n ).toHexaString(),\n new Value(Uint8Array.from([0x10, 0x12])),\n ],\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: jest.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTWITNESS).toHexaString(),\n new Value(Uint8Array.from([0x01, 0x40, ...schnorr])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n it(\"should update legacy psbt with signatures\", async () => {\n // given\n const signature = {\n inputIndex: 0,\n signature: Uint8Array.from([0x42]),\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x02]),\n ).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: jest.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.NON_WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTSIG).toHexaString(),\n new Value(Uint8Array.from([0x01, 0x42, 0x01, 0x21])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n it(\"should update legacy segwit psbt with signatures\", async () => {\n // given\n const signature = {\n inputIndex: 0,\n signature: Uint8Array.from([0x42]),\n pubkey: Uint8Array.from([0x21]),\n };\n\n const fakePsbt = new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.of(1)),\n ],\n ]),\n [\n new Map([\n [\n new Key(\n PsbtIn.BIP32_DERIVATION,\n Uint8Array.from([0x01, 0x02]),\n ).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n ]),\n ],\n );\n\n const psbtMapperMock = {\n map: jest.fn(() => Right(fakePsbt)),\n } as unknown as PsbtMapper;\n\n // when\n const result = await new UpdatePsbtTask(\n {\n psbt: \"\",\n signatures: [signature],\n },\n new DefaultValueParser(),\n psbtMapperMock,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: new Psbt(\n new Map([\n [\n new Key(PsbtGlobal.INPUT_COUNT).toHexaString(),\n new Value(Uint8Array.from([1])),\n ],\n ]),\n [\n new Map([\n [\n new Key(PsbtIn.WITNESS_UTXO).toHexaString(),\n new Value(Uint8Array.from([])),\n ],\n [\n new Key(PsbtIn.REDEEM_SCRIPT).toHexaString(),\n new Value(Uint8Array.from([0x09, 0x99])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTWITNESS).toHexaString(),\n new Value(Uint8Array.from([0x02, 0x01, 0x42, 0x01, 0x21])),\n ],\n [\n new Key(PsbtIn.FINAL_SCRIPTSIG).toHexaString(),\n new Value(Uint8Array.from([0x02, 0x09, 0x99])),\n ],\n ]),\n ],\n ),\n }),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["CommandResultFactory", "Right", "UpdatePsbtTask", "Key", "Psbt", "PsbtGlobal", "PsbtIn", "Value", "DefaultValueParser", "schnorr", "signature", "fakePsbt", "psbtMapperMock", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{hexaStringToBuffer as s}from"@ledgerhq/device-management-kit";import{Just as m,Nothing as g}from"purify-ts";import{Leaf as r}from"../../merkle-tree/model/Leaf";import{DataStore as p}from"./DataStore";const o={leaves:[new r(Uint8Array.from([0,0]),Uint8Array.from([42])),new r(Uint8Array.from([0,1]),Uint8Array.from([43])),new r(Uint8Array.from([0,2]),Uint8Array.from([44])),new r(Uint8Array.from([0,3]),Uint8Array.from([45]))],proof:[Uint8Array.from([9,8,7,6]),Uint8Array.from([5,4,3,2])],root:s("9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb")},t={leaves:[new r(Uint8Array.from([1,0]),Uint8Array.from([80])),new r(Uint8Array.from([2,0]),Uint8Array.from([81])),new r(Uint8Array.from([3,0]),Uint8Array.from([82])),new r(Uint8Array.from([4,0]),Uint8Array.from([83])),new r(Uint8Array.from([5,0]),Uint8Array.from([84])),new r(Uint8Array.from([6,0]),Uint8Array.from([85])),new r(Uint8Array.from([7,0]),Uint8Array.from([86])),new r(Uint8Array.from([8,0]),Uint8Array.from([87])),new r(Uint8Array.from([9,0]),Uint8Array.from([88])),new r(Uint8Array.from([10,0]),Uint8Array.from([89]))],proof:[Uint8Array.from([255,254,253]),Uint8Array.from([1,2,3,4]),Uint8Array.from([170,187,204]),Uint8Array.from([7,6,5,4])],root:s("e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac")};describe("DataStore",()=>{const d=()=>({size:vi.fn(),getRoot:vi.fn(),getLeaves:vi.fn(),getLeafHash:vi.fn(),getProof:vi.fn()});beforeEach(()=>{vi.resetAllMocks()}),it("Add preimages, then get it",()=>{const i=s("deadbeef1"),a=s("deadbeef2"),n=s("42ff1"),e=s("42ff2"),f=s("42ff3"),c=new p;c.addPreimage(n,i),c.addPreimage(e,a);const l=c.getPreimage(n);expect(l.isJust()).toStrictEqual(!0),expect(l.unsafeCoerce()).toStrictEqual(i);const u=c.getPreimage(e);expect(u.isJust()).toStrictEqual(!0),expect(u.unsafeCoerce()).toStrictEqual(a);const k=c.getPreimage(f);expect(k.isJust()).toStrictEqual(!1)}),it("Add merkletrees, then get index",()=>{const i=s("deadbeef"),a=d(),n=d(),e=new p;a.getRoot.mockReturnValueOnce(o.root),a.getLeaves.mockReturnValueOnce(o.leaves).mockReturnValueOnce(o.leaves),n.getRoot.mockReturnValueOnce(t.root),n.getLeaves.mockReturnValueOnce(t.leaves).mockReturnValueOnce(t.leaves).mockReturnValueOnce(t.leaves),e.addMerkleTree(a),e.addMerkleTree(n);const f=e.getMerkleLeafIndex(o.root,o.leaves[2].hash);expect(f.isJust()).toStrictEqual(!0),expect(f.unsafeCoerce()).toStrictEqual(2);const c=e.getMerkleLeafIndex(t.root,t.leaves[7].hash);expect(c.isJust()).toStrictEqual(!0),expect(c.unsafeCoerce()).toStrictEqual(7);const l=e.getMerkleLeafIndex(t.root,o.leaves[2].hash);expect(l.isJust()).toStrictEqual(!1);const u=e.getMerkleLeafIndex(i,i);expect(u.isJust()).toStrictEqual(!1)}),it("Add merkletrees, then get proof",()=>{const i=s("deadbeef"),a=d(),n=d(),e=new p;a.getRoot.mockReturnValueOnce(o.root),a.getLeaves.mockReturnValueOnce(o.leaves),a.getLeafHash.mockReturnValueOnce(m(o.leaves[1].hash)),a.getProof.mockReturnValueOnce(m(o.proof)),n.getRoot.mockReturnValueOnce(t.root),n.getLeaves.mockReturnValueOnce(t.leaves),n.getLeafHash.mockReturnValueOnce(m(t.leaves[5].hash)).mockReturnValueOnce(g).mockReturnValueOnce(m(t.leaves[5].hash)),n.getProof.mockReturnValueOnce(m(t.proof)).mockReturnValueOnce(g),e.addMerkleTree(a),e.addMerkleTree(n);const f=e.getMerkleProof(o.root,1);expect(f.isJust()).toStrictEqual(!0),expect(f.unsafeCoerce().leafHash).toStrictEqual(o.leaves[1].hash),expect(f.unsafeCoerce().proof).toStrictEqual(o.proof);const c=e.getMerkleProof(t.root,5);expect(c.isJust()).toStrictEqual(!0),expect(c.unsafeCoerce().leafHash).toStrictEqual(t.leaves[5].hash),expect(c.unsafeCoerce().proof).toStrictEqual(t.proof);const l=e.getMerkleProof(t.root,5);expect(l.isJust()).toStrictEqual(!1);const u=e.getMerkleProof(t.root,5);expect(u.isJust()).toStrictEqual(!1);const k=e.getMerkleProof(i,0);expect(k.isJust()).toStrictEqual(!1)})});
1
+ import{hexaStringToBuffer as c}from"@ledgerhq/device-management-kit";import{Just as m,Nothing as g}from"purify-ts";import{Leaf as r}from"../../merkle-tree/model/Leaf";import{DataStore as p}from"./DataStore";const o={leaves:[new r(Uint8Array.from([0,0]),Uint8Array.from([42])),new r(Uint8Array.from([0,1]),Uint8Array.from([43])),new r(Uint8Array.from([0,2]),Uint8Array.from([44])),new r(Uint8Array.from([0,3]),Uint8Array.from([45]))],proof:[Uint8Array.from([9,8,7,6]),Uint8Array.from([5,4,3,2])],root:c("9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb")},t={leaves:[new r(Uint8Array.from([1,0]),Uint8Array.from([80])),new r(Uint8Array.from([2,0]),Uint8Array.from([81])),new r(Uint8Array.from([3,0]),Uint8Array.from([82])),new r(Uint8Array.from([4,0]),Uint8Array.from([83])),new r(Uint8Array.from([5,0]),Uint8Array.from([84])),new r(Uint8Array.from([6,0]),Uint8Array.from([85])),new r(Uint8Array.from([7,0]),Uint8Array.from([86])),new r(Uint8Array.from([8,0]),Uint8Array.from([87])),new r(Uint8Array.from([9,0]),Uint8Array.from([88])),new r(Uint8Array.from([10,0]),Uint8Array.from([89]))],proof:[Uint8Array.from([255,254,253]),Uint8Array.from([1,2,3,4]),Uint8Array.from([170,187,204]),Uint8Array.from([7,6,5,4])],root:c("e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac")};describe("DataStore",()=>{const d=()=>({size:jest.fn(),getRoot:jest.fn(),getLeaves:jest.fn(),getLeafHash:jest.fn(),getProof:jest.fn()});beforeEach(()=>{jest.resetAllMocks()}),it("Add preimages, then get it",()=>{const i=c("deadbeef1"),a=c("deadbeef2"),n=c("42ff1"),e=c("42ff2"),f=c("42ff3"),s=new p;s.addPreimage(n,i),s.addPreimage(e,a);const l=s.getPreimage(n);expect(l.isJust()).toStrictEqual(!0),expect(l.unsafeCoerce()).toStrictEqual(i);const u=s.getPreimage(e);expect(u.isJust()).toStrictEqual(!0),expect(u.unsafeCoerce()).toStrictEqual(a);const k=s.getPreimage(f);expect(k.isJust()).toStrictEqual(!1)}),it("Add merkletrees, then get index",()=>{const i=c("deadbeef"),a=d(),n=d(),e=new p;a.getRoot.mockReturnValueOnce(o.root),a.getLeaves.mockReturnValueOnce(o.leaves).mockReturnValueOnce(o.leaves),n.getRoot.mockReturnValueOnce(t.root),n.getLeaves.mockReturnValueOnce(t.leaves).mockReturnValueOnce(t.leaves).mockReturnValueOnce(t.leaves),e.addMerkleTree(a),e.addMerkleTree(n);const f=e.getMerkleLeafIndex(o.root,o.leaves[2].hash);expect(f.isJust()).toStrictEqual(!0),expect(f.unsafeCoerce()).toStrictEqual(2);const s=e.getMerkleLeafIndex(t.root,t.leaves[7].hash);expect(s.isJust()).toStrictEqual(!0),expect(s.unsafeCoerce()).toStrictEqual(7);const l=e.getMerkleLeafIndex(t.root,o.leaves[2].hash);expect(l.isJust()).toStrictEqual(!1);const u=e.getMerkleLeafIndex(i,i);expect(u.isJust()).toStrictEqual(!1)}),it("Add merkletrees, then get proof",()=>{const i=c("deadbeef"),a=d(),n=d(),e=new p;a.getRoot.mockReturnValueOnce(o.root),a.getLeaves.mockReturnValueOnce(o.leaves),a.getLeafHash.mockReturnValueOnce(m(o.leaves[1].hash)),a.getProof.mockReturnValueOnce(m(o.proof)),n.getRoot.mockReturnValueOnce(t.root),n.getLeaves.mockReturnValueOnce(t.leaves),n.getLeafHash.mockReturnValueOnce(m(t.leaves[5].hash)).mockReturnValueOnce(g).mockReturnValueOnce(m(t.leaves[5].hash)),n.getProof.mockReturnValueOnce(m(t.proof)).mockReturnValueOnce(g),e.addMerkleTree(a),e.addMerkleTree(n);const f=e.getMerkleProof(o.root,1);expect(f.isJust()).toStrictEqual(!0),expect(f.unsafeCoerce().leafHash).toStrictEqual(o.leaves[1].hash),expect(f.unsafeCoerce().proof).toStrictEqual(o.proof);const s=e.getMerkleProof(t.root,5);expect(s.isJust()).toStrictEqual(!0),expect(s.unsafeCoerce().leafHash).toStrictEqual(t.leaves[5].hash),expect(s.unsafeCoerce().proof).toStrictEqual(t.proof);const l=e.getMerkleProof(t.root,5);expect(l.isJust()).toStrictEqual(!1);const u=e.getMerkleProof(t.root,5);expect(u.isJust()).toStrictEqual(!1);const k=e.getMerkleProof(i,0);expect(k.isJust()).toStrictEqual(!1)})});
2
2
  //# sourceMappingURL=DataStore.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/data-store/model/DataStore.test.ts"],
4
- "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { type MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\n\nimport { DataStore } from \"./DataStore\";\n\nconst SMALL_TREE = {\n leaves: [\n new Leaf(Uint8Array.from([0, 0]), Uint8Array.from([42])),\n new Leaf(Uint8Array.from([0, 1]), Uint8Array.from([43])),\n new Leaf(Uint8Array.from([0, 2]), Uint8Array.from([44])),\n new Leaf(Uint8Array.from([0, 3]), Uint8Array.from([45])),\n ],\n proof: [Uint8Array.from([9, 8, 7, 6]), Uint8Array.from([5, 4, 3, 2])],\n root: hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n};\n\nconst BIG_TREE = {\n leaves: [\n new Leaf(Uint8Array.from([1, 0]), Uint8Array.from([80])),\n new Leaf(Uint8Array.from([2, 0]), Uint8Array.from([81])),\n new Leaf(Uint8Array.from([3, 0]), Uint8Array.from([82])),\n new Leaf(Uint8Array.from([4, 0]), Uint8Array.from([83])),\n new Leaf(Uint8Array.from([5, 0]), Uint8Array.from([84])),\n new Leaf(Uint8Array.from([6, 0]), Uint8Array.from([85])),\n new Leaf(Uint8Array.from([7, 0]), Uint8Array.from([86])),\n new Leaf(Uint8Array.from([8, 0]), Uint8Array.from([87])),\n new Leaf(Uint8Array.from([9, 0]), Uint8Array.from([88])),\n new Leaf(Uint8Array.from([10, 0]), Uint8Array.from([89])),\n ],\n proof: [\n Uint8Array.from([0xff, 0xfe, 0xfd]),\n Uint8Array.from([1, 2, 3, 4]),\n Uint8Array.from([0xaa, 0xbb, 0xcc]),\n Uint8Array.from([7, 6, 5, 4]),\n ],\n root: hexaStringToBuffer(\n \"e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac\",\n )!,\n};\n\ndescribe(\"DataStore\", () => {\n // Mocked merkle tree\n const createMerkletree = () => ({\n size: vi.fn(),\n getRoot: vi.fn(),\n getLeaves: vi.fn(),\n getLeafHash: vi.fn(),\n getProof: vi.fn(),\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Add preimages, then get it\", () => {\n // Given\n const data1 = hexaStringToBuffer(\"deadbeef1\")!;\n const data2 = hexaStringToBuffer(\"deadbeef2\")!;\n const dataHash1 = hexaStringToBuffer(\"42ff1\")!;\n const dataHash2 = hexaStringToBuffer(\"42ff2\")!;\n const dataHash3 = hexaStringToBuffer(\"42ff3\")!;\n const store = new DataStore();\n\n // When\n store.addPreimage(dataHash1, data1);\n store.addPreimage(dataHash2, data2);\n\n // Then\n const preimage1 = store.getPreimage(dataHash1);\n expect(preimage1.isJust()).toStrictEqual(true);\n expect(preimage1.unsafeCoerce()).toStrictEqual(data1);\n const preimage2 = store.getPreimage(dataHash2);\n expect(preimage2.isJust()).toStrictEqual(true);\n expect(preimage2.unsafeCoerce()).toStrictEqual(data2);\n const preimage3 = store.getPreimage(dataHash3);\n expect(preimage3.isJust()).toStrictEqual(false);\n });\n\n it(\"Add merkletrees, then get index\", () => {\n // Given\n const invalidRoot = hexaStringToBuffer(\"deadbeef\")!;\n const tree1 = createMerkletree();\n const tree2 = createMerkletree();\n const store = new DataStore();\n\n // When\n tree1.getRoot.mockReturnValueOnce(SMALL_TREE.root);\n tree1.getLeaves\n .mockReturnValueOnce(SMALL_TREE.leaves)\n .mockReturnValueOnce(SMALL_TREE.leaves);\n tree2.getRoot.mockReturnValueOnce(BIG_TREE.root);\n tree2.getLeaves\n .mockReturnValueOnce(BIG_TREE.leaves)\n .mockReturnValueOnce(BIG_TREE.leaves)\n .mockReturnValueOnce(BIG_TREE.leaves);\n\n store.addMerkleTree(tree1 as unknown as MerkleTree);\n store.addMerkleTree(tree2 as unknown as MerkleTree);\n\n // Then\n const index1 = store.getMerkleLeafIndex(\n SMALL_TREE.root,\n SMALL_TREE.leaves[2]!.hash,\n );\n expect(index1.isJust()).toStrictEqual(true);\n expect(index1.unsafeCoerce()).toStrictEqual(2);\n const index2 = store.getMerkleLeafIndex(\n BIG_TREE.root,\n BIG_TREE.leaves[7]!.hash,\n );\n expect(index2.isJust()).toStrictEqual(true);\n expect(index2.unsafeCoerce()).toStrictEqual(7);\n // hash not found in the tree\n const index3 = store.getMerkleLeafIndex(\n BIG_TREE.root,\n SMALL_TREE.leaves[2]!.hash,\n );\n expect(index3.isJust()).toStrictEqual(false);\n // root not found\n const index4 = store.getMerkleLeafIndex(invalidRoot, invalidRoot);\n expect(index4.isJust()).toStrictEqual(false);\n });\n\n it(\"Add merkletrees, then get proof\", () => {\n // Given\n const invalidRoot = hexaStringToBuffer(\"deadbeef\")!;\n const tree1 = createMerkletree();\n const tree2 = createMerkletree();\n const store = new DataStore();\n\n // When\n tree1.getRoot.mockReturnValueOnce(SMALL_TREE.root);\n tree1.getLeaves.mockReturnValueOnce(SMALL_TREE.leaves);\n tree1.getLeafHash.mockReturnValueOnce(Just(SMALL_TREE.leaves[1]!.hash));\n tree1.getProof.mockReturnValueOnce(Just(SMALL_TREE.proof));\n tree2.getRoot.mockReturnValueOnce(BIG_TREE.root);\n tree2.getLeaves.mockReturnValueOnce(BIG_TREE.leaves);\n tree2.getLeafHash\n .mockReturnValueOnce(Just(BIG_TREE.leaves[5]!.hash))\n .mockReturnValueOnce(Nothing)\n .mockReturnValueOnce(Just(BIG_TREE.leaves[5]!.hash));\n tree2.getProof\n .mockReturnValueOnce(Just(BIG_TREE.proof))\n .mockReturnValueOnce(Nothing);\n\n store.addMerkleTree(tree1 as unknown as MerkleTree);\n store.addMerkleTree(tree2 as unknown as MerkleTree);\n\n // Then\n const proof1 = store.getMerkleProof(SMALL_TREE.root, 1);\n expect(proof1.isJust()).toStrictEqual(true);\n expect(proof1.unsafeCoerce().leafHash).toStrictEqual(\n SMALL_TREE.leaves[1]!.hash,\n );\n expect(proof1.unsafeCoerce().proof).toStrictEqual(SMALL_TREE.proof);\n const proof2 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof2.isJust()).toStrictEqual(true);\n expect(proof2.unsafeCoerce().leafHash).toStrictEqual(\n BIG_TREE.leaves[5]!.hash,\n );\n expect(proof2.unsafeCoerce().proof).toStrictEqual(BIG_TREE.proof);\n // getLeafHash returns Nothing\n const proof3 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof3.isJust()).toStrictEqual(false);\n // getProof returns Nothing\n const proof4 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof4.isJust()).toStrictEqual(false);\n // root not found\n const proof5 = store.getMerkleProof(invalidRoot, 0);\n expect(proof5.isJust()).toStrictEqual(false);\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { type MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\n\nimport { DataStore } from \"./DataStore\";\n\nconst SMALL_TREE = {\n leaves: [\n new Leaf(Uint8Array.from([0, 0]), Uint8Array.from([42])),\n new Leaf(Uint8Array.from([0, 1]), Uint8Array.from([43])),\n new Leaf(Uint8Array.from([0, 2]), Uint8Array.from([44])),\n new Leaf(Uint8Array.from([0, 3]), Uint8Array.from([45])),\n ],\n proof: [Uint8Array.from([9, 8, 7, 6]), Uint8Array.from([5, 4, 3, 2])],\n root: hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n};\n\nconst BIG_TREE = {\n leaves: [\n new Leaf(Uint8Array.from([1, 0]), Uint8Array.from([80])),\n new Leaf(Uint8Array.from([2, 0]), Uint8Array.from([81])),\n new Leaf(Uint8Array.from([3, 0]), Uint8Array.from([82])),\n new Leaf(Uint8Array.from([4, 0]), Uint8Array.from([83])),\n new Leaf(Uint8Array.from([5, 0]), Uint8Array.from([84])),\n new Leaf(Uint8Array.from([6, 0]), Uint8Array.from([85])),\n new Leaf(Uint8Array.from([7, 0]), Uint8Array.from([86])),\n new Leaf(Uint8Array.from([8, 0]), Uint8Array.from([87])),\n new Leaf(Uint8Array.from([9, 0]), Uint8Array.from([88])),\n new Leaf(Uint8Array.from([10, 0]), Uint8Array.from([89])),\n ],\n proof: [\n Uint8Array.from([0xff, 0xfe, 0xfd]),\n Uint8Array.from([1, 2, 3, 4]),\n Uint8Array.from([0xaa, 0xbb, 0xcc]),\n Uint8Array.from([7, 6, 5, 4]),\n ],\n root: hexaStringToBuffer(\n \"e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac\",\n )!,\n};\n\ndescribe(\"DataStore\", () => {\n // Mocked merkle tree\n const createMerkletree = () => ({\n size: jest.fn(),\n getRoot: jest.fn(),\n getLeaves: jest.fn(),\n getLeafHash: jest.fn(),\n getProof: jest.fn(),\n });\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Add preimages, then get it\", () => {\n // Given\n const data1 = hexaStringToBuffer(\"deadbeef1\")!;\n const data2 = hexaStringToBuffer(\"deadbeef2\")!;\n const dataHash1 = hexaStringToBuffer(\"42ff1\")!;\n const dataHash2 = hexaStringToBuffer(\"42ff2\")!;\n const dataHash3 = hexaStringToBuffer(\"42ff3\")!;\n const store = new DataStore();\n\n // When\n store.addPreimage(dataHash1, data1);\n store.addPreimage(dataHash2, data2);\n\n // Then\n const preimage1 = store.getPreimage(dataHash1);\n expect(preimage1.isJust()).toStrictEqual(true);\n expect(preimage1.unsafeCoerce()).toStrictEqual(data1);\n const preimage2 = store.getPreimage(dataHash2);\n expect(preimage2.isJust()).toStrictEqual(true);\n expect(preimage2.unsafeCoerce()).toStrictEqual(data2);\n const preimage3 = store.getPreimage(dataHash3);\n expect(preimage3.isJust()).toStrictEqual(false);\n });\n\n it(\"Add merkletrees, then get index\", () => {\n // Given\n const invalidRoot = hexaStringToBuffer(\"deadbeef\")!;\n const tree1 = createMerkletree();\n const tree2 = createMerkletree();\n const store = new DataStore();\n\n // When\n tree1.getRoot.mockReturnValueOnce(SMALL_TREE.root);\n tree1.getLeaves\n .mockReturnValueOnce(SMALL_TREE.leaves)\n .mockReturnValueOnce(SMALL_TREE.leaves);\n tree2.getRoot.mockReturnValueOnce(BIG_TREE.root);\n tree2.getLeaves\n .mockReturnValueOnce(BIG_TREE.leaves)\n .mockReturnValueOnce(BIG_TREE.leaves)\n .mockReturnValueOnce(BIG_TREE.leaves);\n\n store.addMerkleTree(tree1 as unknown as MerkleTree);\n store.addMerkleTree(tree2 as unknown as MerkleTree);\n\n // Then\n const index1 = store.getMerkleLeafIndex(\n SMALL_TREE.root,\n SMALL_TREE.leaves[2]!.hash,\n );\n expect(index1.isJust()).toStrictEqual(true);\n expect(index1.unsafeCoerce()).toStrictEqual(2);\n const index2 = store.getMerkleLeafIndex(\n BIG_TREE.root,\n BIG_TREE.leaves[7]!.hash,\n );\n expect(index2.isJust()).toStrictEqual(true);\n expect(index2.unsafeCoerce()).toStrictEqual(7);\n // hash not found in the tree\n const index3 = store.getMerkleLeafIndex(\n BIG_TREE.root,\n SMALL_TREE.leaves[2]!.hash,\n );\n expect(index3.isJust()).toStrictEqual(false);\n // root not found\n const index4 = store.getMerkleLeafIndex(invalidRoot, invalidRoot);\n expect(index4.isJust()).toStrictEqual(false);\n });\n\n it(\"Add merkletrees, then get proof\", () => {\n // Given\n const invalidRoot = hexaStringToBuffer(\"deadbeef\")!;\n const tree1 = createMerkletree();\n const tree2 = createMerkletree();\n const store = new DataStore();\n\n // When\n tree1.getRoot.mockReturnValueOnce(SMALL_TREE.root);\n tree1.getLeaves.mockReturnValueOnce(SMALL_TREE.leaves);\n tree1.getLeafHash.mockReturnValueOnce(Just(SMALL_TREE.leaves[1]!.hash));\n tree1.getProof.mockReturnValueOnce(Just(SMALL_TREE.proof));\n tree2.getRoot.mockReturnValueOnce(BIG_TREE.root);\n tree2.getLeaves.mockReturnValueOnce(BIG_TREE.leaves);\n tree2.getLeafHash\n .mockReturnValueOnce(Just(BIG_TREE.leaves[5]!.hash))\n .mockReturnValueOnce(Nothing)\n .mockReturnValueOnce(Just(BIG_TREE.leaves[5]!.hash));\n tree2.getProof\n .mockReturnValueOnce(Just(BIG_TREE.proof))\n .mockReturnValueOnce(Nothing);\n\n store.addMerkleTree(tree1 as unknown as MerkleTree);\n store.addMerkleTree(tree2 as unknown as MerkleTree);\n\n // Then\n const proof1 = store.getMerkleProof(SMALL_TREE.root, 1);\n expect(proof1.isJust()).toStrictEqual(true);\n expect(proof1.unsafeCoerce().leafHash).toStrictEqual(\n SMALL_TREE.leaves[1]!.hash,\n );\n expect(proof1.unsafeCoerce().proof).toStrictEqual(SMALL_TREE.proof);\n const proof2 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof2.isJust()).toStrictEqual(true);\n expect(proof2.unsafeCoerce().leafHash).toStrictEqual(\n BIG_TREE.leaves[5]!.hash,\n );\n expect(proof2.unsafeCoerce().proof).toStrictEqual(BIG_TREE.proof);\n // getLeafHash returns Nothing\n const proof3 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof3.isJust()).toStrictEqual(false);\n // getProof returns Nothing\n const proof4 = store.getMerkleProof(BIG_TREE.root, 5);\n expect(proof4.isJust()).toStrictEqual(false);\n // root not found\n const proof5 = store.getMerkleProof(invalidRoot, 0);\n expect(proof5.isJust()).toStrictEqual(false);\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["hexaStringToBuffer", "Just", "Nothing", "Leaf", "DataStore", "SMALL_TREE", "BIG_TREE", "createMerkletree", "data1", "data2", "dataHash1", "dataHash2", "dataHash3", "store", "preimage1", "preimage2", "preimage3", "invalidRoot", "tree1", "tree2", "index1", "index2", "index3", "index4", "proof1", "proof2", "proof3", "proof4", "proof5"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as w,Right as c}from"purify-ts";import{Leaf as B}from"../../merkle-tree/model/Leaf";import{MerkleTree as S}from"../../merkle-tree/model/MerkleTree";import{Psbt as f}from"../../psbt/model/Psbt";import{Value as l}from"../../psbt/model/Value";import{Wallet as g}from"../../wallet/model/Wallet";import{DefaultDataStoreService as k}from"./DefaultDataStoreService";describe("DefaultDataStoreService",()=>{const a={build:vi.fn()},i={build:vi.fn()},y=vi.fn(),m={serialize:y,getId:vi.fn()},r={getPreimage:vi.fn(),getMerkleLeafIndex:vi.fn(),getMerkleProof:vi.fn(),addPreimage:vi.fn(),addMerkleTree:vi.fn(),addMerkleMap:vi.fn()},d=vi.fn(),u={hash:d};function s(e){return{getCommitment:()=>Uint8Array.from([e])}}function A(e){return{getRoot:()=>Uint8Array.from([e])}}describe("Merkleize chunks",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Success case",()=>{const e=[Uint8Array.from([0]),Uint8Array.from([2]),Uint8Array.from([3])],t=A(91),n=new k(i,a,m,u);i.build.mockReturnValueOnce(t);const o=n.merklizeChunks(r,e);expect(i.build).toHaveBeenCalledWith(e),expect(r.addMerkleTree).toHaveBeenCalledWith(t),expect(o).toStrictEqual(Uint8Array.from([91]))})}),describe("Merkleize wallet",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Success case",()=>{const e=new S(new B(new Uint8Array,new Uint8Array(32).fill(7)),[]),t=new Uint8Array(5).fill(6),n=new Uint8Array(5).fill(7),o=new Uint8Array(5).fill(8),p=new g({name:"Cold storage",descriptorTemplate:"template descriptor",keys:["key1","key2","key3"],hmac:new Uint8Array,keysTree:e,descriptorBuffer:new Uint8Array(32).fill(42)}),M=new k(i,a,m,u);y.mockReturnValueOnce(t),d.mockReturnValueOnce(n).mockReturnValueOnce(o),M.merklizeWallet(r,p),expect(y).toHaveBeenCalledWith(p),expect(d).toHaveBeenCalledWith(t),expect(d).toHaveBeenCalledWith(p.descriptorBuffer),expect(r.addPreimage).toHaveBeenCalledWith(n,t),expect(r.addPreimage).toHaveBeenCalledWith(o,new Uint8Array(32).fill(42)),expect(r.addMerkleTree).toHaveBeenCalledWith(e)})}),describe("Merkleize a PSBT",()=>{const e={globalMap:new Map([["02",new l(Uint8Array.from([2]))],["01",new l(Uint8Array.from([1]))],["03",new l(Uint8Array.from([3]))]]),inputMaps:[new Map([["09",new l(Uint8Array.from([9]))],["01",new l(Uint8Array.from([1]))],["07",new l(Uint8Array.from([7]))]]),new Map([["07",new l(Uint8Array.from([7]))],["03",new l(Uint8Array.from([3]))],["01",new l(Uint8Array.from([1]))]])],outputMaps:[new Map([["05",new l(Uint8Array.from([5]))],["06",new l(Uint8Array.from([6]))],["07",new l(Uint8Array.from([7]))]])]};beforeEach(()=>{vi.resetAllMocks()}),it("Merkle map service failure",()=>{const t=new k(i,a,m,u),n=new f(e.globalMap,[],[]);a.build.mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on inputs",()=>{const t=new k(i,a,m,u),n=new f(e.globalMap,e.inputMaps,[]);a.build.mockReturnValueOnce(c(s(42))).mockReturnValueOnce(c(s(43))).mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on outputs",()=>{const t=new k(i,a,m,u),n=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce(c(s(42))).mockReturnValueOnce(c(s(43))).mockReturnValueOnce(c(s(44))).mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Maps should be ordered",()=>{const t=new k(i,a,m,u),n=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValue(w(new Error)),t.merklizePsbt(r,n),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])],[Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])],[Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])],[Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])],[Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])])}),it("Success case",()=>{const t=s(42),n=s(43),o=s(44),p=s(45),M=A(91),U=A(92),b=new k(i,a,m,u),h=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce(c(t)).mockReturnValueOnce(c(n)).mockReturnValueOnce(c(o)).mockReturnValueOnce(c(p)),i.build.mockReturnValueOnce(M).mockReturnValueOnce(U);const v=b.merklizePsbt(r,h);expect(r.addMerkleMap).toHaveBeenCalledWith(t),expect(r.addMerkleMap).toHaveBeenCalledWith(n),expect(r.addMerkleMap).toHaveBeenCalledWith(o),expect(r.addMerkleMap).toHaveBeenCalledWith(p),expect(r.addMerkleTree).toHaveBeenCalledWith(M),expect(r.addMerkleTree).toHaveBeenCalledWith(U),expect(i.build).toHaveBeenCalledWith([Uint8Array.from([43]),Uint8Array.from([44])]),expect(i.build).toHaveBeenCalledWith([Uint8Array.from([45])]),expect(v.isRight()).toStrictEqual(!0),expect(v.unsafeCoerce()).toStrictEqual({globalCommitment:Uint8Array.from([42]),inputsRoot:Uint8Array.from([91]),outputsRoot:Uint8Array.from([92])})})})});
1
+ import{Left as w,Right as c}from"purify-ts";import{Leaf as S}from"../../merkle-tree/model/Leaf";import{MerkleTree as v}from"../../merkle-tree/model/MerkleTree";import{Psbt as f}from"../../psbt/model/Psbt";import{Value as i}from"../../psbt/model/Value";import{Wallet as g}from"../../wallet/model/Wallet";import{DefaultDataStoreService as k}from"./DefaultDataStoreService";describe("DefaultDataStoreService",()=>{const a={build:jest.fn()},l={build:jest.fn()},y=jest.fn(),m={serialize:y,getId:jest.fn()},r={getPreimage:jest.fn(),getMerkleLeafIndex:jest.fn(),getMerkleProof:jest.fn(),addPreimage:jest.fn(),addMerkleTree:jest.fn(),addMerkleMap:jest.fn()},d=jest.fn(),u={hash:d};function s(e){return{getCommitment:()=>Uint8Array.from([e])}}function A(e){return{getRoot:()=>Uint8Array.from([e])}}describe("Merkleize chunks",()=>{beforeEach(()=>{jest.resetAllMocks()}),it("Success case",()=>{const e=[Uint8Array.from([0]),Uint8Array.from([2]),Uint8Array.from([3])],t=A(91),n=new k(l,a,m,u);l.build.mockReturnValueOnce(t);const o=n.merklizeChunks(r,e);expect(l.build).toHaveBeenCalledWith(e),expect(r.addMerkleTree).toHaveBeenCalledWith(t),expect(o).toStrictEqual(Uint8Array.from([91]))})}),describe("Merkleize wallet",()=>{beforeEach(()=>{jest.resetAllMocks()}),it("Success case",()=>{const e=new v(new S(new Uint8Array,new Uint8Array(32).fill(7)),[]),t=new Uint8Array(5).fill(6),n=new Uint8Array(5).fill(7),o=new Uint8Array(5).fill(8),p=new g({name:"Cold storage",descriptorTemplate:"template descriptor",keys:["key1","key2","key3"],hmac:new Uint8Array,keysTree:e,descriptorBuffer:new Uint8Array(32).fill(42)}),M=new k(l,a,m,u);y.mockReturnValueOnce(t),d.mockReturnValueOnce(n).mockReturnValueOnce(o),M.merklizeWallet(r,p),expect(y).toHaveBeenCalledWith(p),expect(d).toHaveBeenCalledWith(t),expect(d).toHaveBeenCalledWith(p.descriptorBuffer),expect(r.addPreimage).toHaveBeenCalledWith(n,t),expect(r.addPreimage).toHaveBeenCalledWith(o,new Uint8Array(32).fill(42)),expect(r.addMerkleTree).toHaveBeenCalledWith(e)})}),describe("Merkleize a PSBT",()=>{const e={globalMap:new Map([["02",new i(Uint8Array.from([2]))],["01",new i(Uint8Array.from([1]))],["03",new i(Uint8Array.from([3]))]]),inputMaps:[new Map([["09",new i(Uint8Array.from([9]))],["01",new i(Uint8Array.from([1]))],["07",new i(Uint8Array.from([7]))]]),new Map([["07",new i(Uint8Array.from([7]))],["03",new i(Uint8Array.from([3]))],["01",new i(Uint8Array.from([1]))]])],outputMaps:[new Map([["05",new i(Uint8Array.from([5]))],["06",new i(Uint8Array.from([6]))],["07",new i(Uint8Array.from([7]))]])]};beforeEach(()=>{jest.resetAllMocks()}),it("Merkle map service failure",()=>{const t=new k(l,a,m,u),n=new f(e.globalMap,[],[]);a.build.mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on inputs",()=>{const t=new k(l,a,m,u),n=new f(e.globalMap,e.inputMaps,[]);a.build.mockReturnValueOnce(c(s(42))).mockReturnValueOnce(c(s(43))).mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on outputs",()=>{const t=new k(l,a,m,u),n=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce(c(s(42))).mockReturnValueOnce(c(s(43))).mockReturnValueOnce(c(s(44))).mockReturnValueOnce(w(new Error));const o=t.merklizePsbt(r,n);expect(o.isRight()).toStrictEqual(!1)}),it("Maps should be ordered",()=>{const t=new k(l,a,m,u),n=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValue(w(new Error)),t.merklizePsbt(r,n),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])],[Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])],[Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])],[Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])],[Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])])}),it("Success case",()=>{const t=s(42),n=s(43),o=s(44),p=s(45),M=A(91),U=A(92),h=new k(l,a,m,u),B=new f(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce(c(t)).mockReturnValueOnce(c(n)).mockReturnValueOnce(c(o)).mockReturnValueOnce(c(p)),l.build.mockReturnValueOnce(M).mockReturnValueOnce(U);const b=h.merklizePsbt(r,B);expect(r.addMerkleMap).toHaveBeenCalledWith(t),expect(r.addMerkleMap).toHaveBeenCalledWith(n),expect(r.addMerkleMap).toHaveBeenCalledWith(o),expect(r.addMerkleMap).toHaveBeenCalledWith(p),expect(r.addMerkleTree).toHaveBeenCalledWith(M),expect(r.addMerkleTree).toHaveBeenCalledWith(U),expect(l.build).toHaveBeenCalledWith([Uint8Array.from([43]),Uint8Array.from([44])]),expect(l.build).toHaveBeenCalledWith([Uint8Array.from([45])]),expect(b.isRight()).toStrictEqual(!0),expect(b.unsafeCoerce()).toStrictEqual({globalCommitment:Uint8Array.from([42]),inputsRoot:Uint8Array.from([91]),outputsRoot:Uint8Array.from([92])})})})});
2
2
  //# sourceMappingURL=DefaultDataStoreService.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/data-store/service/DefaultDataStoreService.test.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type HasherService } from \"@internal/merkle-tree/service/HasherService\";\nimport { type MerkleMapBuilder } from \"@internal/merkle-tree/service/MerkleMapBuilder\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { DefaultDataStoreService } from \"./DefaultDataStoreService\";\n\ndescribe(\"DefaultDataStoreService\", () => {\n const mockMerkleMapBuilder = {\n build: vi.fn(),\n };\n\n const mockMerkleTreeBuilder = {\n build: vi.fn(),\n };\n\n const mockWalletSerialize = vi.fn();\n const mockWalletSerializer: WalletSerializer = {\n serialize: mockWalletSerialize,\n getId: vi.fn(),\n };\n\n const mockDataStore = {\n getPreimage: vi.fn(),\n getMerkleLeafIndex: vi.fn(),\n getMerkleProof: vi.fn(),\n addPreimage: vi.fn(),\n addMerkleTree: vi.fn(),\n addMerkleMap: vi.fn(),\n };\n\n const mockedHash = vi.fn();\n const mockedHasherService: HasherService = {\n hash: mockedHash,\n };\n\n function createMerkleMap(commitment: number) {\n return {\n getCommitment: () => Uint8Array.from([commitment]),\n };\n }\n\n function createMerkleTree(root: number) {\n return {\n getRoot: () => Uint8Array.from([root]),\n };\n }\n\n describe(\"Merkleize chunks\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const chunks = [\n Uint8Array.from([0]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ];\n const merkleTree = createMerkleTree(91);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockMerkleTreeBuilder.build.mockReturnValueOnce(merkleTree);\n const commitment = storeService.merklizeChunks(\n mockDataStore as unknown as DataStore,\n chunks,\n );\n\n // Then\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith(chunks);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n expect(commitment).toStrictEqual(Uint8Array.from([91]));\n });\n });\n\n describe(\"Merkleize wallet\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n const serialized = new Uint8Array(5).fill(6);\n const hash1 = new Uint8Array(5).fill(7);\n const hash2 = new Uint8Array(5).fill(8);\n const wallet = new Wallet({\n name: \"Cold storage\",\n descriptorTemplate: \"template descriptor\",\n keys: [\"key1\", \"key2\", \"key3\"],\n hmac: new Uint8Array(),\n keysTree: merkleTree,\n descriptorBuffer: new Uint8Array(32).fill(42),\n });\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockWalletSerialize.mockReturnValueOnce(serialized);\n mockedHash.mockReturnValueOnce(hash1).mockReturnValueOnce(hash2);\n storeService.merklizeWallet(\n mockDataStore as unknown as DataStore,\n wallet,\n );\n\n // Then\n expect(mockWalletSerialize).toHaveBeenCalledWith(wallet);\n expect(mockedHash).toHaveBeenCalledWith(serialized);\n expect(mockedHash).toHaveBeenCalledWith(wallet.descriptorBuffer);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(hash1, serialized);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(\n hash2,\n new Uint8Array(32).fill(42),\n );\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n });\n });\n\n describe(\"Merkleize a PSBT\", () => {\n const TEST_PSBT = {\n globalMap: new Map<string, Value>([\n [\"02\", new Value(Uint8Array.from([2]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n ]),\n inputMaps: [\n new Map<string, Value>([\n [\"09\", new Value(Uint8Array.from([9]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n new Map<string, Value>([\n [\"07\", new Value(Uint8Array.from([7]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n ]),\n ],\n outputMaps: [\n new Map<string, Value>([\n [\"05\", new Value(Uint8Array.from([5]))],\n [\"06\", new Value(Uint8Array.from([6]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n ],\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Merkle map service failure\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, [], []);\n\n // When\n mockMerkleMapBuilder.build.mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on inputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, TEST_PSBT.inputMaps, []);\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on outputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Right(createMerkleMap(44)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Maps should be ordered\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build.mockReturnValue(Left(new Error()));\n storeService.merklizePsbt(mockDataStore as unknown as DataStore, psbt);\n\n // Then\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n );\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleMap1 = createMerkleMap(42);\n const merkleMap2 = createMerkleMap(43);\n const merkleMap3 = createMerkleMap(44);\n const merkleMap4 = createMerkleMap(45);\n const merkleTree1 = createMerkleTree(91);\n const merkleTree2 = createMerkleTree(92);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(merkleMap1))\n .mockReturnValueOnce(Right(merkleMap2))\n .mockReturnValueOnce(Right(merkleMap3))\n .mockReturnValueOnce(Right(merkleMap4));\n mockMerkleTreeBuilder.build\n .mockReturnValueOnce(merkleTree1)\n .mockReturnValueOnce(merkleTree2);\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap1);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap2);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap3);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap4);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree1);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree2);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([43]),\n Uint8Array.from([44]),\n ]);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([45]),\n ]);\n expect(commitment.isRight()).toStrictEqual(true);\n expect(commitment.unsafeCoerce()).toStrictEqual({\n globalCommitment: Uint8Array.from([42]),\n inputsRoot: Uint8Array.from([91]),\n outputsRoot: Uint8Array.from([92]),\n });\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type HasherService } from \"@internal/merkle-tree/service/HasherService\";\nimport { type MerkleMapBuilder } from \"@internal/merkle-tree/service/MerkleMapBuilder\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { DefaultDataStoreService } from \"./DefaultDataStoreService\";\n\ndescribe(\"DefaultDataStoreService\", () => {\n const mockMerkleMapBuilder = {\n build: jest.fn(),\n };\n\n const mockMerkleTreeBuilder = {\n build: jest.fn(),\n };\n\n const mockWalletSerialize = jest.fn();\n const mockWalletSerializer: WalletSerializer = {\n serialize: mockWalletSerialize,\n getId: jest.fn(),\n };\n\n const mockDataStore = {\n getPreimage: jest.fn(),\n getMerkleLeafIndex: jest.fn(),\n getMerkleProof: jest.fn(),\n addPreimage: jest.fn(),\n addMerkleTree: jest.fn(),\n addMerkleMap: jest.fn(),\n };\n\n const mockedHash = jest.fn();\n const mockedHasherService: HasherService = {\n hash: mockedHash,\n };\n\n function createMerkleMap(commitment: number) {\n return {\n getCommitment: () => Uint8Array.from([commitment]),\n };\n }\n\n function createMerkleTree(root: number) {\n return {\n getRoot: () => Uint8Array.from([root]),\n };\n }\n\n describe(\"Merkleize chunks\", () => {\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const chunks = [\n Uint8Array.from([0]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ];\n const merkleTree = createMerkleTree(91);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockMerkleTreeBuilder.build.mockReturnValueOnce(merkleTree);\n const commitment = storeService.merklizeChunks(\n mockDataStore as unknown as DataStore,\n chunks,\n );\n\n // Then\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith(chunks);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n expect(commitment).toStrictEqual(Uint8Array.from([91]));\n });\n });\n\n describe(\"Merkleize wallet\", () => {\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n const serialized = new Uint8Array(5).fill(6);\n const hash1 = new Uint8Array(5).fill(7);\n const hash2 = new Uint8Array(5).fill(8);\n const wallet = new Wallet({\n name: \"Cold storage\",\n descriptorTemplate: \"template descriptor\",\n keys: [\"key1\", \"key2\", \"key3\"],\n hmac: new Uint8Array(),\n keysTree: merkleTree,\n descriptorBuffer: new Uint8Array(32).fill(42),\n });\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockWalletSerialize.mockReturnValueOnce(serialized);\n mockedHash.mockReturnValueOnce(hash1).mockReturnValueOnce(hash2);\n storeService.merklizeWallet(\n mockDataStore as unknown as DataStore,\n wallet,\n );\n\n // Then\n expect(mockWalletSerialize).toHaveBeenCalledWith(wallet);\n expect(mockedHash).toHaveBeenCalledWith(serialized);\n expect(mockedHash).toHaveBeenCalledWith(wallet.descriptorBuffer);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(hash1, serialized);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(\n hash2,\n new Uint8Array(32).fill(42),\n );\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n });\n });\n\n describe(\"Merkleize a PSBT\", () => {\n const TEST_PSBT = {\n globalMap: new Map<string, Value>([\n [\"02\", new Value(Uint8Array.from([2]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n ]),\n inputMaps: [\n new Map<string, Value>([\n [\"09\", new Value(Uint8Array.from([9]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n new Map<string, Value>([\n [\"07\", new Value(Uint8Array.from([7]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n ]),\n ],\n outputMaps: [\n new Map<string, Value>([\n [\"05\", new Value(Uint8Array.from([5]))],\n [\"06\", new Value(Uint8Array.from([6]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n ],\n };\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Merkle map service failure\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, [], []);\n\n // When\n mockMerkleMapBuilder.build.mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on inputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, TEST_PSBT.inputMaps, []);\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on outputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Right(createMerkleMap(44)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Maps should be ordered\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build.mockReturnValue(Left(new Error()));\n storeService.merklizePsbt(mockDataStore as unknown as DataStore, psbt);\n\n // Then\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n );\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleMap1 = createMerkleMap(42);\n const merkleMap2 = createMerkleMap(43);\n const merkleMap3 = createMerkleMap(44);\n const merkleMap4 = createMerkleMap(45);\n const merkleTree1 = createMerkleTree(91);\n const merkleTree2 = createMerkleTree(92);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(merkleMap1))\n .mockReturnValueOnce(Right(merkleMap2))\n .mockReturnValueOnce(Right(merkleMap3))\n .mockReturnValueOnce(Right(merkleMap4));\n mockMerkleTreeBuilder.build\n .mockReturnValueOnce(merkleTree1)\n .mockReturnValueOnce(merkleTree2);\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap1);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap2);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap3);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap4);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree1);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree2);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([43]),\n Uint8Array.from([44]),\n ]);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([45]),\n ]);\n expect(commitment.isRight()).toStrictEqual(true);\n expect(commitment.unsafeCoerce()).toStrictEqual({\n globalCommitment: Uint8Array.from([42]),\n inputsRoot: Uint8Array.from([91]),\n outputsRoot: Uint8Array.from([92]),\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["Left", "Right", "Leaf", "MerkleTree", "Psbt", "Value", "Wallet", "DefaultDataStoreService", "mockMerkleMapBuilder", "mockMerkleTreeBuilder", "mockWalletSerialize", "mockWalletSerializer", "mockDataStore", "mockedHash", "mockedHasherService", "createMerkleMap", "commitment", "createMerkleTree", "root", "chunks", "merkleTree", "storeService", "serialized", "hash1", "hash2", "wallet", "TEST_PSBT", "psbt", "merkleMap1", "merkleMap2", "merkleMap3", "merkleMap4", "merkleTree1", "merkleTree2"]
7
7
  }