@degenerate/generic 0.2.7 → 0.4.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 (165) hide show
  1. package/dist/_settings/database-settings.d.ts +3 -0
  2. package/dist/_settings/database-settings.d.ts.map +1 -1
  3. package/dist/_settings/database-settings.js +3 -0
  4. package/dist/application/audit-log/additional-ids/create-audit-log-additional-ids-with-query.d.ts.map +1 -1
  5. package/dist/application/audit-log/additional-ids/create-multiple-path-alai.d.ts.map +1 -1
  6. package/dist/application/audit-log/additional-ids/create-query-audit-log-for-alai.d.ts.map +1 -1
  7. package/dist/application/audit-log/create-application-audit-log.d.ts.map +1 -1
  8. package/dist/application/audit-log/create-application-audit-log.js +1 -1
  9. package/dist/application/database/firestore/generics/add-items-to-database.d.ts.map +1 -1
  10. package/dist/application/database/firestore/generics/add-items-to-database.js +2 -2
  11. package/dist/application/database/firestore/generics/add-or-update-items-to-database.d.ts.map +1 -1
  12. package/dist/application/database/firestore/generics/add-or-update-items-to-database.js +3 -3
  13. package/dist/application/database/firestore/generics/create-database-change-information.d.ts.map +1 -1
  14. package/dist/application/database/firestore/generics/delete-items-on-database.d.ts.map +1 -1
  15. package/dist/application/database/firestore/generics/delete-items-on-database.js +2 -2
  16. package/dist/application/database/firestore/generics/get-item-from-database.d.ts.map +1 -1
  17. package/dist/application/database/firestore/generics/get-item-from-database.js +2 -2
  18. package/dist/application/database/firestore/generics/get-items-different-path-on-database.d.ts.map +1 -1
  19. package/dist/application/database/firestore/generics/get-items-different-path-on-database.js +2 -2
  20. package/dist/application/database/firestore/generics/get-items-from-database.d.ts.map +1 -1
  21. package/dist/application/database/firestore/generics/get-items-from-database.js +1 -1
  22. package/dist/application/database/firestore/generics/update-items-on-database.d.ts.map +1 -1
  23. package/dist/application/database/firestore/generics/update-items-on-database.js +2 -2
  24. package/dist/application/database/firestore/generics/update-items-properties-on-database.d.ts.map +1 -1
  25. package/dist/application/database/firestore/generics/update-items-properties-on-database.js +2 -2
  26. package/dist/authorization/index.d.ts +1 -0
  27. package/dist/authorization/index.d.ts.map +1 -1
  28. package/dist/authorization/index.js +1 -0
  29. package/dist/authorization/jwt/keys/create-public-key-pem.d.ts.map +1 -1
  30. package/dist/authorization/jwt/keys/create-secret-key-pem.d.ts.map +1 -1
  31. package/dist/authorization/jwt/sign/create-authorization-issuer.d.ts.map +1 -1
  32. package/dist/authorization/jwt/sign/create-authorization-subject.d.ts.map +1 -1
  33. package/dist/authorization/jwt/sign/create-jwt-options.d.ts +7 -1
  34. package/dist/authorization/jwt/sign/create-jwt-options.d.ts.map +1 -1
  35. package/dist/authorization/jwt/sign/create-jwt-signed-token.d.ts.map +1 -1
  36. package/dist/authorization/jwt/transform/transform-token-payload-to-safe-payload.d.ts.map +1 -1
  37. package/dist/authorization/jwt/verify/get-decoded-jwt-header.d.ts.map +1 -1
  38. package/dist/authorization/jwt/verify/get-decoded-jwt-signed-token-payload.d.ts.map +1 -1
  39. package/dist/authorization/jwt/verify/verify-jwt-signed-token.d.ts.map +1 -1
  40. package/dist/authorization/safe/request/decode-bearer-token.d.ts.map +1 -1
  41. package/dist/authorization/safe/request/decode-safe-request.d.ts.map +1 -1
  42. package/dist/authorization/safe/request/determine-issuer-from-request.d.ts.map +1 -1
  43. package/dist/authorization/safe/request/issuer/determine-issuer-from-bearer-token.d.ts.map +1 -1
  44. package/dist/authorization/safe/request/verify-jwt-bearer-token-for-audience.d.ts +31 -0
  45. package/dist/authorization/safe/request/verify-jwt-bearer-token-for-audience.d.ts.map +1 -0
  46. package/dist/authorization/safe/request/verify-jwt-bearer-token-for-audience.js +50 -0
  47. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-audience.d.ts.map +1 -1
  48. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-expiration-time.d.ts.map +1 -1
  49. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-issued-at-time.d.ts.map +1 -1
  50. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-issuer.d.ts.map +1 -1
  51. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-not-before-time.d.ts.map +1 -1
  52. package/dist/authorization/safe/validation/jwt/payload/verify-authorization-subject.d.ts.map +1 -1
  53. package/dist/authorization/safe/validation/jwt/verify-token-header.d.ts.map +1 -1
  54. package/dist/authorization/safe/validation/jwt/verify-token-payload.d.ts.map +1 -1
  55. package/dist/crypto/calculate-combined-hash.d.ts.map +1 -1
  56. package/dist/crypto/calculate-hash.d.ts +1 -1
  57. package/dist/crypto/calculate-hash.d.ts.map +1 -1
  58. package/dist/crypto/calculate-hash.js +1 -1
  59. package/dist/crypto/index.d.ts +1 -0
  60. package/dist/crypto/index.d.ts.map +1 -1
  61. package/dist/crypto/index.js +1 -0
  62. package/dist/crypto/private-public-keys/create-key-pair-from-mnemonic.d.ts.map +1 -1
  63. package/dist/crypto/private-public-keys/create-key-pair-from-private-key.d.ts.map +1 -1
  64. package/dist/crypto/private-public-keys/create-key-pair-from-private-key.js +1 -1
  65. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.d.ts +11 -0
  66. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.d.ts.map +1 -0
  67. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.js +51 -0
  68. package/dist/crypto/private-public-keys/generation/create-entropy-for-elliptical-curve.d.ts.map +1 -1
  69. package/dist/crypto/private-public-keys/generation/generate-key-pair.d.ts.map +1 -1
  70. package/dist/crypto/private-public-keys/generation/get-private-public-key-from-keypair.d.ts.map +1 -1
  71. package/dist/crypto/signature/create-crypto-signature.d.ts +11 -0
  72. package/dist/crypto/signature/create-crypto-signature.d.ts.map +1 -1
  73. package/dist/crypto/signature/create-crypto-signature.js +14 -1
  74. package/dist/crypto/signature/verify-crypto-signature-by-data.d.ts +4 -0
  75. package/dist/crypto/signature/verify-crypto-signature-by-data.d.ts.map +1 -1
  76. package/dist/crypto/signature/verify-crypto-signature-by-data.js +8 -2
  77. package/dist/crypto/signature/verify-crypto-signature-by-hash.d.ts +4 -0
  78. package/dist/crypto/signature/verify-crypto-signature-by-hash.d.ts.map +1 -1
  79. package/dist/crypto/signature/verify-crypto-signature-by-hash.js +7 -1
  80. package/dist/errors/index.d.ts +2 -0
  81. package/dist/errors/index.d.ts.map +1 -1
  82. package/dist/errors/index.js +2 -0
  83. package/dist/errors/share-data/share-data-errors.d.ts +105 -1
  84. package/dist/errors/share-data/share-data-errors.d.ts.map +1 -1
  85. package/dist/errors/share-data/share-data-errors.js +148 -1
  86. package/dist/errors/shareblock/shareblock-errors.d.ts +40 -0
  87. package/dist/errors/shareblock/shareblock-errors.d.ts.map +1 -0
  88. package/dist/errors/shareblock/shareblock-errors.js +50 -0
  89. package/dist/errors/validation/crypto-validation-errors.d.ts +8 -0
  90. package/dist/errors/validation/crypto-validation-errors.d.ts.map +1 -0
  91. package/dist/errors/validation/crypto-validation-errors.js +15 -0
  92. package/dist/helpers/array/array-helpers.d.ts.map +1 -1
  93. package/dist/helpers/crypto/cryptography-helpers.d.ts.map +1 -1
  94. package/dist/helpers/data/data-helpers.d.ts.map +1 -1
  95. package/dist/helpers/file/file-helpers.d.ts.map +1 -1
  96. package/dist/helpers/id-helpers.d.ts.map +1 -1
  97. package/dist/helpers/lodash/lodash-helpers.d.ts.map +1 -1
  98. package/dist/helpers/object-helpers.d.ts.map +1 -1
  99. package/dist/helpers/object-validation-helpers.d.ts.map +1 -1
  100. package/dist/helpers/request/params-object-helpers.d.ts +6 -13
  101. package/dist/helpers/request/params-object-helpers.d.ts.map +1 -1
  102. package/dist/helpers/request/params-object-helpers.js +11 -21
  103. package/dist/helpers/request/query-object-helpers.d.ts.map +1 -1
  104. package/dist/helpers/request/request-object-helpers.d.ts.map +1 -1
  105. package/dist/models/application/audit-log/application-audit-log-models.d.ts +82 -92
  106. package/dist/models/application/audit-log/application-audit-log-models.d.ts.map +1 -1
  107. package/dist/models/application/database/firestore-models.d.ts +158 -307
  108. package/dist/models/application/database/firestore-models.d.ts.map +1 -1
  109. package/dist/models/authorization/authorization-models.d.ts +34 -44
  110. package/dist/models/authorization/authorization-models.d.ts.map +1 -1
  111. package/dist/models/authorization/authorization-models.js +2 -2
  112. package/dist/models/crypto/crypto-models.d.ts +1 -7
  113. package/dist/models/crypto/crypto-models.d.ts.map +1 -1
  114. package/dist/models/data/data-models.d.ts +27 -13
  115. package/dist/models/data/data-models.d.ts.map +1 -1
  116. package/dist/models/data/data-models.js +23 -2
  117. package/dist/models/dynamic-execution/dynamic-execution-models.d.ts +1 -9
  118. package/dist/models/dynamic-execution/dynamic-execution-models.d.ts.map +1 -1
  119. package/dist/models/events/share-event-models.d.ts +91 -120
  120. package/dist/models/events/share-event-models.d.ts.map +1 -1
  121. package/dist/models/events/share-event-models.js +35 -4
  122. package/dist/models/functions/share-data-function-models.d.ts +23 -193
  123. package/dist/models/functions/share-data-function-models.d.ts.map +1 -1
  124. package/dist/models/functions/share-data-function-models.js +1 -1
  125. package/dist/models/generic/request-response-models.d.ts +1 -7
  126. package/dist/models/generic/request-response-models.d.ts.map +1 -1
  127. package/dist/models/index.d.ts +4 -1
  128. package/dist/models/index.d.ts.map +1 -1
  129. package/dist/models/index.js +4 -1
  130. package/dist/models/rules/share-rule-models.d.ts +759 -1116
  131. package/dist/models/rules/share-rule-models.d.ts.map +1 -1
  132. package/dist/models/rules/share-rule-models.js +6 -6
  133. package/dist/models/safe/safe-transaction-models.d.ts +28 -30
  134. package/dist/models/safe/safe-transaction-models.d.ts.map +1 -1
  135. package/dist/models/safe/transactions/authorities-transactions-models.d.ts +77 -419
  136. package/dist/models/safe/transactions/authorities-transactions-models.d.ts.map +1 -1
  137. package/dist/models/safe/transactions/authorities-transactions-models.js +3 -3
  138. package/dist/models/safe/transactions/events-transactions-models.d.ts +22 -372
  139. package/dist/models/safe/transactions/events-transactions-models.d.ts.map +1 -1
  140. package/dist/models/safe/transactions/events-transactions-models.js +1 -1
  141. package/dist/models/safe/transactions/functions-transactions-models.d.ts +22 -372
  142. package/dist/models/safe/transactions/functions-transactions-models.d.ts.map +1 -1
  143. package/dist/models/safe/transactions/functions-transactions-models.js +1 -1
  144. package/dist/models/safe/transactions/rules-transactions-models.d.ts +59 -603
  145. package/dist/models/safe/transactions/rules-transactions-models.d.ts.map +1 -1
  146. package/dist/models/safe/transactions/sharedata-transactions-models.d.ts +256 -388
  147. package/dist/models/safe/transactions/sharedata-transactions-models.d.ts.map +1 -1
  148. package/dist/models/safe/transactions/sharedata-transactions-models.js +30 -4
  149. package/dist/models/share-data/share-data-crypto-models.d.ts +344 -0
  150. package/dist/models/share-data/share-data-crypto-models.d.ts.map +1 -0
  151. package/dist/models/share-data/share-data-crypto-models.js +131 -0
  152. package/dist/models/share-data/share-data-models.d.ts +114 -0
  153. package/dist/models/share-data/share-data-models.d.ts.map +1 -0
  154. package/dist/models/share-data/{share-data.js → share-data-models.js} +1 -1
  155. package/dist/models/share-data/share-data-persistence-models.d.ts +165 -0
  156. package/dist/models/share-data/share-data-persistence-models.d.ts.map +1 -0
  157. package/dist/models/share-data/share-data-persistence-models.js +101 -0
  158. package/dist/models/shareblock/shareblock-models.d.ts +489 -0
  159. package/dist/models/shareblock/shareblock-models.d.ts.map +1 -0
  160. package/dist/models/shareblock/shareblock-models.js +395 -0
  161. package/dist/transactions/authority/create-safe-transaction-authority-data.d.ts.map +1 -1
  162. package/dist/transactions/authority/create-safe-transaction-authority.d.ts.map +1 -1
  163. package/package.json +30 -22
  164. package/dist/models/share-data/share-data.d.ts +0 -181
  165. package/dist/models/share-data/share-data.d.ts.map +0 -1
@@ -0,0 +1,165 @@
1
+ import z from 'zod';
2
+ import { EllipticalCurvesSigning } from '../../_settings/cryptography-settings';
3
+ import { ShareBlockType } from '../shareblock/shareblock-models';
4
+ /**
5
+ * The signing curve a persisted block was created with. Mirrors the values of
6
+ * {@link EllipticalCurvesSigning}; stored for forward-compatibility even
7
+ * though every shipped factory currently uses the `Curve25519` default.
8
+ */
9
+ export declare const PersistedSigningCurveSchema: z.ZodEnum<{
10
+ ed25519: EllipticalCurvesSigning.Curve25519;
11
+ p521: EllipticalCurvesSigning.P521;
12
+ }>;
13
+ /**
14
+ * The factory creation input needed to replay construction, minus the
15
+ * `proofFor` callback (which is reconstructed from the stored
16
+ * `structuralProofs` + `initialCrypto` at load time). `initialState` is the
17
+ * *partial* state the factory was given — the factory deterministically
18
+ * assembles the full state from it, so storing the partial form is both
19
+ * sufficient and forward-stable.
20
+ */
21
+ export declare const PersistedCreationConfigSchema: z.ZodObject<{
22
+ metadata: z.ZodObject<{
23
+ shareBlockId: z.ZodString;
24
+ blockType: z.ZodEnum<{
25
+ Clearing: "Clearing";
26
+ Funding: "Funding";
27
+ Distribution: "Distribution";
28
+ GraceRepayment: "GraceRepayment";
29
+ }>;
30
+ relatedLoanApplicationId: z.ZodOptional<z.ZodString>;
31
+ description: z.ZodOptional<z.ZodString>;
32
+ createdAt: z.ZodNumber;
33
+ createdBy: z.ZodString;
34
+ }, z.core.$strip>;
35
+ creationPublicKey: z.ZodString;
36
+ initialState: z.ZodRecord<z.ZodString, z.ZodAny>;
37
+ }, z.core.$strip>;
38
+ export type PersistedCreationConfig = z.infer<typeof PersistedCreationConfigSchema>;
39
+ /**
40
+ * The two facts a {@link ShareDataManager} must retain about a block to keep
41
+ * persisting it after creation: which factory built it and the creation input
42
+ * that factory was given. A live block retains neither — `serializeShareData`
43
+ * needs both supplied — so the manager captures them at `addShareData` time and
44
+ * carries them alongside the accumulating transaction log for every subsequent
45
+ * write-through. Supplied by the caller that created the block (e.g. the HTTP
46
+ * create route).
47
+ */
48
+ export interface ShareDataCreationRecord {
49
+ blockType: ShareBlockType;
50
+ creationConfig: PersistedCreationConfig;
51
+ }
52
+ /**
53
+ * One post-creation transaction, captured at apply time. The live
54
+ * `transactionHistory` does NOT retain a transaction's input or proposed
55
+ * state, so these must be recorded when the transaction is applied rather
56
+ * than recovered from a finished block.
57
+ *
58
+ * - `functionId` re-resolves the live function on the rebuilt block (same
59
+ * id-based lookup `createIdBasedFunctionResolver` uses).
60
+ * - `proposedState` is the state written when the transaction was accepted;
61
+ * it is what replay re-applies.
62
+ * - `proof` is the transaction proposal proof that authorized the change. It
63
+ * is re-verified against the rebuilt block + `proposedState` during replay,
64
+ * so a snapshot whose proposed state or proof was edited fails the load.
65
+ * Recording it also keeps the rebuilt block byte-faithful: the live history
66
+ * entry carries its proof, and the canonical share-data hash folds the
67
+ * history in, so replay must reproduce the proof to hash identically.
68
+ * - `transactionTime` is stored so the replayed history hashes identically.
69
+ * - `ruleOutcome` records whether the original proposal was accepted.
70
+ */
71
+ export declare const PersistedTransactionSchema: z.ZodObject<{
72
+ functionId: z.ZodString;
73
+ input: z.ZodOptional<z.ZodAny>;
74
+ proposedState: z.ZodRecord<z.ZodString, z.ZodAny>;
75
+ proof: z.ZodObject<{
76
+ publicKey: z.ZodString;
77
+ shareDataHash: z.ZodString;
78
+ shareDataPreviousHash: z.ZodString;
79
+ shareDataSignature: z.ZodString;
80
+ timestamp: z.ZodNumber;
81
+ purpose: z.ZodString;
82
+ }, z.core.$strip>;
83
+ transactionTime: z.ZodNumber;
84
+ ruleOutcome: z.ZodBoolean;
85
+ }, z.core.$strip>;
86
+ export type PersistedTransaction = z.infer<typeof PersistedTransactionSchema>;
87
+ /**
88
+ * A durable snapshot of a ShareData. Versioned via `schemaVersion` so a future
89
+ * format change can be gated cleanly. The `expected*` fields are NOT trusted
90
+ * on load — they are cross-checked against the independently replayed block so
91
+ * a snapshot whose state was edited without re-signing fails loudly.
92
+ */
93
+ export declare const PersistedShareDataSchema: z.ZodObject<{
94
+ schemaVersion: z.ZodLiteral<3>;
95
+ id: z.ZodString;
96
+ blockType: z.ZodEnum<{
97
+ Clearing: "Clearing";
98
+ Funding: "Funding";
99
+ Distribution: "Distribution";
100
+ GraceRepayment: "GraceRepayment";
101
+ }>;
102
+ signingCurve: z.ZodEnum<{
103
+ ed25519: EllipticalCurvesSigning.Curve25519;
104
+ p521: EllipticalCurvesSigning.P521;
105
+ }>;
106
+ initialCrypto: z.ZodObject<{
107
+ publicKey: z.ZodString;
108
+ shareDataHash: z.ZodString;
109
+ shareDataSignature: z.ZodString;
110
+ timestamp: z.ZodNumber;
111
+ }, z.core.$strip>;
112
+ creationConfig: z.ZodObject<{
113
+ metadata: z.ZodObject<{
114
+ shareBlockId: z.ZodString;
115
+ blockType: z.ZodEnum<{
116
+ Clearing: "Clearing";
117
+ Funding: "Funding";
118
+ Distribution: "Distribution";
119
+ GraceRepayment: "GraceRepayment";
120
+ }>;
121
+ relatedLoanApplicationId: z.ZodOptional<z.ZodString>;
122
+ description: z.ZodOptional<z.ZodString>;
123
+ createdAt: z.ZodNumber;
124
+ createdBy: z.ZodString;
125
+ }, z.core.$strip>;
126
+ creationPublicKey: z.ZodString;
127
+ initialState: z.ZodRecord<z.ZodString, z.ZodAny>;
128
+ }, z.core.$strip>;
129
+ structuralProofs: z.ZodRecord<z.ZodString, z.ZodObject<{
130
+ publicKey: z.ZodString;
131
+ shareDataHash: z.ZodString;
132
+ shareDataPreviousHash: z.ZodString;
133
+ shareDataSignature: z.ZodString;
134
+ timestamp: z.ZodNumber;
135
+ purpose: z.ZodString;
136
+ }, z.core.$strip>>;
137
+ authorizedSigners: z.ZodArray<z.ZodObject<{
138
+ publicKey: z.ZodString;
139
+ functionIds: z.ZodArray<z.ZodString>;
140
+ }, z.core.$strip>>;
141
+ transactionLog: z.ZodArray<z.ZodObject<{
142
+ functionId: z.ZodString;
143
+ input: z.ZodOptional<z.ZodAny>;
144
+ proposedState: z.ZodRecord<z.ZodString, z.ZodAny>;
145
+ proof: z.ZodObject<{
146
+ publicKey: z.ZodString;
147
+ shareDataHash: z.ZodString;
148
+ shareDataPreviousHash: z.ZodString;
149
+ shareDataSignature: z.ZodString;
150
+ timestamp: z.ZodNumber;
151
+ purpose: z.ZodString;
152
+ }, z.core.$strip>;
153
+ transactionTime: z.ZodNumber;
154
+ ruleOutcome: z.ZodBoolean;
155
+ }, z.core.$strip>>;
156
+ expectedCurrentState: z.ZodRecord<z.ZodString, z.ZodAny>;
157
+ expectedCreationHash: z.ZodString;
158
+ expectedCreationSignature: z.ZodString;
159
+ expectedIsLocked: z.ZodBoolean;
160
+ expectedVersion: z.ZodNumber;
161
+ }, z.core.$strip>;
162
+ export type PersistedShareData = z.infer<typeof PersistedShareDataSchema>;
163
+ /** The only schema version this build understands. */
164
+ export declare const PERSISTED_SHARE_DATA_SCHEMA_VERSION: 3;
165
+ //# sourceMappingURL=share-data-persistence-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-data-persistence-models.d.ts","sourceRoot":"","sources":["../../../src/models/share-data/share-data-persistence-models.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAEH,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AAmBzC;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;EAGtC,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;iBAIxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACpC,SAAS,EAAE,cAAc,CAAC;IAC1B,cAAc,EAAE,uBAAuB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;iBAOrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,sDAAsD;AACtD,eAAO,MAAM,mCAAmC,EAAG,CAAU,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PERSISTED_SHARE_DATA_SCHEMA_VERSION = exports.PersistedShareDataSchema = exports.PersistedTransactionSchema = exports.PersistedCreationConfigSchema = exports.PersistedSigningCurveSchema = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const cryptography_settings_1 = require("../../_settings/cryptography-settings");
9
+ const shareblock_models_1 = require("../shareblock/shareblock-models");
10
+ const share_data_crypto_models_1 = require("./share-data-crypto-models");
11
+ const share_data_models_1 = require("./share-data-models");
12
+ // This file contains the wire-format models for persisting a ShareData to a
13
+ // durable store and reconstructing it. The design is event-sourced: a
14
+ // snapshot stores the *creation recipe* + an ordered transaction log, not a
15
+ // field-dump of a finished object. Reload replays construction (re-verifying
16
+ // the structural-proof chain) and the transaction log, then cross-checks the
17
+ // result against the stored `expected*` integrity values. See
18
+ // `plans/PERSISTENCE_PLAN.html`.
19
+ //#region Persistence Schemas
20
+ /**
21
+ * The signing curve a persisted block was created with. Mirrors the values of
22
+ * {@link EllipticalCurvesSigning}; stored for forward-compatibility even
23
+ * though every shipped factory currently uses the `Curve25519` default.
24
+ */
25
+ exports.PersistedSigningCurveSchema = zod_1.default.enum([
26
+ cryptography_settings_1.EllipticalCurvesSigning.Curve25519,
27
+ cryptography_settings_1.EllipticalCurvesSigning.P521,
28
+ ]);
29
+ /**
30
+ * The factory creation input needed to replay construction, minus the
31
+ * `proofFor` callback (which is reconstructed from the stored
32
+ * `structuralProofs` + `initialCrypto` at load time). `initialState` is the
33
+ * *partial* state the factory was given — the factory deterministically
34
+ * assembles the full state from it, so storing the partial form is both
35
+ * sufficient and forward-stable.
36
+ */
37
+ exports.PersistedCreationConfigSchema = zod_1.default.object({
38
+ metadata: shareblock_models_1.IShareBlockMetadataSchema,
39
+ creationPublicKey: zod_1.default.string(),
40
+ initialState: zod_1.default.record(zod_1.default.string(), zod_1.default.any()),
41
+ });
42
+ /**
43
+ * One post-creation transaction, captured at apply time. The live
44
+ * `transactionHistory` does NOT retain a transaction's input or proposed
45
+ * state, so these must be recorded when the transaction is applied rather
46
+ * than recovered from a finished block.
47
+ *
48
+ * - `functionId` re-resolves the live function on the rebuilt block (same
49
+ * id-based lookup `createIdBasedFunctionResolver` uses).
50
+ * - `proposedState` is the state written when the transaction was accepted;
51
+ * it is what replay re-applies.
52
+ * - `proof` is the transaction proposal proof that authorized the change. It
53
+ * is re-verified against the rebuilt block + `proposedState` during replay,
54
+ * so a snapshot whose proposed state or proof was edited fails the load.
55
+ * Recording it also keeps the rebuilt block byte-faithful: the live history
56
+ * entry carries its proof, and the canonical share-data hash folds the
57
+ * history in, so replay must reproduce the proof to hash identically.
58
+ * - `transactionTime` is stored so the replayed history hashes identically.
59
+ * - `ruleOutcome` records whether the original proposal was accepted.
60
+ */
61
+ exports.PersistedTransactionSchema = zod_1.default.object({
62
+ functionId: zod_1.default.string(),
63
+ input: zod_1.default.any().optional(),
64
+ proposedState: share_data_models_1.IShareDataSchema,
65
+ proof: share_data_crypto_models_1.IShareDataCryptoProofSchema,
66
+ transactionTime: zod_1.default.number(),
67
+ ruleOutcome: zod_1.default.boolean(),
68
+ });
69
+ /**
70
+ * A durable snapshot of a ShareData. Versioned via `schemaVersion` so a future
71
+ * format change can be gated cleanly. The `expected*` fields are NOT trusted
72
+ * on load — they are cross-checked against the independently replayed block so
73
+ * a snapshot whose state was edited without re-signing fails loudly.
74
+ */
75
+ exports.PersistedShareDataSchema = zod_1.default.object({
76
+ schemaVersion: zod_1.default.literal(3),
77
+ id: zod_1.default.string(),
78
+ blockType: shareblock_models_1.ShareBlockTypeSchema,
79
+ signingCurve: exports.PersistedSigningCurveSchema,
80
+ initialCrypto: share_data_crypto_models_1.IShareDataInitialCryptoDataSchema,
81
+ creationConfig: exports.PersistedCreationConfigSchema,
82
+ structuralProofs: share_data_crypto_models_1.ShareDataProofsSchema,
83
+ // The delegated-signer grants registered at construction (least-privilege
84
+ // function scoping per grant). The registration *proofs* live in
85
+ // `structuralProofs` keyed by their `delegate:<key>:<ids>` purpose; this
86
+ // field carries the grant tuples the builder replays via
87
+ // `addAuthorizedSigner` so the rebuilt block re-derives the same signer set
88
+ // (and the same canonical hash). Empty for blocks with no delegations.
89
+ authorizedSigners: zod_1.default.array(share_data_crypto_models_1.IAuthorizedSignerSchema),
90
+ transactionLog: zod_1.default.array(exports.PersistedTransactionSchema),
91
+ // Integrity cross-checks — compared against the replayed result, never
92
+ // trusted as source of truth.
93
+ expectedCurrentState: share_data_models_1.IShareDataSchema,
94
+ expectedCreationHash: zod_1.default.string(),
95
+ expectedCreationSignature: zod_1.default.string(),
96
+ expectedIsLocked: zod_1.default.boolean(),
97
+ expectedVersion: zod_1.default.number(),
98
+ });
99
+ /** The only schema version this build understands. */
100
+ exports.PERSISTED_SHARE_DATA_SCHEMA_VERSION = 3;
101
+ //#endregion Persistence Schemas