@ledgerhq/context-module 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/lib/cjs/package.json +2 -2
  2. package/lib/cjs/src/ContextModule.js +1 -1
  3. package/lib/cjs/src/ContextModule.js.map +1 -1
  4. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.js.map +2 -2
  6. package/lib/cjs/src/DefaultContextModule.js +1 -1
  7. package/lib/cjs/src/DefaultContextModule.js.map +2 -2
  8. package/lib/cjs/src/di.js +1 -1
  9. package/lib/cjs/src/di.js.map +3 -3
  10. package/lib/cjs/src/index.js +1 -1
  11. package/lib/cjs/src/index.js.map +2 -2
  12. package/lib/cjs/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.js.map +1 -1
  13. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  14. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js.map +2 -2
  15. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  16. package/lib/cjs/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +2 -2
  17. package/lib/cjs/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.js.map +1 -1
  18. package/lib/cjs/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js +1 -1
  19. package/lib/cjs/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js.map +2 -2
  20. package/lib/cjs/src/modules/multichain/reporter/model/BlindSigningEvent.js +1 -1
  21. package/lib/cjs/src/modules/multichain/reporter/model/BlindSigningEvent.js.map +2 -2
  22. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js +2 -0
  23. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js.map +7 -0
  24. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js +2 -0
  25. package/lib/cjs/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js.map +7 -0
  26. package/lib/cjs/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js +2 -0
  27. package/lib/cjs/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js.map +7 -0
  28. package/lib/cjs/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js +2 -0
  29. package/lib/cjs/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js.map +7 -0
  30. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js +2 -0
  31. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js.map +7 -0
  32. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterTypes.js +2 -0
  33. package/lib/cjs/src/modules/multichain/sign-reporter/di/signReporterTypes.js.map +7 -0
  34. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js +2 -0
  35. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js.map +7 -0
  36. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js +2 -0
  37. package/lib/cjs/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js.map +7 -0
  38. package/lib/cjs/src/modules/multichain/sign-reporter/domain/SignReporter.js +2 -0
  39. package/lib/cjs/src/modules/multichain/sign-reporter/domain/SignReporter.js.map +7 -0
  40. package/lib/cjs/src/modules/multichain/sign-reporter/model/SignReportParams.js +2 -0
  41. package/lib/cjs/src/modules/multichain/sign-reporter/model/SignReportParams.js.map +7 -0
  42. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  43. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +2 -2
  44. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +1 -1
  45. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +2 -2
  46. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  47. package/lib/cjs/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js.map +1 -1
  48. package/lib/esm/package.json +2 -2
  49. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  50. package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
  51. package/lib/esm/src/DefaultContextModule.js +1 -1
  52. package/lib/esm/src/DefaultContextModule.js.map +2 -2
  53. package/lib/esm/src/di.js +1 -1
  54. package/lib/esm/src/di.js.map +3 -3
  55. package/lib/esm/src/index.js +1 -1
  56. package/lib/esm/src/index.js.map +2 -2
  57. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js +1 -1
  58. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.js.map +2 -2
  59. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js +1 -1
  60. package/lib/esm/src/modules/multichain/reporter/data/HttpBlindSigningReporterDatasource.test.js.map +2 -2
  61. package/lib/esm/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js +1 -1
  62. package/lib/esm/src/modules/multichain/reporter/domain/DefaultBlindSigningReporter.test.js.map +2 -2
  63. package/lib/esm/src/modules/multichain/reporter/model/BlindSigningEvent.js +1 -1
  64. package/lib/esm/src/modules/multichain/reporter/model/BlindSigningEvent.js.map +2 -2
  65. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js +2 -0
  66. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.js.map +7 -0
  67. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js +2 -0
  68. package/lib/esm/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.js.map +7 -0
  69. package/lib/esm/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js +1 -0
  70. package/lib/esm/src/modules/multichain/sign-reporter/data/SignReporterDatasource.js.map +7 -0
  71. package/lib/esm/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js +1 -0
  72. package/lib/esm/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.js.map +7 -0
  73. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js +2 -0
  74. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.js.map +7 -0
  75. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterTypes.js +2 -0
  76. package/lib/esm/src/modules/multichain/sign-reporter/di/signReporterTypes.js.map +7 -0
  77. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js +2 -0
  78. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.js.map +7 -0
  79. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js +2 -0
  80. package/lib/esm/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.js.map +7 -0
  81. package/lib/esm/src/modules/multichain/sign-reporter/domain/SignReporter.js +1 -0
  82. package/lib/esm/src/modules/multichain/sign-reporter/domain/SignReporter.js.map +7 -0
  83. package/lib/esm/src/modules/multichain/sign-reporter/model/SignReportParams.js +2 -0
  84. package/lib/esm/src/modules/multichain/sign-reporter/model/SignReportParams.js.map +7 -0
  85. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  86. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +2 -2
  87. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +1 -1
  88. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +2 -2
  89. package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  90. package/lib/esm/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js.map +1 -1
  91. package/lib/types/src/ContextModule.d.ts +2 -0
  92. package/lib/types/src/ContextModule.d.ts.map +1 -1
  93. package/lib/types/src/DefaultContextModule.d.ts +3 -0
  94. package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
  95. package/lib/types/src/di.d.ts.map +1 -1
  96. package/lib/types/src/index.d.ts +2 -1
  97. package/lib/types/src/index.d.ts.map +1 -1
  98. package/lib/types/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.d.ts +1 -1
  99. package/lib/types/src/modules/multichain/reporter/data/BlindSigningReporterDatasource.d.ts.map +1 -1
  100. package/lib/types/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.d.ts +1 -1
  101. package/lib/types/src/modules/multichain/reporter/data/dto/BlindSigningEventDto.d.ts.map +1 -1
  102. package/lib/types/src/modules/multichain/reporter/model/BlindSigningEvent.d.ts +1 -0
  103. package/lib/types/src/modules/multichain/reporter/model/BlindSigningEvent.d.ts.map +1 -1
  104. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.d.ts +14 -0
  105. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.d.ts.map +1 -0
  106. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.d.ts +2 -0
  107. package/lib/types/src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.d.ts.map +1 -0
  108. package/lib/types/src/modules/multichain/sign-reporter/data/SignReporterDatasource.d.ts +6 -0
  109. package/lib/types/src/modules/multichain/sign-reporter/data/SignReporterDatasource.d.ts.map +1 -0
  110. package/lib/types/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.d.ts +48 -0
  111. package/lib/types/src/modules/multichain/sign-reporter/data/dto/SigningEventDto.d.ts.map +1 -0
  112. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.d.ts +3 -0
  113. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterModuleFactory.d.ts.map +1 -0
  114. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterTypes.d.ts +5 -0
  115. package/lib/types/src/modules/multichain/sign-reporter/di/signReporterTypes.d.ts.map +1 -0
  116. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.d.ts +10 -0
  117. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.d.ts.map +1 -0
  118. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.d.ts +2 -0
  119. package/lib/types/src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.d.ts.map +1 -0
  120. package/lib/types/src/modules/multichain/sign-reporter/domain/SignReporter.d.ts +6 -0
  121. package/lib/types/src/modules/multichain/sign-reporter/domain/SignReporter.d.ts.map +1 -0
  122. package/lib/types/src/modules/multichain/sign-reporter/model/SignReportParams.d.ts +45 -0
  123. package/lib/types/src/modules/multichain/sign-reporter/model/SignReportParams.d.ts.map +1 -0
  124. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts.map +1 -1
  125. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +1 -0
  126. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
  127. package/lib/types/src/shared/model/BlindSigningModelId.d.ts.map +1 -0
  128. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  129. package/package.json +5 -5
  130. package/lib/types/src/modules/multichain/reporter/model/BlindSigningModelId.d.ts.map +0 -1
  131. /package/lib/cjs/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js +0 -0
  132. /package/lib/esm/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.js +0 -0
  133. /package/lib/types/src/{modules/multichain/reporter → shared}/model/BlindSigningModelId.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.ts"],
4
+ "sourcesContent": ["import {\n type DmkNetworkClient,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport {\n type EthSignReportParams,\n type SolSignReportParams,\n} from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nimport { HttpSignReporterDatasource } from \"./HttpSignReporterDatasource\";\n\ndescribe(\"HttpSignReporterDatasource\", () => {\n const config = {\n reporter: { url: \"https://reporter.test\" },\n appSource: \"third-party\",\n originToken: \"originToken\",\n } as ContextModuleServiceConfig;\n\n const envFields = {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n };\n\n const solParams: SolSignReportParams = {\n ...envFields,\n chain: \"SOL\",\n signatureId: \"abc123-1738850400000\",\n signingMethod: \"sol_signTransaction\",\n isBlindSign: true,\n targetAddress: \"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\",\n blindSignReason: BlindSignReason.UNRECOGNIZED_PROGRAM,\n programIds: [\n \"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\",\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\n ],\n unrecognizedPrograms: [\"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4\"],\n };\n\n const ethParams: EthSignReportParams = {\n ...envFields,\n chain: \"ETH\",\n signatureId: \"def456-1738850400000\",\n signingMethod: \"eth_signTransaction\",\n isBlindSign: false,\n chainId: 1,\n targetAddress: \"0xdAC17F958D2ee523a2206206994597C13D831ec7\",\n blindSignReason: null,\n };\n\n let httpMock: { post: ReturnType<typeof vi.fn> };\n let dataSource: HttpSignReporterDatasource;\n\n beforeEach(() => {\n vi.resetAllMocks();\n httpMock = { post: vi.fn() };\n dataSource = new HttpSignReporterDatasource(\n config,\n () =>\n ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n }) as unknown as LoggerPublisherService,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n describe(\"report\", () => {\n it(\"should return Right(undefined) on success\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n const result = await dataSource.report(solParams);\n\n // THEN\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should return Left(Error) when the request fails\", async () => {\n // GIVEN\n httpMock.post.mockRejectedValueOnce(new Error(\"network error\"));\n\n // WHEN\n const result = await dataSource.report(solParams);\n\n // THEN\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSignReporterDatasource: Failed to report signing event\",\n ),\n ),\n );\n });\n\n it(\"should call the v2 endpoint with the correct URL\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(solParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n `${config.reporter.url}/v2/blind-signing-events`,\n expect.anything(),\n { responseType: \"void\" },\n );\n });\n\n it(\"should build correct three-layer body for SOL params\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(solParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n expect.any(String),\n {\n chain: \"SOL\",\n isBlindSign: true,\n sessionId: null,\n chainData: {\n chain: \"SOL\",\n signatureId: solParams.signatureId,\n signingMethod: \"sol_signTransaction\",\n targetAddress: solParams.targetAddress,\n blindSignReason: BlindSignReason.UNRECOGNIZED_PROGRAM,\n programIds: solParams.programIds,\n unrecognizedPrograms: solParams.unrecognizedPrograms,\n },\n envData: {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n source: \"third-party\",\n },\n },\n { responseType: \"void\" },\n );\n });\n\n it(\"should build correct three-layer body for ETH params\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n\n // WHEN\n await dataSource.report(ethParams);\n\n // THEN\n expect(httpMock.post).toHaveBeenCalledWith(\n expect.any(String),\n {\n chain: \"ETH\",\n isBlindSign: false,\n sessionId: null,\n chainData: {\n chain: \"ETH\",\n signatureId: ethParams.signatureId,\n signingMethod: \"eth_signTransaction\",\n targetAddress: ethParams.targetAddress,\n chainId: 1,\n blindSignReason: null,\n },\n envData: {\n modelId: BlindSigningModelId.NANO_X,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n source: \"third-party\",\n },\n },\n { responseType: \"void\" },\n );\n });\n\n it(\"should include optional env fields when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithOptional: SolSignReportParams = {\n ...solParams,\n platform: \"desktop\",\n appVersion: \"2.80.0\",\n platformOS: \"macOS\",\n platformVersion: \"14.5\",\n liveAppContext: \"swap\",\n sessionId: \"session-abc\",\n };\n\n // WHEN\n await dataSource.report(paramsWithOptional);\n\n // THEN\n const body = httpMock.post.mock.calls[0]![1];\n expect(body.envData.platform).toBe(\"desktop\");\n expect(body.envData.appVersion).toBe(\"2.80.0\");\n expect(body.envData.platformOS).toBe(\"macOS\");\n expect(body.envData.platformVersion).toBe(\"14.5\");\n expect(body.envData.liveAppContext).toBe(\"swap\");\n expect(body.sessionId).toBe(\"session-abc\");\n });\n\n it(\"should include transactionSignature in SOL chainData when provided\", async () => {\n // GIVEN\n httpMock.post.mockResolvedValueOnce(undefined);\n const paramsWithSig: SolSignReportParams = {\n ...solParams,\n transactionSignature: \"5yJ9...\",\n };\n\n // WHEN\n await dataSource.report(paramsWithSig);\n\n // THEN\n const body = httpMock.post.mock.calls[0]![1];\n expect(body.chainData.transactionSignature).toBe(\"5yJ9...\");\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["Left", "Right", "BlindSignReason", "BlindSigningModelId", "HttpSignReporterDatasource", "config", "envFields", "solParams", "ethParams", "httpMock", "dataSource", "result", "paramsWithOptional", "body", "paramsWithSig"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SignReporterDatasource.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SigningEventDto.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{ContainerModule as e}from"inversify";import{HttpSignReporterDatasource as t}from"../../../../modules/multichain/sign-reporter/data/HttpSignReporterDatasource";import{signReporterTypes as o}from"../../../../modules/multichain/sign-reporter/di/signReporterTypes";import{DefaultSignReporter as p}from"../../../../modules/multichain/sign-reporter/domain/DefaultSignReporter";const g=()=>new e(({bind:r})=>{r(o.SignReporterDatasource).to(t),r(o.SignReporter).to(p)});export{g as signReporterModuleFactory};
2
+ //# sourceMappingURL=signReporterModuleFactory.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/di/signReporterModuleFactory.ts"],
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpSignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/HttpSignReporterDatasource\";\nimport { signReporterTypes } from \"@/modules/multichain/sign-reporter/di/signReporterTypes\";\nimport { DefaultSignReporter } from \"@/modules/multichain/sign-reporter/domain/DefaultSignReporter\";\n\nexport const signReporterModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(signReporterTypes.SignReporterDatasource).to(\n HttpSignReporterDatasource,\n );\n bind(signReporterTypes.SignReporter).to(DefaultSignReporter);\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,8BAAAC,MAAkC,qEAC3C,OAAS,qBAAAC,MAAyB,0DAClC,OAAS,uBAAAC,MAA2B,gEAE7B,MAAMC,EAA4B,IACvC,IAAIJ,EAAgB,CAAC,CAAE,KAAAK,CAAK,IAAM,CAChCA,EAAKH,EAAkB,sBAAsB,EAAE,GAC7CD,CACF,EACAI,EAAKH,EAAkB,YAAY,EAAE,GAAGC,CAAmB,CAC7D,CAAC",
6
+ "names": ["ContainerModule", "HttpSignReporterDatasource", "signReporterTypes", "DefaultSignReporter", "signReporterModuleFactory", "bind"]
7
+ }
@@ -0,0 +1,2 @@
1
+ const r={SignReporterDatasource:Symbol.for("SignReporterDatasource"),SignReporter:Symbol.for("SignReporter")};export{r as signReporterTypes};
2
+ //# sourceMappingURL=signReporterTypes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/di/signReporterTypes.ts"],
4
+ "sourcesContent": ["export const signReporterTypes = {\n SignReporterDatasource: Symbol.for(\"SignReporterDatasource\"),\n SignReporter: Symbol.for(\"SignReporter\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAoB,CAC/B,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,aAAc,OAAO,IAAI,cAAc,CACzC",
6
+ "names": ["signReporterTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ var c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var s=(e,r,p,t)=>{for(var o=t>1?void 0:t?y(r,p):r,m=e.length-1,a;m>=0;m--)(a=e[m])&&(o=(t?a(r,p,o):a(o))||o);return t&&o&&c(r,p,o),o},n=(e,r)=>(p,t)=>r(p,t,e);import{inject as S,injectable as g}from"inversify";import{signReporterTypes as R}from"../../../../modules/multichain/sign-reporter/di/signReporterTypes";let i=class{constructor(r){this.dataSource=r}async report(r){return this.dataSource.report(r)}};i=s([g(),n(0,S(R.SignReporterDatasource))],i);export{i as DefaultSignReporter};
2
+ //# sourceMappingURL=DefaultSignReporter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/domain/DefaultSignReporter.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { type Either } from \"purify-ts\";\n\nimport { type SignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/SignReporterDatasource\";\nimport { signReporterTypes } from \"@/modules/multichain/sign-reporter/di/signReporterTypes\";\nimport { type SignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\n\nimport { type SignReporter } from \"./SignReporter\";\n\n@injectable()\nexport class DefaultSignReporter implements SignReporter {\n constructor(\n @inject(signReporterTypes.SignReporterDatasource)\n private readonly dataSource: SignReporterDatasource,\n ) {}\n\n async report(params: SignReportParams): Promise<Either<Error, void>> {\n return this.dataSource.report(params);\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAInC,OAAS,qBAAAC,MAAyB,0DAM3B,IAAMC,EAAN,KAAkD,CACvD,YAEmBC,EACjB,CADiB,gBAAAA,CAChB,CAEH,MAAM,OAAOC,EAAwD,CACnE,OAAO,KAAK,WAAW,OAAOA,CAAM,CACtC,CACF,EATaF,EAANG,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAkB,sBAAsB,IAFvCP",
6
+ "names": ["inject", "injectable", "signReporterTypes", "DefaultSignReporter", "dataSource", "params", "__decorateClass", "injectable", "__decorateParam", "inject", "signReporterTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{Left as n,Right as a}from"purify-ts";import{BlindSignReason as d}from"../../../../modules/multichain/reporter/model/BlindSigningEvent";import{BlindSigningModelId as p}from"../../../../shared/model/BlindSigningModelId";import{DefaultSignReporter as i}from"./DefaultSignReporter";describe("DefaultSignReporter",()=>{const r={chain:"SOL",signatureId:"abc123-1738850400000",signingMethod:"sol_signTransaction",isBlindSign:!0,targetAddress:null,blindSignReason:d.NO_CLEAR_SIGNING_CONTEXT,programIds:["11111111111111111111111111111111"],unrecognizedPrograms:[],modelId:p.FLEX,signerAppVersion:"1.4.0",deviceVersion:"2.2.3"};it("should delegate to the datasource and return Right on success",async()=>{const e={report:vi.fn().mockResolvedValueOnce(a(void 0))},o=await new i(e).report(r);expect(e.report).toHaveBeenCalledWith(r),expect(o).toEqual(a(void 0))}),it("should delegate to the datasource and return Left on failure",async()=>{const e=new Error("report failed"),t={report:vi.fn().mockResolvedValueOnce(n(e))},s=await new i(t).report(r);expect(t.report).toHaveBeenCalledWith(r),expect(s).toEqual(n(e))})});
2
+ //# sourceMappingURL=DefaultSignReporter.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/domain/DefaultSignReporter.test.ts"],
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type SignReporterDatasource } from \"@/modules/multichain/sign-reporter/data/SignReporterDatasource\";\nimport { type SolSignReportParams } from \"@/modules/multichain/sign-reporter/model/SignReportParams\";\nimport { BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nimport { DefaultSignReporter } from \"./DefaultSignReporter\";\n\ndescribe(\"DefaultSignReporter\", () => {\n const params: SolSignReportParams = {\n chain: \"SOL\",\n signatureId: \"abc123-1738850400000\",\n signingMethod: \"sol_signTransaction\",\n isBlindSign: true,\n targetAddress: null,\n blindSignReason: BlindSignReason.NO_CLEAR_SIGNING_CONTEXT,\n programIds: [\"11111111111111111111111111111111\"],\n unrecognizedPrograms: [],\n modelId: BlindSigningModelId.FLEX,\n signerAppVersion: \"1.4.0\",\n deviceVersion: \"2.2.3\",\n };\n\n it(\"should delegate to the datasource and return Right on success\", async () => {\n // GIVEN\n const dataSource: SignReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Right(undefined)),\n };\n const reporter = new DefaultSignReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Right(undefined));\n });\n\n it(\"should delegate to the datasource and return Left on failure\", async () => {\n // GIVEN\n const error = new Error(\"report failed\");\n const dataSource: SignReporterDatasource = {\n report: vi.fn().mockResolvedValueOnce(Left(error)),\n };\n const reporter = new DefaultSignReporter(dataSource);\n\n // WHEN\n const result = await reporter.report(params);\n\n // THEN\n expect(dataSource.report).toHaveBeenCalledWith(params);\n expect(result).toEqual(Left(error));\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAE5B,OAAS,mBAAAC,MAAuB,wDAGhC,OAAS,uBAAAC,MAA2B,qCAEpC,OAAS,uBAAAC,MAA2B,wBAEpC,SAAS,sBAAuB,IAAM,CACpC,MAAMC,EAA8B,CAClC,MAAO,MACP,YAAa,uBACb,cAAe,sBACf,YAAa,GACb,cAAe,KACf,gBAAiBH,EAAgB,yBACjC,WAAY,CAAC,kCAAkC,EAC/C,qBAAsB,CAAC,EACvB,QAASC,EAAoB,KAC7B,iBAAkB,QAClB,cAAe,OACjB,EAEA,GAAG,gEAAiE,SAAY,CAE9E,MAAMG,EAAqC,CACzC,OAAQ,GAAG,GAAG,EAAE,sBAAsBL,EAAM,MAAS,CAAC,CACxD,EAIMM,EAAS,MAHE,IAAIH,EAAoBE,CAAU,EAGrB,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,QAAQN,EAAM,MAAS,CAAC,CACzC,CAAC,EAED,GAAG,+DAAgE,SAAY,CAE7E,MAAMO,EAAQ,IAAI,MAAM,eAAe,EACjCF,EAAqC,CACzC,OAAQ,GAAG,GAAG,EAAE,sBAAsBN,EAAKQ,CAAK,CAAC,CACnD,EAIMD,EAAS,MAHE,IAAIH,EAAoBE,CAAU,EAGrB,OAAOD,CAAM,EAG3C,OAAOC,EAAW,MAAM,EAAE,qBAAqBD,CAAM,EACrD,OAAOE,CAAM,EAAE,QAAQP,EAAKQ,CAAK,CAAC,CACpC,CAAC,CACH,CAAC",
6
+ "names": ["Left", "Right", "BlindSignReason", "BlindSigningModelId", "DefaultSignReporter", "params", "dataSource", "result", "error"]
7
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=SignReporter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ const n=Object.freeze({ETH_SIGN_TRANSACTION:"eth_signTransaction",ETH_SIGN_TYPED_DATA:"eth_signTypedData",SOL_SIGN_TRANSACTION:"sol_signTransaction"});export{n as SigningMethod};
2
+ //# sourceMappingURL=SignReportParams.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../src/modules/multichain/sign-reporter/model/SignReportParams.ts"],
4
+ "sourcesContent": ["import { type BlindSignReason } from \"@/modules/multichain/reporter/model/BlindSigningEvent\";\nimport { type BlindSigningModelId } from \"@/shared/model/BlindSigningModelId\";\n\nexport const SigningMethod = Object.freeze({\n ETH_SIGN_TRANSACTION: \"eth_signTransaction\",\n ETH_SIGN_TYPED_DATA: \"eth_signTypedData\",\n SOL_SIGN_TRANSACTION: \"sol_signTransaction\",\n} as const);\nexport type SigningMethod = (typeof SigningMethod)[keyof typeof SigningMethod];\n\ntype SignReportEnvData = {\n modelId: BlindSigningModelId;\n signerAppVersion: string;\n deviceVersion: string | null;\n platform?: \"desktop\" | \"mobile\";\n appVersion?: string;\n platformOS?: string;\n platformVersion?: string;\n liveAppContext?: string | null;\n sessionId?: string | null;\n};\n\nexport type EthSignReportParams = SignReportEnvData & {\n chain: \"ETH\";\n signatureId: string;\n signingMethod:\n | typeof SigningMethod.ETH_SIGN_TRANSACTION\n | typeof SigningMethod.ETH_SIGN_TYPED_DATA;\n isBlindSign: boolean;\n chainId: number | null;\n targetAddress: string | null;\n selectorId?: string | null;\n blindSignReason: BlindSignReason | null;\n clearSigningType?: \"basic\" | \"eip7730\" | null;\n partialContextErrors?: number | null;\n};\n\nexport type SolSignReportParams = SignReportEnvData & {\n chain: \"SOL\";\n signatureId: string;\n signingMethod: typeof SigningMethod.SOL_SIGN_TRANSACTION;\n isBlindSign: boolean;\n targetAddress: string | null;\n blindSignReason: BlindSignReason | null;\n programIds: string[];\n unrecognizedPrograms: string[];\n transactionSignature?: string | null;\n};\n\nexport type SignReportParams = EthSignReportParams | SolSignReportParams;\n"],
5
+ "mappings": "AAGO,MAAMA,EAAgB,OAAO,OAAO,CACzC,qBAAsB,sBACtB,oBAAqB,oBACrB,qBAAsB,qBACxB,CAAU",
6
+ "names": ["SigningMethod"]
7
+ }
@@ -1,2 +1,2 @@
1
- import{Left as u,Right as l}from"purify-ts";import{beforeEach as g,describe as f,expect as e,it as s,vi as p}from"vitest";import{SolanaTransactionScanChainId as i}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{HttpInstructionInfoDataSource as h}from"./HttpInstructionInfoDataSource";f("HttpInstructionInfoDataSource",()=>{let r,o;const t="11111111111111111111111111111111",a="solana-mainnet",m={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}},c=[{id:t,chain_id:i.MAINNET,instructions:[{discriminator_hex:"00000000",instruction_name:"createAccount",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},display_fields:[],value_flow_ports:[],hide_rules:[],account_resets:[]}]}];g(()=>{p.clearAllMocks(),o={get:p.fn()},r=new h(m,o)}),s("calls CAL /solana_programs with id, chain_id and output params",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:t,network:a}),e(o.get).toHaveBeenCalledTimes(1),e(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",{params:{id:t,chain_id:i.MAINNET,output:"id,chain_id,instructions",ref:"branch:main"}})}),s("maps devnet/testnet networks to their numeric chain ids",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:t,network:"solana-devnet"}),e(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",e.objectContaining({params:e.objectContaining({chain_id:901})}))}),s("returns Right with each descriptor transformed into the core payload on success",async()=>{o.get.mockResolvedValue(c);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(l({programId:t,descriptors:{"00000000":l({programId:t,discriminator:"00000000",instructionInfo:{data:"00010101",signature:"prodsig"},substructures:[],enumVariants:[],idlDescriptor:{typePool:[],rootType:0},mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[]})},enumVariants:[]}))}),s("keys a descriptor without `discriminator_hex` under the empty string",async()=>{o.get.mockResolvedValue([{id:t,chain_id:i.MAINNET,instructions:[{instruction_name:"addMemo",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}}}]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n.isRight()).toBe(!0);const{descriptors:d}=n.unsafeCoerce();e(Object.keys(d)).toEqual([""]),e(d[""].unsafeCoerce()).toEqual(e.objectContaining({programId:t,discriminator:"",instructionInfo:{data:"00010101",signature:"prodsig"}}))}),s("returns Left when the response array is empty",async()=>{o.get.mockResolvedValue([]);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error(`[ContextModule] HttpInstructionInfoDataSource: empty response for program ${t}`)))}),s("returns Left when no program object matches the requested programId",async()=>{o.get.mockResolvedValue([{id:"OtherProgram",chain_id:i.MAINNET,instructions:[]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error(`[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${t}`)))}),s("returns Left (not a throw) when an instruction descriptor is malformed",async()=>{o.get.mockResolvedValue([{id:t,chain_id:i.MAINNET,instructions:[{discriminator_hex:"00000000"}]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n.isLeft()).toBe(!0),e(n.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpInstructionInfoDataSource: malformed descriptors for program ${t}:`))}),s("returns Left when the HTTP client throws",async()=>{o.get.mockRejectedValue(new Error("network"));const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error("[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network")))})});
1
+ import{Left as u,Right as l}from"purify-ts";import{beforeEach as g,describe as f,expect as e,it as s,vi as p}from"vitest";import{SolanaTransactionScanChainId as i}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{HttpInstructionInfoDataSource as h}from"./HttpInstructionInfoDataSource";f("HttpInstructionInfoDataSource",()=>{let r,o;const t="11111111111111111111111111111111",a="solana-mainnet",m={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}},c=[{id:t,chain_id:i.MAINNET,instructions:[{discriminator_hex:"00000000",instruction_name:"createAccount",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}},display_fields:[],value_flow_ports:[],hide_rules:[],account_resets:[]}]}];g(()=>{p.clearAllMocks(),o={get:p.fn()},r=new h(m,o)}),s("calls CAL /solana_programs with id, chain_id and output params",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:t,network:a}),e(o.get).toHaveBeenCalledTimes(1),e(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",{params:{id:t,chain_id:i.MAINNET,output:"id,chain_id,instructions",ref:"branch:main"}})}),s("maps devnet/testnet networks to their numeric chain ids",async()=>{o.get.mockResolvedValue(c),await r.getInstructionInfo({programId:t,network:"solana-devnet"}),e(o.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/solana_programs",e.objectContaining({params:e.objectContaining({chain_id:901})}))}),s("returns Right with each descriptor transformed into the core payload on success",async()=>{o.get.mockResolvedValue(c);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(l({programId:t,descriptors:{"00000000":l({programId:t,discriminator:"00000000",instructionName:"createAccount",instructionInfo:{data:"00010101",signature:"prodsig"},substructures:[],enumVariants:[],idlDescriptor:{typePool:[],rootType:0},mintAssociations:[],valueFlowPorts:[],accountResets:[],displayFields:[]})},enumVariants:[]}))}),s("keys a descriptor without `discriminator_hex` under the empty string",async()=>{o.get.mockResolvedValue([{id:t,chain_id:i.MAINNET,instructions:[{instruction_name:"addMemo",descriptor:{data:"00010101",signatures:{prod:"prodsig",test:"testsig"}}}]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n.isRight()).toBe(!0);const{descriptors:d}=n.unsafeCoerce();e(Object.keys(d)).toEqual([""]),e(d[""].unsafeCoerce()).toEqual(e.objectContaining({programId:t,discriminator:"",instructionInfo:{data:"00010101",signature:"prodsig"}}))}),s("returns Left when the response array is empty",async()=>{o.get.mockResolvedValue([]);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error(`[ContextModule] HttpInstructionInfoDataSource: empty response for program ${t}`)))}),s("returns Left when no program object matches the requested programId",async()=>{o.get.mockResolvedValue([{id:"OtherProgram",chain_id:i.MAINNET,instructions:[]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error(`[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${t}`)))}),s("returns Left (not a throw) when an instruction descriptor is malformed",async()=>{o.get.mockResolvedValue([{id:t,chain_id:i.MAINNET,instructions:[{discriminator_hex:"00000000"}]}]);const n=await r.getInstructionInfo({programId:t,network:a});e(n.isLeft()).toBe(!0),e(n.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpInstructionInfoDataSource: malformed descriptors for program ${t}:`))}),s("returns Left when the HTTP client throws",async()=>{o.get.mockRejectedValue(new Error("network"));const n=await r.getInstructionInfo({programId:t,network:a});e(n).toEqual(u(new Error("[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network")))})});
2
2
  //# sourceMappingURL=HttpInstructionInfoDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.ts"],
4
- "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpInstructionInfoDataSource } from \"./HttpInstructionInfoDataSource\";\nimport { type InstructionInfoDataSource } from \"./InstructionInfoDataSource\";\nimport { type CalInstructionInfoResponseDto } from \"./InstructionInfoDto\";\n\ndescribe(\"HttpInstructionInfoDataSource\", () => {\n let datasource: InstructionInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const programId = \"11111111111111111111111111111111\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const successResponse: CalInstructionInfoResponseDto = [\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n instruction_name: \"createAccount\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n display_fields: [],\n value_flow_ports: [],\n hide_rules: [],\n account_resets: [],\n },\n ],\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpInstructionInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls CAL /solana_programs with id, chain_id and output params\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({ programId, network });\n\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n {\n params: {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n output: \"id,chain_id,instructions\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"maps devnet/testnet networks to their numeric chain ids\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({\n programId,\n network: \"solana-devnet\",\n });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n expect.objectContaining({\n params: expect.objectContaining({ chain_id: 901 }),\n }),\n );\n });\n\n it(\"returns Right with each descriptor transformed into the core payload on success\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Right({\n programId,\n descriptors: {\n \"00000000\": Right({\n programId,\n discriminator: \"00000000\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n substructures: [],\n enumVariants: [],\n idlDescriptor: { typePool: [], rootType: 0 },\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n }),\n },\n enumVariants: [],\n }),\n );\n });\n\n it(\"keys a descriptor without `discriminator_hex` under the empty string\", async () => {\n // Single-instruction programs (e.g. SPL Memo `addMemo`) genuinely have no\n // discriminator, so CAL omits the field.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n instruction_name: \"addMemo\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isRight()).toBe(true);\n const { descriptors } = result.unsafeCoerce();\n expect(Object.keys(descriptors)).toEqual([\"\"]);\n expect(descriptors[\"\"]!.unsafeCoerce()).toEqual(\n expect.objectContaining({\n programId,\n discriminator: \"\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n }),\n );\n });\n\n it(\"returns Left when the response array is empty\", async () => {\n httpMock.get.mockResolvedValue([]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: empty response for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left when no program object matches the requested programId\", async () => {\n httpMock.get.mockResolvedValue([\n {\n id: \"OtherProgram\",\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left (not a throw) when an instruction descriptor is malformed\", async () => {\n // `descriptor` missing on the instruction \u2014 would crash the loader if the\n // datasource handed it through unvalidated.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [{ discriminator_hex: \"00000000\" }],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpInstructionInfoDataSource: malformed descriptors for program ${programId}:`,\n ),\n );\n });\n\n it(\"returns Left when the HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpInstructionInfoDataSource } from \"./HttpInstructionInfoDataSource\";\nimport { type InstructionInfoDataSource } from \"./InstructionInfoDataSource\";\nimport { type CalInstructionInfoResponseDto } from \"./InstructionInfoDto\";\n\ndescribe(\"HttpInstructionInfoDataSource\", () => {\n let datasource: InstructionInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const programId = \"11111111111111111111111111111111\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n const successResponse: CalInstructionInfoResponseDto = [\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n discriminator_hex: \"00000000\",\n instruction_name: \"createAccount\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n display_fields: [],\n value_flow_ports: [],\n hide_rules: [],\n account_resets: [],\n },\n ],\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpInstructionInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls CAL /solana_programs with id, chain_id and output params\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({ programId, network });\n\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n {\n params: {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n output: \"id,chain_id,instructions\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"maps devnet/testnet networks to their numeric chain ids\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n await datasource.getInstructionInfo({\n programId,\n network: \"solana-devnet\",\n });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/solana_programs\",\n expect.objectContaining({\n params: expect.objectContaining({ chain_id: 901 }),\n }),\n );\n });\n\n it(\"returns Right with each descriptor transformed into the core payload on success\", async () => {\n httpMock.get.mockResolvedValue(successResponse);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Right({\n programId,\n descriptors: {\n \"00000000\": Right({\n programId,\n discriminator: \"00000000\",\n instructionName: \"createAccount\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n substructures: [],\n enumVariants: [],\n idlDescriptor: { typePool: [], rootType: 0 },\n mintAssociations: [],\n valueFlowPorts: [],\n accountResets: [],\n displayFields: [],\n }),\n },\n enumVariants: [],\n }),\n );\n });\n\n it(\"keys a descriptor without `discriminator_hex` under the empty string\", async () => {\n // Single-instruction programs (e.g. SPL Memo `addMemo`) genuinely have no\n // discriminator, so CAL omits the field.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [\n {\n instruction_name: \"addMemo\",\n descriptor: {\n data: \"00010101\",\n signatures: { prod: \"prodsig\", test: \"testsig\" },\n },\n },\n ],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isRight()).toBe(true);\n const { descriptors } = result.unsafeCoerce();\n expect(Object.keys(descriptors)).toEqual([\"\"]);\n expect(descriptors[\"\"]!.unsafeCoerce()).toEqual(\n expect.objectContaining({\n programId,\n discriminator: \"\",\n instructionInfo: { data: \"00010101\", signature: \"prodsig\" },\n }),\n );\n });\n\n it(\"returns Left when the response array is empty\", async () => {\n httpMock.get.mockResolvedValue([]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: empty response for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left when no program object matches the requested programId\", async () => {\n httpMock.get.mockResolvedValue([\n {\n id: \"OtherProgram\",\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpInstructionInfoDataSource: no descriptors for program ${programId}`,\n ),\n ),\n );\n });\n\n it(\"returns Left (not a throw) when an instruction descriptor is malformed\", async () => {\n // `descriptor` missing on the instruction \u2014 would crash the loader if the\n // datasource handed it through unvalidated.\n httpMock.get.mockResolvedValue([\n {\n id: programId,\n chain_id: SolanaTransactionScanChainId.MAINNET,\n instructions: [{ discriminator_hex: \"00000000\" }],\n },\n ]);\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpInstructionInfoDataSource: malformed descriptors for program ${programId}:`,\n ),\n );\n });\n\n it(\"returns Left when the HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"network\"));\n\n const result = await datasource.getInstructionInfo({ programId, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpInstructionInfoDataSource: Failed to fetch instruction descriptors: network\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "SolanaTransactionScanChainId", "HttpInstructionInfoDataSource", "datasource", "httpMock", "programId", "network", "config", "successResponse", "result", "descriptors"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as p,Right as d}from"purify-ts";import{SolanaInstructionSubstructureKind as e}from"../../../../modules/solana/model/SolanaPayloads";import{u16Codec as _}from"../../../../shared/utils/uIntCodec";function u(n,t){return n[t]}function f(n=[]){return n.map(t=>({account_indices:t.account_indices,optional_account_strategy:t.optional_account_strategy,token_value:t.token_value}))}function y(n=[]){return n.flatMap(t=>t.account_index===void 0?[]:[{account_index:t.account_index,require_pre_balance_zero:t.require_pre_balance_zero}])}function m(n=[]){return n.map(t=>({name:t.name,param:t.param??{type:""}}))}function C(n){return[...(n.display_fields??[]).map(t=>({kind:e.DISPLAY_FIELD,data:t.descriptor})),...(n.value_flow_ports??[]).map(t=>({kind:e.VALUE_FLOW_PORT,data:t.descriptor})),...(n.hide_rules??[]).map(t=>({kind:e.HIDE_RULE,data:t.descriptor})),...(n.account_resets??[]).map(t=>({kind:e.ACCOUNT_RESET,data:t.descriptor}))]}function c(n,t){const a=[];for(const[o,r]of Object.entries(n.enum_variants??{}))for(const[l,i]of Object.entries(r)){const s=Number(l);_.decode(s).isLeft()||a.push({enumId:o,variantIndex:s,descriptor:{data:i.descriptor.data,signature:u(i.descriptor.signatures,t)??""}})}return a}function g(n,t){return Object.values(n).flatMap(a=>c(a,t))}function E(n,t,a,o){const r=u(a.descriptor.signatures,o);return r?d({programId:n,discriminator:t,instructionInfo:{data:a.descriptor.data,signature:r},substructures:C(a),enumVariants:c(a,o),idlDescriptor:{typePool:a.idl_descriptor?.type_pool??[],rootType:a.idl_descriptor?.root_type??0},mintAssociations:a.mint_association?[a.mint_association]:[],valueFlowPorts:f(a.value_flow_ports),accountResets:y(a.account_resets),displayFields:m(a.display_fields)}):p(new Error(`[ContextModule] InstructionInfoDataSource: missing '${o}' signature for (${n}, ${t})`))}export{y as toAccountResets,m as toDisplayFields,E as toInstructionInfoPayload,g as toProgramEnumVariants,f as toValueFlowPorts};
1
+ import{Left as p,Right as d}from"purify-ts";import{SolanaInstructionSubstructureKind as e}from"../../../../modules/solana/model/SolanaPayloads";import{u16Codec as _}from"../../../../shared/utils/uIntCodec";function u(n,t){return n[t]}function f(n=[]){return n.map(t=>({account_indices:t.account_indices,optional_account_strategy:t.optional_account_strategy,token_value:t.token_value}))}function m(n=[]){return n.flatMap(t=>t.account_index===void 0?[]:[{account_index:t.account_index,require_pre_balance_zero:t.require_pre_balance_zero}])}function y(n=[]){return n.map(t=>({name:t.name,param:t.param??{type:""}}))}function C(n){return[...(n.display_fields??[]).map(t=>({kind:e.DISPLAY_FIELD,data:t.descriptor})),...(n.value_flow_ports??[]).map(t=>({kind:e.VALUE_FLOW_PORT,data:t.descriptor})),...(n.hide_rules??[]).map(t=>({kind:e.HIDE_RULE,data:t.descriptor})),...(n.account_resets??[]).map(t=>({kind:e.ACCOUNT_RESET,data:t.descriptor}))]}function c(n,t){const a=[];for(const[o,r]of Object.entries(n.enum_variants??{}))for(const[l,i]of Object.entries(r)){const s=Number(l);_.decode(s).isLeft()||a.push({enumId:o,variantIndex:s,descriptor:{data:i.descriptor.data,signature:u(i.descriptor.signatures,t)??""}})}return a}function g(n,t){return Object.values(n).flatMap(a=>c(a,t))}function E(n,t,a,o){const r=u(a.descriptor.signatures,o);return r?d({programId:n,discriminator:t,instructionName:a.instruction_name,instructionInfo:{data:a.descriptor.data,signature:r},substructures:C(a),enumVariants:c(a,o),idlDescriptor:{typePool:a.idl_descriptor?.type_pool??[],rootType:a.idl_descriptor?.root_type??0},mintAssociations:a.mint_association?[a.mint_association]:[],valueFlowPorts:f(a.value_flow_ports),accountResets:m(a.account_resets),displayFields:y(a.display_fields)}):p(new Error(`[ContextModule] InstructionInfoDataSource: missing '${o}' signature for (${n}, ${t})`))}export{m as toAccountResets,y as toDisplayFields,E as toInstructionInfoPayload,g as toProgramEnumVariants,f as toValueFlowPorts};
2
2
  //# sourceMappingURL=InstructionInfoMapper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/instruction-info/data/InstructionInfoMapper.ts"],
4
- "sourcesContent": ["// Maps the validated CAL instruction-descriptor DTOs into the core\n// `SolanaInstructionInfoPayload` model. Keeping this in the data layer means\n// the domain `InstructionInfoContextLoader` never has to know the CAL DTO\n// shapes \u2014 it consumes core models only.\n\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport {\n type SolanaCalAccountReset,\n type SolanaCalDisplayField,\n type SolanaCalValueFlowPort,\n type SolanaInstructionEnumVariant,\n type SolanaInstructionInfoPayload,\n type SolanaInstructionSubstructure,\n SolanaInstructionSubstructureKind,\n} from \"@/modules/solana/model/SolanaPayloads\";\nimport { u16Codec } from \"@/shared/utils/uIntCodec\";\n\nimport {\n type CalAccountResetDto,\n type CalDisplayFieldDto,\n type CalInstructionDescriptorDto,\n type CalSignatures,\n type CalValueFlowPortDto,\n} from \"./InstructionInfoDto\";\n\nexport type CalMode = \"prod\" | \"test\";\n\nfunction pickSignature(\n signatures: CalSignatures,\n mode: CalMode,\n): string | undefined {\n return signatures[mode];\n}\n\n// --- DTO \u2192 decoded-payload projections. Pick only the fields the host-side\n// requirement builder reads, dropping the signed-TLV `descriptor` carried by\n// the DTO. ---\n\nexport function toValueFlowPorts(\n dtos: CalValueFlowPortDto[] = [],\n): SolanaCalValueFlowPort[] {\n return dtos.map((port) => ({\n account_indices: port.account_indices,\n optional_account_strategy: port.optional_account_strategy,\n token_value: port.token_value,\n }));\n}\n\nexport function toAccountResets(\n dtos: CalAccountResetDto[] = [],\n): SolanaCalAccountReset[] {\n // Drop malformed resets (missing account_index) rather than defaulting to\n // slot 0, which would create an unintended TOKEN_ACCOUNT_STATE requirement.\n return dtos.flatMap((reset) =>\n reset.account_index === undefined\n ? []\n : [\n {\n account_index: reset.account_index,\n require_pre_balance_zero: reset.require_pre_balance_zero,\n },\n ],\n );\n}\n\nexport function toDisplayFields(\n dtos: CalDisplayFieldDto[] = [],\n): SolanaCalDisplayField[] {\n return dtos.map((field) => ({\n name: field.name,\n param: field.param ?? { type: \"\" },\n }));\n}\n\nfunction toSubstructures(\n dto: CalInstructionDescriptorDto,\n): SolanaInstructionSubstructure[] {\n return [\n ...(dto.display_fields ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.DISPLAY_FIELD,\n data: s.descriptor,\n })),\n ...(dto.value_flow_ports ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.VALUE_FLOW_PORT,\n data: s.descriptor,\n })),\n ...(dto.hide_rules ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.HIDE_RULE,\n data: s.descriptor,\n })),\n ...(dto.account_resets ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.ACCOUNT_RESET,\n data: s.descriptor,\n })),\n ];\n}\n\n/**\n * Flatten the CAL-bundled enum variants (keyed enumId \u2192 variantIndex). Keys\n * that don't validate as a u16 are skipped rather than leaking NaN/out-of-range\n * indices into the payload.\n */\nfunction toEnumVariants(\n dto: CalInstructionDescriptorDto,\n mode: CalMode,\n): SolanaInstructionEnumVariant[] {\n const enumVariants: SolanaInstructionEnumVariant[] = [];\n for (const [enumId, variants] of Object.entries(dto.enum_variants ?? {})) {\n for (const [variantIndex, variant] of Object.entries(variants)) {\n const index = Number(variantIndex);\n if (u16Codec.decode(index).isLeft()) {\n continue;\n }\n enumVariants.push({\n enumId,\n variantIndex: index,\n descriptor: {\n data: variant.descriptor.data,\n signature: pickSignature(variant.descriptor.signatures, mode) ?? \"\",\n },\n });\n }\n }\n return enumVariants;\n}\n\n/**\n * Flatten the enum variants of every descriptor in a program into a single\n * list. CAL nests `enum_variants` inside each instruction descriptor but\n * guarantees `(enumId, variantIndex)` is unique across a program, so the enum\n * loader resolves a selection against this program-level list \u2014 independently\n * of whether any individual instruction descriptor carried a usable signature.\n */\nexport function toProgramEnumVariants(\n descriptors: Record<string, CalInstructionDescriptorDto>,\n mode: CalMode,\n): SolanaInstructionEnumVariant[] {\n return Object.values(descriptors).flatMap((dto) => toEnumVariants(dto, mode));\n}\n\n/**\n * Transform one validated CAL descriptor DTO into the core\n * {@link SolanaInstructionInfoPayload}. Returns a `Left` when the descriptor is\n * unusable (no signature for the configured `mode`), so the caller can surface\n * a per-descriptor ERROR rather than emitting an empty signature.\n *\n * `programId` comes from the enclosing `solana_programs` envelope `id`;\n * `discriminator` from the instruction's `discriminator_hex`.\n */\nexport function toInstructionInfoPayload(\n programId: string,\n discriminator: string,\n dto: CalInstructionDescriptorDto,\n mode: CalMode,\n): Either<Error, SolanaInstructionInfoPayload> {\n const signature = pickSignature(dto.descriptor.signatures, mode);\n if (!signature) {\n return Left(\n new Error(\n `[ContextModule] InstructionInfoDataSource: missing '${mode}' signature for (${programId}, ${discriminator})`,\n ),\n );\n }\n\n return Right({\n programId,\n discriminator,\n instructionInfo: {\n data: dto.descriptor.data,\n signature,\n },\n substructures: toSubstructures(dto),\n enumVariants: toEnumVariants(dto, mode),\n idlDescriptor: {\n typePool: dto.idl_descriptor?.type_pool ?? [],\n rootType: dto.idl_descriptor?.root_type ?? 0,\n },\n mintAssociations: dto.mint_association ? [dto.mint_association] : [],\n valueFlowPorts: toValueFlowPorts(dto.value_flow_ports),\n accountResets: toAccountResets(dto.account_resets),\n displayFields: toDisplayFields(dto.display_fields),\n });\n}\n"],
5
- "mappings": "AAKA,OAAsB,QAAAA,EAAM,SAAAC,MAAa,YAEzC,OAOE,qCAAAC,MACK,wCACP,OAAS,YAAAC,MAAgB,2BAYzB,SAASC,EACPC,EACAC,EACoB,CACpB,OAAOD,EAAWC,CAAI,CACxB,CAMO,SAASC,EACdC,EAA8B,CAAC,EACL,CAC1B,OAAOA,EAAK,IAAKC,IAAU,CACzB,gBAAiBA,EAAK,gBACtB,0BAA2BA,EAAK,0BAChC,YAAaA,EAAK,WACpB,EAAE,CACJ,CAEO,SAASC,EACdF,EAA6B,CAAC,EACL,CAGzB,OAAOA,EAAK,QAASG,GACnBA,EAAM,gBAAkB,OACpB,CAAC,EACD,CACE,CACE,cAAeA,EAAM,cACrB,yBAA0BA,EAAM,wBAClC,CACF,CACN,CACF,CAEO,SAASC,EACdJ,EAA6B,CAAC,EACL,CACzB,OAAOA,EAAK,IAAKK,IAAW,CAC1B,KAAMA,EAAM,KACZ,MAAOA,EAAM,OAAS,CAAE,KAAM,EAAG,CACnC,EAAE,CACJ,CAEA,SAASC,EACPC,EACiC,CACjC,MAAO,CACL,IAAIA,EAAI,gBAAkB,CAAC,GAAG,IAAKC,IAAO,CACxC,KAAMd,EAAkC,cACxC,KAAMc,EAAE,UACV,EAAE,EACF,IAAID,EAAI,kBAAoB,CAAC,GAAG,IAAKC,IAAO,CAC1C,KAAMd,EAAkC,gBACxC,KAAMc,EAAE,UACV,EAAE,EACF,IAAID,EAAI,YAAc,CAAC,GAAG,IAAKC,IAAO,CACpC,KAAMd,EAAkC,UACxC,KAAMc,EAAE,UACV,EAAE,EACF,IAAID,EAAI,gBAAkB,CAAC,GAAG,IAAKC,IAAO,CACxC,KAAMd,EAAkC,cACxC,KAAMc,EAAE,UACV,EAAE,CACJ,CACF,CAOA,SAASC,EACPF,EACAT,EACgC,CAChC,MAAMY,EAA+C,CAAC,EACtD,SAAW,CAACC,EAAQC,CAAQ,IAAK,OAAO,QAAQL,EAAI,eAAiB,CAAC,CAAC,EACrE,SAAW,CAACM,EAAcC,CAAO,IAAK,OAAO,QAAQF,CAAQ,EAAG,CAC9D,MAAMG,EAAQ,OAAOF,CAAY,EAC7BlB,EAAS,OAAOoB,CAAK,EAAE,OAAO,GAGlCL,EAAa,KAAK,CAChB,OAAAC,EACA,aAAcI,EACd,WAAY,CACV,KAAMD,EAAQ,WAAW,KACzB,UAAWlB,EAAckB,EAAQ,WAAW,WAAYhB,CAAI,GAAK,EACnE,CACF,CAAC,CACH,CAEF,OAAOY,CACT,CASO,SAASM,EACdC,EACAnB,EACgC,CAChC,OAAO,OAAO,OAAOmB,CAAW,EAAE,QAASV,GAAQE,EAAeF,EAAKT,CAAI,CAAC,CAC9E,CAWO,SAASoB,EACdC,EACAC,EACAb,EACAT,EAC6C,CAC7C,MAAMuB,EAAYzB,EAAcW,EAAI,WAAW,WAAYT,CAAI,EAC/D,OAAKuB,EAQE5B,EAAM,CACX,UAAA0B,EACA,cAAAC,EACA,gBAAiB,CACf,KAAMb,EAAI,WAAW,KACrB,UAAAc,CACF,EACA,cAAef,EAAgBC,CAAG,EAClC,aAAcE,EAAeF,EAAKT,CAAI,EACtC,cAAe,CACb,SAAUS,EAAI,gBAAgB,WAAa,CAAC,EAC5C,SAAUA,EAAI,gBAAgB,WAAa,CAC7C,EACA,iBAAkBA,EAAI,iBAAmB,CAACA,EAAI,gBAAgB,EAAI,CAAC,EACnE,eAAgBR,EAAiBQ,EAAI,gBAAgB,EACrD,cAAeL,EAAgBK,EAAI,cAAc,EACjD,cAAeH,EAAgBG,EAAI,cAAc,CACnD,CAAC,EAxBQf,EACL,IAAI,MACF,uDAAuDM,CAAI,oBAAoBqB,CAAS,KAAKC,CAAa,GAC5G,CACF,CAqBJ",
4
+ "sourcesContent": ["// Maps the validated CAL instruction-descriptor DTOs into the core\n// `SolanaInstructionInfoPayload` model. Keeping this in the data layer means\n// the domain `InstructionInfoContextLoader` never has to know the CAL DTO\n// shapes \u2014 it consumes core models only.\n\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport {\n type SolanaCalAccountReset,\n type SolanaCalDisplayField,\n type SolanaCalValueFlowPort,\n type SolanaInstructionEnumVariant,\n type SolanaInstructionInfoPayload,\n type SolanaInstructionSubstructure,\n SolanaInstructionSubstructureKind,\n} from \"@/modules/solana/model/SolanaPayloads\";\nimport { u16Codec } from \"@/shared/utils/uIntCodec\";\n\nimport {\n type CalAccountResetDto,\n type CalDisplayFieldDto,\n type CalInstructionDescriptorDto,\n type CalSignatures,\n type CalValueFlowPortDto,\n} from \"./InstructionInfoDto\";\n\nexport type CalMode = \"prod\" | \"test\";\n\nfunction pickSignature(\n signatures: CalSignatures,\n mode: CalMode,\n): string | undefined {\n return signatures[mode];\n}\n\n// --- DTO \u2192 decoded-payload projections. Pick only the fields the host-side\n// requirement builder reads, dropping the signed-TLV `descriptor` carried by\n// the DTO. ---\n\nexport function toValueFlowPorts(\n dtos: CalValueFlowPortDto[] = [],\n): SolanaCalValueFlowPort[] {\n return dtos.map((port) => ({\n account_indices: port.account_indices,\n optional_account_strategy: port.optional_account_strategy,\n token_value: port.token_value,\n }));\n}\n\nexport function toAccountResets(\n dtos: CalAccountResetDto[] = [],\n): SolanaCalAccountReset[] {\n // Drop malformed resets (missing account_index) rather than defaulting to\n // slot 0, which would create an unintended TOKEN_ACCOUNT_STATE requirement.\n return dtos.flatMap((reset) =>\n reset.account_index === undefined\n ? []\n : [\n {\n account_index: reset.account_index,\n require_pre_balance_zero: reset.require_pre_balance_zero,\n },\n ],\n );\n}\n\nexport function toDisplayFields(\n dtos: CalDisplayFieldDto[] = [],\n): SolanaCalDisplayField[] {\n return dtos.map((field) => ({\n name: field.name,\n param: field.param ?? { type: \"\" },\n }));\n}\n\nfunction toSubstructures(\n dto: CalInstructionDescriptorDto,\n): SolanaInstructionSubstructure[] {\n return [\n ...(dto.display_fields ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.DISPLAY_FIELD,\n data: s.descriptor,\n })),\n ...(dto.value_flow_ports ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.VALUE_FLOW_PORT,\n data: s.descriptor,\n })),\n ...(dto.hide_rules ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.HIDE_RULE,\n data: s.descriptor,\n })),\n ...(dto.account_resets ?? []).map((s) => ({\n kind: SolanaInstructionSubstructureKind.ACCOUNT_RESET,\n data: s.descriptor,\n })),\n ];\n}\n\n/**\n * Flatten the CAL-bundled enum variants (keyed enumId \u2192 variantIndex). Keys\n * that don't validate as a u16 are skipped rather than leaking NaN/out-of-range\n * indices into the payload.\n */\nfunction toEnumVariants(\n dto: CalInstructionDescriptorDto,\n mode: CalMode,\n): SolanaInstructionEnumVariant[] {\n const enumVariants: SolanaInstructionEnumVariant[] = [];\n for (const [enumId, variants] of Object.entries(dto.enum_variants ?? {})) {\n for (const [variantIndex, variant] of Object.entries(variants)) {\n const index = Number(variantIndex);\n if (u16Codec.decode(index).isLeft()) {\n continue;\n }\n enumVariants.push({\n enumId,\n variantIndex: index,\n descriptor: {\n data: variant.descriptor.data,\n signature: pickSignature(variant.descriptor.signatures, mode) ?? \"\",\n },\n });\n }\n }\n return enumVariants;\n}\n\n/**\n * Flatten the enum variants of every descriptor in a program into a single\n * list. CAL nests `enum_variants` inside each instruction descriptor but\n * guarantees `(enumId, variantIndex)` is unique across a program, so the enum\n * loader resolves a selection against this program-level list \u2014 independently\n * of whether any individual instruction descriptor carried a usable signature.\n */\nexport function toProgramEnumVariants(\n descriptors: Record<string, CalInstructionDescriptorDto>,\n mode: CalMode,\n): SolanaInstructionEnumVariant[] {\n return Object.values(descriptors).flatMap((dto) => toEnumVariants(dto, mode));\n}\n\n/**\n * Transform one validated CAL descriptor DTO into the core\n * {@link SolanaInstructionInfoPayload}. Returns a `Left` when the descriptor is\n * unusable (no signature for the configured `mode`), so the caller can surface\n * a per-descriptor ERROR rather than emitting an empty signature.\n *\n * `programId` comes from the enclosing `solana_programs` envelope `id`;\n * `discriminator` from the instruction's `discriminator_hex`.\n */\nexport function toInstructionInfoPayload(\n programId: string,\n discriminator: string,\n dto: CalInstructionDescriptorDto,\n mode: CalMode,\n): Either<Error, SolanaInstructionInfoPayload> {\n const signature = pickSignature(dto.descriptor.signatures, mode);\n if (!signature) {\n return Left(\n new Error(\n `[ContextModule] InstructionInfoDataSource: missing '${mode}' signature for (${programId}, ${discriminator})`,\n ),\n );\n }\n\n return Right({\n programId,\n discriminator,\n instructionName: dto.instruction_name,\n instructionInfo: {\n data: dto.descriptor.data,\n signature,\n },\n substructures: toSubstructures(dto),\n enumVariants: toEnumVariants(dto, mode),\n idlDescriptor: {\n typePool: dto.idl_descriptor?.type_pool ?? [],\n rootType: dto.idl_descriptor?.root_type ?? 0,\n },\n mintAssociations: dto.mint_association ? [dto.mint_association] : [],\n valueFlowPorts: toValueFlowPorts(dto.value_flow_ports),\n accountResets: toAccountResets(dto.account_resets),\n displayFields: toDisplayFields(dto.display_fields),\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Left", "Right", "SolanaInstructionSubstructureKind", "u16Codec", "pickSignature", "signatures", "mode", "toValueFlowPorts", "dtos", "port", "toAccountResets", "reset", "toDisplayFields", "field", "toSubstructures", "dto", "s", "toEnumVariants", "enumVariants", "enumId", "variants", "variantIndex", "variant", "index", "toProgramEnumVariants", "descriptors", "toInstructionInfoPayload", "programId", "discriminator", "signature"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/modules/solana/model/SolanaPayloads.ts"],
4
- "sourcesContent": ["// Solana payload types \u2014 used both by Solana loaders and (type-only)\n// referenced by the shared ClearSignContext union for typed-payload variants.\n\nexport type SolanaTokenData = {\n solanaTokenDescriptor: {\n data: string;\n signature: string;\n };\n};\n\nexport type SolanaTransactionDescriptor = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signature: string;\n has_basis_point?: boolean;\n};\n\nexport type SolanaLifiInstructionMeta = {\n program_id: string;\n discriminator_hex?: string;\n has_basis_point?: boolean;\n};\n\nexport type SolanaLifiPayload = {\n descriptors: Record<string, SolanaTransactionDescriptor[]>;\n instructions: SolanaLifiInstructionMeta[];\n};\n\nexport type SolanaTransactionCheckPayload = {\n descriptor: string;\n};\n\n// --- Generic clear-signing payloads ---\n\n// CAL static descriptor payloads. `data` is the signed TLV (hex string);\n// `signature` is the resolved signature for the configured CAL signature\n// kind (`prod` | `test`).\n\nexport type SolanaSignedDescriptor = {\n data: string;\n signature: string;\n};\n\n/**\n * One enum-variant descriptor bundled with an instruction descriptor by CAL.\n * The signed TLV (`descriptor.data`) feeds the host-side type-pool decode\n * cache, `enumId`/`variantIndex` identify which variant it describes (and let\n * the host stream the selected variant's signed descriptor to the device).\n */\nexport type SolanaInstructionEnumVariant = {\n enumId: string;\n variantIndex: number;\n descriptor: SolanaSignedDescriptor;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_INSTRUCTION_INFO.\n *\n * `instructionInfo` + `substructures` are the signed TLVs streamed to the\n * device, and `enumVariants` are the signed enum-variant descriptors CAL\n * bundles for the program's enums (used to build the host decode cache). The\n * remaining fields are CAL's decoded JSON consumed host-side by the\n * requirement builder.\n */\nexport type SolanaInstructionInfoPayload = {\n programId: string;\n discriminator: string;\n instructionInfo: SolanaSignedDescriptor;\n substructures: SolanaInstructionSubstructure[];\n enumVariants: SolanaInstructionEnumVariant[];\n idlDescriptor: {\n typePool: SolanaCalTypePoolEntry[];\n rootType: number;\n };\n mintAssociations: SolanaCalMintAssociation[];\n valueFlowPorts: SolanaCalValueFlowPort[];\n accountResets: SolanaCalAccountReset[];\n displayFields: SolanaCalDisplayField[];\n};\n\nexport enum SolanaInstructionSubstructureKind {\n DISPLAY_FIELD = 0x00,\n VALUE_FLOW_PORT = 0x01,\n HIDE_RULE = 0x02,\n ACCOUNT_RESET = 0x03,\n}\n\nexport type SolanaInstructionSubstructure = {\n kind: SolanaInstructionSubstructureKind;\n // TLV payload (hex string) for the substructure.\n data: string;\n};\n\n// --- Decoded CAL JSON (snake_case mirrors the CAL response) ---\n\nexport type SolanaCalValue = {\n source: string;\n /** ACCOUNT_PATH: index into the instruction's accounts. */\n account_index?: number;\n /** CONSTANT: hex-encoded bytes. */\n data?: string;\n /** ARGUMENT_PATH: decoded steps. */\n path?: { steps: number[] };\n};\n\nexport type SolanaCalTokenValue = {\n kind: string;\n value?: SolanaCalValue;\n account_index?: number;\n};\n\nexport type SolanaCalValueFlowPort = {\n /** Ordered candidate list of account indices (length 1 for a single-account port). */\n account_indices: number[];\n optional_account_strategy?: string;\n token_value: SolanaCalTokenValue;\n};\n\nexport type SolanaCalAccountReset = {\n account_index: number;\n require_pre_balance_zero?: boolean;\n};\n\nexport type SolanaCalDisplayField = {\n name?: string;\n param: { type: string; value?: SolanaCalValue; token?: SolanaCalValue };\n};\n\nexport type SolanaCalTypePoolEntry = {\n index: number;\n kind: string;\n refs?: number[];\n size?: number;\n encoding?: number;\n len_kind?: string;\n flag_kind?: string;\n sentinel?: string;\n disc_kind?: string;\n total_variants?: number;\n enum_id?: string;\n};\n\nexport type SolanaCalMintAssociation = {\n account_index: number;\n mint_index: number;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_ENUM_VARIANT: one signed\n * ENUM_VARIANT descriptor for a `(programId, enumId, variantIndex)` triple.\n */\nexport type SolanaEnumVariantPayload = {\n programId: string;\n enumId: string;\n variantIndex: number;\n descriptor: SolanaSignedDescriptor;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_TOKEN_INFO, keyed by mint pubkey.\n * Distinct from the legacy SOLANA_TOKEN context.\n */\nexport type SolanaTokenInfoPayload = {\n mint: string;\n descriptor: SolanaSignedDescriptor;\n};\n\n// --- Dynamic descriptor payloads (challenge-bound) ---\n//\n// Each payload carries the raw signed TLV bytes decoded from the backend's\n// hex `signedDescriptor`.\n\nexport type SolanaTokenAccountStatePayload = {\n descriptor: Uint8Array;\n mint?: string;\n};\n\nexport type SolanaAltResolutionPayload = {\n descriptor: Uint8Array;\n resolvedAddress?: string;\n};\n\n// SOLANA_TRUSTED_NAME (generic flow, with 2-byte length prefix) is emitted by\n// SolanaTrustedNameContextLoader. SOLANA_BASIC_TRUSTED_NAME (basic flow, raw\n// bytes) is emitted by OwnerInfoContextLoader. Both carry `payload: Uint8Array`.\n"],
5
- "mappings": "AAiFO,IAAKA,OACVA,IAAA,cAAgB,GAAhB,gBACAA,IAAA,gBAAkB,GAAlB,kBACAA,IAAA,UAAY,GAAZ,YACAA,IAAA,cAAgB,GAAhB,gBAJUA,OAAA",
4
+ "sourcesContent": ["// Solana payload types \u2014 used both by Solana loaders and (type-only)\n// referenced by the shared ClearSignContext union for typed-payload variants.\n\nexport type SolanaTokenData = {\n solanaTokenDescriptor: {\n data: string;\n signature: string;\n };\n};\n\nexport type SolanaTransactionDescriptor = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signature: string;\n has_basis_point?: boolean;\n};\n\nexport type SolanaLifiInstructionMeta = {\n program_id: string;\n discriminator_hex?: string;\n has_basis_point?: boolean;\n};\n\nexport type SolanaLifiPayload = {\n descriptors: Record<string, SolanaTransactionDescriptor[]>;\n instructions: SolanaLifiInstructionMeta[];\n};\n\nexport type SolanaTransactionCheckPayload = {\n descriptor: string;\n};\n\n// --- Generic clear-signing payloads ---\n\n// CAL static descriptor payloads. `data` is the signed TLV (hex string);\n// `signature` is the resolved signature for the configured CAL signature\n// kind (`prod` | `test`).\n\nexport type SolanaSignedDescriptor = {\n data: string;\n signature: string;\n};\n\n/**\n * One enum-variant descriptor bundled with an instruction descriptor by CAL.\n * The signed TLV (`descriptor.data`) feeds the host-side type-pool decode\n * cache, `enumId`/`variantIndex` identify which variant it describes (and let\n * the host stream the selected variant's signed descriptor to the device).\n */\nexport type SolanaInstructionEnumVariant = {\n enumId: string;\n variantIndex: number;\n descriptor: SolanaSignedDescriptor;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_INSTRUCTION_INFO.\n *\n * `instructionInfo` + `substructures` are the signed TLVs streamed to the\n * device, and `enumVariants` are the signed enum-variant descriptors CAL\n * bundles for the program's enums (used to build the host decode cache). The\n * remaining fields are CAL's decoded JSON consumed host-side by the\n * requirement builder.\n */\nexport type SolanaInstructionInfoPayload = {\n programId: string;\n discriminator: string;\n instructionName?: string;\n instructionInfo: SolanaSignedDescriptor;\n substructures: SolanaInstructionSubstructure[];\n enumVariants: SolanaInstructionEnumVariant[];\n idlDescriptor: {\n typePool: SolanaCalTypePoolEntry[];\n rootType: number;\n };\n mintAssociations: SolanaCalMintAssociation[];\n valueFlowPorts: SolanaCalValueFlowPort[];\n accountResets: SolanaCalAccountReset[];\n displayFields: SolanaCalDisplayField[];\n};\n\nexport enum SolanaInstructionSubstructureKind {\n DISPLAY_FIELD = 0x00,\n VALUE_FLOW_PORT = 0x01,\n HIDE_RULE = 0x02,\n ACCOUNT_RESET = 0x03,\n}\n\nexport type SolanaInstructionSubstructure = {\n kind: SolanaInstructionSubstructureKind;\n // TLV payload (hex string) for the substructure.\n data: string;\n};\n\n// --- Decoded CAL JSON (snake_case mirrors the CAL response) ---\n\nexport type SolanaCalValue = {\n source: string;\n /** ACCOUNT_PATH: index into the instruction's accounts. */\n account_index?: number;\n /** CONSTANT: hex-encoded bytes. */\n data?: string;\n /** ARGUMENT_PATH: decoded steps. */\n path?: { steps: number[] };\n};\n\nexport type SolanaCalTokenValue = {\n kind: string;\n value?: SolanaCalValue;\n account_index?: number;\n};\n\nexport type SolanaCalValueFlowPort = {\n /** Ordered candidate list of account indices (length 1 for a single-account port). */\n account_indices: number[];\n optional_account_strategy?: string;\n token_value: SolanaCalTokenValue;\n};\n\nexport type SolanaCalAccountReset = {\n account_index: number;\n require_pre_balance_zero?: boolean;\n};\n\nexport type SolanaCalDisplayField = {\n name?: string;\n param: { type: string; value?: SolanaCalValue; token?: SolanaCalValue };\n};\n\nexport type SolanaCalTypePoolEntry = {\n index: number;\n kind: string;\n refs?: number[];\n size?: number;\n encoding?: number;\n len_kind?: string;\n flag_kind?: string;\n sentinel?: string;\n disc_kind?: string;\n total_variants?: number;\n enum_id?: string;\n};\n\nexport type SolanaCalMintAssociation = {\n account_index: number;\n mint_index: number;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_ENUM_VARIANT: one signed\n * ENUM_VARIANT descriptor for a `(programId, enumId, variantIndex)` triple.\n */\nexport type SolanaEnumVariantPayload = {\n programId: string;\n enumId: string;\n variantIndex: number;\n descriptor: SolanaSignedDescriptor;\n};\n\n/**\n * Payload for ClearSignContextType.SOLANA_TOKEN_INFO, keyed by mint pubkey.\n * Distinct from the legacy SOLANA_TOKEN context.\n */\nexport type SolanaTokenInfoPayload = {\n mint: string;\n descriptor: SolanaSignedDescriptor;\n};\n\n// --- Dynamic descriptor payloads (challenge-bound) ---\n//\n// Each payload carries the raw signed TLV bytes decoded from the backend's\n// hex `signedDescriptor`.\n\nexport type SolanaTokenAccountStatePayload = {\n descriptor: Uint8Array;\n mint?: string;\n};\n\nexport type SolanaAltResolutionPayload = {\n descriptor: Uint8Array;\n resolvedAddress?: string;\n};\n\n// SOLANA_TRUSTED_NAME (generic flow, with 2-byte length prefix) is emitted by\n// SolanaTrustedNameContextLoader. SOLANA_BASIC_TRUSTED_NAME (basic flow, raw\n// bytes) is emitted by OwnerInfoContextLoader. Both carry `payload: Uint8Array`.\n"],
5
+ "mappings": "AAkFO,IAAKA,OACVA,IAAA,cAAgB,GAAhB,gBACAA,IAAA,gBAAkB,GAAlB,kBACAA,IAAA,UAAY,GAAZ,YACAA,IAAA,cAAgB,GAAhB,gBAJUA,OAAA",
6
6
  "names": ["SolanaInstructionSubstructureKind"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../../../../src/modules/multichain/reporter/model/BlindSigningModelId.ts"],
3
+ "sources": ["../../../../../src/shared/model/BlindSigningModelId.ts"],
4
4
  "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\n\nexport const BlindSigningModelId = Object.freeze({\n NANO_S: \"nanoS\",\n NANO_SP: \"nanoSP\",\n NANO_X: \"nanoX\",\n STAX: \"stax\",\n FLEX: \"flex\",\n APEX_P: \"apexP\",\n} as const);\nexport type BlindSigningModelId =\n (typeof BlindSigningModelId)[keyof typeof BlindSigningModelId];\n\nconst deviceModelIdToBlindSigningModelId: Record<\n DeviceModelId,\n BlindSigningModelId\n> = {\n [DeviceModelId.NANO_S]: BlindSigningModelId.NANO_S,\n [DeviceModelId.NANO_SP]: BlindSigningModelId.NANO_SP,\n [DeviceModelId.NANO_X]: BlindSigningModelId.NANO_X,\n [DeviceModelId.STAX]: BlindSigningModelId.STAX,\n [DeviceModelId.FLEX]: BlindSigningModelId.FLEX,\n [DeviceModelId.APEX]: BlindSigningModelId.APEX_P,\n};\n\nexport function mapDeviceModelId(id: DeviceModelId): BlindSigningModelId {\n return deviceModelIdToBlindSigningModelId[id];\n}\n"],
5
5
  "mappings": "AAAA,OAAS,iBAAAA,MAAqB,kCAEvB,MAAMC,EAAsB,OAAO,OAAO,CAC/C,OAAQ,QACR,QAAS,SACT,OAAQ,QACR,KAAM,OACN,KAAM,OACN,OAAQ,OACV,CAAU,EAIJC,EAGF,CACF,CAACF,EAAc,MAAM,EAAGC,EAAoB,OAC5C,CAACD,EAAc,OAAO,EAAGC,EAAoB,QAC7C,CAACD,EAAc,MAAM,EAAGC,EAAoB,OAC5C,CAACD,EAAc,IAAI,EAAGC,EAAoB,KAC1C,CAACD,EAAc,IAAI,EAAGC,EAAoB,KAC1C,CAACD,EAAc,IAAI,EAAGC,EAAoB,MAC5C,EAEO,SAASE,EAAiBC,EAAwC,CACvE,OAAOF,EAAmCE,CAAE,CAC9C",
6
6
  "names": ["DeviceModelId", "BlindSigningModelId", "deviceModelIdToBlindSigningModelId", "mapDeviceModelId", "id"]
@@ -1,4 +1,5 @@
1
1
  import { type BlindSigningReportParams } from "./modules/multichain/reporter/data/BlindSigningReporterDatasource";
2
+ import { type SignReportParams } from "./modules/multichain/sign-reporter/model/SignReportParams";
2
3
  import { type ClearSignContext, type ClearSignContextType } from "./shared/model/ClearSignContext";
3
4
  import { type TypedDataClearSignContext } from "./modules/ethereum/model/TypedDataClearSignContext";
4
5
  import { type TypedDataContext } from "./modules/ethereum/model/TypedDataContext";
@@ -7,5 +8,6 @@ export interface ContextModule {
7
8
  getFieldContext<TInput>(field: TInput, expectedType: ClearSignContextType): Promise<ClearSignContext>;
8
9
  getTypedDataFilters(typedData: TypedDataContext): Promise<TypedDataClearSignContext>;
9
10
  report(params: BlindSigningReportParams): Promise<void>;
11
+ signReport?(params: SignReportParams): Promise<void>;
10
12
  }
11
13
  //# sourceMappingURL=ContextModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextModule.d.ts","sourceRoot":"","sources":["../../../src/ContextModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAClH,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,oBAAoB,EAAE,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,mBAAmB,CACjB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"}
1
+ {"version":3,"file":"ContextModule.d.ts","sourceRoot":"","sources":["../../../src/ContextModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAClH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,oBAAoB,EAAE,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7B,mBAAmB,CACjB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,UAAU,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
@@ -3,6 +3,7 @@ import { type ContextModule } from "./ContextModule";
3
3
  import type { TypedDataClearSignContext } from "./modules/ethereum/model/TypedDataClearSignContext";
4
4
  import type { TypedDataContext } from "./modules/ethereum/model/TypedDataContext";
5
5
  import { type BlindSigningReportParams } from "./modules/multichain/reporter/data/BlindSigningReporterDatasource";
6
+ import { type SignReportParams } from "./modules/multichain/sign-reporter/model/SignReportParams";
6
7
  import { type ClearSignContext, ClearSignContextType } from "./shared/model/ClearSignContext";
7
8
  export declare class DefaultContextModule implements ContextModule {
8
9
  private _container;
@@ -11,6 +12,7 @@ export declare class DefaultContextModule implements ContextModule {
11
12
  private _typedDataLoader;
12
13
  private _fieldLoaders;
13
14
  private _blindSigningReporter;
15
+ private _signReporter;
14
16
  constructor(args: ContextModuleServiceConfig & ContextModuleLoaderConfig);
15
17
  private _getDefaultFieldLoaders;
16
18
  private _getDefaultLoaders;
@@ -20,5 +22,6 @@ export declare class DefaultContextModule implements ContextModule {
20
22
  getFieldContext<TInput>(field: TInput, expectedType: ClearSignContextType): Promise<ClearSignContext>;
21
23
  getTypedDataFilters(typedData: TypedDataContext): Promise<TypedDataClearSignContext>;
22
24
  report(params: BlindSigningReportParams): Promise<void>;
25
+ signReport(params: SignReportParams): Promise<void>;
23
26
  }
24
27
  //# sourceMappingURL=DefaultContextModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultContextModule.d.ts","sourceRoot":"","sources":["../../../src/DefaultContextModule.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAQlF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAgBlH,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAyD;IACxE,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,IAAI,EAAE,0BAA0B,GAAG,yBAAyB;IAkBxE,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAgF1B,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,wBAAwB;IASnB,WAAW,CACtB,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,oBAAoB,EAAE,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUjB,eAAe,CAAC,MAAM,EACjC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,gBAAgB,CAAC;IA4Bf,mBAAmB,CAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC;IAIxB,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrE"}
1
+ {"version":3,"file":"DefaultContextModule.d.ts","sourceRoot":"","sources":["../../../src/DefaultContextModule.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAQlF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAIlH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAclG,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAEzC,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAyD;IACxE,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,qBAAqB,CAA8B;IAC3D,OAAO,CAAC,aAAa,CAAsB;gBAE/B,IAAI,EAAE,0BAA0B,GAAG,yBAAyB;IAmBxE,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,kBAAkB;IAgF1B,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,wBAAwB;IASnB,WAAW,CACtB,KAAK,EAAE,OAAO,EACd,aAAa,CAAC,EAAE,oBAAoB,EAAE,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAUjB,eAAe,CAAC,MAAM,EACjC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,oBAAoB,GACjC,OAAO,CAAC,gBAAgB,CAAC;IA4Bf,mBAAmB,CAC9B,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,yBAAyB,CAAC;IAIxB,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../src/di.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,oCAAoC,CAAC;AA6B5C,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,0BAA0B,GAAG,yBAAyB,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,YAAY,iBAAiB,cA8D1D,CAAC"}
1
+ {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../src/di.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,oCAAoC,CAAC;AA8B5C,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,0BAA0B,GAAG,yBAAyB,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,YAAY,iBAAiB,cAgE1D,CAAC"}
@@ -62,7 +62,7 @@ export * from "./modules/multichain/reporter/data/HttpBlindSigningReporterDataso
62
62
  export * from "./modules/multichain/reporter/domain/BlindSigningReporter";
63
63
  export * from "./modules/multichain/reporter/domain/DefaultBlindSigningReporter";
64
64
  export * from "./modules/multichain/reporter/model/BlindSigningEvent";
65
- export * from "./modules/multichain/reporter/model/BlindSigningModelId";
65
+ export * from "./modules/multichain/sign-reporter/model/SignReportParams";
66
66
  export * from "./modules/multichain/transaction-check/utils/constants";
67
67
  export * from "./modules/solana/alt-resolution/data/AltResolutionDataSource";
68
68
  export * from "./modules/solana/alt-resolution/data/HttpAltResolutionDataSource";
@@ -90,6 +90,7 @@ export * from "./modules/solana/trusted-name/domain/TrustedNameContextLoader";
90
90
  export * from "./shared/domain/ContextFieldLoader";
91
91
  export * from "./shared/domain/ContextLoader";
92
92
  export * from "./shared/domain/ContextModuleChainID";
93
+ export * from "./shared/model/BlindSigningModelId";
93
94
  export * from "./shared/model/ClearSignContext";
94
95
  export * from "./shared/model/GenericPath";
95
96
  export * from "./shared/model/TransactionSubset";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type Either } from "purify-ts";
2
2
  import { type BlindSigningMethod, type BlindSigningPlatform, type BlindSignReason, type ClearSigningType } from "../../../../modules/multichain/reporter/model/BlindSigningEvent";
3
- import { type BlindSigningModelId } from "../../../../modules/multichain/reporter/model/BlindSigningModelId";
3
+ import { type BlindSigningModelId } from "../../../../shared/model/BlindSigningModelId";
4
4
  export type BlindSigningReportEthContext = {
5
5
  clearSigningType: ClearSigningType;
6
6
  partialContextErrors: number;
@@ -1 +1 @@
1
- {"version":3,"file":"BlindSigningReporterDatasource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/reporter/data/BlindSigningReporterDatasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAEnG,MAAM,MAAM,4BAA4B,GAAG;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;CACxE"}
1
+ {"version":3,"file":"BlindSigningReporterDatasource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/reporter/data/BlindSigningReporterDatasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,MAAM,MAAM,4BAA4B,GAAG;IACzC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;CACxE"}
@@ -1,5 +1,5 @@
1
1
  import { type BlindSigningMethod, type BlindSigningPlatform, type BlindSignReason, type ClearSigningType } from "../../../../../modules/multichain/reporter/model/BlindSigningEvent";
2
- import { type BlindSigningModelId } from "../../../../../modules/multichain/reporter/model/BlindSigningModelId";
2
+ import { type BlindSigningModelId } from "../../../../../shared/model/BlindSigningModelId";
3
3
  export type BlindSigningEventEthContextDto = {
4
4
  clearSigningType: ClearSigningType;
5
5
  partialContextErrors: number;
@@ -1 +1 @@
1
- {"version":3,"file":"BlindSigningEventDto.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/multichain/reporter/data/dto/BlindSigningEventDto.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAEnG,MAAM,MAAM,8BAA8B,GAAG;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"BlindSigningEventDto.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/multichain/reporter/data/dto/BlindSigningEventDto.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC"}
@@ -6,6 +6,7 @@ export type BlindSigningMethod = (typeof BlindSigningMethod)[keyof typeof BlindS
6
6
  export declare const BlindSignReason: Readonly<{
7
7
  readonly NO_CLEAR_SIGNING_CONTEXT: "no_clear_signing_context";
8
8
  readonly DEVICE_REJECTED_CONTEXT: "device_rejected_context";
9
+ readonly UNRECOGNIZED_PROGRAM: "unrecognized_program";
9
10
  }>;
10
11
  export type BlindSignReason = (typeof BlindSignReason)[keyof typeof BlindSignReason];
11
12
  export declare const ClearSigningType: Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"BlindSigningEvent.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/reporter/model/BlindSigningEvent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;EAGpB,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/D,eAAO,MAAM,eAAe;;;EAGjB,CAAC;AACZ,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,gBAAgB;;;EAGlB,CAAC;AACZ,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,oBAAoB;;;EAGtB,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"BlindSigningEvent.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/reporter/model/BlindSigningEvent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;EAGpB,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/D,eAAO,MAAM,eAAe;;;;EAIjB,CAAC;AACZ,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,gBAAgB;;;EAGlB,CAAC;AACZ,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,oBAAoB;;;EAGtB,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type DmkNetworkClient, type LoggerPublisherService } from "@ledgerhq/device-management-kit";
2
+ import { type Either } from "purify-ts";
3
+ import { type ContextModuleServiceConfig } from "../../../../config/model/ContextModuleConfig";
4
+ import { type SignReportParams } from "../../../../modules/multichain/sign-reporter/model/SignReportParams";
5
+ import { type SignReporterDatasource } from "./SignReporterDatasource";
6
+ export declare class HttpSignReporterDatasource implements SignReporterDatasource {
7
+ private readonly config;
8
+ private readonly http;
9
+ private readonly logger;
10
+ constructor(config: ContextModuleServiceConfig, loggerFactory: (tag: string) => LoggerPublisherService, networkClient?: DmkNetworkClient);
11
+ report(params: SignReportParams): Promise<Either<Error, void>>;
12
+ private buildDto;
13
+ }
14
+ //# sourceMappingURL=HttpSignReporterDatasource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpSignReporterDatasource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAKlG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,qBACa,0BAA2B,YAAW,sBAAsB;IAMrE,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAI7B,MAAM,EAAE,0BAA0B,EAEnD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,EAEtD,aAAa,CAAC,EAAE,gBAAgB;IAM5B,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAoBpE,OAAO,CAAC,QAAQ;CAmEjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=HttpSignReporterDatasource.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpSignReporterDatasource.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/sign-reporter/data/HttpSignReporterDatasource.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { type Either } from "purify-ts";
2
+ import { type SignReportParams } from "../../../../modules/multichain/sign-reporter/model/SignReportParams";
3
+ export interface SignReporterDatasource {
4
+ report(params: SignReportParams): Promise<Either<Error, void>>;
5
+ }
6
+ //# sourceMappingURL=SignReporterDatasource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignReporterDatasource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/sign-reporter/data/SignReporterDatasource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAElG,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;CAChE"}