@ledgerhq/device-signer-kit-bitcoin 1.2.1 → 1.3.1

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 (91) hide show
  1. package/lib/cjs/api/app-binder/GetWalletAddressDeviceActionTypes.js +1 -1
  2. package/lib/cjs/api/app-binder/GetWalletAddressDeviceActionTypes.js.map +3 -3
  3. package/lib/cjs/api/app-binder/SignPsbtDeviceActionTypes.js +1 -1
  4. package/lib/cjs/api/app-binder/SignPsbtDeviceActionTypes.js.map +3 -3
  5. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  6. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +3 -3
  7. package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
  8. package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +3 -3
  9. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
  10. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +3 -3
  11. package/lib/cjs/internal/app-binder/command/ContinueCommand.js +1 -1
  12. package/lib/cjs/internal/app-binder/command/ContinueCommand.js.map +3 -3
  13. package/lib/cjs/internal/app-binder/command/ContinueCommand.test.js +1 -1
  14. package/lib/cjs/internal/app-binder/command/ContinueCommand.test.js.map +1 -1
  15. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.js +1 -1
  16. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.js.map +3 -3
  17. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js +1 -1
  18. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +1 -1
  19. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.js +1 -1
  20. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.js.map +3 -3
  21. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  22. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +1 -1
  23. package/lib/cjs/internal/app-binder/constants.js +2 -0
  24. package/lib/cjs/internal/app-binder/constants.js.map +7 -0
  25. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +1 -1
  26. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +3 -3
  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/SignPsbt/SignPsbtDeviceAction.js +1 -1
  30. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js.map +3 -3
  31. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  32. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
  33. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  34. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.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/package.json +1 -1
  38. package/lib/esm/api/app-binder/GetWalletAddressDeviceActionTypes.js +1 -0
  39. package/lib/esm/api/app-binder/GetWalletAddressDeviceActionTypes.js.map +4 -4
  40. package/lib/esm/api/app-binder/SignPsbtDeviceActionTypes.js +1 -0
  41. package/lib/esm/api/app-binder/SignPsbtDeviceActionTypes.js.map +4 -4
  42. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -0
  43. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +4 -4
  44. package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
  45. package/lib/esm/internal/app-binder/BtcAppBinder.js.map +3 -3
  46. package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
  47. package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +3 -3
  48. package/lib/esm/internal/app-binder/command/ContinueCommand.js +1 -1
  49. package/lib/esm/internal/app-binder/command/ContinueCommand.js.map +3 -3
  50. package/lib/esm/internal/app-binder/command/ContinueCommand.test.js +1 -1
  51. package/lib/esm/internal/app-binder/command/ContinueCommand.test.js.map +1 -1
  52. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.js +1 -1
  53. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.js.map +3 -3
  54. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js +1 -1
  55. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +1 -1
  56. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.js +1 -1
  57. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.js.map +3 -3
  58. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  59. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +1 -1
  60. package/lib/esm/internal/app-binder/constants.js +2 -0
  61. package/lib/esm/internal/app-binder/constants.js.map +7 -0
  62. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +1 -1
  63. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +3 -3
  64. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
  65. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +3 -3
  66. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js +1 -1
  67. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js.map +3 -3
  68. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  69. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
  70. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  71. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  72. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  73. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  74. package/lib/esm/package.json +1 -1
  75. package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts +7 -0
  76. package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts.map +1 -1
  77. package/lib/types/api/app-binder/SignPsbtDeviceActionTypes.d.ts +8 -0
  78. package/lib/types/api/app-binder/SignPsbtDeviceActionTypes.d.ts.map +1 -1
  79. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +7 -0
  80. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  81. package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
  82. package/lib/types/internal/app-binder/command/ContinueCommand.d.ts.map +1 -1
  83. package/lib/types/internal/app-binder/command/GetExtendedPublicKeyCommand.d.ts.map +1 -1
  84. package/lib/types/internal/app-binder/command/GetMasterFingerprintCommand.d.ts.map +1 -1
  85. package/lib/types/internal/app-binder/constants.d.ts +2 -0
  86. package/lib/types/internal/app-binder/constants.d.ts.map +1 -0
  87. package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.d.ts.map +1 -1
  88. package/lib/types/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.d.ts.map +1 -1
  89. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  90. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  91. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.ts"],
4
- "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { UnknownDAError } from \"@ledgerhq/device-management-kit\";\nimport { InvalidStatusWordError } from \"@ledgerhq/device-management-kit\";\n\nimport { type SignPsbtDAState } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { type RegisteredWallet } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type BuildPsbtTaskResult } from \"@internal/app-binder/task/BuildPsbtTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { SignPsbtDeviceAction } from \"./SignPsbtDeviceAction\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"SignPsbtDeviceAction\", () => {\n const signPsbtMock = vi.fn();\n const prepareWalletPolicyMock = vi.fn();\n const buildPsbtMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n signPsbt: signPsbtMock,\n prepareWalletPolicy: prepareWalletPolicyMock,\n buildPsbt: buildPsbtMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Wallet\" as unknown as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"BuildPsbtResult\" as unknown as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n // Initial -> OpenApp -> PrepareWalletPolicy -> BuildPsbt -> SignPsbt\n const expectedStates: Array<SignPsbtDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: () => {\n expect(prepareWalletPolicyMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n wallet: \"ApiWallet\",\n walletBuilder: \"WalletBuilder\",\n },\n }),\n );\n\n expect(buildPsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Hello world\",\n wallet: \"Wallet\",\n dataStoreService: \"DataStoreService\",\n psbtMapper: \"PsbtMapper\",\n },\n }),\n );\n\n expect(signPsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n wallet: \"Wallet\",\n buildPsbtResult: \"BuildPsbtResult\",\n walletSerializer: \"WalletSerializer\",\n valueParser: \"ValueParser\",\n },\n }),\n );\n resolve();\n },\n onError: reject,\n },\n );\n }));\n\n it(\"should be successful while skipping OpenApp\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: true,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Wallet\" as unknown as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"BuildPsbtResult\" as unknown as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n // Initial -> PrepareWalletPolicy -> BuildPsbt -> SignPsbt\n const expectedStates: Array<SignPsbtDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n it(\"Error if open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if prepareWallet fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if buildPsbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if signPsbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if signPsbt throws an exception\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({ data: {} as Wallet }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({ data: {} as BuildPsbtTaskResult }),\n );\n signPsbtMock.mockRejectedValueOnce(\n new InvalidStatusWordError(\"Mocked error\"),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new InvalidStatusWordError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Return a Left if the final state has no signature\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: undefined,\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"No error in final state\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
- "mappings": "aACA,IAAAA,EAKO,2CACPA,EAA+B,2CAC/BA,EAAuC,2CAIvCC,EAAgD,6EAChDC,EAAmC,gFACnCC,EAAuC,oFASvCC,EAAqC,kCAErC,GAAG,KAAK,kCAAmC,MAAOC,IAGzC,CACL,GAFA,MAAMA,EAAiE,EAGvE,oBAAqB,GAAG,GAAG,KAAO,CAChC,iBAAkB,GAAG,GAAG,CAC1B,EAAE,CACJ,EACD,EAED,SAAS,uBAAwB,IAAM,CACrC,MAAMC,EAAe,GAAG,GAAG,EACrBC,EAA0B,GAAG,GAAG,EAChCC,EAAgB,GAAG,GAAG,EAE5B,SAASC,GAA0B,CACjC,MAAO,CACL,SAAUH,EACV,oBAAqBC,EACrB,UAAWC,CACb,CACF,CAEA,SAAS,eAAgB,IAAM,CAC7B,GAAG,gEAAiE,IAClE,IAAI,QAAc,CAACE,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,YACR,KAAM,cACN,cAAe,gBACf,iBAAkB,mBAClB,iBAAkB,mBAClB,WAAY,aACZ,YAAa,cACb,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,KAAM,QACR,CAAC,CACH,EACAC,EAAc,yBACZ,wBAAqB,CACnB,KAAM,iBACR,CAAC,CACH,EACAF,EAAa,yBACX,wBAAqB,CACnB,KAAM,CACJ,CACE,WAAY,EACZ,OAAQ,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CACF,CACF,CAAC,CACH,EAIA,MAAMO,EAAyC,CAC7C,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,OAAQ,CACN,CACE,WAAY,EACZ,OAAQ,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CACF,EACA,OAAQ,qBAAmB,SAC7B,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQ,IAAM,CACZ,OAAON,CAAuB,EAAE,qBAC9B,OAAO,iBAAiB,CACtB,MAAO,CACL,OAAQ,YACR,cAAe,eACjB,CACF,CAAC,CACH,EAEA,OAAOC,CAAa,EAAE,qBACpB,OAAO,iBAAiB,CACtB,MAAO,CACL,KAAM,cACN,OAAQ,SACR,iBAAkB,mBAClB,WAAY,YACd,CACF,CAAC,CACH,EAEA,OAAOF,CAAY,EAAE,qBACnB,OAAO,iBAAiB,CACtB,MAAO,CACL,OAAQ,SACR,gBAAiB,kBACjB,iBAAkB,mBAClB,YAAa,aACf,CACF,CAAC,CACH,EACAI,EAAQ,CACV,EACA,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,8CAA+C,IAChD,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,YACR,KAAM,cACN,cAAe,gBACf,iBAAkB,mBAClB,iBAAkB,mBAClB,WAAY,aACZ,YAAa,cACb,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,KAAM,QACR,CAAC,CACH,EACAC,EAAc,yBACZ,wBAAqB,CACnB,KAAM,iBACR,CAAC,CACH,EACAF,EAAa,yBACX,wBAAqB,CACnB,KAAM,CACJ,CACE,WAAY,EACZ,OAAQ,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CACF,CACF,CAAC,CACH,EAIA,MAAMO,EAAyC,CAC7C,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,EACA,OAAQ,qBAAmB,OAC7B,EACA,CACE,OAAQ,CACN,CACE,WAAY,EACZ,OAAQ,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,EAC1C,UAAW,WAAW,KAAK,CAAC,EAAM,EAAM,CAAI,CAAC,CAC/C,CACF,EACA,OAAQ,qBAAmB,SAC7B,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,CACN,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EACD,GAAG,0BAA2B,IAC5B,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,IAAI,6BAA2B,cAAc,CAAC,EAEjE,MAAME,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,EAEMD,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,KAED,0BACEA,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,+BAAgC,IACjC,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,MAAO,IAAI,6BAA2B,cAAc,CACtD,CAAC,CACH,EAEA,MAAMM,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,2BAA4B,IAC7B,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,KAAM,CAAC,CACT,CAAC,CACH,EACAC,EAAc,yBACZ,wBAAqB,CACnB,MAAO,IAAI,6BAA2B,cAAc,CACtD,CAAC,CACH,EAEA,MAAMK,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,0BAA2B,IAC5B,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,KAAM,CAAC,CACT,CAAC,CACH,EACAC,EAAc,yBACZ,wBAAqB,CACnB,KAAM,CAAC,CACT,CAAC,CACH,EACAF,EAAa,yBACX,wBAAqB,CACnB,MAAO,IAAI,6BAA2B,cAAc,CACtD,CAAC,CACH,EAEA,MAAMO,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,6BAA2B,cAAc,CACtD,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,wCAAyC,IAC1C,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CAAE,KAAM,CAAC,CAAY,CAAC,CAC7C,EACAC,EAAc,yBACZ,wBAAqB,CAAE,KAAM,CAAC,CAAyB,CAAC,CAC1D,EACAF,EAAa,sBACX,IAAI,yBAAuB,cAAc,CAC3C,EAEA,MAAMO,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,yBAAuB,cAAc,CAClD,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,EAEJ,GAAG,oDAAqD,IACtD,IAAI,QAAc,CAACD,EAASC,IAAW,IACrC,sBAAmB,EAEnB,MAAMC,EAAe,IAAI,uBAAqB,CAC5C,MAAO,CACL,OAAQ,CAAC,EACT,KAAM,cACN,cAAe,CAAC,EAChB,iBAAkB,CAAC,EACnB,iBAAkB,CAAC,EACnB,WAAY,CAAC,EACb,YAAa,CAAC,EACd,YAAa,EACf,CACF,CAAC,EAGD,GAAG,MAAMA,EAAc,qBAAqB,EAAE,gBAC5CH,EAAwB,CAC1B,EACAF,EAAwB,yBACtB,wBAAqB,CACnB,KAAM,CAAC,CACT,CAAC,CACH,EACAC,EAAc,yBACZ,wBAAqB,CACnB,KAAM,CAAC,CACT,CAAC,CACH,EACAF,EAAa,yBACX,wBAAqB,CACnB,KAAM,MACR,CAAC,CACH,EAEA,MAAMO,EAAyC,CAC7C,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,cACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,EACA,CACE,OAAQ,qBAAmB,QAC3B,kBAAmB,CACjB,wBAAyB,0BAAwB,eACnD,CACF,EACA,CACE,OAAQ,qBAAmB,MAC3B,MAAO,IAAI,iBAAe,yBAAyB,CACrD,CACF,KAEA,0BACED,EACAC,KACA,mCAAgC,EAChC,CACE,OAAQH,EACR,QAASC,CACX,CACF,CACF,CAAC,CAAC,CACN,CAAC,CACH,CAAC",
6
- "names": ["import_device_management_kit", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionStates", "import_SignPsbtDeviceAction", "importOriginal", "signPsbtMock", "prepareWalletPolicyMock", "buildPsbtMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
4
+ "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { UnknownDAError } from \"@ledgerhq/device-management-kit\";\nimport { InvalidStatusWordError } from \"@ledgerhq/device-management-kit\";\n\nimport {\n type SignPsbtDAState,\n signPsbtDAStateSteps,\n} from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { type RegisteredWallet } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type BuildPsbtTaskResult } from \"@internal/app-binder/task/BuildPsbtTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { SignPsbtDeviceAction } from \"./SignPsbtDeviceAction\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"SignPsbtDeviceAction\", () => {\n const signPsbtMock = vi.fn();\n const prepareWalletPolicyMock = vi.fn();\n const buildPsbtMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n signPsbt: signPsbtMock,\n prepareWalletPolicy: prepareWalletPolicyMock,\n buildPsbt: buildPsbtMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Wallet\" as unknown as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"BuildPsbtResult\" as unknown as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n // Initial -> OpenApp -> PrepareWalletPolicy -> BuildPsbt -> SignPsbt\n const expectedStates: Array<SignPsbtDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signPsbtDAStateSteps.SIGN_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: () => {\n expect(prepareWalletPolicyMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n wallet: \"ApiWallet\",\n walletBuilder: \"WalletBuilder\",\n },\n }),\n );\n\n expect(buildPsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Hello world\",\n wallet: \"Wallet\",\n dataStoreService: \"DataStoreService\",\n psbtMapper: \"PsbtMapper\",\n },\n }),\n );\n\n expect(signPsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n wallet: \"Wallet\",\n buildPsbtResult: \"BuildPsbtResult\",\n walletSerializer: \"WalletSerializer\",\n valueParser: \"ValueParser\",\n },\n }),\n );\n resolve();\n },\n onError: reject,\n },\n );\n }));\n\n it(\"should be successful while skipping OpenApp\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: true,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Wallet\" as unknown as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"BuildPsbtResult\" as unknown as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n // Initial -> PrepareWalletPolicy -> BuildPsbt -> SignPsbt\n const expectedStates: Array<SignPsbtDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signPsbtDAStateSteps.SIGN_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n it(\"Error if open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if prepareWallet fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if buildPsbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if signPsbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signPsbtDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if signPsbt throws an exception\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({ data: {} as Wallet }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({ data: {} as BuildPsbtTaskResult }),\n );\n signPsbtMock.mockRejectedValueOnce(\n new InvalidStatusWordError(\"Mocked error\"),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signPsbtDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new InvalidStatusWordError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Return a Left if the final state has no signature\", () =>\n new Promise<void>((resolve, reject) => {\n setupOpenAppDAMock();\n\n const deviceAction = new SignPsbtDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as Wallet,\n }),\n );\n buildPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: {} as BuildPsbtTaskResult,\n }),\n );\n signPsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: undefined,\n }),\n );\n\n const expectedStates: Array<SignPsbtDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n step: signPsbtDAStateSteps.OPEN_APP,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.PREPARE_WALLET_POLICY,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signPsbtDAStateSteps.BUILD_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signPsbtDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDAError(\"No error in final state\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_device_management_kit", "import_SignPsbtDeviceActionTypes", "import_makeInternalApi", "import_setupOpenAppDAMock", "import_testDeviceActionStates", "import_SignPsbtDeviceAction", "importOriginal", "signPsbtMock", "prepareWalletPolicyMock", "buildPsbtMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var D=(i,e)=>{for(var o in e)c(i,o,{get:e[o],enumerable:!0})},E=(i,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of d(e))!b.call(i,t)&&t!==o&&c(i,t,{get:()=>e[t],enumerable:!(s=m(e,t))||s.enumerable});return i};var T=i=>E(c({},"__esModule",{value:!0}),i);var A={};D(A,{SignTransactionDeviceAction:()=>y});module.exports=T(A);var a=require("@ledgerhq/device-management-kit"),u=require("purify-ts"),n=require("xstate"),l=require("../../../app-binder/device-action/SignPsbt/SignPsbtDeviceAction"),g=require("../../../app-binder/task/ExtractTransactionTask"),S=require("../../../app-binder/task/UpdatePsbtTask");class y extends a.XStateDeviceAction{makeStateMachine(e){const{updatePsbt:o,extractTransaction:s}=this.extractDependencies();return(0,n.setup)({types:{input:{},context:{},output:{}},actors:{signPsbtStateMachine:new l.SignPsbtDeviceAction({input:this.input,loggerFactory:this.getLoggerFactory(e)}).makeStateMachine(e),updatePsbt:(0,n.fromPromise)(o),extractTransaction:(0,n.fromPromise)(s)},guards:{noInternalError:({context:t})=>t._internalState.error===null},actions:{assignErrorFromEvent:(0,n.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignPsbtDeviceAction",initial:"SignPsbtDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None},_internalState:{error:null,signatures:null,signedPsbt:null,transaction:null}}),states:{SignPsbtDeviceAction:{exit:(0,n.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None}}),invoke:{id:"signPsbtStateMachine",src:"signPsbtStateMachine",input:({context:t})=>t.input,onSnapshot:{actions:(0,n.assign)({intermediateValue:t=>t.event.snapshot.context.intermediateValue})},onDone:{target:"SignPsbtResultCheck",actions:(0,n.assign)({_internalState:({event:t,context:r})=>t.output.caseOf({Right:p=>({...r._internalState,signatures:p}),Left:p=>({...r._internalState,error:p})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignPsbtResultCheck:{always:[{guard:"noInternalError",target:"UpdatePsbt"},{target:"Error"}]},UpdatePsbt:{invoke:{id:"updatePsbt",src:"updatePsbt",input:({context:t})=>({psbt:t.input.psbt,valueParser:t.input.valueParser,psbtMapper:t.input.psbtMapper,signatures:t._internalState.signatures}),onDone:{target:"UpdatePsbtResultCheck",actions:(0,n.assign)({_internalState:({event:t,context:r})=>(0,a.isSuccessCommandResult)(t.output)?{...r._internalState,signedPsbt:t.output.data}:{...r._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},UpdatePsbtResultCheck:{always:[{guard:"noInternalError",target:"ExtractTransaction"},{target:"Error"}]},ExtractTransaction:{invoke:{id:"extractTransaction",src:"extractTransaction",input:({context:t})=>({valueParser:t.input.valueParser,psbt:t._internalState.signedPsbt}),onDone:{target:"ExtractTransactionResultCheck",actions:(0,n.assign)({_internalState:({event:t,context:r})=>(0,a.isSuccessCommandResult)(t.output)?{...r._internalState,transaction:t.output.data}:{...r._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ExtractTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.transaction?(0,u.Right)(t._internalState.transaction):(0,u.Left)(t._internalState.error||new a.UnknownDAError("No error in final state"))})}extractDependencies(){return{updatePsbt:async s=>{const{input:{psbt:t,signatures:r,valueParser:p,psbtMapper:P}}=s;return await new S.UpdatePsbtTask({psbt:t,signatures:r},p,P).run()},extractTransaction:async s=>{const{input:{psbt:t,valueParser:r}}=s;return new g.ExtractTransactionTask({psbt:t},r).run()}}}}0&&(module.exports={SignTransactionDeviceAction});
1
+ "use strict";var l=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var A=(i,r)=>{for(var o in r)l(i,o,{get:r[o],enumerable:!0})},D=(i,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of b(r))!T.call(i,t)&&t!==o&&l(i,t,{get:()=>r[t],enumerable:!(s=m(r,t))||s.enumerable});return i};var y=i=>D(l({},"__esModule",{value:!0}),i);var I={};A(I,{SignTransactionDeviceAction:()=>E});module.exports=y(I);var n=require("@ledgerhq/device-management-kit"),c=require("purify-ts"),e=require("xstate"),p=require("../../../../api/app-binder/SignTransactionDeviceActionTypes"),S=require("../../../app-binder/device-action/SignPsbt/SignPsbtDeviceAction"),g=require("../../../app-binder/task/ExtractTransactionTask"),P=require("../../../app-binder/task/UpdatePsbtTask");class E extends n.XStateDeviceAction{makeStateMachine(r){const{updatePsbt:o,extractTransaction:s}=this.extractDependencies();return(0,e.setup)({types:{input:{},context:{},output:{}},actors:{signPsbtStateMachine:new S.SignPsbtDeviceAction({input:this.input,loggerFactory:this.getLoggerFactory(r)}).makeStateMachine(r),updatePsbt:(0,e.fromPromise)(o),extractTransaction:(0,e.fromPromise)(s)},guards:{noInternalError:({context:t})=>t._internalState.error===null},actions:{assignErrorFromEvent:(0,e.assign)({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"SignPsbtDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:n.UserInteractionRequired.None,step:p.signTransactionDAStateSteps.SIGN_PSBT},_internalState:{error:null,signatures:null,signedPsbt:null,transaction:null}}),states:{SignPsbtDeviceAction:{entry:(0,e.assign)({intermediateValue:()=>({requiredUserInteraction:n.UserInteractionRequired.None,step:p.signTransactionDAStateSteps.SIGN_PSBT})}),exit:(0,e.assign)({intermediateValue:()=>({requiredUserInteraction:n.UserInteractionRequired.None,step:p.signTransactionDAStateSteps.SIGN_PSBT})}),invoke:{id:"signPsbtStateMachine",src:"signPsbtStateMachine",input:({context:t})=>t.input,onSnapshot:{actions:(0,e.assign)({intermediateValue:({event:t})=>({...t.snapshot.context.intermediateValue,step:p.signTransactionDAStateSteps.SIGN_PSBT})})},onDone:{target:"SignPsbtResultCheck",actions:(0,e.assign)({_internalState:({event:t,context:a})=>t.output.caseOf({Right:u=>({...a._internalState,signatures:u}),Left:u=>({...a._internalState,error:u})})})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignPsbtResultCheck:{always:[{guard:"noInternalError",target:"UpdatePsbt"},{target:"Error"}]},UpdatePsbt:{entry:(0,e.assign)({intermediateValue:()=>({requiredUserInteraction:n.UserInteractionRequired.None,step:p.signTransactionDAStateSteps.UPDATE_PSBT})}),invoke:{id:"updatePsbt",src:"updatePsbt",input:({context:t})=>({psbt:t.input.psbt,valueParser:t.input.valueParser,psbtMapper:t.input.psbtMapper,signatures:t._internalState.signatures}),onDone:{target:"UpdatePsbtResultCheck",actions:(0,e.assign)({_internalState:({event:t,context:a})=>(0,n.isSuccessCommandResult)(t.output)?{...a._internalState,signedPsbt:t.output.data}:{...a._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},UpdatePsbtResultCheck:{always:[{guard:"noInternalError",target:"ExtractTransaction"},{target:"Error"}]},ExtractTransaction:{entry:(0,e.assign)({intermediateValue:()=>({requiredUserInteraction:n.UserInteractionRequired.None,step:p.signTransactionDAStateSteps.EXTRACT_TRANSACTION})}),invoke:{id:"extractTransaction",src:"extractTransaction",input:({context:t})=>({valueParser:t.input.valueParser,psbt:t._internalState.signedPsbt}),onDone:{target:"ExtractTransactionResultCheck",actions:(0,e.assign)({_internalState:({event:t,context:a})=>(0,n.isSuccessCommandResult)(t.output)?{...a._internalState,transaction:t.output.data}:{...a._internalState,error:t.output.error}})},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ExtractTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:t})=>t._internalState.transaction?(0,c.Right)(t._internalState.transaction):(0,c.Left)(t._internalState.error||new n.UnknownDAError("No error in final state"))})}extractDependencies(){return{updatePsbt:async s=>{const{input:{psbt:t,signatures:a,valueParser:u,psbtMapper:d}}=s;return await new P.UpdatePsbtTask({psbt:t,signatures:a},u,d).run()},extractTransaction:async s=>{const{input:{psbt:t,valueParser:a}}=s;return new g.ExtractTransactionTask({psbt:t},a).run()}}}}0&&(module.exports={SignTransactionDeviceAction});
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type HexaString,\n type InternalApi,\n isSuccessCommandResult,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Psbt as ApiPsbt } from \"@api/model/Psbt\";\nimport { type PsbtSignature } from \"@api/model/Signature\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { ExtractTransactionTask } from \"@internal/app-binder/task/ExtractTransactionTask\";\nimport { UpdatePsbtTask } from \"@internal/app-binder/task/UpdatePsbtTask\";\nimport { type Psbt as InternalPsbt } from \"@internal/psbt/model/Psbt\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\n\nexport type MachineDependencies = {\n readonly updatePsbt: (arg0: {\n input: {\n psbt: ApiPsbt;\n signatures: PsbtSignature[];\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n };\n }) => Promise<CommandResult<InternalPsbt, BtcErrorCodes>>;\n readonly extractTransaction: (arg0: {\n input: { psbt: InternalPsbt; valueParser: ValueParser };\n }) => Promise<CommandResult<HexaString, BtcErrorCodes>>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const { updatePsbt, extractTransaction } = this.extractDependencies();\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n signPsbtStateMachine: new SignPsbtDeviceAction({\n input: this.input,\n loggerFactory: this.getLoggerFactory(internalApi),\n }).makeStateMachine(internalApi),\n updatePsbt: fromPromise(updatePsbt),\n extractTransaction: fromPromise(extractTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AFMAnWA9hgIYA2AsnLMTACJgBuqAxmAILMAuqRAdAPIAHMBjaDB9Jqw7ciAYghEwvVBgYEA1soLDR45J2Kcw5YswAWqsAG0ADAF1EoQQVipZGJyAAeiACwAzADsvACcABwAjKGRtuG2AGyRSX4ANCAAnoiRAEwArLy2uX6RQUGRpeHhfgC+NelomDj4RGSUsNR0jCzsXDwYvADC5mDMGkIiYhLd0n1EAEpwAK6knHJ2jkggLm4eXr4IoRG8eTlFOaWhQX45QaHpWQiRN4UBfu8JeaE3obY5OXUGuhsHhCCQKFQaGBJD0ZP0hiMxhM9NMpL0PItYCs1tZIptnK53P19ogjuETmdcpdrrd7pl-M8wnkgvkgvFbH48n4EkFASBGiCWuD2p1oTN0fCBc0wW1ITAFEoVGpNMo3E1Qa0IR0oRsvDsiUQSU88tVeOEktEEuE8m8cjcHqScicgokTXk8rZygFQgD6vzgdLNSKoTDZh5eFKNcK5WA5HhcARcLxBKQjAAzRMAW14asFMq1ot1W31ey2B0iJr8ZotoStNpu9vpCDtoTNHr8PoizyKvL9kaFsu1XTRcL4-fzwZgmOxw1GGnWDj1hNLoAOFwCBWC5u5RySEQdT1sra+OSt1wCAQuzICfPHQZjoYlY4DUcHounq1nY3WeKXu2JZaIOum5sgkO61tE4QHhWBS2HkCT-G8R5wc8N58hgBAQHAXh3tGQ5iiOcyeMWy4AauiAALQJAeVGFLY9EMYxDG9kC6oDgWIbiqOAzIlMj7cX+BrEeRCCNo8sS2CcRz-B6zIsnBaGsXm974fxREInOvHiGpGLLKsgkrj4iBnrwFwVgkCHfEeCQBNB3K8IEpxBO6ySep8in+mxE4Plx6m4W+UIGWRRlPJEVRmncOTmhyLI2QeUS8GFQRvPBXZRLWt4vuxk4EbCflZd5+EfpwX4aEFhqAU84RRYUpyXmBATJBeQTQZEARhKEG5Ne69GUplXkqaKOmSkszCsB05XCSFOSXgUyVshUdoJLYF7QYkvAXkUER3H45q1qE-XKXhQ2+eGACiuAJrgk1GjN+S8PNUTFMtq1Nrckl-O6wTct6KF5HUdRAA */\n id: \"SignPsbtDeviceAction\",\n initial: \"SignPsbtDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n signatures: null,\n signedPsbt: null,\n transaction: null,\n },\n };\n },\n states: {\n SignPsbtDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signPsbtStateMachine\",\n src: \"signPsbtStateMachine\",\n input: ({ context }) => context.input,\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n target: \"SignPsbtResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n return event.output.caseOf<SignTransactionDAInternalState>({\n Right: (data) => ({\n ...context._internalState,\n signatures: data,\n }),\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignPsbtResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"UpdatePsbt\" },\n { target: \"Error\" },\n ],\n },\n UpdatePsbt: {\n invoke: {\n id: \"updatePsbt\",\n src: \"updatePsbt\",\n input: ({ context }) => ({\n psbt: context.input.psbt,\n valueParser: context.input.valueParser,\n psbtMapper: context.input.psbtMapper,\n signatures: context._internalState.signatures!,\n }),\n onDone: {\n target: \"UpdatePsbtResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signedPsbt: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n UpdatePsbtResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"ExtractTransaction\" },\n { target: \"Error\" },\n ],\n },\n ExtractTransaction: {\n invoke: {\n id: \"extractTransaction\",\n src: \"extractTransaction\",\n input: ({ context }) => ({\n valueParser: context.input.valueParser,\n psbt: context._internalState.signedPsbt!,\n }),\n onDone: {\n target: \"ExtractTransactionResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n transaction: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ExtractTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.transaction\n ? Right(context._internalState.transaction)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(): MachineDependencies {\n const updatePsbt = async (arg0: {\n input: {\n psbt: ApiPsbt;\n signatures: PsbtSignature[];\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n };\n }): Promise<CommandResult<InternalPsbt, BtcErrorCodes>> => {\n const {\n input: { psbt, signatures, valueParser, psbtMapper },\n } = arg0;\n return await new UpdatePsbtTask(\n { psbt, signatures },\n valueParser,\n psbtMapper,\n ).run();\n };\n\n const extractTransaction = async (arg0: {\n input: { psbt: InternalPsbt; valueParser: ValueParser };\n }): Promise<CommandResult<HexaString, BtcErrorCodes>> => {\n const {\n input: { psbt, valueParser },\n } = arg0;\n return new ExtractTransactionTask({ psbt }, valueParser).run();\n };\n\n return {\n updatePsbt,\n extractTransaction,\n };\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAUO,2CACPC,EAA4B,qBAC5BC,EAA2C,kBAY3CC,EAAqC,4EACrCC,EAAuC,4DACvCC,EAA+B,oDAuBxB,MAAMP,UAAoC,oBAM/C,CACA,iBACEQ,EAOA,CASA,KAAM,CAAE,WAAAC,EAAY,mBAAAC,CAAmB,EAAI,KAAK,oBAAoB,EAEpE,SAAO,SAAM,CACX,MAAO,CACL,MAAO,CAAC,EACR,QAAS,CAAC,EACV,OAAQ,CAAC,CACX,EAEA,OAAQ,CACN,qBAAsB,IAAI,uBAAqB,CAC7C,MAAO,KAAK,MACZ,cAAe,KAAK,iBAAiBF,CAAW,CAClD,CAAC,EAAE,iBAAiBA,CAAW,EAC/B,cAAY,eAAYC,CAAU,EAClC,sBAAoB,eAAYC,CAAkB,CACpD,EACA,OAAQ,CACN,gBAAiB,CAAC,CAAE,QAAAC,CAAQ,IAAMA,EAAQ,eAAe,QAAU,IACrE,EACA,QAAS,CACP,wBAAsB,UAAO,CAC3B,eAAiBC,IAAO,CACtB,GAAGA,EAAE,QAAQ,eACb,MAAOA,EAAE,MAAM,KACjB,EACF,CAAC,CACH,CACF,CAAC,EAAE,cAAc,CAEf,GAAI,uBACJ,QAAS,uBACT,QAAS,CAAC,CAAE,MAAAC,CAAM,KACT,CACL,MAAAA,EACA,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,EACA,eAAgB,CACd,MAAO,KACP,WAAY,KACZ,WAAY,KACZ,YAAa,IACf,CACF,GAEF,OAAQ,CACN,qBAAsB,CACpB,QAAM,UAAO,CACX,kBAAmB,CACjB,wBAAyB,0BAAwB,IACnD,CACF,CAAC,EACD,OAAQ,CACN,GAAI,uBACJ,IAAK,uBACL,MAAO,CAAC,CAAE,QAAAF,CAAQ,IAAMA,EAAQ,MAChC,WAAY,CACV,WAAS,UAAO,CACd,kBAAoBC,GAClBA,EAAE,MAAM,SAAS,QAAQ,iBAC7B,CAAC,CACH,EACA,OAAQ,CACN,OAAQ,sBACR,WAAS,UAAO,CACd,eAAgB,CAAC,CAAE,MAAAE,EAAO,QAAAH,CAAQ,IACzBG,EAAM,OAAO,OAAuC,CACzD,MAAQC,IAAU,CAChB,GAAGJ,EAAQ,eACX,WAAYI,CACd,GACA,KAAOC,IAAW,CAChB,GAAGL,EAAQ,eACX,MAAAK,CACF,EACF,CAAC,CAEL,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,oBAAqB,CACnB,OAAQ,CACN,CAAE,MAAO,kBAAmB,OAAQ,YAAa,EACjD,CAAE,OAAQ,OAAQ,CACpB,CACF,EACA,WAAY,CACV,OAAQ,CACN,GAAI,aACJ,IAAK,aACL,MAAO,CAAC,CAAE,QAAAL,CAAQ,KAAO,CACvB,KAAMA,EAAQ,MAAM,KACpB,YAAaA,EAAQ,MAAM,YAC3B,WAAYA,EAAQ,MAAM,WAC1B,WAAYA,EAAQ,eAAe,UACrC,GACA,OAAQ,CACN,OAAQ,wBACR,WAAS,UAAO,CACd,eAAgB,CAAC,CAAE,MAAAG,EAAO,QAAAH,CAAQ,OAC5B,0BAAuBG,EAAM,MAAM,EAC9B,CACL,GAAGH,EAAQ,eACX,WAAYG,EAAM,OAAO,IAC3B,EAEO,CACL,GAAGH,EAAQ,eACX,MAAOG,EAAM,OAAO,KACtB,CAGN,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,sBAAuB,CACrB,OAAQ,CACN,CAAE,MAAO,kBAAmB,OAAQ,oBAAqB,EACzD,CAAE,OAAQ,OAAQ,CACpB,CACF,EACA,mBAAoB,CAClB,OAAQ,CACN,GAAI,qBACJ,IAAK,qBACL,MAAO,CAAC,CAAE,QAAAH,CAAQ,KAAO,CACvB,YAAaA,EAAQ,MAAM,YAC3B,KAAMA,EAAQ,eAAe,UAC/B,GACA,OAAQ,CACN,OAAQ,gCACR,WAAS,UAAO,CACd,eAAgB,CAAC,CAAE,MAAAG,EAAO,QAAAH,CAAQ,OAC5B,0BAAuBG,EAAM,MAAM,EAC9B,CACL,GAAGH,EAAQ,eACX,YAAaG,EAAM,OAAO,IAC5B,EAEO,CACL,GAAGH,EAAQ,eACX,MAAOG,EAAM,OAAO,KACtB,CAGN,CAAC,CACH,EACA,QAAS,CACP,OAAQ,QACR,QAAS,sBACX,CACF,CACF,EACA,8BAA+B,CAC7B,OAAQ,CACN,CAAE,MAAO,kBAAmB,OAAQ,SAAU,EAC9C,CAAE,OAAQ,OAAQ,CACpB,CACF,EACA,QAAS,CACP,KAAM,OACR,EACA,MAAO,CACL,KAAM,OACR,CACF,EACA,OAAQ,CAAC,CAAE,QAAAH,CAAQ,IACjBA,EAAQ,eAAe,eACnB,SAAMA,EAAQ,eAAe,WAAW,KACxC,QACEA,EAAQ,eAAe,OACrB,IAAI,iBAAe,yBAAyB,CAChD,CACR,CAAC,CACH,CAEA,qBAA2C,CA4BzC,MAAO,CACL,WA5BiB,MAAOM,GAOiC,CACzD,KAAM,CACJ,MAAO,CAAE,KAAAC,EAAM,WAAAC,EAAY,YAAAC,EAAa,WAAAC,CAAW,CACrD,EAAIJ,EACJ,OAAO,MAAM,IAAI,iBACf,CAAE,KAAAC,EAAM,WAAAC,CAAW,EACnBC,EACAC,CACF,EAAE,IAAI,CACR,EAaE,mBAXyB,MAAOJ,GAEuB,CACvD,KAAM,CACJ,MAAO,CAAE,KAAAC,EAAM,YAAAE,CAAY,CAC7B,EAAIH,EACJ,OAAO,IAAI,yBAAuB,CAAE,KAAAC,CAAK,EAAGE,CAAW,EAAE,IAAI,CAC/D,CAKA,CACF,CACF",
6
- "names": ["SignTransactionDeviceAction_exports", "__export", "SignTransactionDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_SignPsbtDeviceAction", "import_ExtractTransactionTask", "import_UpdatePsbtTask", "internalApi", "updatePsbt", "extractTransaction", "context", "_", "input", "event", "data", "error", "arg0", "psbt", "signatures", "valueParser", "psbtMapper"]
4
+ "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type HexaString,\n type InternalApi,\n isSuccessCommandResult,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n signTransactionDAStateSteps,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Psbt as ApiPsbt } from \"@api/model/Psbt\";\nimport { type PsbtSignature } from \"@api/model/Signature\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { ExtractTransactionTask } from \"@internal/app-binder/task/ExtractTransactionTask\";\nimport { UpdatePsbtTask } from \"@internal/app-binder/task/UpdatePsbtTask\";\nimport { type Psbt as InternalPsbt } from \"@internal/psbt/model/Psbt\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\n\nexport type MachineDependencies = {\n readonly updatePsbt: (arg0: {\n input: {\n psbt: ApiPsbt;\n signatures: PsbtSignature[];\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n };\n }) => Promise<CommandResult<InternalPsbt, BtcErrorCodes>>;\n readonly extractTransaction: (arg0: {\n input: { psbt: InternalPsbt; valueParser: ValueParser };\n }) => Promise<CommandResult<HexaString, BtcErrorCodes>>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const { updatePsbt, extractTransaction } = this.extractDependencies();\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n signPsbtStateMachine: new SignPsbtDeviceAction({\n input: this.input,\n loggerFactory: this.getLoggerFactory(internalApi),\n }).makeStateMachine(internalApi),\n updatePsbt: fromPromise(updatePsbt),\n extractTransaction: fromPromise(extractTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AFMAnWA9hgIYA2AsnLMTACJgBuqAxmAILMAuqRAdAPIAHMBjaDB9Jqw7ciAYghEwvVBgYEA1soLDR45J2Kcw5YswAWqsAG0ADAF1EoQQVipZGJyAAeiACwAzADsvACcABwAjKGRtuG2AGyRSX4ANCAAnoiRAEwArLy2uX6RQUGRpeHhfgC+NelomDj4RGSUsNR0jCzsXDwYvADC5mDMGkIiYhLd0n1EAEpwAK6knHJ2jkggLm4eXr4IoRG8eTlFOaWhQX45QaHpWQiRN4UBfu8JeaE3obY5OXUGuhsHhCCQKFQaGBJD0ZP0hiMxhM9NMpL0PItYCs1tZIptnK53P19ogjuETmdcpdrrd7pl-M8wnkgvkgvFbH48n4EkFASBGiCWuD2p1oTN0fCBc0wW1ITAFEoVGpNMo3E1Qa0IR0oRsvDsiUQSU88tVeOEktEEuE8m8cjcHqScicgokTXk8rZygFQgD6vzgdLNSKoTDZh5eFKNcK5WA5HhcARcLxBKQjAAzRMAW14asFMq1ot1W31ey2B0iJr8ZotoStNpu9vpCDtoTNHr8PoizyKvL9kaFsu1XTRcL4-fzwZgmOxw1GGnWDj1hNLoAOFwCBWC5u5RySEQdT1sra+OSt1wCAQuzICfPHQZjoYlY4DUcHounq1nY3WeKXu2JZaIOum5sgkO61tE4QHhWBS2HkCT-G8R5wc8N58hgBAQHAXh3tGQ5iiOcyeMWy4AauiAALQJAeVGFLY9EMYxDG9kC6oDgWIbiqOAzIlMj7cX+BrEeRCCNo8sS2CcRz-B6zIsnBaGsXm974fxREInOvHiGpGLLKsgkrj4iBnrwFwVgkCHfEeCQBNB3K8IEpxBO6ySep8in+mxE4Plx6m4W+UIGWRRlPJEVRmncOTmhyLI2QeUS8GFQRvPBXZRLWt4vuxk4EbCflZd5+EfpwX4aEFhqAU84RRYUpyXmBATJBeQTQZEARhKEG5Ne69GUplXkqaKOmSkszCsB05XCSFOSXgUyVshUdoJLYF7QYkvAXkUER3H45q1qE-XKXhQ2+eGACiuAJrgk1GjN+S8PNUTFMtq1Nrckl-O6wTct6KF5HUdRAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"SignPsbtDeviceAction\",\n context: ({ input }) => ({\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n _internalState: {\n error: null,\n signatures: null,\n signedPsbt: null,\n transaction: null,\n },\n }),\n states: {\n SignPsbtDeviceAction: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n }),\n }),\n exit: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n }),\n }),\n invoke: {\n id: \"signPsbtStateMachine\",\n src: \"signPsbtStateMachine\",\n input: ({ context }) => context.input,\n onSnapshot: {\n actions: assign({\n intermediateValue: ({ event }) => ({\n ...event.snapshot.context.intermediateValue,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n }),\n }),\n },\n onDone: {\n target: \"SignPsbtResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n return event.output.caseOf<SignTransactionDAInternalState>({\n Right: (data) => ({\n ...context._internalState,\n signatures: data,\n }),\n Left: (error) => ({\n ...context._internalState,\n error,\n }),\n });\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignPsbtResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"UpdatePsbt\" },\n { target: \"Error\" },\n ],\n },\n UpdatePsbt: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.UPDATE_PSBT,\n }),\n }),\n invoke: {\n id: \"updatePsbt\",\n src: \"updatePsbt\",\n input: ({ context }) => ({\n psbt: context.input.psbt,\n valueParser: context.input.valueParser,\n psbtMapper: context.input.psbtMapper,\n signatures: context._internalState.signatures!,\n }),\n onDone: {\n target: \"UpdatePsbtResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signedPsbt: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n UpdatePsbtResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"ExtractTransaction\" },\n { target: \"Error\" },\n ],\n },\n ExtractTransaction: {\n entry: assign({\n intermediateValue: () => ({\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.EXTRACT_TRANSACTION,\n }),\n }),\n invoke: {\n id: \"extractTransaction\",\n src: \"extractTransaction\",\n input: ({ context }) => ({\n valueParser: context.input.valueParser,\n psbt: context._internalState.signedPsbt!,\n }),\n onDone: {\n target: \"ExtractTransactionResultCheck\",\n actions: assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n transaction: event.output.data,\n };\n } else {\n return {\n ...context._internalState,\n error: event.output.error,\n };\n }\n },\n }),\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ExtractTransactionResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.transaction\n ? Right(context._internalState.transaction)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(): MachineDependencies {\n const updatePsbt = async (arg0: {\n input: {\n psbt: ApiPsbt;\n signatures: PsbtSignature[];\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n };\n }): Promise<CommandResult<InternalPsbt, BtcErrorCodes>> => {\n const {\n input: { psbt, signatures, valueParser, psbtMapper },\n } = arg0;\n return await new UpdatePsbtTask(\n { psbt, signatures },\n valueParser,\n psbtMapper,\n ).run();\n };\n\n const extractTransaction = async (arg0: {\n input: { psbt: InternalPsbt; valueParser: ValueParser };\n }): Promise<CommandResult<HexaString, BtcErrorCodes>> => {\n const {\n input: { psbt, valueParser },\n } = arg0;\n return new ExtractTransactionTask({ psbt }, valueParser).run();\n };\n\n return {\n updatePsbt,\n extractTransaction,\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["SignTransactionDeviceAction_exports", "__export", "SignTransactionDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_SignTransactionDeviceActionTypes", "import_SignPsbtDeviceAction", "import_ExtractTransactionTask", "import_UpdatePsbtTask", "internalApi", "updatePsbt", "extractTransaction", "context", "_", "input", "event", "data", "error", "arg0", "psbt", "signatures", "valueParser", "psbtMapper"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("@ledgerhq/device-management-kit"),o=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),l=require("../../../app-binder/device-action/__test-utils__/setupSignPsbtDAMock"),c=require("../../../app-binder/device-action/__test-utils__/testDeviceActionStates"),u=require("./SignTransactionDeviceAction");vi.mock("@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction",async r=>({...await r(),SignPsbtDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const r=vi.fn(),s=vi.fn();function p(){return{updatePsbt:r,extractTransaction:s}}describe("Success case",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((a,n)=>{(0,l.setupSignPsbtDAMock)([{inputIndex:0,pubkey:Uint8Array.from([4,5,6]),signature:Uint8Array.from([1,2,3])}]);const t=new u.SignTransactionDeviceAction({input:{wallet:"ApiWallet",psbt:"Hello world",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",psbtMapper:"PsbtMapper",valueParser:"ValueParser",skipOpenApp:!1}});vi.spyOn(t,"extractDependencies").mockReturnValue(p()),r.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"Psbt"})),s.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"0x42"}));const i=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{output:"0x42",status:e.DeviceActionStatus.Completed}];(0,c.testDeviceActionStates)(t,i,(0,o.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(r).toHaveBeenCalledWith(expect.objectContaining({input:{psbt:"Hello world",psbtMapper:"PsbtMapper",signatures:[{inputIndex:0,pubkey:Uint8Array.from([4,5,6]),signature:Uint8Array.from([1,2,3])}],valueParser:"ValueParser"}})),expect(s).toHaveBeenCalledWith(expect.objectContaining({input:{psbt:"Psbt",valueParser:"ValueParser"}})),a()},onError:n})}))}),describe("error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Error if sign psbt fails",()=>new Promise((a,n)=>{(0,l.setupSignPsbtDAMock)([],new e.UnknownDeviceExchangeError("Mocked error"));const t=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}],i=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});(0,c.testDeviceActionStates)(i,t,(0,o.makeDeviceActionInternalApiMock)(),{onDone:a,onError:n})})),it("Error if update psbt fails",()=>new Promise((a,n)=>{(0,l.setupSignPsbtDAMock)();const t=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});vi.spyOn(t,"extractDependencies").mockReturnValue(p()),r.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError("Mocked error")}));const i=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}];(0,c.testDeviceActionStates)(t,i,(0,o.makeDeviceActionInternalApiMock)(),{onDone:a,onError:n})})),it("Error if extract transaction fails",()=>new Promise((a,n)=>{(0,l.setupSignPsbtDAMock)();const t=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});vi.spyOn(t,"extractDependencies").mockReturnValue(p()),r.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"Psbt"})),s.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError("Mocked error")}));const i=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}];(0,c.testDeviceActionStates)(t,i,(0,o.makeDeviceActionInternalApiMock)(),{onDone:a,onError:n})}))})});
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),t=require("../../../../api/app-binder/SignTransactionDeviceActionTypes"),l=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),c=require("../../../app-binder/device-action/__test-utils__/setupSignPsbtDAMock"),p=require("../../../app-binder/device-action/__test-utils__/testDeviceActionStates"),u=require("./SignTransactionDeviceAction");vi.mock("@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction",async a=>({...await a(),SignPsbtDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const a=vi.fn(),o=vi.fn();function d(){return{updatePsbt:a,extractTransaction:o}}describe("Success case",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((n,i)=>{(0,c.setupSignPsbtDAMock)([{inputIndex:0,pubkey:Uint8Array.from([4,5,6]),signature:Uint8Array.from([1,2,3])}]);const r=new u.SignTransactionDeviceAction({input:{wallet:"ApiWallet",psbt:"Hello world",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",psbtMapper:"PsbtMapper",valueParser:"ValueParser",skipOpenApp:!1}});vi.spyOn(r,"extractDependencies").mockReturnValue(d()),a.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"Psbt"})),o.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"0x42"}));const s=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.SIGN_PSBT},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction,step:t.signTransactionDAStateSteps.SIGN_PSBT},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.UPDATE_PSBT},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.EXTRACT_TRANSACTION},status:e.DeviceActionStatus.Pending},{output:"0x42",status:e.DeviceActionStatus.Completed}];(0,p.testDeviceActionStates)(r,s,(0,l.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(a).toHaveBeenCalledWith(expect.objectContaining({input:{psbt:"Hello world",psbtMapper:"PsbtMapper",signatures:[{inputIndex:0,pubkey:Uint8Array.from([4,5,6]),signature:Uint8Array.from([1,2,3])}],valueParser:"ValueParser"}})),expect(o).toHaveBeenCalledWith(expect.objectContaining({input:{psbt:"Psbt",valueParser:"ValueParser"}})),n()},onError:i})}))}),describe("error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Error if sign psbt fails",()=>new Promise((n,i)=>{(0,c.setupSignPsbtDAMock)([],new e.UnknownDeviceExchangeError("Mocked error"));const r=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}],s=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});(0,p.testDeviceActionStates)(s,r,(0,l.makeDeviceActionInternalApiMock)(),{onDone:n,onError:i})})),it("Error if update psbt fails",()=>new Promise((n,i)=>{(0,c.setupSignPsbtDAMock)();const r=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});vi.spyOn(r,"extractDependencies").mockReturnValue(d()),a.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError("Mocked error")}));const s=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.UPDATE_PSBT}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}];(0,p.testDeviceActionStates)(r,s,(0,l.makeDeviceActionInternalApiMock)(),{onDone:n,onError:i})})),it("Error if extract transaction fails",()=>new Promise((n,i)=>{(0,c.setupSignPsbtDAMock)();const r=new u.SignTransactionDeviceAction({input:{wallet:{},psbt:"Hello world",walletBuilder:{},walletSerializer:{},dataStoreService:{},psbtMapper:{},valueParser:{},skipOpenApp:!1}});vi.spyOn(r,"extractDependencies").mockReturnValue(d()),a.mockResolvedValueOnce((0,e.CommandResultFactory)({data:"Psbt"})),o.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError("Mocked error")}));const s=[{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction,step:t.signTransactionDAStateSteps.SIGN_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.UPDATE_PSBT}},{status:e.DeviceActionStatus.Pending,intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None,step:t.signTransactionDAStateSteps.EXTRACT_TRANSACTION}},{status:e.DeviceActionStatus.Error,error:new e.UnknownDeviceExchangeError("Mocked error")}];(0,p.testDeviceActionStates)(r,s,(0,l.makeDeviceActionInternalApiMock)(),{onDone:n,onError:i})}))})});
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.ts"],
4
- "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type SignTransactionDAState } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type RegisteredWallet } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupSignPsbtDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Psbt as InternalPsbt } from \"@internal/psbt/model/Psbt\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { SignTransactionDeviceAction } from \"./SignTransactionDeviceAction\";\n\nvi.mock(\n \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\",\n async (importOriginal) => {\n const original =\n await importOriginal<\n typeof import(\"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\")\n >();\n return {\n ...original,\n SignPsbtDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n },\n);\n\ndescribe(\"SignTransactionDeviceAction\", () => {\n const updatePsbtMock = vi.fn();\n const extractTransactionMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n updatePsbt: updatePsbtMock,\n extractTransaction: extractTransactionMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock([\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ]);\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Psbt\" as unknown as InternalPsbt,\n }),\n );\n extractTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"0x42\",\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n const expectedStates: Array<SignTransactionDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"0x42\",\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: () => {\n expect(updatePsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Hello world\",\n psbtMapper: \"PsbtMapper\",\n signatures: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n valueParser: \"ValueParser\",\n },\n }),\n );\n expect(extractTransactionMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Psbt\",\n valueParser: \"ValueParser\",\n },\n }),\n );\n resolve();\n },\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n it(\"Error if sign psbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock([], new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if update psbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if extract transaction fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Psbt\" as unknown as InternalPsbt,\n }),\n );\n extractTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
- "mappings": "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",
6
- "names": ["import_device_management_kit", "import_makeInternalApi", "import_setupSignPsbtDAMock", "import_testDeviceActionStates", "import_SignTransactionDeviceAction", "importOriginal", "updatePsbtMock", "extractTransactionMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
4
+ "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n type SignTransactionDAState,\n signTransactionDAStateSteps,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type RegisteredWallet } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupSignPsbtDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Psbt as InternalPsbt } from \"@internal/psbt/model/Psbt\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { SignTransactionDeviceAction } from \"./SignTransactionDeviceAction\";\n\nvi.mock(\n \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\",\n async (importOriginal) => {\n const original =\n await importOriginal<\n typeof import(\"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\")\n >();\n return {\n ...original,\n SignPsbtDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n },\n);\n\ndescribe(\"SignTransactionDeviceAction\", () => {\n const updatePsbtMock = vi.fn();\n const extractTransactionMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n updatePsbt: updatePsbtMock,\n extractTransaction: extractTransactionMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock([\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ]);\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n psbtMapper: \"PsbtMapper\" as unknown as PsbtMapper,\n valueParser: \"ValueParser\" as unknown as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Psbt\" as unknown as InternalPsbt,\n }),\n );\n extractTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"0x42\",\n }),\n );\n\n // Expected intermediate values for the following state sequence:\n const expectedStates: Array<SignTransactionDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.UPDATE_PSBT,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.EXTRACT_TRANSACTION,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"0x42\",\n status: DeviceActionStatus.Completed,\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: () => {\n expect(updatePsbtMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Hello world\",\n psbtMapper: \"PsbtMapper\",\n signatures: [\n {\n inputIndex: 0,\n pubkey: Uint8Array.from([0x04, 0x05, 0x06]),\n signature: Uint8Array.from([0x01, 0x02, 0x03]),\n },\n ],\n valueParser: \"ValueParser\",\n },\n }),\n );\n expect(extractTransactionMock).toHaveBeenCalledWith(\n expect.objectContaining({\n input: {\n psbt: \"Psbt\",\n valueParser: \"ValueParser\",\n },\n }),\n );\n resolve();\n },\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n it(\"Error if sign psbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock([], new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if update psbt fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.UPDATE_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"Error if extract transaction fails\", () =>\n new Promise<void>((resolve, reject) => {\n setupSignPsbtDAMock();\n\n const deviceAction = new SignTransactionDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n psbt: \"Hello world\",\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n psbtMapper: {} as PsbtMapper,\n valueParser: {} as ValueParser,\n skipOpenApp: false,\n },\n });\n\n // Mock the dependencies to return some sample data\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n updatePsbtMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"Psbt\" as unknown as InternalPsbt,\n }),\n );\n extractTransactionMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<SignTransactionDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n step: signTransactionDAStateSteps.SIGN_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.UPDATE_PSBT,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n step: signTransactionDAStateSteps.EXTRACT_TRANSACTION,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_device_management_kit", "import_SignTransactionDeviceActionTypes", "import_makeInternalApi", "import_setupSignPsbtDAMock", "import_testDeviceActionStates", "import_SignTransactionDeviceAction", "importOriginal", "updatePsbtMock", "extractTransactionMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
7
7
  }
@@ -63,5 +63,5 @@
63
63
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
64
64
  },
65
65
  "types": "lib/cjs/index.d.ts",
66
- "version": "1.2.1"
66
+ "version": "1.3.1"
67
67
  }
@@ -1 +1,2 @@
1
+ const e=Object.freeze({OPEN_APP:"signer.btc.steps.openApp",PREPARE_WALLET_POLICY:"signer.btc.steps.prepareWalletPolicy",GET_WALLET_ADDRESS:"signer.btc.steps.getWalletAddress"});export{e as getWalletAddressDAStateSteps};
1
2
  //# sourceMappingURL=GetWalletAddressDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../../src/api/app-binder/GetWalletAddressDeviceActionTypes.ts"],
4
+ "sourcesContent": ["import {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type GetWalletAddressDAOutput = WalletAddress;\n\nexport const getWalletAddressDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.btc.steps.openApp\",\n PREPARE_WALLET_POLICY: \"signer.btc.steps.prepareWalletPolicy\",\n GET_WALLET_ADDRESS: \"signer.btc.steps.getWalletAddress\",\n} as const);\n\nexport type GetWalletAddressDAStateStep =\n (typeof getWalletAddressDAStateSteps)[keyof typeof getWalletAddressDAStateSteps];\n\nexport type GetWalletAddressDAInput = {\n readonly skipOpenApp: boolean;\n readonly checkOnDevice: boolean;\n readonly change: boolean;\n readonly addressIndex: number;\n readonly wallet: ApiWallet;\n readonly walletBuilder: WalletBuilder;\n readonly walletSerializer: WalletSerializer;\n readonly dataStoreService: DataStoreService;\n};\n\nexport type GetWalletAddressDAError =\n | OpenAppDAError\n | CommandErrorResult<BtcErrorCodes>[\"error\"];\n\ntype GetWalletAddressDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.VerifyAddress;\n\nexport type GetWalletAddressDAIntermediateValue = {\n requiredUserInteraction: GetWalletAddressDARequiredInteraction;\n step: GetWalletAddressDAStateStep;\n};\n\nexport type GetWalletAddressDAState = DeviceActionState<\n GetWalletAddressDAOutput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue\n>;\n\nexport type GetWalletAddressDAInternalState = {\n readonly error: GetWalletAddressDAError | null;\n readonly wallet: InternalWallet | null;\n readonly walletAddress: WalletAddress | null;\n};\n\nexport type GetWalletAddressDAReturnType = ExecuteDeviceActionReturnType<\n GetWalletAddressDAOutput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue\n>;\n"],
5
+ "mappings": "AAmBO,MAAMA,EAA+B,OAAO,OAAO,CACxD,SAAU,2BACV,sBAAuB,uCACvB,mBAAoB,mCACtB,CAAU",
6
+ "names": ["getWalletAddressDAStateSteps"]
7
7
  }
@@ -1 +1,2 @@
1
+ const t=Object.freeze({OPEN_APP:"signer.btc.steps.openApp",PREPARE_WALLET_POLICY:"signer.btc.steps.prepareWalletPolicy",BUILD_PSBT:"signer.btc.steps.buildPsbt",SIGN_PSBT:"signer.btc.steps.signPsbt"});export{t as signPsbtDAStateSteps};
1
2
  //# sourceMappingURL=SignPsbtDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../../src/api/app-binder/SignPsbtDeviceActionTypes.ts"],
4
+ "sourcesContent": ["import {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type PsbtSignature } from \"@api/model/Signature\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { type BuildPsbtTaskResult } from \"@internal/app-binder/task/BuildPsbtTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type SignPsbtDAOutput = PsbtSignature[];\n\nexport const signPsbtDAStateSteps = Object.freeze({\n OPEN_APP: \"signer.btc.steps.openApp\",\n PREPARE_WALLET_POLICY: \"signer.btc.steps.prepareWalletPolicy\",\n BUILD_PSBT: \"signer.btc.steps.buildPsbt\",\n SIGN_PSBT: \"signer.btc.steps.signPsbt\",\n} as const);\n\nexport type SignPsbtDAStateStep =\n (typeof signPsbtDAStateSteps)[keyof typeof signPsbtDAStateSteps];\n\nexport type SignPsbtDAInput = {\n psbt: Psbt;\n wallet: ApiWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n skipOpenApp: boolean;\n};\n\nexport type SignPsbtDAError =\n | OpenAppDAError\n | CommandErrorResult<BtcErrorCodes>[\"error\"];\n\nexport type SignPsbtDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.SignTransaction;\n\nexport type SignPsbtDAIntermediateValue = {\n requiredUserInteraction: SignPsbtDARequiredInteraction;\n step: SignPsbtDAStateStep;\n};\n\nexport type SignPsbtDAState = DeviceActionState<\n SignPsbtDAOutput,\n SignPsbtDAError,\n SignPsbtDAIntermediateValue\n>;\n\nexport type SignPsbtDAInternalState = {\n readonly error: SignPsbtDAError | null;\n readonly wallet: InternalWallet | null;\n readonly buildPsbtResult: BuildPsbtTaskResult | null;\n readonly signatures: PsbtSignature[] | null;\n};\n\nexport type SignPsbtDAReturnType = ExecuteDeviceActionReturnType<\n SignPsbtDAOutput,\n SignPsbtDAError,\n SignPsbtDAIntermediateValue\n>;\n"],
5
+ "mappings": "AAuBO,MAAMA,EAAuB,OAAO,OAAO,CAChD,SAAU,2BACV,sBAAuB,uCACvB,WAAY,6BACZ,UAAW,2BACb,CAAU",
6
+ "names": ["signPsbtDAStateSteps"]
7
7
  }
@@ -1 +1,2 @@
1
+ const t=Object.freeze({SIGN_PSBT:"signer.btc.steps.signPsbt",UPDATE_PSBT:"signer.btc.steps.updatePsbt",EXTRACT_TRANSACTION:"signer.btc.steps.extractTransaction"});export{t as signTransactionDAStateSteps};
1
2
  //# sourceMappingURL=SignTransactionDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],
4
+ "sourcesContent": ["import {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type HexaString,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type SignPsbtDARequiredInteraction } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { type Psbt as ApiPsbt } from \"@api/model/Psbt\";\nimport { type PsbtSignature } from \"@api/model/Signature\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Psbt as InternalPsbt } from \"@internal/psbt/model/Psbt\";\nimport { type PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport { type ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type SignTransactionDAOutput = HexaString;\n\nexport const signTransactionDAStateSteps = Object.freeze({\n SIGN_PSBT: \"signer.btc.steps.signPsbt\",\n UPDATE_PSBT: \"signer.btc.steps.updatePsbt\",\n EXTRACT_TRANSACTION: \"signer.btc.steps.extractTransaction\",\n} as const);\n\nexport type SignTransactionDAStateStep =\n (typeof signTransactionDAStateSteps)[keyof typeof signTransactionDAStateSteps];\n\nexport type SignTransactionDAInput = {\n psbt: ApiPsbt;\n wallet: ApiWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n psbtMapper: PsbtMapper;\n valueParser: ValueParser;\n skipOpenApp: boolean;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | CommandErrorResult<BtcErrorCodes>[\"error\"];\n\ntype SignTransactionDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | SignPsbtDARequiredInteraction;\n\nexport type SignTransactionDAIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n step: SignTransactionDAStateStep;\n};\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly signatures: PsbtSignature[] | null;\n readonly signedPsbt: InternalPsbt | null;\n readonly transaction: HexaString | null;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
+ "mappings": "AAuBO,MAAMA,EAA8B,OAAO,OAAO,CACvD,UAAW,4BACX,YAAa,8BACb,oBAAqB,qCACvB,CAAU",
6
+ "names": ["signTransactionDAStateSteps"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var y=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var m=(s,e,t,n)=>{for(var r=n>1?void 0:n?S(e,t):e,p=s.length-1,l;p>=0;p--)(l=s[p])&&(r=(n?l(e,t,r):l(r))||r);return n&&r&&y(e,t,r),r},i=(s,e)=>(t,n)=>e(t,n,s);import{CallTaskInAppDeviceAction as g,SendCommandInAppDeviceAction as u,UserInteractionRequired as o}from"@ledgerhq/device-management-kit";import{inject as a,injectable as h}from"inversify";import{GetExtendedPublicKeyCommand as k}from"../app-binder/command/GetExtendedPublicKeyCommand";import{GetMasterFingerprintCommand as _}from"../app-binder/command/GetMasterFingerprintCommand";import{SignPsbtDeviceAction as D}from"../app-binder/device-action/SignPsbt/SignPsbtDeviceAction";import{SignTransactionDeviceAction as b}from"../app-binder/device-action/SignTransaction/SignTransactionDeviceAction";import{RegisterWalletTask as w}from"../app-binder/task/RegisterWalletTask";import{SendSignMessageTask as I}from"../app-binder/task/SignMessageTask";import{dataStoreTypes as P}from"../data-store/di/dataStoreTypes";import{externalTypes as d}from"../externalTypes";import{psbtTypes as v}from"../psbt/di/psbtTypes";import{walletTypes as A}from"../wallet/di/walletTypes";import{GetWalletAddressDeviceAction as f}from"./device-action/GetWalletAddress/GetWalletAddressDeviceAction";let c=class{constructor(e,t,n,r,p,l,T,M){this._dmk=e;this._sessionId=t;this._walletBuilder=n;this._walletSerializer=r;this._dataStoreService=p;this._psbtMapper=l;this._valueParser=T;this._dmkLoggerFactory=M}getExtendedPublicKey(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new u({input:{command:new k(e),appName:"Bitcoin",requiredUserInteraction:e.checkOnDevice?o.VerifyAddress:o.None,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("GetExtendedPublicKeyCommand")})})}getMasterFingerprint(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new u({input:{command:new _,appName:"Bitcoin",requiredUserInteraction:o.None,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("GetMasterFingerprintCommand")})})}signMessage(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new g({input:{task:async t=>new I(t,{derivationPath:e.derivationPath,message:e.message,loggerFactory:this._dmkLoggerFactory},this._dataStoreService).run(),appName:"Bitcoin",requiredUserInteraction:o.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("SendSignMessageTask")})})}signPsbt(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new D({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp},loggerFactory:this._dmkLoggerFactory})})}getWalletAddress(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new f({input:{wallet:e.wallet,skipOpenApp:e.skipOpenApp,checkOnDevice:e.checkOnDevice,change:e.change,addressIndex:e.addressIndex,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService},loggerFactory:this._dmkLoggerFactory})})}signTransaction(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new b({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp},loggerFactory:this._dmkLoggerFactory})})}registerWallet(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new g({input:{task:async t=>new w(t,{walletPolicy:e.wallet,loggerFactory:this._dmkLoggerFactory},this._walletBuilder,this._walletSerializer,this._dataStoreService).run(),appName:"Bitcoin",requiredUserInteraction:o.RegisterWallet,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("RegisterWalletTask")})})}};c=m([h(),i(0,a(d.Dmk)),i(1,a(d.SessionId)),i(2,a(A.WalletBuilder)),i(3,a(A.WalletSerializer)),i(4,a(P.DataStoreService)),i(5,a(v.PsbtMapper)),i(6,a(v.ValueParser)),i(7,a(d.DmkLoggerFactory))],c);export{c as BtcAppBinder};
1
+ var S=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var g=(n,e,t,s)=>{for(var i=s>1?void 0:s?h(e,t):e,p=n.length-1,l;p>=0;p--)(l=n[p])&&(i=(s?l(e,t,i):l(i))||i);return s&&i&&S(e,t,i),i},r=(n,e)=>(t,s)=>e(t,s,n);import{CallTaskInAppDeviceAction as u,SendCommandInAppDeviceAction as v,UserInteractionRequired as o}from"@ledgerhq/device-management-kit";import{inject as a,injectable as k}from"inversify";import{GetExtendedPublicKeyCommand as _}from"../app-binder/command/GetExtendedPublicKeyCommand";import{GetMasterFingerprintCommand as D}from"../app-binder/command/GetMasterFingerprintCommand";import{SignPsbtDeviceAction as b}from"../app-binder/device-action/SignPsbt/SignPsbtDeviceAction";import{SignTransactionDeviceAction as w}from"../app-binder/device-action/SignTransaction/SignTransactionDeviceAction";import{RegisterWalletTask as P}from"../app-binder/task/RegisterWalletTask";import{SendSignMessageTask as I}from"../app-binder/task/SignMessageTask";import{dataStoreTypes as f}from"../data-store/di/dataStoreTypes";import{externalTypes as m}from"../externalTypes";import{psbtTypes as A}from"../psbt/di/psbtTypes";import{walletTypes as y}from"../wallet/di/walletTypes";import{GetWalletAddressDeviceAction as T}from"./device-action/GetWalletAddress/GetWalletAddressDeviceAction";import{APP_NAME as c}from"./constants";let d=class{constructor(e,t,s,i,p,l,M,W){this._dmk=e;this._sessionId=t;this._walletBuilder=s;this._walletSerializer=i;this._dataStoreService=p;this._psbtMapper=l;this._valueParser=M;this._dmkLoggerFactory=W}getExtendedPublicKey(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new v({input:{command:new _(e),appName:c,requiredUserInteraction:e.checkOnDevice?o.VerifyAddress:o.None,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("GetExtendedPublicKeyCommand")})})}getMasterFingerprint(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new v({input:{command:new D,appName:c,requiredUserInteraction:o.None,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("GetMasterFingerprintCommand")})})}signMessage(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new u({input:{task:async t=>new I(t,{derivationPath:e.derivationPath,message:e.message,loggerFactory:this._dmkLoggerFactory},this._dataStoreService).run(),appName:c,requiredUserInteraction:o.SignPersonalMessage,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("SendSignMessageTask")})})}signPsbt(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new b({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp},loggerFactory:this._dmkLoggerFactory})})}getWalletAddress(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new T({input:{wallet:e.wallet,skipOpenApp:e.skipOpenApp,checkOnDevice:e.checkOnDevice,change:e.change,addressIndex:e.addressIndex,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService},loggerFactory:this._dmkLoggerFactory})})}signTransaction(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new w({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp},loggerFactory:this._dmkLoggerFactory})})}registerWallet(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new u({input:{task:async t=>new P(t,{walletPolicy:e.wallet,loggerFactory:this._dmkLoggerFactory},this._walletBuilder,this._walletSerializer,this._dataStoreService).run(),appName:c,requiredUserInteraction:o.RegisterWallet,skipOpenApp:e.skipOpenApp},logger:this._dmkLoggerFactory("RegisterWalletTask")})})}};d=g([k(),r(0,a(m.Dmk)),r(1,a(m.SessionId)),r(2,a(y.WalletBuilder)),r(3,a(y.WalletSerializer)),r(4,a(f.DataStoreService)),r(5,a(A.PsbtMapper)),r(6,a(A.ValueParser)),r(7,a(m.DmkLoggerFactory))],d);export{d as BtcAppBinder};
2
2
  //# sourceMappingURL=BtcAppBinder.js.map