@ledgerhq/device-contacts-kit 0.0.0-develop-20260828024102 → 0.0.0-develop-20260829001241

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 (136) hide show
  1. package/README.md +29 -2
  2. package/lib/cjs/api/ContactsManager.js +1 -1
  3. package/lib/cjs/api/ContactsManager.js.map +1 -1
  4. package/lib/cjs/api/app-binder/RenameContactDeviceActionTypes.js +2 -0
  5. package/lib/cjs/api/app-binder/RenameContactDeviceActionTypes.js.map +7 -0
  6. package/lib/cjs/api/index.js +1 -1
  7. package/lib/cjs/api/index.js.map +2 -2
  8. package/lib/cjs/api/model/RenameContact.js +2 -0
  9. package/lib/cjs/api/model/RenameContact.js.map +7 -0
  10. package/lib/cjs/internal/DefaultContactsManager.js +1 -1
  11. package/lib/cjs/internal/DefaultContactsManager.js.map +2 -2
  12. package/lib/cjs/internal/DefaultContactsManager.test.js +1 -1
  13. package/lib/cjs/internal/DefaultContactsManager.test.js.map +3 -3
  14. package/lib/cjs/internal/app-binder/ContactsAppBinder.js +1 -1
  15. package/lib/cjs/internal/app-binder/ContactsAppBinder.js.map +3 -3
  16. package/lib/cjs/internal/app-binder/command/RenameContactCommand.js +2 -0
  17. package/lib/cjs/internal/app-binder/command/RenameContactCommand.js.map +7 -0
  18. package/lib/cjs/internal/app-binder/command/RenameContactCommand.test.js +2 -0
  19. package/lib/cjs/internal/app-binder/command/RenameContactCommand.test.js.map +7 -0
  20. package/lib/cjs/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.js +2 -0
  21. package/lib/cjs/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.js.map +7 -0
  22. package/lib/cjs/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.js +2 -0
  23. package/lib/cjs/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.js.map +7 -0
  24. package/lib/cjs/internal/app-binder/device-action/RenameContact/validateRenameContactInput.js +2 -0
  25. package/lib/cjs/internal/app-binder/device-action/RenameContact/validateRenameContactInput.js.map +7 -0
  26. package/lib/cjs/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.js +2 -0
  27. package/lib/cjs/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.js.map +7 -0
  28. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.js +2 -0
  29. package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.js.map +7 -0
  30. package/lib/cjs/internal/app-binder/isContactsSupportedForSession.js +1 -1
  31. package/lib/cjs/internal/app-binder/isContactsSupportedForSession.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/model/contactsConstants.js +1 -1
  33. package/lib/cjs/internal/app-binder/model/contactsConstants.js.map +3 -3
  34. package/lib/cjs/internal/app-binder/task/SendRenameContactTask.js +2 -0
  35. package/lib/cjs/internal/app-binder/task/SendRenameContactTask.js.map +7 -0
  36. package/lib/cjs/internal/app-binder/task/SendRenameContactTask.test.js +2 -0
  37. package/lib/cjs/internal/app-binder/task/SendRenameContactTask.test.js.map +7 -0
  38. package/lib/cjs/internal/di.test.js +1 -1
  39. package/lib/cjs/internal/di.test.js.map +3 -3
  40. package/lib/cjs/internal/use-cases/RenameContactUseCase.js +2 -0
  41. package/lib/cjs/internal/use-cases/RenameContactUseCase.js.map +7 -0
  42. package/lib/cjs/internal/use-cases/RenameContactUseCase.test.js +2 -0
  43. package/lib/cjs/internal/use-cases/RenameContactUseCase.test.js.map +7 -0
  44. package/lib/cjs/internal/use-cases/di/useCaseModule.js +1 -1
  45. package/lib/cjs/internal/use-cases/di/useCaseModule.js.map +3 -3
  46. package/lib/cjs/internal/use-cases/di/useCaseTypes.js +1 -1
  47. package/lib/cjs/internal/use-cases/di/useCaseTypes.js.map +2 -2
  48. package/lib/cjs/package.json +1 -1
  49. package/lib/esm/api/app-binder/RenameContactDeviceActionTypes.js +1 -0
  50. package/lib/esm/api/app-binder/RenameContactDeviceActionTypes.js.map +7 -0
  51. package/lib/esm/api/index.js +1 -1
  52. package/lib/esm/api/index.js.map +2 -2
  53. package/lib/esm/api/model/RenameContact.js +1 -0
  54. package/lib/esm/api/model/RenameContact.js.map +7 -0
  55. package/lib/esm/internal/DefaultContactsManager.js +1 -1
  56. package/lib/esm/internal/DefaultContactsManager.js.map +2 -2
  57. package/lib/esm/internal/DefaultContactsManager.test.js +1 -1
  58. package/lib/esm/internal/DefaultContactsManager.test.js.map +3 -3
  59. package/lib/esm/internal/app-binder/ContactsAppBinder.js +1 -1
  60. package/lib/esm/internal/app-binder/ContactsAppBinder.js.map +3 -3
  61. package/lib/esm/internal/app-binder/command/RenameContactCommand.js +2 -0
  62. package/lib/esm/internal/app-binder/command/RenameContactCommand.js.map +7 -0
  63. package/lib/esm/internal/app-binder/command/RenameContactCommand.test.js +2 -0
  64. package/lib/esm/internal/app-binder/command/RenameContactCommand.test.js.map +7 -0
  65. package/lib/esm/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.js +2 -0
  66. package/lib/esm/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.js.map +7 -0
  67. package/lib/esm/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.js +2 -0
  68. package/lib/esm/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.js.map +7 -0
  69. package/lib/esm/internal/app-binder/device-action/RenameContact/validateRenameContactInput.js +2 -0
  70. package/lib/esm/internal/app-binder/device-action/RenameContact/validateRenameContactInput.js.map +7 -0
  71. package/lib/esm/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.js +2 -0
  72. package/lib/esm/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.js.map +7 -0
  73. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.js +2 -0
  74. package/lib/esm/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.js.map +7 -0
  75. package/lib/esm/internal/app-binder/isContactsSupportedForSession.js +1 -1
  76. package/lib/esm/internal/app-binder/isContactsSupportedForSession.js.map +3 -3
  77. package/lib/esm/internal/app-binder/model/contactsConstants.js +1 -1
  78. package/lib/esm/internal/app-binder/model/contactsConstants.js.map +3 -3
  79. package/lib/esm/internal/app-binder/task/SendRenameContactTask.js +2 -0
  80. package/lib/esm/internal/app-binder/task/SendRenameContactTask.js.map +7 -0
  81. package/lib/esm/internal/app-binder/task/SendRenameContactTask.test.js +2 -0
  82. package/lib/esm/internal/app-binder/task/SendRenameContactTask.test.js.map +7 -0
  83. package/lib/esm/internal/di.test.js +1 -1
  84. package/lib/esm/internal/di.test.js.map +3 -3
  85. package/lib/esm/internal/use-cases/RenameContactUseCase.js +2 -0
  86. package/lib/esm/internal/use-cases/RenameContactUseCase.js.map +7 -0
  87. package/lib/esm/internal/use-cases/RenameContactUseCase.test.js +2 -0
  88. package/lib/esm/internal/use-cases/RenameContactUseCase.test.js.map +7 -0
  89. package/lib/esm/internal/use-cases/di/useCaseModule.js +1 -1
  90. package/lib/esm/internal/use-cases/di/useCaseModule.js.map +3 -3
  91. package/lib/esm/internal/use-cases/di/useCaseTypes.js +1 -1
  92. package/lib/esm/internal/use-cases/di/useCaseTypes.js.map +2 -2
  93. package/lib/esm/package.json +1 -1
  94. package/lib/types/api/ContactsManager.d.ts +12 -0
  95. package/lib/types/api/ContactsManager.d.ts.map +1 -1
  96. package/lib/types/api/app-binder/RenameContactDeviceActionTypes.d.ts +25 -0
  97. package/lib/types/api/app-binder/RenameContactDeviceActionTypes.d.ts.map +1 -0
  98. package/lib/types/api/index.d.ts +2 -0
  99. package/lib/types/api/index.d.ts.map +1 -1
  100. package/lib/types/api/model/RenameContact.d.ts +39 -0
  101. package/lib/types/api/model/RenameContact.d.ts.map +1 -0
  102. package/lib/types/internal/DefaultContactsManager.d.ts +3 -0
  103. package/lib/types/internal/DefaultContactsManager.d.ts.map +1 -1
  104. package/lib/types/internal/app-binder/ContactsAppBinder.d.ts +3 -0
  105. package/lib/types/internal/app-binder/ContactsAppBinder.d.ts.map +1 -1
  106. package/lib/types/internal/app-binder/command/RenameContactCommand.d.ts +25 -0
  107. package/lib/types/internal/app-binder/command/RenameContactCommand.d.ts.map +1 -0
  108. package/lib/types/internal/app-binder/command/RenameContactCommand.test.d.ts +2 -0
  109. package/lib/types/internal/app-binder/command/RenameContactCommand.test.d.ts.map +1 -0
  110. package/lib/types/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.d.ts +13 -0
  111. package/lib/types/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.d.ts.map +1 -0
  112. package/lib/types/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.d.ts +2 -0
  113. package/lib/types/internal/app-binder/device-action/RenameContact/RenameContactDeviceAction.test.d.ts.map +1 -0
  114. package/lib/types/internal/app-binder/device-action/RenameContact/validateRenameContactInput.d.ts +12 -0
  115. package/lib/types/internal/app-binder/device-action/RenameContact/validateRenameContactInput.d.ts.map +1 -0
  116. package/lib/types/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.d.ts +2 -0
  117. package/lib/types/internal/app-binder/device-action/RenameContact/validateRenameContactInput.test.d.ts.map +1 -0
  118. package/lib/types/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.d.ts +12 -0
  119. package/lib/types/internal/app-binder/device-action/__test-utils__/setupGoToDashboardDAMock.d.ts.map +1 -0
  120. package/lib/types/internal/app-binder/isContactsSupportedForSession.d.ts +15 -0
  121. package/lib/types/internal/app-binder/isContactsSupportedForSession.d.ts.map +1 -1
  122. package/lib/types/internal/app-binder/model/contactsConstants.d.ts +15 -0
  123. package/lib/types/internal/app-binder/model/contactsConstants.d.ts.map +1 -1
  124. package/lib/types/internal/app-binder/task/SendRenameContactTask.d.ts +20 -0
  125. package/lib/types/internal/app-binder/task/SendRenameContactTask.d.ts.map +1 -0
  126. package/lib/types/internal/app-binder/task/SendRenameContactTask.test.d.ts +2 -0
  127. package/lib/types/internal/app-binder/task/SendRenameContactTask.test.d.ts.map +1 -0
  128. package/lib/types/internal/use-cases/RenameContactUseCase.d.ts +19 -0
  129. package/lib/types/internal/use-cases/RenameContactUseCase.d.ts.map +1 -0
  130. package/lib/types/internal/use-cases/RenameContactUseCase.test.d.ts +2 -0
  131. package/lib/types/internal/use-cases/RenameContactUseCase.test.d.ts.map +1 -0
  132. package/lib/types/internal/use-cases/di/useCaseModule.d.ts.map +1 -1
  133. package/lib/types/internal/use-cases/di/useCaseTypes.d.ts +1 -0
  134. package/lib/types/internal/use-cases/di/useCaseTypes.d.ts.map +1 -1
  135. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  136. package/package.json +6 -6
@@ -11,10 +11,25 @@ export declare const CONTACTS_APDU_CLA = 176;
11
11
  export declare const CONTACTS_APDU_INS = 16;
12
12
  /** P1 sub-command selector for REGISTER IDENTITY (register external address). */
13
13
  export declare const SUB_CMD_REGISTER_IDENTITY = 1;
14
+ /**
15
+ * EDIT CONTACT NAME (rename) is a blockchain-agnostic OS/dashboard command with
16
+ * its own CLA/INS — NOT a sub-command of the address-book app APDU (0xB0/0x10).
17
+ * The OS serves it directly, so it must run on the dashboard. P1 is a fixed
18
+ * 0x00 (there is no sub-command selector for this command); P2 still carries the
19
+ * chunk-continuation flag handled by {@link ./../services/sendFramedContactsPayload}.
20
+ */
21
+ export declare const RENAME_CONTACT_APDU_CLA = 224;
22
+ export declare const RENAME_CONTACT_APDU_INS = 46;
23
+ export declare const RENAME_CONTACT_P1 = 0;
14
24
  /** Sizes (bytes) of the fields in the REGISTER IDENTITY final-chunk response. */
15
25
  export declare const GROUP_HANDLE_BYTES = 64;
16
26
  export declare const HMAC_PROOF_BYTES = 32;
17
27
  export declare const HMAC_REST_BYTES = 32;
28
+ /**
29
+ * Size (bytes) of the rotated `hmac_name` returned on the EDIT CONTACT NAME
30
+ * final-chunk response — the replacement group-level name proof.
31
+ */
32
+ export declare const HMAC_NAME_BYTES = 32;
18
33
  /**
19
34
  * Blockchain-family byte encoded in the `BLOCKCHAIN_FAMILY` TLV, keyed by a
20
35
  * lowercase family name. v1 ships Ethereum only; the remaining families are
@@ -1 +1 @@
1
- {"version":3,"file":"contactsConstants.d.ts","sourceRoot":"","sources":["../../../../../src/internal/app-binder/model/contactsConstants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,MAAO,CAAC;AACtC,eAAO,MAAM,iBAAiB,KAAO,CAAC;AAEtC,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAE9C,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtE,CAAC"}
1
+ {"version":3,"file":"contactsConstants.d.ts","sourceRoot":"","sources":["../../../../../src/internal/app-binder/model/contactsConstants.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,MAAO,CAAC;AACtC,eAAO,MAAM,iBAAiB,KAAO,CAAC;AAEtC,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,IAAO,CAAC;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,KAAO,CAAC;AAC5C,eAAO,MAAM,iBAAiB,IAAO,CAAC;AAEtC,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type CommandResult, type InternalApi, type LoggerPublisherService } from "@ledgerhq/device-management-kit";
2
+ import { type ContactsErrorCodes } from "../../app-binder/model/contactsErrors";
3
+ export type RenameContactProof = {
4
+ readonly hmacProof: Uint8Array;
5
+ };
6
+ export type SendRenameContactTaskArgs = {
7
+ readonly previousContactName: string;
8
+ readonly newContactName: string;
9
+ readonly groupHandle: Uint8Array;
10
+ readonly hmacProof: Uint8Array;
11
+ readonly logger?: LoggerPublisherService;
12
+ };
13
+ export declare class SendRenameContactTask {
14
+ private readonly api;
15
+ private readonly args;
16
+ constructor(api: InternalApi, args: SendRenameContactTaskArgs);
17
+ run(): Promise<CommandResult<RenameContactProof, ContactsErrorCodes>>;
18
+ private buildPayload;
19
+ }
20
+ //# sourceMappingURL=SendRenameContactTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendRenameContactTask.d.ts","sourceRoot":"","sources":["../../../../../src/internal/app-binder/task/SendRenameContactTask.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,WAAW,EAGhB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAYpF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,yBAAyB;IAG5C,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IA6B3E,OAAO,CAAC,YAAY;CA8BrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SendRenameContactTask.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendRenameContactTask.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/app-binder/task/SendRenameContactTask.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { type RenameContactDAReturnType } from "../../api/app-binder/RenameContactDeviceActionTypes";
2
+ import { type RenameContactInput } from "../../api/model/RenameContact";
3
+ import { ContactsAppBinder } from "../app-binder/ContactsAppBinder";
4
+ /**
5
+ * Delegates to `ContactsAppBinder`, which uses its injected `dmk` and
6
+ * `sessionId` to construct and execute the `RenameContactDeviceAction`. The
7
+ * injected `appName` is not used: rename is a dashboard operation served by the
8
+ * device OS, not the embedded app.
9
+ *
10
+ * Caller-input validation is intentionally NOT done here: the public API returns
11
+ * a device action, so validation lives inside the device action and surfaces as
12
+ * a typed terminal error state on the observable rather than a synchronous throw.
13
+ */
14
+ export declare class RenameContactUseCase {
15
+ private readonly appBinder;
16
+ constructor(appBinder: ContactsAppBinder);
17
+ execute(input: RenameContactInput): RenameContactDAReturnType;
18
+ }
19
+ //# sourceMappingURL=RenameContactUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenameContactUseCase.d.ts","sourceRoot":"","sources":["../../../../src/internal/use-cases/RenameContactUseCase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E;;;;;;;;;GASG;AACH,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAG/C,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,yBAAyB;CAG9D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RenameContactUseCase.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenameContactUseCase.test.d.ts","sourceRoot":"","sources":["../../../../src/internal/use-cases/RenameContactUseCase.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useCaseModule.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/di/useCaseModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAM5C,eAAO,MAAM,oBAAoB,uBAK7B,CAAC"}
1
+ {"version":3,"file":"useCaseModule.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/di/useCaseModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAO5C,eAAO,MAAM,oBAAoB,uBAM7B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare const useCaseTypes: {
2
2
  readonly RegisterExternalAddressUseCase: symbol;
3
+ readonly RenameContactUseCase: symbol;
3
4
  };
4
5
  //# sourceMappingURL=useCaseTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCaseTypes.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/di/useCaseTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;CAEf,CAAC"}
1
+ {"version":3,"file":"useCaseTypes.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/di/useCaseTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;CAGf,CAAC"}