@digitaldefiance/node-ecies-lib 4.8.1 → 4.10.6

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 (267) hide show
  1. package/package.json +10 -5
  2. package/src/builders/member-builder.d.ts +1 -1
  3. package/src/builders/member-builder.d.ts.map +1 -1
  4. package/src/builders/member-builder.js +3 -1
  5. package/src/builders/member-builder.js.map +1 -1
  6. package/src/constants.d.ts.map +1 -1
  7. package/src/constants.js +31 -25
  8. package/src/constants.js.map +1 -1
  9. package/src/interfaces/index.d.ts +1 -2
  10. package/src/interfaces/index.d.ts.map +1 -1
  11. package/src/interfaces/index.js +6 -3
  12. package/src/interfaces/index.js.map +1 -1
  13. package/src/interfaces/member-with-mnemonic.d.ts +3 -2
  14. package/src/interfaces/member-with-mnemonic.d.ts.map +1 -1
  15. package/src/interfaces/member.d.ts +30 -12
  16. package/src/interfaces/member.d.ts.map +1 -1
  17. package/src/interfaces/multi-encrypted-message.d.ts +2 -1
  18. package/src/interfaces/multi-encrypted-message.d.ts.map +1 -1
  19. package/src/interfaces/multi-encrypted-parsed-header.d.ts +3 -2
  20. package/src/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -1
  21. package/src/interfaces/platform-buffer.d.ts +9 -0
  22. package/src/interfaces/platform-buffer.d.ts.map +1 -0
  23. package/src/interfaces/platform-buffer.js +3 -0
  24. package/src/interfaces/platform-buffer.js.map +1 -0
  25. package/src/interfaces/platform-id.d.ts +2 -2
  26. package/src/interfaces/platform-id.d.ts.map +1 -1
  27. package/src/interfaces/voting-poll.d.ts +32 -31
  28. package/src/interfaces/voting-poll.d.ts.map +1 -1
  29. package/src/interfaces/voting-poll.js.map +1 -1
  30. package/src/lib/id-providers/buffer-provider.d.ts +54 -0
  31. package/src/lib/id-providers/buffer-provider.d.ts.map +1 -0
  32. package/src/lib/id-providers/buffer-provider.js +93 -0
  33. package/src/lib/id-providers/buffer-provider.js.map +1 -0
  34. package/src/lib/index.d.ts +1 -0
  35. package/src/lib/index.d.ts.map +1 -1
  36. package/src/lib/index.js +1 -0
  37. package/src/lib/index.js.map +1 -1
  38. package/src/lib/voting/audit.d.ts +39 -48
  39. package/src/lib/voting/audit.d.ts.map +1 -1
  40. package/src/lib/voting/audit.js +103 -111
  41. package/src/lib/voting/audit.js.map +1 -1
  42. package/src/lib/voting/bulletin-board.d.ts +47 -80
  43. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  44. package/src/lib/voting/bulletin-board.js +95 -226
  45. package/src/lib/voting/bulletin-board.js.map +1 -1
  46. package/src/lib/voting/encoder.d.ts +7 -15
  47. package/src/lib/voting/encoder.d.ts.map +1 -1
  48. package/src/lib/voting/encoder.js +11 -107
  49. package/src/lib/voting/encoder.js.map +1 -1
  50. package/src/lib/voting/enumerations/index.d.ts +6 -0
  51. package/src/lib/voting/enumerations/index.d.ts.map +1 -0
  52. package/src/lib/voting/enumerations/index.js +14 -0
  53. package/src/lib/voting/enumerations/index.js.map +1 -0
  54. package/src/lib/voting/event-logger.d.ts +13 -74
  55. package/src/lib/voting/event-logger.d.ts.map +1 -1
  56. package/src/lib/voting/event-logger.js +19 -140
  57. package/src/lib/voting/event-logger.js.map +1 -1
  58. package/src/lib/voting/examples.d.ts +112 -0
  59. package/src/lib/voting/examples.d.ts.map +1 -0
  60. package/src/lib/voting/examples.js +386 -0
  61. package/src/lib/voting/examples.js.map +1 -0
  62. package/src/lib/voting/factory.d.ts +38 -9
  63. package/src/lib/voting/factory.d.ts.map +1 -1
  64. package/src/lib/voting/factory.js +42 -8
  65. package/src/lib/voting/factory.js.map +1 -1
  66. package/src/lib/voting/hierarchical-aggregator.d.ts +44 -0
  67. package/src/lib/voting/hierarchical-aggregator.d.ts.map +1 -0
  68. package/src/lib/voting/hierarchical-aggregator.js +56 -0
  69. package/src/lib/voting/hierarchical-aggregator.js.map +1 -0
  70. package/src/lib/voting/index.d.ts +43 -7
  71. package/src/lib/voting/index.d.ts.map +1 -1
  72. package/src/lib/voting/index.js +53 -10
  73. package/src/lib/voting/index.js.map +1 -1
  74. package/src/lib/voting/interfaces/aggregated-tally.d.ts +10 -0
  75. package/src/lib/voting/interfaces/aggregated-tally.d.ts.map +1 -0
  76. package/src/lib/voting/interfaces/aggregated-tally.js +3 -0
  77. package/src/lib/voting/interfaces/aggregated-tally.js.map +1 -0
  78. package/src/lib/voting/interfaces/audit-entry.d.ts +10 -0
  79. package/src/lib/voting/interfaces/audit-entry.d.ts.map +1 -0
  80. package/src/lib/voting/interfaces/audit-entry.js +3 -0
  81. package/src/lib/voting/interfaces/audit-entry.js.map +1 -0
  82. package/src/lib/voting/interfaces/audit-log.d.ts +10 -0
  83. package/src/lib/voting/interfaces/audit-log.d.ts.map +1 -0
  84. package/src/lib/voting/interfaces/audit-log.js +3 -0
  85. package/src/lib/voting/interfaces/audit-log.js.map +1 -0
  86. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts +10 -0
  87. package/src/lib/voting/interfaces/bulletin-board-entry.d.ts.map +1 -0
  88. package/src/lib/voting/interfaces/bulletin-board-entry.js +3 -0
  89. package/src/lib/voting/interfaces/bulletin-board-entry.js.map +1 -0
  90. package/src/lib/voting/interfaces/bulletin-board.d.ts +10 -0
  91. package/src/lib/voting/interfaces/bulletin-board.d.ts.map +1 -0
  92. package/src/lib/voting/interfaces/bulletin-board.js +3 -0
  93. package/src/lib/voting/interfaces/bulletin-board.js.map +1 -0
  94. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts +10 -0
  95. package/src/lib/voting/interfaces/checkpoint-manager-extended.d.ts.map +1 -0
  96. package/src/lib/voting/interfaces/checkpoint-manager-extended.js +3 -0
  97. package/src/lib/voting/interfaces/checkpoint-manager-extended.js.map +1 -0
  98. package/src/lib/voting/interfaces/checkpoint-manager.d.ts +9 -0
  99. package/src/lib/voting/interfaces/checkpoint-manager.d.ts.map +1 -0
  100. package/src/lib/voting/interfaces/checkpoint-manager.js +3 -0
  101. package/src/lib/voting/interfaces/checkpoint-manager.js.map +1 -0
  102. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts +8 -0
  103. package/src/lib/voting/interfaces/checkpoint-metadata.d.ts.map +1 -0
  104. package/src/lib/voting/interfaces/checkpoint-metadata.js +3 -0
  105. package/src/lib/voting/interfaces/checkpoint-metadata.js.map +1 -0
  106. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts +8 -0
  107. package/src/lib/voting/interfaces/ecies-service-with-voting.d.ts.map +1 -0
  108. package/src/lib/voting/interfaces/ecies-service-with-voting.js +3 -0
  109. package/src/lib/voting/interfaces/ecies-service-with-voting.js.map +1 -0
  110. package/src/lib/voting/interfaces/encrypted-vote.d.ts +10 -0
  111. package/src/lib/voting/interfaces/encrypted-vote.d.ts.map +1 -0
  112. package/src/lib/voting/interfaces/encrypted-vote.js +3 -0
  113. package/src/lib/voting/interfaces/encrypted-vote.js.map +1 -0
  114. package/src/lib/voting/interfaces/event-log-entry.d.ts +10 -0
  115. package/src/lib/voting/interfaces/event-log-entry.d.ts.map +1 -0
  116. package/src/lib/voting/interfaces/event-log-entry.js +3 -0
  117. package/src/lib/voting/interfaces/event-log-entry.js.map +1 -0
  118. package/src/lib/voting/interfaces/event-logger.d.ts +10 -0
  119. package/src/lib/voting/interfaces/event-logger.d.ts.map +1 -0
  120. package/src/lib/voting/interfaces/event-logger.js +3 -0
  121. package/src/lib/voting/interfaces/event-logger.js.map +1 -0
  122. package/src/lib/voting/interfaces/index.d.ts +37 -0
  123. package/src/lib/voting/interfaces/index.d.ts.map +1 -0
  124. package/src/lib/voting/interfaces/index.js +9 -0
  125. package/src/lib/voting/interfaces/index.js.map +1 -0
  126. package/src/lib/voting/interfaces/jurisdiction-config.d.ts +10 -0
  127. package/src/lib/voting/interfaces/jurisdiction-config.d.ts.map +1 -0
  128. package/src/lib/voting/interfaces/jurisdiction-config.js +3 -0
  129. package/src/lib/voting/interfaces/jurisdiction-config.js.map +1 -0
  130. package/src/lib/voting/interfaces/plaintext-vote.d.ts +10 -0
  131. package/src/lib/voting/interfaces/plaintext-vote.d.ts.map +1 -0
  132. package/src/lib/voting/interfaces/plaintext-vote.js +3 -0
  133. package/src/lib/voting/interfaces/plaintext-vote.js.map +1 -0
  134. package/src/lib/voting/interfaces/poll-configuration.d.ts +8 -0
  135. package/src/lib/voting/interfaces/poll-configuration.d.ts.map +1 -0
  136. package/src/lib/voting/interfaces/poll-configuration.js +3 -0
  137. package/src/lib/voting/interfaces/poll-configuration.js.map +1 -0
  138. package/src/lib/voting/interfaces/poll-results.d.ts +8 -0
  139. package/src/lib/voting/interfaces/poll-results.d.ts.map +1 -0
  140. package/src/lib/voting/interfaces/poll-results.js +3 -0
  141. package/src/lib/voting/interfaces/poll-results.js.map +1 -0
  142. package/src/lib/voting/interfaces/poll-tallier.d.ts +10 -0
  143. package/src/lib/voting/interfaces/poll-tallier.d.ts.map +1 -0
  144. package/src/lib/voting/interfaces/poll-tallier.js +3 -0
  145. package/src/lib/voting/interfaces/poll-tallier.js.map +1 -0
  146. package/src/lib/voting/interfaces/poll.d.ts +10 -0
  147. package/src/lib/voting/interfaces/poll.d.ts.map +1 -0
  148. package/src/lib/voting/interfaces/poll.js +3 -0
  149. package/src/lib/voting/interfaces/poll.js.map +1 -0
  150. package/src/lib/voting/interfaces/round-result.d.ts +8 -0
  151. package/src/lib/voting/interfaces/round-result.d.ts.map +1 -0
  152. package/src/lib/voting/interfaces/round-result.js +3 -0
  153. package/src/lib/voting/interfaces/round-result.js.map +1 -0
  154. package/src/lib/voting/interfaces/state-snapshot.d.ts +15 -0
  155. package/src/lib/voting/interfaces/state-snapshot.d.ts.map +1 -0
  156. package/src/lib/voting/interfaces/state-snapshot.js +3 -0
  157. package/src/lib/voting/interfaces/state-snapshot.js.map +1 -0
  158. package/src/lib/voting/interfaces/supermajority-config.d.ts +8 -0
  159. package/src/lib/voting/interfaces/supermajority-config.d.ts.map +1 -0
  160. package/src/lib/voting/interfaces/supermajority-config.js +3 -0
  161. package/src/lib/voting/interfaces/supermajority-config.js.map +1 -0
  162. package/src/lib/voting/interfaces/tally-proof.d.ts +10 -0
  163. package/src/lib/voting/interfaces/tally-proof.d.ts.map +1 -0
  164. package/src/lib/voting/interfaces/tally-proof.js +3 -0
  165. package/src/lib/voting/interfaces/tally-proof.js.map +1 -0
  166. package/src/lib/voting/interfaces/vote-encoder.d.ts +10 -0
  167. package/src/lib/voting/interfaces/vote-encoder.d.ts.map +1 -0
  168. package/src/lib/voting/interfaces/vote-encoder.js +3 -0
  169. package/src/lib/voting/interfaces/vote-encoder.js.map +1 -0
  170. package/src/lib/voting/interfaces/vote-logger-extended.d.ts +10 -0
  171. package/src/lib/voting/interfaces/vote-logger-extended.d.ts.map +1 -0
  172. package/src/lib/voting/interfaces/vote-logger-extended.js +3 -0
  173. package/src/lib/voting/interfaces/vote-logger-extended.js.map +1 -0
  174. package/src/lib/voting/interfaces/vote-logger.d.ts +9 -0
  175. package/src/lib/voting/interfaces/vote-logger.d.ts.map +1 -0
  176. package/src/lib/voting/interfaces/vote-logger.js +3 -0
  177. package/src/lib/voting/interfaces/vote-logger.js.map +1 -0
  178. package/src/lib/voting/interfaces/voting-consts.d.ts +9 -0
  179. package/src/lib/voting/interfaces/voting-consts.d.ts.map +1 -0
  180. package/src/lib/voting/interfaces/voting-consts.js +3 -0
  181. package/src/lib/voting/interfaces/voting-consts.js.map +1 -0
  182. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts +7 -0
  183. package/src/lib/voting/interfaces/voting-key-derivation-options.d.ts.map +1 -0
  184. package/src/lib/voting/interfaces/voting-key-derivation-options.js +3 -0
  185. package/src/lib/voting/interfaces/voting-key-derivation-options.js.map +1 -0
  186. package/src/lib/voting/interfaces/voting-poll-results.d.ts +7 -0
  187. package/src/lib/voting/interfaces/voting-poll-results.d.ts.map +1 -0
  188. package/src/lib/voting/interfaces/voting-poll-results.js +3 -0
  189. package/src/lib/voting/interfaces/voting-poll-results.js.map +1 -0
  190. package/src/lib/voting/interfaces/voting-receipt.d.ts +10 -0
  191. package/src/lib/voting/interfaces/voting-receipt.d.ts.map +1 -0
  192. package/src/lib/voting/interfaces/voting-receipt.js +3 -0
  193. package/src/lib/voting/interfaces/voting-receipt.js.map +1 -0
  194. package/src/lib/voting/interfaces/voting-security-validator.d.ts +8 -0
  195. package/src/lib/voting/interfaces/voting-security-validator.d.ts.map +1 -0
  196. package/src/lib/voting/interfaces/voting-security-validator.js +3 -0
  197. package/src/lib/voting/interfaces/voting-security-validator.js.map +1 -0
  198. package/src/lib/voting/node-persistent-state.d.ts +40 -0
  199. package/src/lib/voting/node-persistent-state.d.ts.map +1 -0
  200. package/src/lib/voting/node-persistent-state.js +222 -0
  201. package/src/lib/voting/node-persistent-state.js.map +1 -0
  202. package/src/lib/voting/persistent-state.d.ts +44 -0
  203. package/src/lib/voting/persistent-state.d.ts.map +1 -0
  204. package/src/lib/voting/persistent-state.js +106 -0
  205. package/src/lib/voting/persistent-state.js.map +1 -0
  206. package/src/lib/voting/poll-core.d.ts +14 -29
  207. package/src/lib/voting/poll-core.d.ts.map +1 -1
  208. package/src/lib/voting/poll-core.js +13 -174
  209. package/src/lib/voting/poll-core.js.map +1 -1
  210. package/src/lib/voting/poll.d.ts +12 -11
  211. package/src/lib/voting/poll.d.ts.map +1 -1
  212. package/src/lib/voting/poll.js +5 -4
  213. package/src/lib/voting/poll.js.map +1 -1
  214. package/src/lib/voting/security.d.ts +9 -15
  215. package/src/lib/voting/security.d.ts.map +1 -1
  216. package/src/lib/voting/security.js +12 -44
  217. package/src/lib/voting/security.js.map +1 -1
  218. package/src/lib/voting/tallier.d.ts +12 -20
  219. package/src/lib/voting/tallier.d.ts.map +1 -1
  220. package/src/lib/voting/tallier.js +17 -366
  221. package/src/lib/voting/tallier.js.map +1 -1
  222. package/src/lib/voting/test-voter-pool.d.ts +16 -0
  223. package/src/lib/voting/test-voter-pool.d.ts.map +1 -0
  224. package/src/lib/voting/test-voter-pool.js +69 -0
  225. package/src/lib/voting/test-voter-pool.js.map +1 -0
  226. package/src/lib/voting/us-election-example.d.ts +2 -0
  227. package/src/lib/voting/us-election-example.d.ts.map +1 -0
  228. package/src/lib/voting/us-election-example.js +170 -0
  229. package/src/lib/voting/us-election-example.js.map +1 -0
  230. package/src/member.d.ts +5 -2
  231. package/src/member.d.ts.map +1 -1
  232. package/src/member.js +42 -17
  233. package/src/member.js.map +1 -1
  234. package/src/secure-buffer.d.ts +1 -2
  235. package/src/secure-buffer.d.ts.map +1 -1
  236. package/src/secure-buffer.js +3 -8
  237. package/src/secure-buffer.js.map +1 -1
  238. package/src/services/ecies/crypto-core.d.ts.map +1 -1
  239. package/src/services/ecies/crypto-core.js +24 -0
  240. package/src/services/ecies/crypto-core.js.map +1 -1
  241. package/src/services/ecies/multi-recipient.d.ts +16 -7
  242. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  243. package/src/services/ecies/multi-recipient.js +164 -23
  244. package/src/services/ecies/multi-recipient.js.map +1 -1
  245. package/src/services/ecies/service.d.ts +63 -21
  246. package/src/services/ecies/service.d.ts.map +1 -1
  247. package/src/services/ecies/service.js +196 -39
  248. package/src/services/ecies/service.js.map +1 -1
  249. package/src/services/ecies/single-recipient.d.ts.map +1 -1
  250. package/src/services/ecies/single-recipient.js +4 -2
  251. package/src/services/ecies/single-recipient.js.map +1 -1
  252. package/src/services/encryption-stream.d.ts +1 -1
  253. package/src/services/encryption-stream.d.ts.map +1 -1
  254. package/src/services/encryption-stream.js +4 -8
  255. package/src/services/encryption-stream.js.map +1 -1
  256. package/src/services/multi-recipient-processor.d.ts +16 -12
  257. package/src/services/multi-recipient-processor.d.ts.map +1 -1
  258. package/src/services/multi-recipient-processor.js +29 -10
  259. package/src/services/multi-recipient-processor.js.map +1 -1
  260. package/src/test-mocks/mock-backend-member.d.ts +22 -3
  261. package/src/test-mocks/mock-backend-member.d.ts.map +1 -1
  262. package/src/test-mocks/mock-backend-member.js +71 -0
  263. package/src/test-mocks/mock-backend-member.js.map +1 -1
  264. package/src/lib/voting/types.d.ts +0 -66
  265. package/src/lib/voting/types.d.ts.map +0 -1
  266. package/src/lib/voting/types.js +0 -29
  267. package/src/lib/voting/types.js.map +0 -1
@@ -5,6 +5,7 @@
5
5
  * These interfaces ensure type safety and API consistency with the browser version.
6
6
  */
7
7
  import type { PublicKey, PrivateKey, KeyPair } from 'paillier-bigint';
8
+ import type { PlatformID } from './platform-id';
8
9
  /**
9
10
  * Voting methods supported by the poll system
10
11
  */
@@ -29,11 +30,11 @@ export declare enum VotingMethod {
29
30
  * Vote receipt proving participation.
30
31
  * Cryptographically signed proof that a vote was cast.
31
32
  */
32
- export interface IVoteReceipt {
33
+ export interface IVoteReceipt<TID extends PlatformID = Buffer> {
33
34
  /** Unique identifier of the voter */
34
- voterId: Buffer;
35
+ voterId: TID;
35
36
  /** Unique identifier of the poll */
36
- pollId: Buffer;
37
+ pollId: TID;
37
38
  /** Unix timestamp when vote was cast */
38
39
  timestamp: number;
39
40
  /** Cryptographic signature from poll authority */
@@ -45,7 +46,7 @@ export interface IVoteReceipt {
45
46
  * Encrypted vote data using Paillier homomorphic encryption.
46
47
  * Structure varies by voting method.
47
48
  */
48
- export interface IEncryptedVote {
49
+ export interface IEncryptedVote<TID extends PlatformID = Buffer> {
49
50
  /** Single choice index (for Plurality, Weighted, etc.) */
50
51
  choiceIndex?: number;
51
52
  /** Multiple choice indices (for Approval voting) */
@@ -59,15 +60,15 @@ export interface IEncryptedVote {
59
60
  /** Array of encrypted vote values (one per choice) */
60
61
  encrypted: bigint[];
61
62
  /** Plaintext vote data (only for insecure methods) */
62
- plaintext?: IPlaintextVote;
63
+ plaintext?: IPlaintextVote<TID>;
63
64
  }
64
65
  /**
65
66
  * Plaintext vote data for insecure voting methods.
66
67
  * WARNING: Only use for Quadratic, Consensus, or ConsentBased methods.
67
68
  */
68
- export interface IPlaintextVote {
69
+ export interface IPlaintextVote<TID extends PlatformID = Buffer> {
69
70
  /** Unique identifier of the voter */
70
- voterId: Buffer;
71
+ voterId: TID;
71
72
  /** Single choice index */
72
73
  choiceIndex?: number;
73
74
  /** Multiple choice indices */
@@ -127,9 +128,9 @@ export interface ISupermajorityConfig {
127
128
  * Member interface for voting operations.
128
129
  * Extends base member with voting-specific capabilities.
129
130
  */
130
- export interface IVotingMember {
131
+ export interface IVotingMember<TID extends PlatformID = Buffer> {
131
132
  /** Unique identifier of the member */
132
- readonly id: Buffer;
133
+ readonly id: TID;
133
134
  /** ECDSA public key for signing */
134
135
  readonly publicKey: Buffer;
135
136
  /** Paillier public key for vote encryption (optional) */
@@ -154,9 +155,9 @@ export interface IVotingMember {
154
155
  * Poll interface for vote aggregation and management.
155
156
  * Holds encrypted votes and issues receipts, but cannot decrypt votes.
156
157
  */
157
- export interface IPoll {
158
+ export interface IPoll<TID extends PlatformID = Buffer> {
158
159
  /** Unique identifier of the poll */
159
- readonly id: Buffer;
160
+ readonly id: TID;
160
161
  /** Array of choice names */
161
162
  readonly choices: ReadonlyArray<string>;
162
163
  /** Voting method used */
@@ -176,14 +177,14 @@ export interface IPoll {
176
177
  * @returns Vote receipt
177
178
  * @throws Error if poll is closed or voter already voted
178
179
  */
179
- vote(voter: IVotingMember, vote: IEncryptedVote): IVoteReceipt;
180
+ vote(voter: IVotingMember<TID>, vote: IEncryptedVote<TID>): IVoteReceipt<TID>;
180
181
  /**
181
182
  * Verify a vote receipt is valid.
182
183
  * @param voter - Member who cast the vote
183
184
  * @param receipt - Receipt to verify
184
185
  * @returns True if receipt is valid
185
186
  */
186
- verifyReceipt(voter: IVotingMember, receipt: IVoteReceipt): boolean;
187
+ verifyReceipt(voter: IVotingMember<TID>, receipt: IVoteReceipt<TID>): boolean;
187
188
  /**
188
189
  * Close the poll to new votes.
189
190
  * @throws Error if poll is already closed
@@ -199,21 +200,21 @@ export interface IPoll {
199
200
  * Vote encoder interface for encrypting votes.
200
201
  * Converts vote choices into encrypted Paillier ciphertexts.
201
202
  */
202
- export interface IVoteEncoder {
203
+ export interface IVoteEncoder<TID extends PlatformID = Buffer> {
203
204
  /**
204
205
  * Encode a plurality vote (single choice).
205
206
  * @param choiceIndex - Index of chosen option
206
207
  * @param choiceCount - Total number of choices
207
208
  * @returns Encrypted vote
208
209
  */
209
- encodePlurality(choiceIndex: number, choiceCount: number): IEncryptedVote;
210
+ encodePlurality(choiceIndex: number, choiceCount: number): IEncryptedVote<TID>;
210
211
  /**
211
212
  * Encode an approval vote (multiple choices).
212
213
  * @param choices - Indices of approved options
213
214
  * @param choiceCount - Total number of choices
214
215
  * @returns Encrypted vote
215
216
  */
216
- encodeApproval(choices: number[], choiceCount: number): IEncryptedVote;
217
+ encodeApproval(choices: number[], choiceCount: number): IEncryptedVote<TID>;
217
218
  /**
218
219
  * Encode a weighted vote.
219
220
  * @param choiceIndex - Index of chosen option
@@ -221,21 +222,21 @@ export interface IVoteEncoder {
221
222
  * @param choiceCount - Total number of choices
222
223
  * @returns Encrypted vote
223
224
  */
224
- encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): IEncryptedVote;
225
+ encodeWeighted(choiceIndex: number, weight: bigint, choiceCount: number): IEncryptedVote<TID>;
225
226
  /**
226
227
  * Encode a Borda count vote (ranked with points).
227
228
  * @param rankings - Indices in preference order
228
229
  * @param choiceCount - Total number of choices
229
230
  * @returns Encrypted vote
230
231
  */
231
- encodeBorda(rankings: number[], choiceCount: number): IEncryptedVote;
232
+ encodeBorda(rankings: number[], choiceCount: number): IEncryptedVote<TID>;
232
233
  /**
233
234
  * Encode a ranked choice vote (for IRV).
234
235
  * @param rankings - Indices in preference order
235
236
  * @param choiceCount - Total number of choices
236
237
  * @returns Encrypted vote
237
238
  */
238
- encodeRankedChoice(rankings: number[], choiceCount: number): IEncryptedVote;
239
+ encodeRankedChoice(rankings: number[], choiceCount: number): IEncryptedVote<TID>;
239
240
  /**
240
241
  * Encode vote based on method.
241
242
  * @param method - Voting method
@@ -248,31 +249,31 @@ export interface IVoteEncoder {
248
249
  choices?: number[];
249
250
  rankings?: number[];
250
251
  weight?: bigint;
251
- }, choiceCount: number): IEncryptedVote;
252
+ }, choiceCount: number): IEncryptedVote<TID>;
252
253
  }
253
254
  /**
254
255
  * Poll tallier interface for decrypting and tallying votes.
255
256
  * Holds private key and can decrypt results after poll closes.
256
257
  */
257
- export interface IPollTallier {
258
+ export interface IPollTallier<TID extends PlatformID = Buffer> {
258
259
  /**
259
260
  * Tally votes and determine winner(s).
260
261
  * @param poll - Poll to tally
261
262
  * @returns Poll results
262
263
  * @throws Error if poll is not closed
263
264
  */
264
- tally(poll: IPoll): IPollResults;
265
+ tally(poll: IPoll<TID>): IPollResults;
265
266
  /**
266
267
  * Tally ranked choice votes using IRV algorithm.
267
268
  * @param poll - Poll to tally
268
269
  * @returns Poll results with elimination rounds
269
270
  */
270
- tallyRankedChoice(poll: IPoll): IPollResults;
271
+ tallyRankedChoice(poll: IPoll<TID>): IPollResults;
271
272
  }
272
273
  /**
273
274
  * Poll factory interface for creating polls.
274
275
  */
275
- export interface IPollFactory {
276
+ export interface IPollFactory<TID extends PlatformID = Buffer> {
276
277
  /**
277
278
  * Create a poll with specified method.
278
279
  * @param choices - Array of choice names
@@ -281,23 +282,23 @@ export interface IPollFactory {
281
282
  * @param options - Optional configuration
282
283
  * @returns New poll
283
284
  */
284
- create(choices: string[], method: VotingMethod, authority: IVotingMember, options?: {
285
+ create(choices: string[], method: VotingMethod, authority: IVotingMember<TID>, options?: {
285
286
  maxWeight?: bigint;
286
- }): IPoll;
287
+ }): IPoll<TID>;
287
288
  /**
288
289
  * Create a plurality poll.
289
290
  * @param choices - Array of choice names
290
291
  * @param authority - Poll authority
291
292
  * @returns New poll
292
293
  */
293
- createPlurality(choices: string[], authority: IVotingMember): IPoll;
294
+ createPlurality(choices: string[], authority: IVotingMember<TID>): IPoll<TID>;
294
295
  /**
295
296
  * Create an approval voting poll.
296
297
  * @param choices - Array of choice names
297
298
  * @param authority - Poll authority
298
299
  * @returns New poll
299
300
  */
300
- createApproval(choices: string[], authority: IVotingMember): IPoll;
301
+ createApproval(choices: string[], authority: IVotingMember<TID>): IPoll<TID>;
301
302
  /**
302
303
  * Create a weighted voting poll.
303
304
  * @param choices - Array of choice names
@@ -305,21 +306,21 @@ export interface IPollFactory {
305
306
  * @param maxWeight - Maximum vote weight
306
307
  * @returns New poll
307
308
  */
308
- createWeighted(choices: string[], authority: IVotingMember, maxWeight: bigint): IPoll;
309
+ createWeighted(choices: string[], authority: IVotingMember<TID>, maxWeight: bigint): IPoll<TID>;
309
310
  /**
310
311
  * Create a Borda count poll.
311
312
  * @param choices - Array of choice names
312
313
  * @param authority - Poll authority
313
314
  * @returns New poll
314
315
  */
315
- createBorda(choices: string[], authority: IVotingMember): IPoll;
316
+ createBorda(choices: string[], authority: IVotingMember<TID>): IPoll<TID>;
316
317
  /**
317
318
  * Create a ranked choice poll.
318
319
  * @param choices - Array of choice names
319
320
  * @param authority - Poll authority
320
321
  * @returns New poll
321
322
  */
322
- createRankedChoice(choices: string[], authority: IVotingMember): IPoll;
323
+ createRankedChoice(choices: string[], authority: IVotingMember<TID>): IPoll<TID>;
323
324
  }
324
325
  /**
325
326
  * Options for deriving Paillier voting keys from ECDH keys.
@@ -1 +1 @@
1
- {"version":3,"file":"voting-poll.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/interfaces/voting-poll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voting-poll.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/interfaces/voting-poll.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"voting-poll.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/interfaces/voting-poll.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH;;GAEG;AACH,IAAY,YAqBX;AArBD,WAAY,YAAY;IACtB,uDAAuD;IACvD,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,gCAAgB,CAAA;IAChB,+CAA+B,CAAA;IAC/B,+CAA+B,CAAA;IAE/B,mDAAmD;IACnD,8CAA8B,CAAA;IAC9B,sCAAsB,CAAA;IACtB,6BAAa,CAAA;IACb,2BAAW,CAAA;IAEX,8CAA8C;IAC9C,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,8CAA8B,CAAA;AAChC,CAAC,EArBW,YAAY,4BAAZ,YAAY,QAqBvB;AAkWD;;;GAGG;AACH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,8DAA8D;IAC9D,uDAAsC,CAAA;IACtC,oEAAoE;IACpE,2CAA0B,CAAA;IAC1B,gEAAgE;IAChE,sCAAqB,CAAA;AACvB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB"}
1
+ {"version":3,"file":"voting-poll.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/interfaces/voting-poll.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH;;GAEG;AACH,IAAY,YAqBX;AArBD,WAAY,YAAY;IACtB,uDAAuD;IACvD,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,gCAAgB,CAAA;IAChB,+CAA+B,CAAA;IAC/B,+CAA+B,CAAA;IAE/B,mDAAmD;IACnD,8CAA8B,CAAA;IAC9B,sCAAsB,CAAA;IACtB,6BAAa,CAAA;IACb,2BAAW,CAAA;IAEX,8CAA8C;IAC9C,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,8CAA8B,CAAA;AAChC,CAAC,EArBW,YAAY,4BAAZ,YAAY,QAqBvB;AA2WD;;;GAGG;AACH,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,8DAA8D;IAC9D,uDAAsC,CAAA;IACtC,oEAAoE;IACpE,2CAA0B,CAAA;IAC1B,gEAAgE;IAChE,sCAAqB,CAAA;AACvB,CAAC,EAPW,aAAa,6BAAb,aAAa,QAOxB"}
@@ -0,0 +1,54 @@
1
+ import { BaseIdProvider } from '@digitaldefiance/ecies-lib';
2
+ /**
3
+ * Buffer ID provider that accepts any fixed byte length.
4
+ *
5
+ * Use this when you need a non-standard ID size or custom validation logic with Node.js Buffers.
6
+ * For standard formats, prefer ObjectIdProvider, GuidV4Provider, or UuidProvider.
7
+ *
8
+ * Example:
9
+ * ```typescript
10
+ * // 20-byte SHA-1 hash as recipient ID
11
+ * const provider = new BufferIdProvider(20, 'SHA1Hash');
12
+ * ```
13
+ */
14
+ export declare class BufferIdProvider extends BaseIdProvider<Buffer> {
15
+ readonly byteLength: number;
16
+ readonly name: string;
17
+ constructor(byteLength: number, name?: string);
18
+ /**
19
+ * Generate a new random ID of the specified byte length.
20
+ */
21
+ generate(): Buffer;
22
+ /**
23
+ * Validate an ID buffer.
24
+ * Only checks length - override this method for custom validation.
25
+ */
26
+ validate(id: Buffer): boolean;
27
+ /**
28
+ * Serialize to hexadecimal string.
29
+ */
30
+ serialize(id: Buffer): string;
31
+ /**
32
+ * Deserialize a hexadecimal string to buffer.
33
+ */
34
+ deserialize(str: string): Buffer;
35
+ /**
36
+ * Create a defensive copy of an ID.
37
+ */
38
+ clone(id: Buffer): Buffer;
39
+ /**
40
+ * Convert Buffer to the provider's native representation.
41
+ * For BufferIdProvider, the native type is Buffer, so this is a pass-through.
42
+ */
43
+ fromBytes(bytes: Buffer): Buffer;
44
+ /**
45
+ * Convert the provider's native representation to Buffer.
46
+ * For BufferIdProvider, the native type is Buffer, so this is a pass-through.
47
+ */
48
+ toBytes(id: Buffer): Buffer;
49
+ /**
50
+ * Compare two IDs for equality.
51
+ */
52
+ equals(a: Buffer, b: Buffer): boolean;
53
+ }
54
+ //# sourceMappingURL=buffer-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-provider.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/id-providers/buffer-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,UAAU,EAAE,MAAM,EAAE,IAAI,SAAW;IAgB/C;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAK7B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAsBhC;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIzB;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIhC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAI3B;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;CAGtC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BufferIdProvider = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
6
+ /**
7
+ * Buffer ID provider that accepts any fixed byte length.
8
+ *
9
+ * Use this when you need a non-standard ID size or custom validation logic with Node.js Buffers.
10
+ * For standard formats, prefer ObjectIdProvider, GuidV4Provider, or UuidProvider.
11
+ *
12
+ * Example:
13
+ * ```typescript
14
+ * // 20-byte SHA-1 hash as recipient ID
15
+ * const provider = new BufferIdProvider(20, 'SHA1Hash');
16
+ * ```
17
+ */
18
+ class BufferIdProvider extends ecies_lib_1.BaseIdProvider {
19
+ byteLength;
20
+ name;
21
+ constructor(byteLength, name = 'Buffer') {
22
+ super();
23
+ if (!Number.isInteger(byteLength) || byteLength < 1 || byteLength > 255) {
24
+ throw new ecies_lib_1.IdProviderError(ecies_lib_1.IdProviderErrorType.InvalidByteLengthParameter, undefined, undefined, { value: byteLength });
25
+ }
26
+ this.byteLength = byteLength;
27
+ this.name = name;
28
+ }
29
+ /**
30
+ * Generate a new random ID of the specified byte length.
31
+ */
32
+ generate() {
33
+ return (0, crypto_1.randomBytes)(this.byteLength);
34
+ }
35
+ /**
36
+ * Validate an ID buffer.
37
+ * Only checks length - override this method for custom validation.
38
+ */
39
+ validate(id) {
40
+ return id.length === this.byteLength;
41
+ }
42
+ /**
43
+ * Serialize to hexadecimal string.
44
+ */
45
+ serialize(id) {
46
+ this.validateLength(id, `${this.name}.serialize`);
47
+ return id.toString('hex');
48
+ }
49
+ /**
50
+ * Deserialize a hexadecimal string to buffer.
51
+ */
52
+ deserialize(str) {
53
+ if (typeof str !== 'string') {
54
+ throw new ecies_lib_1.IdProviderError(ecies_lib_1.IdProviderErrorType.InputMustBeString);
55
+ }
56
+ const expectedLength = this.byteLength * 2;
57
+ if (str.length !== expectedLength) {
58
+ throw new ecies_lib_1.IdProviderError(ecies_lib_1.IdProviderErrorType.InvalidStringLength, undefined, undefined, { expected: expectedLength, actual: str.length });
59
+ }
60
+ if (!/^[0-9a-fA-F]+$/.test(str)) {
61
+ throw new ecies_lib_1.IdProviderError(ecies_lib_1.IdProviderErrorType.InvalidCharacters);
62
+ }
63
+ return Buffer.from(str, 'hex');
64
+ }
65
+ /**
66
+ * Create a defensive copy of an ID.
67
+ */
68
+ clone(id) {
69
+ return Buffer.from(id);
70
+ }
71
+ /**
72
+ * Convert Buffer to the provider's native representation.
73
+ * For BufferIdProvider, the native type is Buffer, so this is a pass-through.
74
+ */
75
+ fromBytes(bytes) {
76
+ return bytes;
77
+ }
78
+ /**
79
+ * Convert the provider's native representation to Buffer.
80
+ * For BufferIdProvider, the native type is Buffer, so this is a pass-through.
81
+ */
82
+ toBytes(id) {
83
+ return id;
84
+ }
85
+ /**
86
+ * Compare two IDs for equality.
87
+ */
88
+ equals(a, b) {
89
+ return a.equals(b);
90
+ }
91
+ }
92
+ exports.BufferIdProvider = BufferIdProvider;
93
+ //# sourceMappingURL=buffer-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer-provider.js","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/id-providers/buffer-provider.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAErC,0DAIoC;AAEpC;;;;;;;;;;;GAWG;AACH,MAAa,gBAAiB,SAAQ,0BAAsB;IACjD,UAAU,CAAS;IACnB,IAAI,CAAS;IAEtB,YAAY,UAAkB,EAAE,IAAI,GAAG,QAAQ;QAC7C,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;YACxE,MAAM,IAAI,2BAAe,CACvB,+BAAmB,CAAC,0BAA0B,EAC9C,SAAS,EACT,SAAS,EACT,EAAE,KAAK,EAAE,UAAU,EAAE,CACtB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,EAAU;QAClB,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,2BAAe,CAAC,+BAAmB,CAAC,iBAAiB,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,2BAAe,CACvB,+BAAmB,CAAC,mBAAmB,EACvC,SAAS,EACT,SAAS,EACT,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACjD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,2BAAe,CAAC,+BAAmB,CAAC,iBAAiB,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,EAAU;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAa;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,EAAU;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;CACF;AAjGD,4CAiGC"}
@@ -1,4 +1,5 @@
1
1
  export * from './crypto-container';
2
+ export * from './id-providers/buffer-provider';
2
3
  export * from './invariant-validator';
3
4
  export * from './invariants';
4
5
  export * from './voting';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
package/src/lib/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./crypto-container"), exports);
5
+ tslib_1.__exportStar(require("./id-providers/buffer-provider"), exports);
5
6
  tslib_1.__exportStar(require("./invariant-validator"), exports);
6
7
  tslib_1.__exportStar(require("./invariants"), exports);
7
8
  tslib_1.__exportStar(require("./voting"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,gEAAsC;AACtC,uDAA6B;AAC7B,mDAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,yEAA+C;AAC/C,gEAAsC;AACtC,uDAA6B;AAC7B,mDAAyB"}
@@ -1,55 +1,46 @@
1
+ /**
2
+ * Immutable Audit Log for Government-Grade Voting
3
+ * Node.js optimized - extends ecies-lib ImmutableAuditLog with Buffer support
4
+ */
5
+ import { ImmutableAuditLog as BaseImmutableAuditLog } from '@digitaldefiance/ecies-lib';
1
6
  import type { PlatformID } from '../../interfaces';
2
7
  import type { IMember } from '../../interfaces/member';
3
- export declare enum AuditEventType {
4
- PollCreated = "poll_created",
5
- VoteCast = "vote_cast",
6
- PollClosed = "poll_closed"
7
- }
8
- export interface AuditEntry<TID extends PlatformID = Buffer> {
9
- /** Sequence number (monotonically increasing) */
10
- readonly sequence: number;
11
- /** Event type */
12
- readonly eventType: AuditEventType;
13
- /** Microsecond-precision timestamp */
14
- readonly timestamp: number;
15
- /** Poll identifier */
16
- readonly pollId: TID;
17
- /** Hash of voter ID (for vote events) */
18
- readonly voterIdHash?: Buffer;
19
- /** Authority/creator ID (for creation/closure events) */
20
- readonly authorityId?: TID;
21
- /** Hash of previous entry (chain integrity) */
22
- readonly previousHash: Buffer;
23
- /** Hash of this entry's data */
24
- readonly entryHash: Buffer;
25
- /** Digital signature from authority */
26
- readonly signature: Buffer;
27
- /** Additional event metadata */
28
- readonly metadata?: Record<string, unknown>;
29
- }
30
- export interface AuditLog<TID extends PlatformID = Buffer> {
31
- getEntries(): readonly AuditEntry<TID>[];
32
- getEntriesForPoll(pollId: TID): readonly AuditEntry<TID>[];
33
- verifyChain(): boolean;
34
- verifyEntry(entry: AuditEntry<TID>): boolean;
35
- }
36
- export declare class ImmutableAuditLog<TID extends PlatformID = Buffer> implements AuditLog<TID> {
37
- private readonly entries;
38
- private readonly authority;
39
- private sequence;
8
+ import type { AuditEntry } from './interfaces';
9
+ export type { AuditEntry, AuditLog } from './interfaces';
10
+ /**
11
+ * Node.js ImmutableAuditLog that extends ecies-lib ImmutableAuditLog
12
+ * Keeps the generic TID parameter for flexibility, defaulting to Buffer
13
+ *
14
+ * The base class handles all the logic, we override methods to convert
15
+ * Uint8Array to Buffer for Node.js compatibility.
16
+ */
17
+ export declare class ImmutableAuditLog<TID extends PlatformID = Buffer> extends BaseImmutableAuditLog<TID> {
40
18
  constructor(authority: IMember<TID>);
19
+ /**
20
+ * Record poll creation event
21
+ * Overrides base method to convert Uint8Array to Buffer
22
+ */
41
23
  recordPollCreated(pollId: TID, metadata?: Record<string, unknown>): AuditEntry<TID>;
42
- recordVoteCast(pollId: TID, voterIdHash: Buffer, metadata?: Record<string, unknown>): AuditEntry<TID>;
24
+ /**
25
+ * Record vote cast event
26
+ * Overrides base method to convert Uint8Array to Buffer
27
+ * Note: voterIdHash is Uint8Array for compatibility with base class
28
+ */
29
+ recordVoteCast(pollId: TID, voterIdHash: Uint8Array, metadata?: Record<string, unknown>): AuditEntry<TID>;
30
+ /**
31
+ * Record poll closed event
32
+ * Overrides base method to convert Uint8Array to Buffer
33
+ */
43
34
  recordPollClosed(pollId: TID, metadata?: Record<string, unknown>): AuditEntry<TID>;
44
- getEntries(): readonly AuditEntry<TID>[];
45
- getEntriesForPoll(pollId: TID): readonly AuditEntry<TID>[];
46
- verifyChain(): boolean;
47
- verifyEntry(entry: AuditEntry<TID>): boolean;
48
- private appendEntry;
49
- private computeEntryHash;
50
- private serializeEntryForHashing;
51
- private serializeEntryForSigning;
52
- private getMicrosecondTimestamp;
53
- private encodeNumber;
35
+ /**
36
+ * Get all audit entries
37
+ * Overrides base method to convert Uint8Array to Buffer
38
+ */
39
+ getEntries(): ReadonlyArray<AuditEntry<TID>>;
40
+ /**
41
+ * Get entries for a specific poll
42
+ * Overrides base method to convert Uint8Array to Buffer
43
+ */
44
+ getEntriesForPoll(pollId: TID): ReadonlyArray<AuditEntry<TID>>;
54
45
  }
55
46
  //# sourceMappingURL=audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGvD,oBAAY,cAAc;IACxB,WAAW,iBAAiB;IAC5B,QAAQ,cAAc;IACtB,UAAU,gBAAgB;CAC3B;AAED,MAAM,WAAW,UAAU,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IACzD,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iBAAiB;IACjB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,QAAQ,CAAC,GAAG,SAAS,UAAU,GAAG,MAAM;IACvD,UAAU,IAAI,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3D,WAAW,IAAI,OAAO,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;CAC9C;AAED,qBAAa,iBAAiB,CAC5B,GAAG,SAAS,UAAU,GAAG,MAAM,CAC/B,YAAW,QAAQ,CAAC,GAAG,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAK;gBAET,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;IAInC,iBAAiB,CACf,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IASlB,cAAc,CACZ,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IASlB,gBAAgB,CACd,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IASlB,UAAU,IAAI,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE;IAIxC,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,EAAE;IAS1D,WAAW,IAAI,OAAO;IAetB,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO;IAQ5C,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,YAAY;CAKrB"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../../../../packages/digitaldefiance-node-ecies-lib/src/lib/voting/audit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,iBAAiB,IAAI,qBAAqB,EAE3C,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiCzD;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAC5B,GAAG,SAAS,UAAU,GAAG,MAAM,CAC/B,SAAQ,qBAAqB,CAAC,GAAG,CAAC;gBACtB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC;IA0DnC;;;OAGG;IACH,iBAAiB,CACf,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IAKlB;;;;OAIG;IACH,cAAc,CACZ,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,UAAU,EACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IAKlB;;;OAGG;IACH,gBAAgB,CACd,MAAM,EAAE,GAAG,EACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,UAAU,CAAC,GAAG,CAAC;IAKlB;;;OAGG;IACH,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAK5C;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;CAI/D"}