@ledgerhq/device-signer-kit-tron 0.0.0-develop-20260731002630 → 0.0.0-develop-20260802002602

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 (23) hide show
  1. package/README.md +81 -0
  2. package/lib/cjs/internal/app-binder/TronAppBinder.test.js +2 -0
  3. package/lib/cjs/internal/app-binder/TronAppBinder.test.js.map +7 -0
  4. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
  5. package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
  6. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js +2 -0
  7. package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js.map +7 -0
  8. package/lib/cjs/package.json +1 -1
  9. package/lib/esm/internal/app-binder/TronAppBinder.test.js +2 -0
  10. package/lib/esm/internal/app-binder/TronAppBinder.test.js.map +7 -0
  11. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
  12. package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
  13. package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js +2 -0
  14. package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js.map +7 -0
  15. package/lib/esm/package.json +1 -1
  16. package/lib/types/internal/app-binder/TronAppBinder.test.d.ts +2 -0
  17. package/lib/types/internal/app-binder/TronAppBinder.test.d.ts.map +1 -0
  18. package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts +2 -0
  19. package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts.map +1 -0
  20. package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.d.ts +2 -0
  21. package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.d.ts.map +1 -0
  22. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  23. package/package.json +4 -4
package/README.md CHANGED
@@ -36,6 +36,87 @@ const { observable: messageObservable } = signer.signPersonalMessage(
36
36
  const { observable: configObservable } = signer.getAppConfiguration();
37
37
  ```
38
38
 
39
+ ### Get address
40
+
41
+ Derives the Tron address and public key for a BIP32 derivation path (Tron uses
42
+ coin type `195`).
43
+
44
+ ```typescript
45
+ signer.getAddress(
46
+ derivationPath: string,
47
+ options?: {
48
+ // Display the address on the device for user verification (default: false).
49
+ checkOnDevice?: boolean;
50
+ // Skip the "open app" step if the Tron app is already open (default: false).
51
+ skipOpenApp?: boolean;
52
+ },
53
+ ): GetAddressDAReturnType;
54
+ ```
55
+
56
+ The returned device action resolves to:
57
+
58
+ ```typescript
59
+ {
60
+ address: string; // Base58Check Tron address, e.g. "TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"
61
+ publicKey: string; // hex-encoded public key
62
+ chainCode?: string; // hex-encoded chain code (only when requested)
63
+ }
64
+ ```
65
+
66
+ ```typescript
67
+ const { observable, cancel } = signer.getAddress("44'/195'/0'/0/0", {
68
+ checkOnDevice: true,
69
+ });
70
+
71
+ observable.subscribe((state) => {
72
+ switch (state.status) {
73
+ case "completed":
74
+ console.log(state.output.address, state.output.publicKey);
75
+ break;
76
+ case "error":
77
+ console.error(state.error);
78
+ break;
79
+ }
80
+ });
81
+ ```
82
+
83
+ ### Get app configuration
84
+
85
+ Reads the Tron app configuration from the device (version and the flags the app
86
+ was built with). No user interaction is required.
87
+
88
+ ```typescript
89
+ signer.getAppConfiguration(): GetAppConfigurationDAReturnType;
90
+ ```
91
+
92
+ The returned device action resolves to:
93
+
94
+ ```typescript
95
+ {
96
+ version: string; // semantic version, e.g. "0.5.0"
97
+ versionN: number; // numeric version (major * 10000 + minor * 100 + patch)
98
+ allowData: boolean; // "sign data" setting enabled on the device
99
+ allowContract: boolean; // "sign custom contracts" setting enabled
100
+ truncateAddress: boolean; // addresses are truncated on the device screen
101
+ signByHash: boolean; // "sign by hash" setting enabled
102
+ }
103
+ ```
104
+
105
+ ```typescript
106
+ const { observable, cancel } = signer.getAppConfiguration();
107
+
108
+ observable.subscribe((state) => {
109
+ switch (state.status) {
110
+ case "completed":
111
+ console.log(state.output.version, state.output.allowContract);
112
+ break;
113
+ case "error":
114
+ console.error(state.error);
115
+ break;
116
+ }
117
+ });
118
+ ```
119
+
39
120
  ## Development
40
121
 
41
122
  ```bash
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@ledgerhq/device-management-kit"),l=require("rxjs"),m=require("../app-binder/command/GetAddressCommand"),v=require("../app-binder/command/GetAppConfigurationCommand"),d=require("../app-binder/constants"),o=require("./TronAppBinder");describe("TronAppBinder",()=>{const n={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},p={debug:vi.fn()},s=vi.fn().mockReturnValue(p);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const t=new o.TronAppBinder({},{},s);expect(t).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((t,i)=>{const c={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:e.DeviceActionStatus.Completed,output:c}]),cancel:vi.fn()});const u=new o.TronAppBinder(n,"sessionId",s),{observable:A}=u.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),a=[];A.subscribe({next:r=>a.push(r),error:i,complete:()=>{try{expect(a).toEqual([{status:e.DeviceActionStatus.Completed,output:c}]),t()}catch(r){i(r)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const t="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new o.TronAppBinder(n,"sessionId",s).getAddress({derivationPath:t,checkOnDevice:!1,skipOpenApp:!1}),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new m.GetAddressCommand({derivationPath:t,checkOnDevice:!1}),appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:p})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new o.TronAppBinder(n,"sessionId",s).getAddress({derivationPath:t,checkOnDevice:!0,skipOpenApp:!0}),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new m.GetAddressCommand({derivationPath:t,checkOnDevice:!0}),appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.VerifyAddress,skipOpenApp:!0},logger:p})}))})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((t,i)=>{const c={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:e.DeviceActionStatus.Completed,output:c}]),cancel:vi.fn()});const u=new o.TronAppBinder(n,"sessionId",s),{observable:A}=u.getAppConfiguration(),a=[];A.subscribe({next:r=>a.push(r),error:i,complete:()=>{try{expect(a).toEqual([{status:e.DeviceActionStatus.Completed,output:c}]),t()}catch(r){i(r)}}})})),it("should call executeDeviceAction with the correct params",()=>{new o.TronAppBinder(n,"sessionId",s).getAppConfiguration(),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new v.GetAppConfigurationCommand,appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:p})}))})})});
2
+ //# sourceMappingURL=TronAppBinder.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
4
+ "sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_device_management_kit", "import_rxjs", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_constants", "import_TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var n=require("./GetAddressUseCase");describe("GetAddressUseCase",()=>{const e="44'/195'/0'/0/0",s={address:"some-address"},t=vi.fn().mockReturnValue(s),o={getAddress:t};let p;beforeEach(()=>{vi.clearAllMocks(),p=new n.GetAddressUseCase(o)}),it("should forward the provided options to the app binder",()=>{const r=p.execute(e,{checkOnDevice:!0,skipOpenApp:!0});expect(r).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0})}),it("should default checkOnDevice and skipOpenApp to false",()=>{const c=p.execute(e);expect(c).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1})})});
2
+ //# sourceMappingURL=GetAddressUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
4
+ "sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const returnedValue = { address: \"some-address\" };\n const getAddressMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as TronAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should forward the provided options to the app binder\", () => {\n // GIVEN\n const checkOnDevice = true;\n const skipOpenApp = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, {\n checkOnDevice,\n skipOpenApp,\n });\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n skipOpenApp,\n });\n });\n\n it(\"should default checkOnDevice and skipOpenApp to false\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAAkC,+BAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,kBACjBC,EAAgB,CAAE,QAAS,cAAe,EAC1CC,EAAiB,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EACtDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,oBAAkBD,CAAa,CAC/C,CAAC,EAED,GAAG,wDAAyD,IAAM,CAMhE,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAC7C,iBACA,cACF,CAAC,EAGD,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,iBACA,cACF,CAAC,CACH,CAAC,EAED,GAAG,wDAAyD,IAAM,CAEhE,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,GACf,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["import_GetAddressUseCase", "derivationPath", "returnedValue", "getAddressMock", "appBinderMock", "useCase", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=require("./GetAppConfigurationUseCase");describe("GetAppConfigurationUseCase",()=>{const e={observable:{},cancel:vi.fn()},n=vi.fn().mockReturnValue(e),p={getAppConfiguration:n};let o;beforeEach(()=>{vi.clearAllMocks(),o=new t.GetAppConfigurationUseCase(p)}),it("should call getAppConfiguration on the app binder",()=>{const a=o.execute();expect(a).toEqual(e),expect(n).toHaveBeenCalledWith()})});
2
+ //# sourceMappingURL=GetAppConfigurationUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],
4
+ "sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const returnedValue = { observable: {}, cancel: vi.fn() };\n const getAppConfigurationMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as TronAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should call getAppConfiguration on the app binder\", () => {\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n });\n});\n"],
5
+ "mappings": "aAEA,IAAAA,EAA2C,wCAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAgB,CAAE,WAAY,CAAC,EAAG,OAAQ,GAAG,GAAG,CAAE,EAClDC,EAA0B,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EAC/DE,EAAgB,CACpB,oBAAqBD,CACvB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,6BAA2BD,CAAa,CACxD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAE5D,MAAME,EAASD,EAAQ,QAAQ,EAG/B,OAAOC,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAuB,EAAE,qBAAqB,CACvD,CAAC,CACH,CAAC",
6
+ "names": ["import_GetAppConfigurationUseCase", "returnedValue", "getAppConfigurationMock", "appBinderMock", "useCase", "result"]
7
+ }
@@ -56,5 +56,5 @@
56
56
  "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
57
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
58
58
  },
59
- "version": "0.0.0-develop-20260731002630"
59
+ "version": "0.0.0-develop-20260802002602"
60
60
  }
@@ -0,0 +1,2 @@
1
+ import{DeviceActionStatus as p,SendCommandInAppDeviceAction as A,UserInteractionRequired as l}from"@ledgerhq/device-management-kit";import{from as v}from"rxjs";import{GetAddressCommand as D}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as g}from"../app-binder/command/GetAppConfigurationCommand";import{APP_NAME as m}from"../app-binder/constants";import{TronAppBinder as o}from"./TronAppBinder";describe("TronAppBinder",()=>{const t={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},a={debug:vi.fn()},r=vi.fn().mockReturnValue(a);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const e=new o({},{},r);expect(e).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((e,n)=>{const s={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:v([{status:p.Completed,output:s}]),cancel:vi.fn()});const d=new o(t,"sessionId",r),{observable:u}=d.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),c=[];u.subscribe({next:i=>c.push(i),error:n,complete:()=>{try{expect(c).toEqual([{status:p.Completed,output:s}]),e()}catch(i){n(i)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const e="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new o(t,"sessionId",r).getAddress({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new D({derivationPath:e,checkOnDevice:!1}),appName:m,requiredUserInteraction:l.None,skipOpenApp:!1},logger:a})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new o(t,"sessionId",r).getAddress({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new D({derivationPath:e,checkOnDevice:!0}),appName:m,requiredUserInteraction:l.VerifyAddress,skipOpenApp:!0},logger:a})}))})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((e,n)=>{const s={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:v([{status:p.Completed,output:s}]),cancel:vi.fn()});const d=new o(t,"sessionId",r),{observable:u}=d.getAppConfiguration(),c=[];u.subscribe({next:i=>c.push(i),error:n,complete:()=>{try{expect(c).toEqual([{status:p.Completed,output:s}]),e()}catch(i){n(i)}}})})),it("should call executeDeviceAction with the correct params",()=>{new o(t,"sessionId",r).getAppConfiguration(),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new g,appName:m,requiredUserInteraction:l.None,skipOpenApp:!1},logger:a})}))})})});
2
+ //# sourceMappingURL=TronAppBinder.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
4
+ "sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAddressCommand", "GetAppConfigurationCommand", "APP_NAME", "TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{GetAddressUseCase as r}from"./GetAddressUseCase";describe("GetAddressUseCase",()=>{const e="44'/195'/0'/0/0",s={address:"some-address"},t=vi.fn().mockReturnValue(s),n={getAddress:t};let p;beforeEach(()=>{vi.clearAllMocks(),p=new r(n)}),it("should forward the provided options to the app binder",()=>{const o=p.execute(e,{checkOnDevice:!0,skipOpenApp:!0});expect(o).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0})}),it("should default checkOnDevice and skipOpenApp to false",()=>{const c=p.execute(e);expect(c).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1})})});
2
+ //# sourceMappingURL=GetAddressUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
4
+ "sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const returnedValue = { address: \"some-address\" };\n const getAddressMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as TronAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should forward the provided options to the app binder\", () => {\n // GIVEN\n const checkOnDevice = true;\n const skipOpenApp = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, {\n checkOnDevice,\n skipOpenApp,\n });\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n skipOpenApp,\n });\n });\n\n it(\"should default checkOnDevice and skipOpenApp to false\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n });\n});\n"],
5
+ "mappings": "AAEA,OAAS,qBAAAA,MAAyB,sBAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,kBACjBC,EAAgB,CAAE,QAAS,cAAe,EAC1CC,EAAiB,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EACtDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIL,EAAkBI,CAAa,CAC/C,CAAC,EAED,GAAG,wDAAyD,IAAM,CAMhE,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAC7C,iBACA,cACF,CAAC,EAGD,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,iBACA,cACF,CAAC,CACH,CAAC,EAED,GAAG,wDAAyD,IAAM,CAEhE,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,GACf,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
6
+ "names": ["GetAddressUseCase", "derivationPath", "returnedValue", "getAddressMock", "appBinderMock", "useCase", "result"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{GetAppConfigurationUseCase as a}from"./GetAppConfigurationUseCase";describe("GetAppConfigurationUseCase",()=>{const e={observable:{},cancel:vi.fn()},n=vi.fn().mockReturnValue(e),t={getAppConfiguration:n};let o;beforeEach(()=>{vi.clearAllMocks(),o=new a(t)}),it("should call getAppConfiguration on the app binder",()=>{const p=o.execute();expect(p).toEqual(e),expect(n).toHaveBeenCalledWith()})});
2
+ //# sourceMappingURL=GetAppConfigurationUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],
4
+ "sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const returnedValue = { observable: {}, cancel: vi.fn() };\n const getAppConfigurationMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as TronAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should call getAppConfiguration on the app binder\", () => {\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n });\n});\n"],
5
+ "mappings": "AAEA,OAAS,8BAAAA,MAAkC,+BAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAgB,CAAE,WAAY,CAAC,EAAG,OAAQ,GAAG,GAAG,CAAE,EAClDC,EAA0B,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EAC/DE,EAAgB,CACpB,oBAAqBD,CACvB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIJ,EAA2BG,CAAa,CACxD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAE5D,MAAME,EAASD,EAAQ,QAAQ,EAG/B,OAAOC,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAuB,EAAE,qBAAqB,CACvD,CAAC,CACH,CAAC",
6
+ "names": ["GetAppConfigurationUseCase", "returnedValue", "getAppConfigurationMock", "appBinderMock", "useCase", "result"]
7
+ }
@@ -56,5 +56,5 @@
56
56
  "watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
57
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
58
58
  },
59
- "version": "0.0.0-develop-20260731002630"
59
+ "version": "0.0.0-develop-20260802002602"
60
60
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TronAppBinder.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TronAppBinder.test.d.ts","sourceRoot":"","sources":["../../../../src/internal/app-binder/TronAppBinder.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GetAddressUseCase.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetAddressUseCase.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GetAppConfigurationUseCase.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetAppConfigurationUseCase.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],"names":[],"mappings":""}