@degenerate/generic 0.3.2 → 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 (78) hide show
  1. package/dist/_settings/cryptography-settings.d.ts +5 -1
  2. package/dist/_settings/cryptography-settings.d.ts.map +1 -1
  3. package/dist/_settings/cryptography-settings.js +5 -1
  4. package/dist/_settings/database-settings.d.ts +3 -0
  5. package/dist/_settings/database-settings.d.ts.map +1 -1
  6. package/dist/_settings/database-settings.js +3 -0
  7. package/dist/crypto/index.d.ts +5 -9
  8. package/dist/crypto/index.d.ts.map +1 -1
  9. package/dist/crypto/index.js +7 -9
  10. package/dist/crypto/private-public-keys/create-ed25519-keys-from-mnemonic.d.ts +22 -0
  11. package/dist/crypto/private-public-keys/create-ed25519-keys-from-mnemonic.d.ts.map +1 -0
  12. package/dist/crypto/private-public-keys/create-ed25519-keys-from-mnemonic.js +65 -0
  13. package/dist/crypto/private-public-keys/get-ed25519-public-key-from-private-key.d.ts +11 -0
  14. package/dist/crypto/private-public-keys/get-ed25519-public-key-from-private-key.d.ts.map +1 -0
  15. package/dist/crypto/private-public-keys/get-ed25519-public-key-from-private-key.js +15 -0
  16. package/dist/crypto/signature/create-ed25519-signature.d.ts +16 -0
  17. package/dist/crypto/signature/create-ed25519-signature.d.ts.map +1 -0
  18. package/dist/crypto/signature/create-ed25519-signature.js +26 -0
  19. package/dist/crypto/signature/ed25519-primitives.d.ts +25 -0
  20. package/dist/crypto/signature/ed25519-primitives.d.ts.map +1 -0
  21. package/dist/crypto/signature/ed25519-primitives.js +65 -0
  22. package/dist/crypto/signature/verify-ed25519-signature.d.ts +13 -0
  23. package/dist/crypto/signature/verify-ed25519-signature.d.ts.map +1 -0
  24. package/dist/crypto/signature/verify-ed25519-signature.js +31 -0
  25. package/dist/errors/index.d.ts +1 -0
  26. package/dist/errors/index.d.ts.map +1 -1
  27. package/dist/errors/index.js +1 -0
  28. package/dist/errors/settlement/settlement-errors.d.ts +74 -0
  29. package/dist/errors/settlement/settlement-errors.d.ts.map +1 -0
  30. package/dist/errors/settlement/settlement-errors.js +93 -0
  31. package/dist/errors/share-data/share-data-errors.d.ts +13 -0
  32. package/dist/errors/share-data/share-data-errors.d.ts.map +1 -1
  33. package/dist/errors/share-data/share-data-errors.js +19 -1
  34. package/dist/models/index.d.ts +1 -0
  35. package/dist/models/index.d.ts.map +1 -1
  36. package/dist/models/index.js +1 -0
  37. package/dist/models/safe/transactions/sharedata-transactions-models.d.ts +10 -0
  38. package/dist/models/safe/transactions/sharedata-transactions-models.d.ts.map +1 -1
  39. package/dist/models/settlement/settlement-models.d.ts +221 -0
  40. package/dist/models/settlement/settlement-models.d.ts.map +1 -0
  41. package/dist/models/settlement/settlement-models.js +152 -0
  42. package/dist/models/share-data/share-data-crypto-models.d.ts +37 -0
  43. package/dist/models/share-data/share-data-crypto-models.d.ts.map +1 -1
  44. package/dist/models/share-data/share-data-crypto-models.js +41 -1
  45. package/dist/models/share-data/share-data-persistence-models.d.ts +12 -2
  46. package/dist/models/share-data/share-data-persistence-models.d.ts.map +1 -1
  47. package/dist/models/share-data/share-data-persistence-models.js +9 -2
  48. package/dist/models/shareblock/shareblock-models.d.ts +395 -10
  49. package/dist/models/shareblock/shareblock-models.d.ts.map +1 -1
  50. package/dist/models/shareblock/shareblock-models.js +275 -10
  51. package/package.json +3 -4
  52. package/dist/crypto/private-public-keys/create-key-pair-from-mnemonic.d.ts +0 -12
  53. package/dist/crypto/private-public-keys/create-key-pair-from-mnemonic.d.ts.map +0 -1
  54. package/dist/crypto/private-public-keys/create-key-pair-from-mnemonic.js +0 -54
  55. package/dist/crypto/private-public-keys/create-key-pair-from-private-key.d.ts +0 -11
  56. package/dist/crypto/private-public-keys/create-key-pair-from-private-key.d.ts.map +0 -1
  57. package/dist/crypto/private-public-keys/create-key-pair-from-private-key.js +0 -50
  58. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.d.ts +0 -11
  59. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.d.ts.map +0 -1
  60. package/dist/crypto/private-public-keys/create-key-pair-from-public-key.js +0 -51
  61. package/dist/crypto/private-public-keys/generation/create-entropy-for-elliptical-curve.d.ts +0 -10
  62. package/dist/crypto/private-public-keys/generation/create-entropy-for-elliptical-curve.d.ts.map +0 -1
  63. package/dist/crypto/private-public-keys/generation/create-entropy-for-elliptical-curve.js +0 -51
  64. package/dist/crypto/private-public-keys/generation/generate-key-pair.d.ts +0 -11
  65. package/dist/crypto/private-public-keys/generation/generate-key-pair.d.ts.map +0 -1
  66. package/dist/crypto/private-public-keys/generation/generate-key-pair.js +0 -49
  67. package/dist/crypto/private-public-keys/generation/get-private-public-key-from-keypair.d.ts +0 -15
  68. package/dist/crypto/private-public-keys/generation/get-private-public-key-from-keypair.d.ts.map +0 -1
  69. package/dist/crypto/private-public-keys/generation/get-private-public-key-from-keypair.js +0 -21
  70. package/dist/crypto/signature/create-crypto-signature.d.ts +0 -20
  71. package/dist/crypto/signature/create-crypto-signature.d.ts.map +0 -1
  72. package/dist/crypto/signature/create-crypto-signature.js +0 -26
  73. package/dist/crypto/signature/verify-crypto-signature-by-data.d.ts +0 -17
  74. package/dist/crypto/signature/verify-crypto-signature-by-data.d.ts.map +0 -1
  75. package/dist/crypto/signature/verify-crypto-signature-by-data.js +0 -61
  76. package/dist/crypto/signature/verify-crypto-signature-by-hash.d.ts +0 -17
  77. package/dist/crypto/signature/verify-crypto-signature-by-hash.d.ts.map +0 -1
  78. package/dist/crypto/signature/verify-crypto-signature-by-hash.js +0 -58
@@ -25,6 +25,8 @@ export declare const PersistedCreationConfigSchema: z.ZodObject<{
25
25
  Clearing: "Clearing";
26
26
  Funding: "Funding";
27
27
  Distribution: "Distribution";
28
+ GraceRepayment: "GraceRepayment";
29
+ Settlement: "Settlement";
28
30
  }>;
29
31
  relatedLoanApplicationId: z.ZodOptional<z.ZodString>;
30
32
  description: z.ZodOptional<z.ZodString>;
@@ -90,12 +92,14 @@ export type PersistedTransaction = z.infer<typeof PersistedTransactionSchema>;
90
92
  * a snapshot whose state was edited without re-signing fails loudly.
91
93
  */
92
94
  export declare const PersistedShareDataSchema: z.ZodObject<{
93
- schemaVersion: z.ZodLiteral<2>;
95
+ schemaVersion: z.ZodLiteral<3>;
94
96
  id: z.ZodString;
95
97
  blockType: z.ZodEnum<{
96
98
  Clearing: "Clearing";
97
99
  Funding: "Funding";
98
100
  Distribution: "Distribution";
101
+ GraceRepayment: "GraceRepayment";
102
+ Settlement: "Settlement";
99
103
  }>;
100
104
  signingCurve: z.ZodEnum<{
101
105
  ed25519: EllipticalCurvesSigning.Curve25519;
@@ -114,6 +118,8 @@ export declare const PersistedShareDataSchema: z.ZodObject<{
114
118
  Clearing: "Clearing";
115
119
  Funding: "Funding";
116
120
  Distribution: "Distribution";
121
+ GraceRepayment: "GraceRepayment";
122
+ Settlement: "Settlement";
117
123
  }>;
118
124
  relatedLoanApplicationId: z.ZodOptional<z.ZodString>;
119
125
  description: z.ZodOptional<z.ZodString>;
@@ -131,6 +137,10 @@ export declare const PersistedShareDataSchema: z.ZodObject<{
131
137
  timestamp: z.ZodNumber;
132
138
  purpose: z.ZodString;
133
139
  }, z.core.$strip>>;
140
+ authorizedSigners: z.ZodArray<z.ZodObject<{
141
+ publicKey: z.ZodString;
142
+ functionIds: z.ZodArray<z.ZodString>;
143
+ }, z.core.$strip>>;
134
144
  transactionLog: z.ZodArray<z.ZodObject<{
135
145
  functionId: z.ZodString;
136
146
  input: z.ZodOptional<z.ZodAny>;
@@ -154,5 +164,5 @@ export declare const PersistedShareDataSchema: z.ZodObject<{
154
164
  }, z.core.$strip>;
155
165
  export type PersistedShareData = z.infer<typeof PersistedShareDataSchema>;
156
166
  /** The only schema version this build understands. */
157
- export declare const PERSISTED_SHARE_DATA_SCHEMA_VERSION: 2;
167
+ export declare const PERSISTED_SHARE_DATA_SCHEMA_VERSION: 3;
158
168
  //# sourceMappingURL=share-data-persistence-models.d.ts.map
@@ -1 +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;AAkBzC;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,sDAAsD;AACtD,eAAO,MAAM,mCAAmC,EAAG,CAAU,CAAC"}
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"}
@@ -73,13 +73,20 @@ exports.PersistedTransactionSchema = zod_1.default.object({
73
73
  * a snapshot whose state was edited without re-signing fails loudly.
74
74
  */
75
75
  exports.PersistedShareDataSchema = zod_1.default.object({
76
- schemaVersion: zod_1.default.literal(2),
76
+ schemaVersion: zod_1.default.literal(3),
77
77
  id: zod_1.default.string(),
78
78
  blockType: shareblock_models_1.ShareBlockTypeSchema,
79
79
  signingCurve: exports.PersistedSigningCurveSchema,
80
80
  initialCrypto: share_data_crypto_models_1.IShareDataInitialCryptoDataSchema,
81
81
  creationConfig: exports.PersistedCreationConfigSchema,
82
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),
83
90
  transactionLog: zod_1.default.array(exports.PersistedTransactionSchema),
84
91
  // Integrity cross-checks — compared against the replayed result, never
85
92
  // trusted as source of truth.
@@ -90,5 +97,5 @@ exports.PersistedShareDataSchema = zod_1.default.object({
90
97
  expectedVersion: zod_1.default.number(),
91
98
  });
92
99
  /** The only schema version this build understands. */
93
- exports.PERSISTED_SHARE_DATA_SCHEMA_VERSION = 2;
100
+ exports.PERSISTED_SHARE_DATA_SCHEMA_VERSION = 3;
94
101
  //#endregion Persistence Schemas
@@ -1,15 +1,27 @@
1
1
  import z from 'zod';
2
2
  /**
3
- * The three ShareBlock specializations the platform uses to move money
4
- * through a loan's lifecycle.
3
+ * The ShareBlock specializations the platform uses to move money through a
4
+ * loan's lifecycle, plus the cross-block settlement coordinator.
5
5
  *
6
- * - `Clearing` — neutral holding spot funds pass through before they're
7
- * committed to either side of a deal. Used to net
8
- * borrower and lender flows before settling.
9
- * - `Funding` — the lender-funded pool that backs a specific loan.
10
- * Holds principal between funding and disbursement.
11
- * - `Distribution` — the destination ShareBlock that pays principal to a
12
- * borrower or returns/interest to a lender.
6
+ * - `Clearing` — neutral holding spot funds pass through before they're
7
+ * committed to either side of a deal. Used to net
8
+ * borrower and lender flows before settling.
9
+ * - `Funding` — the lender-funded pool that backs a specific loan.
10
+ * Holds principal between funding and disbursement.
11
+ * - `Distribution` — the destination ShareBlock that pays principal to a
12
+ * borrower or returns/interest to a lender.
13
+ * - `GraceRepayment` — the borrower-repayment block for Rapture's Grace
14
+ * product. Per-lender Grace-or-yield decisions are
15
+ * toggled while the loan is in flight, snapshotted at
16
+ * repayment-initiate, and drive the blended-rate
17
+ * allocation when the borrower pays. Terminal state is
18
+ * either `fullyRepaid: true` OR `defaulted: true`,
19
+ * mutually exclusive.
20
+ * - `Settlement` — a cross-block atomic-settlement coordinator. Not a
21
+ * money-holding block: its state is the settlement
22
+ * plan + per-leg status + two-phase-commit phase, and
23
+ * its append-only history is the recovery journal that
24
+ * drives funds across the blocks above all-or-nothing.
13
25
  *
14
26
  * New ShareBlock variants should be additive — never re-use a value with new
15
27
  * semantics, since downstream rule libraries pattern-match on the literal.
@@ -17,13 +29,43 @@ import z from 'zod';
17
29
  export declare enum ShareBlockType {
18
30
  Clearing = "Clearing",
19
31
  Funding = "Funding",
20
- Distribution = "Distribution"
32
+ Distribution = "Distribution",
33
+ GraceRepayment = "GraceRepayment",
34
+ Settlement = "Settlement"
21
35
  }
22
36
  export declare const ShareBlockTypeSchema: z.ZodEnum<{
23
37
  Clearing: "Clearing";
24
38
  Funding: "Funding";
25
39
  Distribution: "Distribution";
40
+ GraceRepayment: "GraceRepayment";
41
+ Settlement: "Settlement";
26
42
  }>;
43
+ /**
44
+ * Direction of a settlement leg relative to one participating block:
45
+ *
46
+ * - `debit` — funds leave this block (it is the source). On reserve the
47
+ * amount is removed from spendable `balance` and held.
48
+ * - `credit` — funds arrive at this block (it is the destination). On
49
+ * reserve nothing moves yet; the amount lands at commit.
50
+ *
51
+ * Shared by the per-block reservation bucket and the coordinator's leg list.
52
+ */
53
+ export declare const SettlementLegDirectionSchema: z.ZodEnum<{
54
+ debit: "debit";
55
+ credit: "credit";
56
+ }>;
57
+ export type SettlementLegDirection = z.infer<typeof SettlementLegDirectionSchema>;
58
+ /**
59
+ * Lifecycle of one block's reservation for a settlement. Advances forward
60
+ * only: `reserved → committed` (finalized) or `reserved → released` (unwound
61
+ * on abort). A standard rule enforces the monotonicity.
62
+ */
63
+ export declare const ReservationStatusSchema: z.ZodEnum<{
64
+ reserved: "reserved";
65
+ committed: "committed";
66
+ released: "released";
67
+ }>;
68
+ export type ReservationStatus = z.infer<typeof ReservationStatusSchema>;
27
69
  /**
28
70
  * Roles a participant plays inside a ShareBlock. A single party may hold
29
71
  * multiple roles across different ShareBlocks (e.g. the same uid is `Lender`
@@ -59,6 +101,37 @@ export declare const IShareBlockParticipantSchema: z.ZodObject<{
59
101
  settledAmount: z.ZodNumber;
60
102
  }, z.core.$strip>;
61
103
  export type IShareBlockParticipant = z.infer<typeof IShareBlockParticipantSchema>;
104
+ /**
105
+ * One block's record of funds it is holding for an in-flight settlement,
106
+ * stored under `settlementId` in the block's `reservations` bucket. The
107
+ * per-block half of the two-phase-commit money model:
108
+ *
109
+ * - debit leg — `amountCents` is already removed from `balance` and held
110
+ * here until the settlement commits (finalized out) or aborts
111
+ * (returned to `balance`).
112
+ * - credit leg — pending incoming funds; `balance` is unchanged until the
113
+ * settlement commits, at which point `amountCents` lands.
114
+ *
115
+ * `againstHash` pins the leg to the block's current-state hash at sign time
116
+ * (D5 drift guard): if the block advanced since the leg was signed, the
117
+ * reserve proof fails at the transaction boundary and the settlement aborts.
118
+ */
119
+ export declare const IReservedLegSchema: z.ZodObject<{
120
+ settlementId: z.ZodString;
121
+ direction: z.ZodEnum<{
122
+ debit: "debit";
123
+ credit: "credit";
124
+ }>;
125
+ amountCents: z.ZodNumber;
126
+ currency: z.ZodString;
127
+ againstHash: z.ZodString;
128
+ status: z.ZodEnum<{
129
+ reserved: "reserved";
130
+ committed: "committed";
131
+ released: "released";
132
+ }>;
133
+ }, z.core.$strip>;
134
+ export type IReservedLeg = z.infer<typeof IReservedLegSchema>;
62
135
  /**
63
136
  * The mutable state carried inside a ShareBlock's `_currentState`. This is
64
137
  * the canonical shape rules and functions inspect when proposing changes.
@@ -71,12 +144,19 @@ export type IShareBlockParticipant = z.infer<typeof IShareBlockParticipantSchema
71
144
  * - `participants` — committed parties keyed by `userId`. Adding a
72
145
  * participant goes through a rule-gated function so the
73
146
  * participant list itself is auditable.
147
+ * - `reservations` — in-flight settlement holds keyed by `settlementId`.
148
+ * Optional and absent by default; a block only carries this
149
+ * once it opts into the settlement capability and a settlement
150
+ * reserves against it. Funds held here are excluded from
151
+ * spendable `balance` (debit legs are already deducted).
74
152
  */
75
153
  export declare const IShareBlockStateSchema: z.ZodObject<{
76
154
  blockType: z.ZodEnum<{
77
155
  Clearing: "Clearing";
78
156
  Funding: "Funding";
79
157
  Distribution: "Distribution";
158
+ GraceRepayment: "GraceRepayment";
159
+ Settlement: "Settlement";
80
160
  }>;
81
161
  balance: z.ZodNumber;
82
162
  currency: z.ZodString;
@@ -92,6 +172,21 @@ export declare const IShareBlockStateSchema: z.ZodObject<{
92
172
  committedAmount: z.ZodNumber;
93
173
  settledAmount: z.ZodNumber;
94
174
  }, z.core.$strip>>;
175
+ reservations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
176
+ settlementId: z.ZodString;
177
+ direction: z.ZodEnum<{
178
+ debit: "debit";
179
+ credit: "credit";
180
+ }>;
181
+ amountCents: z.ZodNumber;
182
+ currency: z.ZodString;
183
+ againstHash: z.ZodString;
184
+ status: z.ZodEnum<{
185
+ reserved: "reserved";
186
+ committed: "committed";
187
+ released: "released";
188
+ }>;
189
+ }, z.core.$strip>>>;
95
190
  }, z.core.$strip>;
96
191
  export type IShareBlockState = z.infer<typeof IShareBlockStateSchema>;
97
192
  /**
@@ -120,6 +215,21 @@ export declare const IFundingShareBlockStateSchema: z.ZodObject<{
120
215
  committedAmount: z.ZodNumber;
121
216
  settledAmount: z.ZodNumber;
122
217
  }, z.core.$strip>>;
218
+ reservations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
219
+ settlementId: z.ZodString;
220
+ direction: z.ZodEnum<{
221
+ debit: "debit";
222
+ credit: "credit";
223
+ }>;
224
+ amountCents: z.ZodNumber;
225
+ currency: z.ZodString;
226
+ againstHash: z.ZodString;
227
+ status: z.ZodEnum<{
228
+ reserved: "reserved";
229
+ committed: "committed";
230
+ released: "released";
231
+ }>;
232
+ }, z.core.$strip>>>;
123
233
  blockType: z.ZodLiteral<"Funding">;
124
234
  committed: z.ZodBoolean;
125
235
  committedBy: z.ZodOptional<z.ZodString>;
@@ -153,12 +263,161 @@ export declare const IDistributionShareBlockStateSchema: z.ZodObject<{
153
263
  committedAmount: z.ZodNumber;
154
264
  settledAmount: z.ZodNumber;
155
265
  }, z.core.$strip>>;
266
+ reservations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
267
+ settlementId: z.ZodString;
268
+ direction: z.ZodEnum<{
269
+ debit: "debit";
270
+ credit: "credit";
271
+ }>;
272
+ amountCents: z.ZodNumber;
273
+ currency: z.ZodString;
274
+ againstHash: z.ZodString;
275
+ status: z.ZodEnum<{
276
+ reserved: "reserved";
277
+ committed: "committed";
278
+ released: "released";
279
+ }>;
280
+ }, z.core.$strip>>>;
156
281
  blockType: z.ZodLiteral<"Distribution">;
157
282
  distributed: z.ZodBoolean;
158
283
  distributedBy: z.ZodOptional<z.ZodString>;
159
284
  distributedAt: z.ZodOptional<z.ZodNumber>;
160
285
  }, z.core.$strip>;
161
286
  export type IDistributionShareBlockState = z.infer<typeof IDistributionShareBlockStateSchema>;
287
+ /**
288
+ * GraceRepayment-specific participant. Extends the base participant with
289
+ * three Grace-specific fields plus a denormalized ShareBlock count:
290
+ *
291
+ * - `graceDecision` — Lender-only field. The lender's current
292
+ * choice: take their yield, grant Grace, or
293
+ * undecided (the initial state when the
294
+ * GraceRepayment block is constructed).
295
+ * Borrower and Platform participants always
296
+ * carry `'undecided'` and never mutate it.
297
+ * - `decidedAtMs` — Unix-ms timestamp the lender last set their
298
+ * decision. `null` while undecided.
299
+ * - `snapshotDecision` — The locked-in decision at the moment the
300
+ * borrower initiated repayment. `null` until
301
+ * snapshot. After snapshot it's the
302
+ * authoritative value the per-lender
303
+ * settlement uses.
304
+ * - `shareBlockCount` — Derived count of $10 ShareBlocks held by
305
+ * this lender on this loan
306
+ * (`committedAmount / 1000` for cents-based
307
+ * committed amounts). Cached for fast UI
308
+ * queries; the canonical source is still
309
+ * `committedAmount`.
310
+ */
311
+ export declare const IGraceRepaymentParticipantSchema: z.ZodObject<{
312
+ userId: z.ZodString;
313
+ role: z.ZodEnum<{
314
+ Borrower: "Borrower";
315
+ Lender: "Lender";
316
+ Platform: "Platform";
317
+ Recipient: "Recipient";
318
+ }>;
319
+ committedAmount: z.ZodNumber;
320
+ settledAmount: z.ZodNumber;
321
+ graceDecision: z.ZodEnum<{
322
+ yield: "yield";
323
+ grace: "grace";
324
+ undecided: "undecided";
325
+ }>;
326
+ decidedAtMs: z.ZodOptional<z.ZodNumber>;
327
+ snapshotDecision: z.ZodOptional<z.ZodEnum<{
328
+ yield: "yield";
329
+ grace: "grace";
330
+ }>>;
331
+ shareBlockCount: z.ZodNumber;
332
+ }, z.core.$strip>;
333
+ export type IGraceRepaymentParticipant = z.infer<typeof IGraceRepaymentParticipantSchema>;
334
+ /**
335
+ * GraceRepayment-specific extension of `IShareBlockState`. Adds:
336
+ *
337
+ * - `outstandingPrincipalCents` — running principal balance the
338
+ * borrower owes. Decrements as
339
+ * repayments land.
340
+ * - `outstandingInterestCents` — interest owed at the time of
341
+ * repayment snapshot. Computed
342
+ * atomically at snapshot from the
343
+ * blended rate; decrements as
344
+ * repayments land.
345
+ * - `repaymentSnapshotAtMs` — unix-ms timestamp the per-lender
346
+ * Grace decisions were locked in.
347
+ * `null` until the borrower
348
+ * initiates repayment.
349
+ * - `blendedRatePercent` — weighted-average effective rate
350
+ * computed at snapshot. `null` pre-
351
+ * snapshot.
352
+ * - `finalEffectiveRatePercent` — what the borrower actually pays;
353
+ * equal to `blendedRatePercent`
354
+ * under the standard formula. `null`
355
+ * pre-snapshot.
356
+ * - `fullyRepaid` / `defaulted` — mutually exclusive terminal flags.
357
+ * Both monotonic (once true, never
358
+ * back to false).
359
+ * - `defaultReason` / `defaultedAtMs` — audit attribution for the
360
+ * default moment.
361
+ *
362
+ * Participants are typed as `IGraceRepaymentParticipant` (extended
363
+ * with per-lender Grace decision fields).
364
+ */
365
+ export declare const IGraceRepaymentShareBlockStateSchema: z.ZodObject<{
366
+ balance: z.ZodNumber;
367
+ currency: z.ZodString;
368
+ isOpen: z.ZodBoolean;
369
+ reservations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
370
+ settlementId: z.ZodString;
371
+ direction: z.ZodEnum<{
372
+ debit: "debit";
373
+ credit: "credit";
374
+ }>;
375
+ amountCents: z.ZodNumber;
376
+ currency: z.ZodString;
377
+ againstHash: z.ZodString;
378
+ status: z.ZodEnum<{
379
+ reserved: "reserved";
380
+ committed: "committed";
381
+ released: "released";
382
+ }>;
383
+ }, z.core.$strip>>>;
384
+ blockType: z.ZodLiteral<"GraceRepayment">;
385
+ participants: z.ZodRecord<z.ZodString, z.ZodObject<{
386
+ userId: z.ZodString;
387
+ role: z.ZodEnum<{
388
+ Borrower: "Borrower";
389
+ Lender: "Lender";
390
+ Platform: "Platform";
391
+ Recipient: "Recipient";
392
+ }>;
393
+ committedAmount: z.ZodNumber;
394
+ settledAmount: z.ZodNumber;
395
+ graceDecision: z.ZodEnum<{
396
+ yield: "yield";
397
+ grace: "grace";
398
+ undecided: "undecided";
399
+ }>;
400
+ decidedAtMs: z.ZodOptional<z.ZodNumber>;
401
+ snapshotDecision: z.ZodOptional<z.ZodEnum<{
402
+ yield: "yield";
403
+ grace: "grace";
404
+ }>>;
405
+ shareBlockCount: z.ZodNumber;
406
+ }, z.core.$strip>>;
407
+ outstandingPrincipalCents: z.ZodNumber;
408
+ outstandingInterestCents: z.ZodNumber;
409
+ repaymentSnapshotAtMs: z.ZodOptional<z.ZodNumber>;
410
+ blendedRatePercent: z.ZodOptional<z.ZodNumber>;
411
+ finalEffectiveRatePercent: z.ZodOptional<z.ZodNumber>;
412
+ snapshotBaselineRatePercent: z.ZodOptional<z.ZodNumber>;
413
+ snapshotGraceMicroInterestPercent: z.ZodOptional<z.ZodNumber>;
414
+ snapshotGracePerShareBlockFeeCents: z.ZodOptional<z.ZodNumber>;
415
+ fullyRepaid: z.ZodBoolean;
416
+ defaulted: z.ZodBoolean;
417
+ defaultReason: z.ZodOptional<z.ZodString>;
418
+ defaultedAtMs: z.ZodOptional<z.ZodNumber>;
419
+ }, z.core.$strip>;
420
+ export type IGraceRepaymentShareBlockState = z.infer<typeof IGraceRepaymentShareBlockStateSchema>;
162
421
  /**
163
422
  * Static information about a ShareBlock — set at construction and never
164
423
  * mutated through transactions. Lives outside `IShareBlockState` because
@@ -171,6 +430,8 @@ export declare const IShareBlockMetadataSchema: z.ZodObject<{
171
430
  Clearing: "Clearing";
172
431
  Funding: "Funding";
173
432
  Distribution: "Distribution";
433
+ GraceRepayment: "GraceRepayment";
434
+ Settlement: "Settlement";
174
435
  }>;
175
436
  relatedLoanApplicationId: z.ZodOptional<z.ZodString>;
176
437
  description: z.ZodOptional<z.ZodString>;
@@ -277,4 +538,128 @@ export declare const IShareBlockMarkFullyDistributedInputSchema: z.ZodObject<{
277
538
  userId: z.ZodString;
278
539
  }, z.core.$strip>;
279
540
  export type IShareBlockMarkFullyDistributedInput = z.infer<typeof IShareBlockMarkFullyDistributedInputSchema>;
541
+ /**
542
+ * Input for the GraceRepayment `setLenderGraceDecision` function.
543
+ * Lender-callable while the block is open and pre-snapshot. The block's
544
+ * rules also enforce that the calling userId matches the participant
545
+ * being mutated (lenders can only set their own decisions, not others').
546
+ */
547
+ export declare const IShareBlockSetLenderGraceDecisionInputSchema: z.ZodObject<{
548
+ userId: z.ZodString;
549
+ decision: z.ZodEnum<{
550
+ yield: "yield";
551
+ grace: "grace";
552
+ }>;
553
+ decidedAtMs: z.ZodNumber;
554
+ }, z.core.$strip>;
555
+ export type IShareBlockSetLenderGraceDecisionInput = z.infer<typeof IShareBlockSetLenderGraceDecisionInputSchema>;
556
+ /**
557
+ * Input for the GraceRepayment `snapshotForRepayment` function.
558
+ * Platform-only. Atomic: freezes every Lender participant's
559
+ * `snapshotDecision` from their current `graceDecision`, computes
560
+ * `blendedRatePercent` and `finalEffectiveRatePercent` from the
561
+ * weighted decisions, sets `outstandingInterestCents` to the final
562
+ * computed amount, and stamps `repaymentSnapshotAtMs`.
563
+ *
564
+ * `graceMicroInterestPercent` and `gracePerShareBlockFeeCents` are the
565
+ * platform-fee configuration values used in the math; passing them via
566
+ * the input keeps the variant function pure (no implicit config
567
+ * lookup).
568
+ */
569
+ export declare const IShareBlockSnapshotForRepaymentInputSchema: z.ZodObject<{
570
+ userId: z.ZodString;
571
+ baselineRatePercent: z.ZodNumber;
572
+ termDays: z.ZodNumber;
573
+ graceMicroInterestPercent: z.ZodNumber;
574
+ gracePerShareBlockFeeCents: z.ZodNumber;
575
+ snapshotAtMs: z.ZodNumber;
576
+ }, z.core.$strip>;
577
+ export type IShareBlockSnapshotForRepaymentInput = z.infer<typeof IShareBlockSnapshotForRepaymentInputSchema>;
578
+ /**
579
+ * Input for the GraceRepayment `recordRepayment` function. Platform-only.
580
+ * Applies an inbound borrower payment per the snapshot decisions:
581
+ * yield-ShareBlock lenders receive their share of `borrowerInterest`;
582
+ * grace-ShareBlock lenders receive only the micro-interest minus the
583
+ * per-ShareBlock fee. Decrements `outstandingInterestCents` first,
584
+ * then `outstandingPrincipalCents`. Auto-marks `fullyRepaid` when
585
+ * both reach zero.
586
+ *
587
+ * `paymentAttemptId` is the idempotency key — a second call with the
588
+ * same id is a no-op.
589
+ */
590
+ export declare const IShareBlockRecordRepaymentInputSchema: z.ZodObject<{
591
+ userId: z.ZodString;
592
+ paymentAttemptId: z.ZodString;
593
+ amountCents: z.ZodNumber;
594
+ paidAtMs: z.ZodNumber;
595
+ }, z.core.$strip>;
596
+ export type IShareBlockRecordRepaymentInput = z.infer<typeof IShareBlockRecordRepaymentInputSchema>;
597
+ /**
598
+ * Input for the GraceRepayment `markFullyRepaid` function. Platform-only.
599
+ * Asserts `outstandingPrincipalCents === 0 && outstandingInterestCents
600
+ * === 0` before flipping. Mutually exclusive with `markDefaulted`.
601
+ */
602
+ export declare const IShareBlockMarkFullyRepaidInputSchema: z.ZodObject<{
603
+ userId: z.ZodString;
604
+ asOf: z.ZodNumber;
605
+ }, z.core.$strip>;
606
+ export type IShareBlockMarkFullyRepaidInput = z.infer<typeof IShareBlockMarkFullyRepaidInputSchema>;
607
+ /**
608
+ * Input for the GraceRepayment `markDefaulted` function. Platform-only.
609
+ * Mutually exclusive with `markFullyRepaid`. Sets the terminal default
610
+ * flag + audit metadata; the post-default flow (lender write-off,
611
+ * borrower loyalty reset, identity-reveal opt-ins) happens in Rapture's
612
+ * trigger layer, not here.
613
+ */
614
+ export declare const IShareBlockMarkDefaultedInputSchema: z.ZodObject<{
615
+ userId: z.ZodString;
616
+ reason: z.ZodString;
617
+ asOf: z.ZodNumber;
618
+ }, z.core.$strip>;
619
+ export type IShareBlockMarkDefaultedInput = z.infer<typeof IShareBlockMarkDefaultedInputSchema>;
620
+ /**
621
+ * Input for the generic `reserveForSettlement` function (any block that opted
622
+ * into the settlement capability). Phase-1 (PREPARE) of the two-phase commit:
623
+ * holds `amountCents` for `settlementId`. `direction` selects debit (deduct
624
+ * from `balance`) vs credit (pending incoming, no balance change).
625
+ * `expectedHash` is the block's current-state hash the leg was signed against
626
+ * — the function rejects if it does not match, backing up the proof-chain
627
+ * drift guard (D5). Idempotent: a second reserve for the same `settlementId`
628
+ * is a no-op.
629
+ */
630
+ export declare const IShareBlockReserveForSettlementInputSchema: z.ZodObject<{
631
+ userId: z.ZodString;
632
+ settlementId: z.ZodString;
633
+ direction: z.ZodEnum<{
634
+ debit: "debit";
635
+ credit: "credit";
636
+ }>;
637
+ amountCents: z.ZodNumber;
638
+ currency: z.ZodString;
639
+ expectedHash: z.ZodString;
640
+ }, z.core.$strip>;
641
+ export type IShareBlockReserveForSettlementInput = z.infer<typeof IShareBlockReserveForSettlementInputSchema>;
642
+ /**
643
+ * Input for the generic `commitSettlement` function. Phase-2 finalize for one
644
+ * leg: credit legs add the held amount to `balance`; both directions then
645
+ * clear the reservation. Carries only the settlement id — amount and
646
+ * direction are read from the stored reservation. Idempotent: a second call
647
+ * once the reservation is gone is a no-op.
648
+ */
649
+ export declare const IShareBlockCommitSettlementInputSchema: z.ZodObject<{
650
+ userId: z.ZodString;
651
+ settlementId: z.ZodString;
652
+ }, z.core.$strip>;
653
+ export type IShareBlockCommitSettlementInput = z.infer<typeof IShareBlockCommitSettlementInputSchema>;
654
+ /**
655
+ * Input for the generic `releaseSettlement` function. Abort-path unwind for
656
+ * one leg: debit legs return the held amount to `balance`; both directions
657
+ * delete the reservation. Idempotent: releasing an absent reservation is a
658
+ * no-op.
659
+ */
660
+ export declare const IShareBlockReleaseSettlementInputSchema: z.ZodObject<{
661
+ userId: z.ZodString;
662
+ settlementId: z.ZodString;
663
+ }, z.core.$strip>;
664
+ export type IShareBlockReleaseSettlementInput = z.infer<typeof IShareBlockReleaseSettlementInputSchema>;
280
665
  //# sourceMappingURL=shareblock-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shareblock-models.d.ts","sourceRoot":"","sources":["../../../src/models/shareblock/shareblock-models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shareblock-models.d.ts","sourceRoot":"","sources":["../../../src/models/shareblock/shareblock-models.ts"],"names":[],"mappings":"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"}