@agoric/inter-protocol 0.16.2-upgrade-14-dev-0169c7e.0 → 0.16.2-upgrade-16-dev-8879538.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 (175) hide show
  1. package/package.json +41 -34
  2. package/scripts/build-bundles.js +5 -21
  3. package/src/auction/auctionBook.d.ts +84 -0
  4. package/src/auction/auctionBook.d.ts.map +1 -0
  5. package/src/auction/auctionBook.js +135 -103
  6. package/src/auction/auctioneer.d.ts +83 -0
  7. package/src/auction/auctioneer.d.ts.map +1 -0
  8. package/src/auction/auctioneer.js +63 -49
  9. package/src/auction/offerBook.d.ts +45 -0
  10. package/src/auction/offerBook.d.ts.map +1 -0
  11. package/src/auction/offerBook.js +13 -12
  12. package/src/auction/params.d.ts +149 -0
  13. package/src/auction/params.d.ts.map +1 -0
  14. package/src/auction/params.js +10 -9
  15. package/src/auction/scheduleMath.d.ts +5 -0
  16. package/src/auction/scheduleMath.d.ts.map +1 -0
  17. package/src/auction/scheduleMath.js +17 -15
  18. package/src/auction/scheduler.d.ts +49 -0
  19. package/src/auction/scheduler.d.ts.map +1 -0
  20. package/src/auction/scheduler.js +51 -43
  21. package/src/auction/sortedOffers.d.ts +8 -0
  22. package/src/auction/sortedOffers.d.ts.map +1 -0
  23. package/src/auction/sortedOffers.js +9 -7
  24. package/src/auction/util.d.ts +32 -0
  25. package/src/auction/util.d.ts.map +1 -0
  26. package/src/auction/util.js +6 -4
  27. package/src/clientSupport.d.ts +167 -0
  28. package/src/clientSupport.d.ts.map +1 -0
  29. package/src/clientSupport.js +97 -40
  30. package/src/collectFees.d.ts +2 -0
  31. package/src/collectFees.d.ts.map +1 -0
  32. package/src/contractSupport.d.ts +28 -0
  33. package/src/contractSupport.d.ts.map +1 -0
  34. package/src/contractSupport.js +14 -12
  35. package/src/econCommitteeCharter.d.ts +39 -0
  36. package/src/econCommitteeCharter.d.ts.map +1 -0
  37. package/src/econCommitteeCharter.js +21 -20
  38. package/src/feeDistributor.d.ts +224 -0
  39. package/src/feeDistributor.d.ts.map +1 -0
  40. package/src/feeDistributor.js +37 -33
  41. package/src/index.d.ts +2 -0
  42. package/src/index.d.ts.map +1 -0
  43. package/src/index.js +1 -0
  44. package/src/interest-math.d.ts +3 -0
  45. package/src/interest-math.d.ts.map +1 -0
  46. package/src/interest.d.ts +28 -0
  47. package/src/interest.d.ts.map +1 -0
  48. package/src/interest.js +21 -16
  49. package/src/price/README.md +13 -0
  50. package/src/price/fluxAggregatorContract.d.ts +70 -0
  51. package/src/price/fluxAggregatorContract.d.ts.map +1 -0
  52. package/src/price/fluxAggregatorContract.js +62 -55
  53. package/src/price/fluxAggregatorKit.d.ts +103 -0
  54. package/src/price/fluxAggregatorKit.d.ts.map +1 -0
  55. package/src/price/fluxAggregatorKit.js +50 -37
  56. package/src/price/priceOracleKit.d.ts +38 -0
  57. package/src/price/priceOracleKit.d.ts.map +1 -0
  58. package/src/price/priceOracleKit.js +11 -13
  59. package/src/price/roundsManager.d.ts +238 -0
  60. package/src/price/roundsManager.d.ts.map +1 -0
  61. package/src/price/roundsManager.js +77 -82
  62. package/src/proposals/README.md +2 -3
  63. package/src/proposals/add-auction.d.ts +69 -0
  64. package/src/proposals/add-auction.d.ts.map +1 -0
  65. package/src/proposals/add-auction.js +181 -0
  66. package/src/proposals/addAssetToVault.d.ts +160 -0
  67. package/src/proposals/addAssetToVault.d.ts.map +1 -0
  68. package/src/proposals/addAssetToVault.js +172 -38
  69. package/src/proposals/committee-proposal.d.ts +113 -0
  70. package/src/proposals/committee-proposal.d.ts.map +1 -0
  71. package/src/proposals/committee-proposal.js +25 -31
  72. package/src/proposals/core-proposal.d.ts +149 -0
  73. package/src/proposals/core-proposal.d.ts.map +1 -0
  74. package/src/proposals/core-proposal.js +9 -11
  75. package/src/proposals/econ-behaviors.d.ts +1169 -0
  76. package/src/proposals/econ-behaviors.d.ts.map +1 -0
  77. package/src/proposals/econ-behaviors.js +66 -45
  78. package/src/proposals/price-feed-proposal.d.ts +84 -0
  79. package/src/proposals/price-feed-proposal.d.ts.map +1 -0
  80. package/src/proposals/price-feed-proposal.js +108 -51
  81. package/src/proposals/startEconCommittee.d.ts +34 -0
  82. package/src/proposals/startEconCommittee.d.ts.map +1 -0
  83. package/src/proposals/startEconCommittee.js +2 -2
  84. package/src/proposals/startPSM.d.ts +59 -0
  85. package/src/proposals/startPSM.d.ts.map +1 -0
  86. package/src/proposals/startPSM.js +38 -27
  87. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts +24 -0
  88. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts.map +1 -0
  89. package/src/proposals/upgrade-scaledPriceAuthorities.js +78 -0
  90. package/src/proposals/upgrade-vaults.d.ts +35 -0
  91. package/src/proposals/upgrade-vaults.d.ts.map +1 -0
  92. package/src/proposals/upgrade-vaults.js +202 -0
  93. package/src/proposals/utils.d.ts +17 -0
  94. package/src/proposals/utils.d.ts.map +1 -0
  95. package/src/proposals/utils.js +34 -7
  96. package/src/provisionPool.d.ts +167 -0
  97. package/src/provisionPool.d.ts.map +1 -0
  98. package/src/provisionPool.js +122 -0
  99. package/src/provisionPoolKit.d.ts +770 -0
  100. package/src/provisionPoolKit.d.ts.map +1 -0
  101. package/src/provisionPoolKit.js +463 -0
  102. package/src/psm/psm.d.ts +122 -0
  103. package/src/psm/psm.d.ts.map +1 -0
  104. package/src/psm/psm.js +73 -69
  105. package/src/psm/types-ambient.d.ts +2 -0
  106. package/src/psm/types-ambient.d.ts.map +1 -0
  107. package/src/psm/types-ambient.js +3 -0
  108. package/src/reserve/assetReserve.d.ts +47 -0
  109. package/src/reserve/assetReserve.d.ts.map +1 -0
  110. package/src/reserve/assetReserve.js +28 -19
  111. package/src/reserve/assetReserveKit.d.ts +74 -0
  112. package/src/reserve/assetReserveKit.d.ts.map +1 -0
  113. package/src/reserve/assetReserveKit.js +18 -24
  114. package/src/reserve/params.d.ts +10 -0
  115. package/src/reserve/params.d.ts.map +1 -0
  116. package/src/tokens.d.ts +3 -0
  117. package/src/tokens.d.ts.map +1 -0
  118. package/src/tokens.js +5 -0
  119. package/src/vaultFactory/burn.d.ts +2 -0
  120. package/src/vaultFactory/burn.d.ts.map +1 -0
  121. package/src/vaultFactory/burn.js +1 -1
  122. package/src/vaultFactory/liquidation.d.ts +163 -0
  123. package/src/vaultFactory/liquidation.d.ts.map +1 -0
  124. package/src/vaultFactory/liquidation.js +36 -22
  125. package/src/vaultFactory/math.d.ts +11 -0
  126. package/src/vaultFactory/math.d.ts.map +1 -0
  127. package/src/vaultFactory/math.js +10 -9
  128. package/src/vaultFactory/orderedVaultStore.d.ts +360 -0
  129. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
  130. package/src/vaultFactory/orderedVaultStore.js +8 -11
  131. package/src/vaultFactory/params.d.ts +145 -0
  132. package/src/vaultFactory/params.d.ts.map +1 -0
  133. package/src/vaultFactory/params.js +52 -24
  134. package/src/vaultFactory/prioritizedVaults.d.ts +992 -0
  135. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
  136. package/src/vaultFactory/prioritizedVaults.js +4 -4
  137. package/src/vaultFactory/proceeds.d.ts +35 -0
  138. package/src/vaultFactory/proceeds.d.ts.map +1 -0
  139. package/src/vaultFactory/proceeds.js +26 -18
  140. package/src/vaultFactory/storeUtils.d.ts +25 -0
  141. package/src/vaultFactory/storeUtils.d.ts.map +1 -0
  142. package/src/vaultFactory/storeUtils.js +10 -12
  143. package/src/vaultFactory/types-ambient.d.ts +234 -0
  144. package/src/vaultFactory/types-ambient.d.ts.map +1 -0
  145. package/src/vaultFactory/{types.js → types-ambient.js} +42 -42
  146. package/src/vaultFactory/vault.d.ts +402 -0
  147. package/src/vaultFactory/vault.d.ts.map +1 -0
  148. package/src/vaultFactory/vault.js +99 -93
  149. package/src/vaultFactory/vaultDirector.d.ts +388 -0
  150. package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
  151. package/src/vaultFactory/vaultDirector.js +61 -50
  152. package/src/vaultFactory/vaultFactory.d.ts +277 -0
  153. package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
  154. package/src/vaultFactory/vaultFactory.js +49 -32
  155. package/src/vaultFactory/vaultHolder.d.ts +270 -0
  156. package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
  157. package/src/vaultFactory/vaultHolder.js +10 -14
  158. package/src/vaultFactory/vaultKit.d.ts +102 -0
  159. package/src/vaultFactory/vaultKit.d.ts.map +1 -0
  160. package/src/vaultFactory/vaultKit.js +5 -4
  161. package/src/vaultFactory/vaultManager.d.ts +819 -0
  162. package/src/vaultFactory/vaultManager.d.ts.map +1 -0
  163. package/src/vaultFactory/vaultManager.js +248 -151
  164. package/CHANGELOG.md +0 -1066
  165. package/exported.js +0 -2
  166. package/scripts/add-collateral-core.js +0 -113
  167. package/scripts/deploy-contracts.js +0 -100
  168. package/scripts/init-core.js +0 -200
  169. package/scripts/invite-committee-core.js +0 -42
  170. package/scripts/manual-price-feed.js +0 -117
  171. package/scripts/price-feed-core.js +0 -104
  172. package/scripts/start-local-chain.sh +0 -84
  173. package/src/psm/types.js +0 -3
  174. package/src/typeGuards.js +0 -13
  175. package/src/vaultFactory/type-imports.js +0 -4
@@ -0,0 +1,402 @@
1
+ export namespace Phase {
2
+ let ACTIVE: "active";
3
+ let LIQUIDATING: "liquidating";
4
+ let CLOSED: "closed";
5
+ let LIQUIDATED: "liquidated";
6
+ let TRANSFER: "transfer";
7
+ }
8
+ /**
9
+ * @typedef {Phase[keyof typeof Phase]} HolderPhase
10
+ *
11
+ * @typedef {object} VaultNotification
12
+ * @property {Amount<'nat'>} locked Amount of Collateral locked
13
+ * @property {{ debt: Amount<'nat'>; interest: Ratio }} debtSnapshot 'debt' at
14
+ * the point the compounded interest was 'interest'
15
+ * @property {HolderPhase} vaultState
16
+ */
17
+ /**
18
+ * @typedef {object} VaultManager
19
+ * @property {() => Subscriber<import('./vaultManager.js').AssetState>} getAssetSubscriber
20
+ * @property {(collateralAmount: Amount) => Amount<'nat'>} maxDebtFor
21
+ * @property {() => Brand<'nat'>} getCollateralBrand
22
+ * @property {(base: string) => string} scopeDescription
23
+ * @property {() => Brand<'nat'>} getDebtBrand
24
+ * @property {MintAndTransfer} mintAndTransfer
25
+ * @property {(amount: Amount, seat: ZCFSeat) => void} burn
26
+ * @property {() => Ratio} getCompoundedInterest
27
+ * @property {(
28
+ * oldDebt: import('./storeUtils.js').NormalizedDebt,
29
+ * oldCollateral: Amount<'nat'>,
30
+ * vaultId: VaultId,
31
+ * vaultPhase: VaultPhase,
32
+ * vault: Vault,
33
+ * ) => void} handleBalanceChange
34
+ * @property {() => import('./vaultManager.js').GovernedParamGetters} getGovernedParams
35
+ */
36
+ /**
37
+ * @typedef {Readonly<{
38
+ * idInManager: VaultId;
39
+ * manager: VaultManager;
40
+ * storageNode: StorageNode;
41
+ * vaultSeat: ZCFSeat;
42
+ * }>} ImmutableState
43
+ */
44
+ /**
45
+ * Snapshot is of the debt and compounded interest when the principal was last
46
+ * changed.
47
+ *
48
+ * @typedef {{
49
+ * interestSnapshot: Ratio;
50
+ * phase: VaultPhase;
51
+ * debtSnapshot: Amount<'nat'>;
52
+ * outerUpdater:
53
+ * | import('@agoric/zoe/src/contractSupport/recorder.js').Recorder<VaultNotification>
54
+ * | null;
55
+ * }} MutableState
56
+ */
57
+ export const VaultI: import("@endo/patterns").InterfaceGuard<{
58
+ getCollateralAmount: import("@endo/patterns").MethodGuard;
59
+ getCurrentDebt: import("@endo/patterns").MethodGuard;
60
+ getNormalizedDebt: import("@endo/patterns").MethodGuard;
61
+ getVaultSeat: import("@endo/patterns").MethodGuard;
62
+ initVaultKit: import("@endo/patterns").MethodGuard;
63
+ liquidated: import("@endo/patterns").MethodGuard;
64
+ liquidating: import("@endo/patterns").MethodGuard;
65
+ makeAdjustBalancesInvitation: import("@endo/patterns").MethodGuard;
66
+ makeCloseInvitation: import("@endo/patterns").MethodGuard;
67
+ makeTransferInvitation: import("@endo/patterns").MethodGuard;
68
+ abortLiquidation: import("@endo/patterns").MethodGuard;
69
+ }>;
70
+ export function prepareVault(baggage: import("@agoric/swingset-liveslots").Baggage, makeRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").MakeRecorderKit, zcf: ZCF): (manager: VaultManager, idInManager: string, storageNode: globalThis.StorageNode) => import("@endo/exo").GuardedKit<{
71
+ helper: {
72
+ collateralBrand(): Brand<"nat">;
73
+ debtBrand(): Brand<"nat">;
74
+ emptyCollateral(): import("@agoric/ertp/src/types.js").NatAmount;
75
+ emptyDebt(): import("@agoric/ertp/src/types.js").NatAmount;
76
+ /**
77
+ * @typedef {{
78
+ * give: { Collateral: Amount<'nat'>; Minted: Amount<'nat'> };
79
+ * want: { Collateral: Amount<'nat'>; Minted: Amount<'nat'> };
80
+ * }} FullProposal
81
+ */
82
+ /**
83
+ * @param {ProposalRecord} partial
84
+ * @returns {FullProposal}
85
+ */
86
+ fullProposal(partial: ProposalRecord): {
87
+ give: {
88
+ Collateral: Amount<"nat">;
89
+ Minted: Amount<"nat">;
90
+ };
91
+ want: {
92
+ Collateral: Amount<"nat">;
93
+ Minted: Amount<"nat">;
94
+ };
95
+ };
96
+ /** @param {VaultPhase} newPhase */
97
+ assignPhase(newPhase: VaultPhase): void;
98
+ assertActive(): void;
99
+ assertCloseable(): void;
100
+ /**
101
+ * Called whenever the debt is paid or created through a transaction,
102
+ * but not for interest accrual.
103
+ *
104
+ * @param {Amount<'nat'>} newDebt - principal and all accrued interest
105
+ */
106
+ updateDebtSnapshot(newDebt: Amount<"nat">): void;
107
+ /**
108
+ * Update the debt balance and propagate upwards to maintain aggregate
109
+ * debt and liquidation order.
110
+ *
111
+ * @param {NormalizedDebt} oldDebtNormalized - prior principal and all
112
+ * accrued interest, normalized to the launch of the vaultManager
113
+ * @param {Amount<'nat'>} oldCollateral - actual collateral
114
+ * @param {Amount<'nat'>} newDebtActual - actual principal and all
115
+ * accrued interest
116
+ */
117
+ updateDebtAccounting(oldDebtNormalized: NormalizedDebt, oldCollateral: Amount<"nat">, newDebtActual: Amount<"nat">): void;
118
+ /**
119
+ * @param {ZCFSeat} seat
120
+ * @returns {Amount<'nat'>}
121
+ */
122
+ getCollateralAllocated(seat: ZCFSeat): Amount<"nat">;
123
+ /**
124
+ * @param {ZCFSeat} seat
125
+ * @returns {Amount<'nat'>}
126
+ */
127
+ getMintedAllocated(seat: ZCFSeat): Amount<"nat">;
128
+ assertVaultHoldsNoMinted(): void;
129
+ /**
130
+ * @param {Amount<'nat'>} collateralAmount
131
+ * @param {Amount<'nat'>} proposedDebt
132
+ */
133
+ assertSufficientCollateral(collateralAmount: Amount<"nat">, proposedDebt: Amount<"nat">): void;
134
+ /** @param {HolderPhase} newPhase */
135
+ getStateSnapshot(newPhase: HolderPhase): {
136
+ debtSnapshot: {
137
+ debt: import("@agoric/ertp/src/types.js").NatAmount;
138
+ interest: Ratio;
139
+ };
140
+ locked: import("@agoric/ertp/src/types.js").NatAmount;
141
+ vaultState: HolderPhase;
142
+ };
143
+ /** call this whenever anything changes! */
144
+ updateUiState(): void;
145
+ /** @param {ZCFSeat} seat */
146
+ closeHook(seat: ZCFSeat): Promise<string>;
147
+ /**
148
+ * Calculate the fee, the amount to mint and the resulting debt. The
149
+ * give and the want together reflect a delta, where typically one is
150
+ * zero because they come from the gave/want of an offer proposal. If
151
+ * the `want` is zero, the `fee` will also be zero, so the simple math
152
+ * works.
153
+ *
154
+ * @param {Amount<'nat'>} currentDebt
155
+ * @param {Amount<'nat'>} giveAmount
156
+ * @param {Amount<'nat'>} wantAmount
157
+ */
158
+ debtFee(currentDebt: Amount<"nat">, giveAmount: Amount<"nat">, wantAmount: Amount<"nat">): {
159
+ newDebt: import("@agoric/ertp/src/types.js").NatAmount;
160
+ toMint: import("@agoric/ertp/src/types.js").NatAmount;
161
+ fee: import("@agoric/ertp/src/types.js").NatAmount;
162
+ surplus: import("@agoric/ertp/src/types.js").NatAmount;
163
+ };
164
+ /**
165
+ * Adjust principal and collateral (atomically for offer safety)
166
+ *
167
+ * @param {ZCFSeat} clientSeat
168
+ * @returns {string} success message
169
+ */
170
+ adjustBalancesHook(clientSeat: ZCFSeat): string;
171
+ /**
172
+ * @param {ZCFSeat} clientSeat
173
+ * @param {FullProposal} fp
174
+ * @param {ReturnType<typeof calculateDebtCosts>} costs
175
+ * @param {object} accounting
176
+ * @param {NormalizedDebt} accounting.normalizedDebtPre
177
+ * @param {Amount<'nat'>} accounting.collateralPre
178
+ * @returns {string} success message
179
+ */
180
+ commitBalanceAdjustment(clientSeat: ZCFSeat, fp: {
181
+ give: {
182
+ Collateral: Amount<"nat">;
183
+ Minted: Amount<"nat">;
184
+ };
185
+ want: {
186
+ Collateral: Amount<"nat">;
187
+ Minted: Amount<"nat">;
188
+ };
189
+ }, { newDebt, fee, surplus, toMint }: ReturnType<typeof calculateDebtCosts>, { normalizedDebtPre, collateralPre }: {
190
+ normalizedDebtPre: NormalizedDebt;
191
+ collateralPre: Amount<"nat">;
192
+ }): string;
193
+ /**
194
+ * @param {ZCFSeat} seat
195
+ * @returns {VaultKit}
196
+ */
197
+ makeTransferInvitationHook(seat: ZCFSeat): {
198
+ publicSubscribers: {
199
+ vault: {
200
+ description: string;
201
+ subscriber: globalThis.Subscriber<VaultNotification>;
202
+ storagePath: Promise<string>;
203
+ };
204
+ };
205
+ invitationMakers: import("@endo/exo").Guarded<{
206
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
207
+ CloseVault(): Promise<Invitation<string, undefined>>;
208
+ TransferVault(): Promise<Invitation<any, undefined>>;
209
+ }>;
210
+ vault: import("@endo/exo").Guarded<{
211
+ getPublicTopics(): {
212
+ vault: {
213
+ description: string;
214
+ subscriber: globalThis.Subscriber<VaultNotification>;
215
+ storagePath: Promise<string>;
216
+ };
217
+ };
218
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
219
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
220
+ makeTransferInvitation(): Promise<Invitation<any, undefined>>;
221
+ getCollateralAmount(): import("@agoric/ertp/src/types.js").NatAmount;
222
+ getCurrentDebt(): import("@agoric/ertp/src/types.js").NatAmount;
223
+ getNormalizedDebt(): NormalizedDebt;
224
+ }>;
225
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
226
+ };
227
+ };
228
+ self: {
229
+ getVaultSeat(): ZCFSeat;
230
+ /**
231
+ * @param {ZCFSeat} seat
232
+ * @param {StorageNode} storageNode
233
+ */
234
+ initVaultKit(seat: ZCFSeat, storageNode: StorageNode): Promise<{
235
+ publicSubscribers: {
236
+ vault: {
237
+ description: string;
238
+ subscriber: globalThis.Subscriber<VaultNotification>;
239
+ storagePath: Promise<string>;
240
+ };
241
+ };
242
+ invitationMakers: import("@endo/exo").Guarded<{
243
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
244
+ CloseVault(): Promise<Invitation<string, undefined>>;
245
+ TransferVault(): Promise<Invitation<any, undefined>>;
246
+ }>;
247
+ vault: import("@endo/exo").Guarded<{
248
+ getPublicTopics(): {
249
+ vault: {
250
+ description: string;
251
+ subscriber: globalThis.Subscriber<VaultNotification>;
252
+ storagePath: Promise<string>;
253
+ };
254
+ };
255
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
256
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
257
+ makeTransferInvitation(): Promise<Invitation<any, undefined>>;
258
+ getCollateralAmount(): import("@agoric/ertp/src/types.js").NatAmount;
259
+ getCurrentDebt(): import("@agoric/ertp/src/types.js").NatAmount;
260
+ getNormalizedDebt(): NormalizedDebt;
261
+ }>;
262
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
263
+ }>;
264
+ /** Called by manager at start of liquidation. */
265
+ liquidating(): void;
266
+ /**
267
+ * Called by manager at end of liquidation, at which point all debts
268
+ * have been covered.
269
+ */
270
+ liquidated(): void;
271
+ /**
272
+ * Called by vaultManager when the auction wasn't able to sell the
273
+ * collateral. The liquidation fee was charged against the collateral,
274
+ * but the debt will be restored and the vault will be active again.
275
+ * Liquidation.md has details on the liquidation approach.
276
+ */
277
+ abortLiquidation(): string;
278
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
279
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
280
+ /** @returns {Promise<Invitation<VaultKit>>} */
281
+ makeTransferInvitation(): Promise<Invitation<{
282
+ publicSubscribers: {
283
+ vault: {
284
+ description: string;
285
+ subscriber: globalThis.Subscriber<VaultNotification>;
286
+ storagePath: Promise<string>;
287
+ };
288
+ };
289
+ invitationMakers: import("@endo/exo").Guarded<{
290
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
291
+ CloseVault(): Promise<Invitation<string, undefined>>;
292
+ TransferVault(): Promise<Invitation<any, undefined>>;
293
+ }>;
294
+ vault: import("@endo/exo").Guarded<{
295
+ getPublicTopics(): {
296
+ vault: {
297
+ description: string;
298
+ subscriber: globalThis.Subscriber<VaultNotification>;
299
+ storagePath: Promise<string>;
300
+ };
301
+ };
302
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
303
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
304
+ makeTransferInvitation(): Promise<Invitation<any, undefined>>;
305
+ getCollateralAmount(): import("@agoric/ertp/src/types.js").NatAmount;
306
+ getCurrentDebt(): import("@agoric/ertp/src/types.js").NatAmount;
307
+ getNormalizedDebt(): NormalizedDebt;
308
+ }>;
309
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
310
+ }, undefined>>;
311
+ /** @returns {Amount<'nat'>} */
312
+ getCollateralAmount(): Amount<"nat">;
313
+ /**
314
+ * The actual current debt, including accrued interest.
315
+ *
316
+ * This looks like a simple getter but it does a lot of the heavy
317
+ * lifting for interest accrual. Rather than updating all records when
318
+ * interest accrues, the vault manager updates just its rolling
319
+ * compounded interest. Here we calculate what the current debt is given
320
+ * what's recorded in this vault and what interest has compounded since
321
+ * this vault record was written.
322
+ *
323
+ * @returns {Amount<'nat'>}
324
+ * @see getNormalizedDebt
325
+ */
326
+ getCurrentDebt(): Amount<"nat">;
327
+ /**
328
+ * The normalization puts all debts on a common time-independent scale
329
+ * since the launch of this vault manager. This allows the manager to
330
+ * order vaults by their debt-to-collateral ratios without having to
331
+ * mutate the debts as the interest accrues.
332
+ *
333
+ * @returns {import('./storeUtils.js').NormalizedDebt} as if the vault
334
+ * was open at the launch of this manager, before any interest
335
+ * accrued
336
+ * @see getActualDebAmount
337
+ */
338
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
339
+ };
340
+ }>;
341
+ export type VaultPhase = {
342
+ readonly ACTIVE: "active";
343
+ readonly LIQUIDATING: "liquidating";
344
+ readonly CLOSED: "closed";
345
+ readonly LIQUIDATED: "liquidated";
346
+ readonly TRANSFER: "transfer";
347
+ }[keyof Omit<typeof Phase, "TRANSFER">];
348
+ export type HolderPhase = {
349
+ readonly ACTIVE: "active";
350
+ readonly LIQUIDATING: "liquidating";
351
+ readonly CLOSED: "closed";
352
+ readonly LIQUIDATED: "liquidated";
353
+ readonly TRANSFER: "transfer";
354
+ }[keyof typeof Phase];
355
+ export type VaultNotification = {
356
+ /**
357
+ * Amount of Collateral locked
358
+ */
359
+ locked: Amount<"nat">;
360
+ /**
361
+ * 'debt' at
362
+ * the point the compounded interest was 'interest'
363
+ */
364
+ debtSnapshot: {
365
+ debt: Amount<"nat">;
366
+ interest: Ratio;
367
+ };
368
+ vaultState: HolderPhase;
369
+ };
370
+ export type VaultManager = {
371
+ getAssetSubscriber: () => Subscriber<import("./vaultManager.js").AssetState>;
372
+ maxDebtFor: (collateralAmount: Amount) => Amount<"nat">;
373
+ getCollateralBrand: () => Brand<"nat">;
374
+ scopeDescription: (base: string) => string;
375
+ getDebtBrand: () => Brand<"nat">;
376
+ mintAndTransfer: MintAndTransfer;
377
+ burn: (amount: Amount, seat: ZCFSeat) => void;
378
+ getCompoundedInterest: () => Ratio;
379
+ handleBalanceChange: (oldDebt: import("./storeUtils.js").NormalizedDebt, oldCollateral: Amount<"nat">, vaultId: VaultId, vaultPhase: VaultPhase, vault: Vault) => void;
380
+ getGovernedParams: () => import("./vaultManager.js").GovernedParamGetters;
381
+ };
382
+ export type ImmutableState = Readonly<{
383
+ idInManager: VaultId;
384
+ manager: VaultManager;
385
+ storageNode: StorageNode;
386
+ vaultSeat: ZCFSeat;
387
+ }>;
388
+ /**
389
+ * Snapshot is of the debt and compounded interest when the principal was last
390
+ * changed.
391
+ */
392
+ export type MutableState = {
393
+ interestSnapshot: Ratio;
394
+ phase: VaultPhase;
395
+ debtSnapshot: Amount<"nat">;
396
+ outerUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification> | null;
397
+ };
398
+ export type Vault = ReturnType<ReturnType<typeof prepareVault>>["self"];
399
+ import type { Brand } from '@agoric/ertp/src/types.js';
400
+ import type { NormalizedDebt } from './storeUtils.js';
401
+ import { calculateDebtCosts } from './math.js';
402
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["vault.js"],"names":[],"mappings":";;;;;;;AA2EA;;;;;;;;GAQG;AAGH;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;GAOG;AAEH;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;GAYG;AAkBI,sCAJI,OAAO,4BAA4B,EAAE,OAAO,mBAC5C,OAAO,6CAA6C,EAAE,eAAe,OACrE,GAAG;;;;;;QAuDN;;;;;WAKG;QACH;;;WAGG;8BAFQ,cAAc;kBALd;gBAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAAE;kBACpD;gBAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAAE;;QA0B/D,mCAAmC;8BAAvB,UAAU;;;QAwBtB;;;;;WAKG;oCADQ,MAAM,CAAC,KAAK,CAAC;QAUxB;;;;;;;;;WASG;+EAHQ,MAAM,CAAC,KAAK,CAAC,iBACb,MAAM,CAAC,KAAK,CAAC;QAiBxB;;;WAGG;qCAFQ,OAAO,GACL,MAAM,CAAC,KAAK,CAAC;QAQ1B;;;WAGG;iCAFQ,OAAO,GACL,MAAM,CAAC,KAAK,CAAC;;QAgB1B;;;WAGG;qDAFQ,MAAM,CAAC,KAAK,CAAC,gBACb,MAAM,CAAC,KAAK,CAAC;QAWxB,oCAAoC;mCAAxB,WAAW;;;;;;;;QAevB,2CAA2C;;QA4B3C,4BAA4B;wBAAhB,OAAO;QAqEnB;;;;;;;;;;WAUG;6BAHQ,MAAM,CAAC,KAAK,CAAC,cACb,MAAM,CAAC,KAAK,CAAC,cACb,MAAM,CAAC,KAAK,CAAC;;;;;;QAaxB;;;;;WAKG;uCAFQ,OAAO,GACL,MAAM;QAwDnB;;;;;;;;WAQG;4CAPQ,OAAO;kBArUP;gBAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAAE;kBACpD;gBAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;aAAE;8CAsUpD,UAAU,CAAC,OAAO,kBAAkB,CAAC;;2BAGrC,MAAM,CAAC,KAAK,CAAC;YACX,MAAM;QAsCnB;;;WAGG;yCAFQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsBlB;;;WAGG;2BAFQ,OAAO,eACP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2EtB,iDAAiD;;QASjD;;;WAGG;;QAcH;;;;;WAKG;;;;QAwEH,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgC/C,+BAA+B;+BAAjB,MAAM,CAAC,KAAK,CAAC;QAW3B;;;;;;;;;;;;WAYG;0BAFU,MAAM,CAAC,KAAK,CAAC;QAY1B;;;;;;;;;;WAUG;6BAJU,OAAO,iBAAiB,EAAE,cAAc;;GAiB5D;yBAzyBY;;;;;;EAAM,MAAM,IAAI,CAAC,OAAO,KAAK,EAAE,UAAU,CAAC,CAAC;0BAW3C;;;;;;EAAM,MAAM,OAAO,KAAK,CAAC;;;;;YAGxB,MAAM,CAAC,KAAK,CAAC;;;;;kBACb;QAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAA;KAAE;gBAExC,WAAW;;;wBAMX,MAAM,UAAU,CAAC,OAAO,mBAAmB,EAAE,UAAU,CAAC;gBACxD,CAAC,gBAAgB,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;;sBAE3C,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;;qBAExB,eAAe;UACf,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI;2BACvC,MAAM,KAAK;yBACX,CACb,OAAW,EAAE,OAAO,iBAAiB,EAAE,cAAc,EACrD,aAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,EAChC,OAAW,EAAE,OAAO,EACpB,UAAc,EAAE,UAAU,EAC1B,KAAS,EAAE,KAAK,KACT,IAAI;uBACE,MAAM,OAAO,mBAAmB,EAAE,oBAAoB;;6BAIvD,QAAQ,CAAC;IACrB,WAAe,EAAE,OAAO,CAAC;IACzB,OAAW,EAAE,YAAY,CAAC;IAC1B,WAAe,EAAE,WAAW,CAAC;IAC7B,SAAa,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;2BAOQ;IACZ,gBAAoB,EAAE,KAAK,CAAC;IAC5B,KAAS,EAAE,UAAU,CAAC;IACtB,YAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,YAAgB,EACR,OAAO,6CAA6C,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GACjF,IAAI,CAAC;CACV;oBA8uBU,UAAU,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;2BAx1BzC,2BAA2B;oCAClB,iBAAiB;mCATf,WAAW"}