@brightchain/brightchain-api-lib 0.2.1 → 0.6.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 (294) hide show
  1. package/package.json +2 -2
  2. package/src/index.d.ts +10 -75
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +11 -78
  5. package/src/index.js.map +1 -1
  6. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts +1 -2
  7. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts.map +1 -1
  8. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js +1 -1
  9. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js.map +1 -1
  10. package/src/lib/application-base.d.ts +7 -6
  11. package/src/lib/application-base.d.ts.map +1 -1
  12. package/src/lib/application-base.js.map +1 -1
  13. package/src/lib/application.d.ts +7 -2
  14. package/src/lib/application.d.ts.map +1 -1
  15. package/src/lib/application.js +30 -0
  16. package/src/lib/application.js.map +1 -1
  17. package/src/lib/controllers/api/blocks.d.ts +246 -0
  18. package/src/lib/controllers/api/blocks.d.ts.map +1 -0
  19. package/src/lib/controllers/api/blocks.js +414 -0
  20. package/src/lib/controllers/api/blocks.js.map +1 -0
  21. package/src/lib/controllers/api/cbl.d.ts +88 -0
  22. package/src/lib/controllers/api/cbl.d.ts.map +1 -0
  23. package/src/lib/controllers/api/cbl.js +222 -0
  24. package/src/lib/controllers/api/cbl.js.map +1 -0
  25. package/src/lib/controllers/api/energy.d.ts +18 -0
  26. package/src/lib/controllers/api/energy.d.ts.map +1 -0
  27. package/src/lib/controllers/api/energy.js +96 -0
  28. package/src/lib/controllers/api/energy.js.map +1 -0
  29. package/src/lib/controllers/api/i18n.d.ts +19 -0
  30. package/src/lib/controllers/api/i18n.d.ts.map +1 -0
  31. package/src/lib/controllers/api/i18n.js +27 -0
  32. package/src/lib/controllers/api/i18n.js.map +1 -0
  33. package/src/lib/controllers/api/index.d.ts +9 -0
  34. package/src/lib/controllers/api/index.d.ts.map +1 -0
  35. package/src/lib/controllers/api/index.js +12 -0
  36. package/src/lib/controllers/api/index.js.map +1 -0
  37. package/src/lib/controllers/api/members.d.ts +19 -0
  38. package/src/lib/controllers/api/members.d.ts.map +1 -0
  39. package/src/lib/controllers/api/members.js +27 -0
  40. package/src/lib/controllers/api/members.js.map +1 -0
  41. package/src/lib/controllers/api/quorum.d.ts +369 -0
  42. package/src/lib/controllers/api/quorum.d.ts.map +1 -0
  43. package/src/lib/controllers/api/quorum.js +592 -0
  44. package/src/lib/controllers/api/quorum.js.map +1 -0
  45. package/src/lib/controllers/api/sessions.d.ts +21 -0
  46. package/src/lib/controllers/api/sessions.d.ts.map +1 -0
  47. package/src/lib/controllers/api/sessions.js +32 -0
  48. package/src/lib/controllers/api/sessions.js.map +1 -0
  49. package/src/lib/controllers/api/user.d.ts +20 -0
  50. package/src/lib/controllers/api/user.d.ts.map +1 -0
  51. package/src/lib/controllers/api/user.js +109 -0
  52. package/src/lib/controllers/api/user.js.map +1 -0
  53. package/src/lib/controllers/base.d.ts +6 -48
  54. package/src/lib/controllers/base.d.ts.map +1 -1
  55. package/src/lib/controllers/base.js +2 -225
  56. package/src/lib/controllers/base.js.map +1 -1
  57. package/src/lib/controllers/index.d.ts +3 -0
  58. package/src/lib/controllers/index.d.ts.map +1 -0
  59. package/src/lib/controllers/index.js +6 -0
  60. package/src/lib/controllers/index.js.map +1 -0
  61. package/src/lib/datastore/block-document-store.d.ts.map +1 -1
  62. package/src/lib/datastore/block-document-store.js +22 -18
  63. package/src/lib/datastore/block-document-store.js.map +1 -1
  64. package/src/lib/datastore/document-store.d.ts +1 -2
  65. package/src/lib/datastore/document-store.d.ts.map +1 -1
  66. package/src/lib/datastore/index.d.ts +6 -0
  67. package/src/lib/datastore/index.d.ts.map +1 -0
  68. package/src/lib/datastore/index.js +8 -0
  69. package/src/lib/datastore/index.js.map +1 -0
  70. package/src/lib/datastore/memory-document-store.d.ts.map +1 -1
  71. package/src/lib/datastore/memory-document-store.js.map +1 -1
  72. package/src/lib/documents/base.d.ts +3 -2
  73. package/src/lib/documents/base.d.ts.map +1 -1
  74. package/src/lib/enumerations/index.d.ts +5 -0
  75. package/src/lib/enumerations/index.d.ts.map +1 -0
  76. package/src/lib/enumerations/index.js +8 -0
  77. package/src/lib/enumerations/index.js.map +1 -0
  78. package/src/lib/enumerations/websocketMessageType.d.ts +44 -0
  79. package/src/lib/enumerations/websocketMessageType.d.ts.map +1 -0
  80. package/src/lib/enumerations/websocketMessageType.js +47 -0
  81. package/src/lib/enumerations/websocketMessageType.js.map +1 -0
  82. package/src/lib/environment.d.ts +4 -2
  83. package/src/lib/environment.d.ts.map +1 -1
  84. package/src/lib/environment.js.map +1 -1
  85. package/src/lib/errors/index.d.ts +20 -0
  86. package/src/lib/errors/index.d.ts.map +1 -0
  87. package/src/lib/errors/index.js +23 -0
  88. package/src/lib/errors/index.js.map +1 -0
  89. package/src/lib/interfaces/application.d.ts +19 -7
  90. package/src/lib/interfaces/application.d.ts.map +1 -1
  91. package/src/lib/interfaces/auth-credentials.d.ts +6 -0
  92. package/src/lib/interfaces/auth-credentials.d.ts.map +1 -0
  93. package/src/lib/interfaces/{server-init-result.js → auth-credentials.js} +1 -1
  94. package/src/lib/interfaces/auth-credentials.js.map +1 -0
  95. package/src/lib/interfaces/auth-token.d.ts +6 -0
  96. package/src/lib/interfaces/auth-token.d.ts.map +1 -0
  97. package/src/lib/interfaces/{ecies-consts.js → auth-token.js} +1 -1
  98. package/src/lib/interfaces/auth-token.js.map +1 -0
  99. package/src/lib/interfaces/backend-objects/index.d.ts +5 -0
  100. package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -0
  101. package/src/lib/interfaces/backend-objects/index.js +8 -0
  102. package/src/lib/interfaces/backend-objects/index.js.map +1 -0
  103. package/src/lib/interfaces/bases/index.d.ts +5 -0
  104. package/src/lib/interfaces/bases/index.d.ts.map +1 -0
  105. package/src/lib/interfaces/bases/index.js +8 -0
  106. package/src/lib/interfaces/bases/index.js.map +1 -0
  107. package/src/lib/interfaces/blockRequest.d.ts +40 -0
  108. package/src/lib/interfaces/blockRequest.d.ts.map +1 -0
  109. package/src/lib/interfaces/{mongo-errors.js → blockRequest.js} +1 -1
  110. package/src/lib/interfaces/blockRequest.js.map +1 -0
  111. package/src/lib/interfaces/blockResponses.d.ts +32 -0
  112. package/src/lib/interfaces/blockResponses.d.ts.map +1 -0
  113. package/src/lib/interfaces/blockResponses.js +3 -0
  114. package/src/lib/interfaces/blockResponses.js.map +1 -0
  115. package/src/lib/interfaces/blockService.d.ts +16 -0
  116. package/src/lib/interfaces/blockService.d.ts.map +1 -0
  117. package/src/lib/interfaces/{pbkdf2-result.js → blockService.js} +1 -1
  118. package/src/lib/interfaces/blockService.js.map +1 -0
  119. package/src/lib/interfaces/blockStore.d.ts +7 -0
  120. package/src/lib/interfaces/blockStore.d.ts.map +1 -0
  121. package/src/lib/interfaces/blockStore.js +3 -0
  122. package/src/lib/interfaces/blockStore.js.map +1 -0
  123. package/src/lib/interfaces/blocksHandlers.d.ts +7 -0
  124. package/src/lib/interfaces/blocksHandlers.d.ts.map +1 -0
  125. package/src/lib/interfaces/blocksHandlers.js +3 -0
  126. package/src/lib/interfaces/blocksHandlers.js.map +1 -0
  127. package/src/lib/interfaces/cblHandlers.d.ts +7 -0
  128. package/src/lib/interfaces/cblHandlers.d.ts.map +1 -0
  129. package/src/lib/interfaces/cblHandlers.js +3 -0
  130. package/src/lib/interfaces/cblHandlers.js.map +1 -0
  131. package/src/lib/interfaces/environment.d.ts +4 -2
  132. package/src/lib/interfaces/environment.d.ts.map +1 -1
  133. package/src/lib/interfaces/index.d.ts +33 -0
  134. package/src/lib/interfaces/index.d.ts.map +1 -0
  135. package/src/lib/interfaces/index.js +36 -0
  136. package/src/lib/interfaces/index.js.map +1 -0
  137. package/src/lib/interfaces/member/index.d.ts +3 -0
  138. package/src/lib/interfaces/member/index.d.ts.map +1 -0
  139. package/src/lib/interfaces/member/index.js +6 -0
  140. package/src/lib/interfaces/member/index.js.map +1 -0
  141. package/src/lib/interfaces/member/operational.d.ts +1 -2
  142. package/src/lib/interfaces/member/operational.d.ts.map +1 -1
  143. package/src/lib/interfaces/membersResponse.d.ts +12 -0
  144. package/src/lib/interfaces/membersResponse.d.ts.map +1 -0
  145. package/src/lib/interfaces/membersResponse.js +3 -0
  146. package/src/lib/interfaces/membersResponse.js.map +1 -0
  147. package/src/lib/interfaces/responses/index.d.ts +0 -1
  148. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  149. package/src/lib/interfaces/token-payload.d.ts +9 -0
  150. package/src/lib/interfaces/token-payload.d.ts.map +1 -0
  151. package/src/lib/interfaces/token-payload.js +3 -0
  152. package/src/lib/interfaces/token-payload.js.map +1 -0
  153. package/src/lib/interfaces/websocketMessages.d.ts +222 -0
  154. package/src/lib/interfaces/websocketMessages.d.ts.map +1 -0
  155. package/src/lib/interfaces/websocketMessages.js +6 -0
  156. package/src/lib/interfaces/websocketMessages.js.map +1 -0
  157. package/src/lib/routers/api.d.ts +9 -4
  158. package/src/lib/routers/api.d.ts.map +1 -1
  159. package/src/lib/routers/api.js +18 -6
  160. package/src/lib/routers/api.js.map +1 -1
  161. package/src/lib/routers/app.d.ts +3 -2
  162. package/src/lib/routers/app.d.ts.map +1 -1
  163. package/src/lib/routers/app.js +5 -4
  164. package/src/lib/routers/app.js.map +1 -1
  165. package/src/lib/routers/base.d.ts +6 -4
  166. package/src/lib/routers/base.d.ts.map +1 -1
  167. package/src/lib/routers/base.js.map +1 -1
  168. package/src/lib/routers/index.d.ts +5 -0
  169. package/src/lib/routers/index.d.ts.map +1 -0
  170. package/src/lib/routers/index.js +8 -0
  171. package/src/lib/routers/index.js.map +1 -0
  172. package/src/lib/services/auth.d.ts +23 -0
  173. package/src/lib/services/auth.d.ts.map +1 -0
  174. package/src/lib/services/auth.js +93 -0
  175. package/src/lib/services/auth.js.map +1 -0
  176. package/src/lib/services/base.d.ts +12 -0
  177. package/src/lib/services/base.d.ts.map +1 -0
  178. package/src/lib/services/base.js +15 -0
  179. package/src/lib/services/base.js.map +1 -0
  180. package/src/lib/services/blockServiceFactory.d.ts +29 -0
  181. package/src/lib/services/blockServiceFactory.d.ts.map +1 -0
  182. package/src/lib/services/blockServiceFactory.js +42 -0
  183. package/src/lib/services/blockServiceFactory.js.map +1 -0
  184. package/src/lib/services/blockStore.d.ts +52 -0
  185. package/src/lib/services/blockStore.d.ts.map +1 -0
  186. package/src/lib/services/blockStore.js +105 -0
  187. package/src/lib/services/blockStore.js.map +1 -0
  188. package/src/lib/services/blocks.d.ts +26 -0
  189. package/src/lib/services/blocks.d.ts.map +1 -0
  190. package/src/lib/services/blocks.js +35 -0
  191. package/src/lib/services/blocks.js.map +1 -0
  192. package/src/lib/services/diskQuorumService.d.ts.map +1 -1
  193. package/src/lib/services/diskQuorumService.js.map +1 -1
  194. package/src/lib/services/email.d.ts +4 -3
  195. package/src/lib/services/email.d.ts.map +1 -1
  196. package/src/lib/services/email.js +4 -3
  197. package/src/lib/services/email.js.map +1 -1
  198. package/src/lib/services/index.d.ts +21 -0
  199. package/src/lib/services/index.d.ts.map +1 -0
  200. package/src/lib/services/index.js +26 -0
  201. package/src/lib/services/index.js.map +1 -0
  202. package/src/lib/services/messagePassingService.d.ts.map +1 -1
  203. package/src/lib/services/messagePassingService.js +1 -1
  204. package/src/lib/services/messagePassingService.js.map +1 -1
  205. package/src/lib/services/quorum.d.ts +44 -0
  206. package/src/lib/services/quorum.d.ts.map +1 -0
  207. package/src/lib/services/quorum.js +83 -0
  208. package/src/lib/services/quorum.js.map +1 -0
  209. package/src/lib/services/requestUser.d.ts +18 -0
  210. package/src/lib/services/requestUser.d.ts.map +1 -0
  211. package/src/lib/services/requestUser.js +22 -0
  212. package/src/lib/services/requestUser.js.map +1 -0
  213. package/src/lib/services/role.d.ts +19 -0
  214. package/src/lib/services/role.d.ts.map +1 -0
  215. package/src/lib/services/role.js +18 -0
  216. package/src/lib/services/role.js.map +1 -0
  217. package/src/lib/services/websocketHandler.d.ts +95 -0
  218. package/src/lib/services/websocketHandler.d.ts.map +1 -0
  219. package/src/lib/services/websocketHandler.js +269 -0
  220. package/src/lib/services/websocketHandler.js.map +1 -0
  221. package/src/lib/shared-types.d.ts +2 -1
  222. package/src/lib/shared-types.d.ts.map +1 -1
  223. package/src/lib/stores/availabilityAwareBlockStore.d.ts +45 -1
  224. package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -1
  225. package/src/lib/stores/availabilityAwareBlockStore.js +109 -0
  226. package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -1
  227. package/src/lib/stores/diskBlockAsyncStore.d.ts +82 -4
  228. package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
  229. package/src/lib/stores/diskBlockAsyncStore.js +403 -64
  230. package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
  231. package/src/lib/stores/diskBlockMetadataStore.d.ts +1 -1
  232. package/src/lib/stores/diskBlockMetadataStore.d.ts.map +1 -1
  233. package/src/lib/stores/diskBlockMetadataStore.js +1 -1
  234. package/src/lib/stores/diskBlockMetadataStore.js.map +1 -1
  235. package/src/lib/stores/diskBlockStore.d.ts +5 -4
  236. package/src/lib/stores/diskBlockStore.d.ts.map +1 -1
  237. package/src/lib/stores/diskBlockStore.js +9 -8
  238. package/src/lib/stores/diskBlockStore.js.map +1 -1
  239. package/src/lib/stores/diskBlockSyncStore.d.ts.map +1 -1
  240. package/src/lib/stores/diskBlockSyncStore.js +23 -23
  241. package/src/lib/stores/diskBlockSyncStore.js.map +1 -1
  242. package/src/lib/transforms/index.d.ts +4 -0
  243. package/src/lib/transforms/index.d.ts.map +1 -0
  244. package/src/lib/transforms/index.js +7 -0
  245. package/src/lib/transforms/index.js.map +1 -0
  246. package/src/lib/utils/errorResponse.d.ts +180 -0
  247. package/src/lib/utils/errorResponse.d.ts.map +1 -0
  248. package/src/lib/utils/errorResponse.js +313 -0
  249. package/src/lib/utils/errorResponse.js.map +1 -0
  250. package/src/lib/controllers/user.d.ts +0 -9
  251. package/src/lib/controllers/user.d.ts.map +0 -1
  252. package/src/lib/controllers/user.js +0 -21
  253. package/src/lib/controllers/user.js.map +0 -1
  254. package/src/lib/interfaces/api-express-validation-error-response.d.ts +0 -7
  255. package/src/lib/interfaces/api-express-validation-error-response.d.ts.map +0 -1
  256. package/src/lib/interfaces/api-express-validation-error-response.js +0 -3
  257. package/src/lib/interfaces/api-express-validation-error-response.js.map +0 -1
  258. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts +0 -6
  259. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  260. package/src/lib/interfaces/api-mongo-validation-error-response.js +0 -3
  261. package/src/lib/interfaces/api-mongo-validation-error-response.js.map +0 -1
  262. package/src/lib/interfaces/authenticated-cipher.d.ts +0 -10
  263. package/src/lib/interfaces/authenticated-cipher.d.ts.map +0 -1
  264. package/src/lib/interfaces/authenticated-cipher.js +0 -3
  265. package/src/lib/interfaces/authenticated-cipher.js.map +0 -1
  266. package/src/lib/interfaces/authenticated-decipher.d.ts +0 -9
  267. package/src/lib/interfaces/authenticated-decipher.d.ts.map +0 -1
  268. package/src/lib/interfaces/authenticated-decipher.js +0 -3
  269. package/src/lib/interfaces/authenticated-decipher.js.map +0 -1
  270. package/src/lib/interfaces/ecies-consts.d.ts +0 -88
  271. package/src/lib/interfaces/ecies-consts.d.ts.map +0 -1
  272. package/src/lib/interfaces/ecies-consts.js.map +0 -1
  273. package/src/lib/interfaces/mongo-errors.d.ts +0 -9
  274. package/src/lib/interfaces/mongo-errors.d.ts.map +0 -1
  275. package/src/lib/interfaces/mongo-errors.js.map +0 -1
  276. package/src/lib/interfaces/pbkdf2-result.d.ts +0 -6
  277. package/src/lib/interfaces/pbkdf2-result.d.ts.map +0 -1
  278. package/src/lib/interfaces/pbkdf2-result.js.map +0 -1
  279. package/src/lib/interfaces/server-init-result.d.ts +0 -34
  280. package/src/lib/interfaces/server-init-result.d.ts.map +0 -1
  281. package/src/lib/interfaces/server-init-result.js.map +0 -1
  282. package/src/lib/services/keyWrapping.d.ts +0 -61
  283. package/src/lib/services/keyWrapping.d.ts.map +0 -1
  284. package/src/lib/services/keyWrapping.js +0 -297
  285. package/src/lib/services/keyWrapping.js.map +0 -1
  286. package/src/lib/services/pbkdf2.d.ts +0 -6
  287. package/src/lib/services/pbkdf2.d.ts.map +0 -1
  288. package/src/lib/services/pbkdf2.js +0 -31
  289. package/src/lib/services/pbkdf2.js.map +0 -1
  290. package/src/lib/services/user.d.ts +0 -10
  291. package/src/lib/services/user.d.ts.map +0 -1
  292. package/src/lib/services/user.js +0 -11
  293. package/src/lib/services/user.js.map +0 -1
  294. /package/{README.md → brightchain-api-lib/README.md} +0 -0
@@ -0,0 +1,369 @@
1
+ import { CanUnlockResult, QuorumDocumentInfo, QuorumMemberMetadata } from '@brightchain/brightchain-lib';
2
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
3
+ import { PlatformID } from '@digitaldefiance/node-ecies-lib';
4
+ import { ApiErrorResponse, ApiRequestHandler, IApiMessageResponse, TypedHandlers } from '@digitaldefiance/node-express-suite';
5
+ import { IBrightChainApplication } from '../../interfaces/application';
6
+ import { DefaultBackendIdType } from '../../shared-types';
7
+ import { BaseController } from '../base';
8
+ /**
9
+ * Error codes for quorum API operations
10
+ * @deprecated Use ErrorCode from '../../utils/errorResponse' instead
11
+ */
12
+ export declare enum QuorumErrorCode {
13
+ MEMBER_NOT_FOUND = "MEMBER_NOT_FOUND",
14
+ DOCUMENT_NOT_FOUND = "DOCUMENT_NOT_FOUND",
15
+ INSUFFICIENT_SHARES = "INSUFFICIENT_SHARES",
16
+ SHARE_DECRYPTION_FAILED = "SHARE_DECRYPTION_FAILED",
17
+ INVALID_MEMBER_COUNT = "INVALID_MEMBER_COUNT",
18
+ INVALID_THRESHOLD = "INVALID_THRESHOLD",
19
+ VALIDATION_ERROR = "VALIDATION_ERROR",
20
+ UNAUTHORIZED = "UNAUTHORIZED",
21
+ INTERNAL_ERROR = "INTERNAL_ERROR"
22
+ }
23
+ interface AddMemberResponse extends IApiMessageResponse {
24
+ member: SerializedQuorumMember;
25
+ mnemonic: string;
26
+ [key: string]: any;
27
+ }
28
+ interface ListMembersResponse extends IApiMessageResponse {
29
+ members: SerializedQuorumMember[];
30
+ [key: string]: any;
31
+ }
32
+ interface RemoveMemberResponse extends IApiMessageResponse {
33
+ success: boolean;
34
+ memberId: string;
35
+ [key: string]: any;
36
+ }
37
+ interface SealDocumentResponse extends IApiMessageResponse {
38
+ documentId: string;
39
+ memberIds: string[];
40
+ sharesRequired: number;
41
+ createdAt: string;
42
+ [key: string]: any;
43
+ }
44
+ interface UnsealDocumentResponse extends IApiMessageResponse {
45
+ document: unknown;
46
+ [key: string]: any;
47
+ }
48
+ interface GetDocumentResponse extends IApiMessageResponse {
49
+ document: QuorumDocumentInfo;
50
+ [key: string]: any;
51
+ }
52
+ interface CanUnlockResponse extends IApiMessageResponse, CanUnlockResult {
53
+ [key: string]: any;
54
+ }
55
+ /**
56
+ * Serialized quorum member for API responses
57
+ */
58
+ interface SerializedQuorumMember {
59
+ id: string;
60
+ publicKey: string;
61
+ metadata: QuorumMemberMetadata;
62
+ isActive: boolean;
63
+ createdAt: string;
64
+ updatedAt: string;
65
+ }
66
+ type QuorumApiResponse = AddMemberResponse | ListMembersResponse | RemoveMemberResponse | SealDocumentResponse | UnsealDocumentResponse | GetDocumentResponse | CanUnlockResponse | ApiErrorResponse;
67
+ interface QuorumHandlers extends TypedHandlers {
68
+ addMember: ApiRequestHandler<AddMemberResponse | ApiErrorResponse>;
69
+ listMembers: ApiRequestHandler<ListMembersResponse | ApiErrorResponse>;
70
+ removeMember: ApiRequestHandler<RemoveMemberResponse | ApiErrorResponse>;
71
+ sealDocument: ApiRequestHandler<SealDocumentResponse | ApiErrorResponse>;
72
+ unsealDocument: ApiRequestHandler<UnsealDocumentResponse | ApiErrorResponse>;
73
+ getDocument: ApiRequestHandler<GetDocumentResponse | ApiErrorResponse>;
74
+ canUnlock: ApiRequestHandler<CanUnlockResponse | ApiErrorResponse>;
75
+ }
76
+ /**
77
+ * Controller for quorum operations including member management
78
+ * and document sealing/unsealing.
79
+ *
80
+ * Provides REST API endpoints for managing quorum members and performing
81
+ * secure multi-party document operations using Shamir's Secret Sharing.
82
+ *
83
+ * ## Endpoints
84
+ *
85
+ * ### Member Management
86
+ *
87
+ * #### POST /api/quorum/members
88
+ * Add a new member to the quorum with generated cryptographic keys.
89
+ *
90
+ * **Request Body:**
91
+ * - `name` (string, required): Member's display name
92
+ * - `email` (string, optional): Member's email address
93
+ * - `role` (string, optional): Member's role in the quorum
94
+ *
95
+ * **Response:** Member details and mnemonic for key recovery
96
+ *
97
+ * #### GET /api/quorum/members
98
+ * List all active quorum members.
99
+ *
100
+ * **Response:** Array of member objects with public keys and metadata
101
+ *
102
+ * #### DELETE /api/quorum/members/:memberId
103
+ * Remove a member from the quorum (deactivate).
104
+ *
105
+ * **Parameters:**
106
+ * - `memberId` (string, required): Member's unique identifier
107
+ *
108
+ * **Response:** Success confirmation
109
+ *
110
+ * ### Document Operations
111
+ *
112
+ * #### POST /api/quorum/documents/seal
113
+ * Seal a document using Shamir's Secret Sharing.
114
+ *
115
+ * **Request Body:**
116
+ * - `document` (any, required): Document to seal (JSON-serializable)
117
+ * - `memberIds` (string[], required): Array of member IDs (minimum 2)
118
+ * - `sharesRequired` (number, optional): Threshold for unsealing (default: all members)
119
+ *
120
+ * **Response:** Document ID and sealing metadata
121
+ *
122
+ * #### POST /api/quorum/documents/:documentId/unseal
123
+ * Unseal a document using member shares.
124
+ *
125
+ * **Parameters:**
126
+ * - `documentId` (string, required): Document's unique identifier
127
+ *
128
+ * **Request Body:**
129
+ * - `memberIds` (string[], required): Array of member IDs providing shares
130
+ *
131
+ * **Response:** Original document content
132
+ *
133
+ * #### GET /api/quorum/documents/:documentId
134
+ * Get metadata for a sealed document.
135
+ *
136
+ * **Parameters:**
137
+ * - `documentId` (string, required): Document's unique identifier
138
+ *
139
+ * **Response:** Document metadata (member IDs, threshold, creation date)
140
+ *
141
+ * #### GET /api/quorum/documents/:documentId/can-unlock
142
+ * Check if a set of members can unlock a document.
143
+ *
144
+ * **Parameters:**
145
+ * - `documentId` (string, required): Document's unique identifier
146
+ *
147
+ * **Query Parameters:**
148
+ * - `memberIds` (string, required): Comma-separated list of member IDs
149
+ *
150
+ * **Response:** Unlock status and share count information
151
+ *
152
+ * @requirements 7.1, 7.2, 7.3, 7.4, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 10.1, 10.2, 10.3, 10.4, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 12.7
153
+ */
154
+ export declare class QuorumController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, QuorumApiResponse, QuorumHandlers, CoreLanguageCode> {
155
+ private quorumServiceWrapper;
156
+ constructor(application: IBrightChainApplication<TID>);
157
+ protected initRouteDefinitions(): void;
158
+ /**
159
+ * POST /api/quorum/members
160
+ * Add a new member to the quorum with generated cryptographic keys.
161
+ *
162
+ * Creates a new member with ECIES key pair and adds them to the quorum.
163
+ * The mnemonic phrase is returned for key recovery - it should be stored
164
+ * securely by the user as it cannot be retrieved later.
165
+ *
166
+ * @param req - Request containing member name and optional metadata
167
+ * @returns Member details and mnemonic on success
168
+ *
169
+ * @example
170
+ * ```json
171
+ * // Request
172
+ * POST /api/quorum/members
173
+ * {
174
+ * "name": "Alice",
175
+ * "email": "alice@example.com",
176
+ * "role": "admin"
177
+ * }
178
+ *
179
+ * // Response
180
+ * {
181
+ * "message": "Member added successfully",
182
+ * "member": {
183
+ * "id": "abc123...",
184
+ * "publicKey": "04...",
185
+ * "metadata": { "name": "Alice", "email": "alice@example.com", "role": "admin" },
186
+ * "isActive": true,
187
+ * "createdAt": "2025-01-16T10:00:00Z",
188
+ * "updatedAt": "2025-01-16T10:00:00Z"
189
+ * },
190
+ * "mnemonic": "word1 word2 word3..."
191
+ * }
192
+ * ```
193
+ */
194
+ private handleAddMember;
195
+ /**
196
+ * GET /api/quorum/members
197
+ * List all active quorum members.
198
+ *
199
+ * Returns all members that are currently active in the quorum.
200
+ * Inactive (removed) members are not included in the response.
201
+ *
202
+ * @param _req - Request (no parameters required)
203
+ * @returns Array of member objects on success
204
+ *
205
+ * @example
206
+ * ```json
207
+ * // Request
208
+ * GET /api/quorum/members
209
+ *
210
+ * // Response
211
+ * {
212
+ * "message": "Members retrieved successfully",
213
+ * "members": [
214
+ * {
215
+ * "id": "abc123...",
216
+ * "publicKey": "04...",
217
+ * "metadata": { "name": "Alice", "role": "admin" },
218
+ * "isActive": true,
219
+ * "createdAt": "2025-01-16T10:00:00Z",
220
+ * "updatedAt": "2025-01-16T10:00:00Z"
221
+ * }
222
+ * ]
223
+ * }
224
+ * ```
225
+ */
226
+ private handleListMembers;
227
+ /**
228
+ * DELETE /api/quorum/members/:memberId
229
+ * Remove a member from the quorum (deactivate).
230
+ *
231
+ * Marks the member as inactive. The member's access to existing documents
232
+ * they are part of is preserved, but they cannot be added to new documents.
233
+ *
234
+ * @param req - Request containing the member ID parameter
235
+ * @returns Success confirmation on success, or 404 if not found
236
+ *
237
+ * @example
238
+ * ```json
239
+ * // Request
240
+ * DELETE /api/quorum/members/abc123...
241
+ *
242
+ * // Response
243
+ * {
244
+ * "message": "Member removed successfully",
245
+ * "success": true,
246
+ * "memberId": "abc123..."
247
+ * }
248
+ * ```
249
+ */
250
+ private handleRemoveMember;
251
+ /**
252
+ * POST /api/quorum/documents/seal
253
+ * Seal a document using Shamir's Secret Sharing.
254
+ *
255
+ * Encrypts the document with a randomly generated symmetric key, then splits
256
+ * the key into shares using Shamir's Secret Sharing. Each share is encrypted
257
+ * with the corresponding member's public key.
258
+ *
259
+ * @param req - Request containing document, member IDs, and optional threshold
260
+ * @returns Document ID and sealing metadata on success
261
+ *
262
+ * @example
263
+ * ```json
264
+ * // Request
265
+ * POST /api/quorum/documents/seal
266
+ * {
267
+ * "document": { "secret": "data", "value": 42 },
268
+ * "memberIds": ["member1...", "member2...", "member3..."],
269
+ * "sharesRequired": 2
270
+ * }
271
+ *
272
+ * // Response
273
+ * {
274
+ * "message": "Document sealed successfully",
275
+ * "documentId": "doc123...",
276
+ * "memberIds": ["member1...", "member2...", "member3..."],
277
+ * "sharesRequired": 2,
278
+ * "createdAt": "2025-01-16T10:00:00Z"
279
+ * }
280
+ * ```
281
+ */
282
+ private handleSealDocument;
283
+ /**
284
+ * POST /api/quorum/documents/:documentId/unseal
285
+ * Unseal a document using member shares.
286
+ *
287
+ * Combines the provided member shares to reconstruct the symmetric key,
288
+ * then decrypts and returns the original document.
289
+ *
290
+ * Note: This endpoint requires members to have their private keys loaded,
291
+ * which is not yet fully implemented. Currently returns 501 Not Implemented.
292
+ *
293
+ * @param req - Request containing document ID and member IDs
294
+ * @returns Original document on success
295
+ *
296
+ * @example
297
+ * ```json
298
+ * // Request
299
+ * POST /api/quorum/documents/doc123.../unseal
300
+ * {
301
+ * "memberIds": ["member1...", "member2..."]
302
+ * }
303
+ *
304
+ * // Response (when implemented)
305
+ * {
306
+ * "message": "Document unsealed successfully",
307
+ * "document": { "secret": "data", "value": 42 }
308
+ * }
309
+ * ```
310
+ */
311
+ private handleUnsealDocument;
312
+ /**
313
+ * GET /api/quorum/documents/:documentId
314
+ * Get metadata for a sealed document.
315
+ *
316
+ * Returns information about the document including which members have access
317
+ * and how many shares are required to unseal it.
318
+ *
319
+ * @param req - Request containing the document ID parameter
320
+ * @returns Document metadata on success, or 404 if not found
321
+ *
322
+ * @example
323
+ * ```json
324
+ * // Request
325
+ * GET /api/quorum/documents/doc123...
326
+ *
327
+ * // Response
328
+ * {
329
+ * "message": "Document retrieved successfully",
330
+ * "document": {
331
+ * "id": "doc123...",
332
+ * "memberIds": ["member1...", "member2...", "member3..."],
333
+ * "sharesRequired": 2,
334
+ * "createdAt": "2025-01-16T10:00:00Z",
335
+ * "creatorId": "creator..."
336
+ * }
337
+ * }
338
+ * ```
339
+ */
340
+ private handleGetDocument;
341
+ /**
342
+ * GET /api/quorum/documents/:documentId/can-unlock
343
+ * Check if a set of members can unlock a document.
344
+ *
345
+ * Determines whether the provided members have enough shares to meet
346
+ * the threshold required to unseal the document.
347
+ *
348
+ * @param req - Request containing document ID and member IDs query parameter
349
+ * @returns Unlock status and share count information
350
+ *
351
+ * @example
352
+ * ```json
353
+ * // Request
354
+ * GET /api/quorum/documents/doc123.../can-unlock?memberIds=member1,member2
355
+ *
356
+ * // Response
357
+ * {
358
+ * "message": "Can-unlock check completed",
359
+ * "canUnlock": true,
360
+ * "sharesProvided": 2,
361
+ * "sharesRequired": 2,
362
+ * "missingMembers": ["member3..."]
363
+ * }
364
+ * ```
365
+ */
366
+ private handleCanUnlock;
367
+ }
368
+ export {};
369
+ //# sourceMappingURL=quorum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quorum.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"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"}