@agoric/inter-protocol 0.16.2-other-dev-8f8782b.0 → 0.16.2-other-dev-fbe72e7.0.fbe72e7

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 (166) hide show
  1. package/README.md +6 -6
  2. package/package.json +46 -39
  3. package/scripts/build-bundles.js +5 -21
  4. package/src/auction/auctionBook.d.ts +147 -0
  5. package/src/auction/auctionBook.d.ts.map +1 -0
  6. package/src/auction/auctionBook.js +182 -151
  7. package/src/auction/auctionMath.d.ts +17 -0
  8. package/src/auction/auctionMath.d.ts.map +1 -0
  9. package/src/auction/auctionMath.js +81 -0
  10. package/src/auction/auctioneer.d.ts +70 -0
  11. package/src/auction/auctioneer.d.ts.map +1 -0
  12. package/src/auction/auctioneer.js +72 -59
  13. package/src/auction/offerBook.d.ts +46 -0
  14. package/src/auction/offerBook.d.ts.map +1 -0
  15. package/src/auction/offerBook.js +17 -12
  16. package/src/auction/params.d.ts +145 -0
  17. package/src/auction/params.d.ts.map +1 -0
  18. package/src/auction/params.js +11 -9
  19. package/src/auction/scheduleMath.d.ts +5 -0
  20. package/src/auction/scheduleMath.d.ts.map +1 -0
  21. package/src/auction/scheduleMath.js +18 -16
  22. package/src/auction/scheduler.d.ts +50 -0
  23. package/src/auction/scheduler.d.ts.map +1 -0
  24. package/src/auction/scheduler.js +53 -47
  25. package/src/auction/sortedOffers.d.ts +8 -0
  26. package/src/auction/sortedOffers.d.ts.map +1 -0
  27. package/src/auction/sortedOffers.js +10 -9
  28. package/src/auction/util.d.ts +31 -0
  29. package/src/auction/util.d.ts.map +1 -0
  30. package/src/auction/util.js +12 -6
  31. package/src/clientSupport.d.ts +168 -0
  32. package/src/clientSupport.d.ts.map +1 -0
  33. package/src/clientSupport.js +161 -98
  34. package/src/collectFees.d.ts +2 -0
  35. package/src/collectFees.d.ts.map +1 -0
  36. package/src/contractSupport.d.ts +28 -0
  37. package/src/contractSupport.d.ts.map +1 -0
  38. package/src/contractSupport.js +19 -13
  39. package/src/econCommitteeCharter.d.ts +43 -0
  40. package/src/econCommitteeCharter.d.ts.map +1 -0
  41. package/src/econCommitteeCharter.js +25 -20
  42. package/src/feeDistributor.d.ts +224 -0
  43. package/src/feeDistributor.d.ts.map +1 -0
  44. package/src/feeDistributor.js +41 -33
  45. package/src/index.d.ts +2 -0
  46. package/src/index.d.ts.map +1 -0
  47. package/src/index.js +1 -0
  48. package/src/interest-math.d.ts +4 -0
  49. package/src/interest-math.d.ts.map +1 -0
  50. package/src/interest-math.js +5 -1
  51. package/src/interest.d.ts +30 -0
  52. package/src/interest.d.ts.map +1 -0
  53. package/src/interest.js +25 -23
  54. package/src/price/README.md +14 -1
  55. package/src/price/fluxAggregatorContract.d.ts +71 -0
  56. package/src/price/fluxAggregatorContract.d.ts.map +1 -0
  57. package/src/price/fluxAggregatorContract.js +64 -55
  58. package/src/price/fluxAggregatorKit.d.ts +104 -0
  59. package/src/price/fluxAggregatorKit.d.ts.map +1 -0
  60. package/src/price/fluxAggregatorKit.js +55 -42
  61. package/src/price/priceOracleKit.d.ts +39 -0
  62. package/src/price/priceOracleKit.d.ts.map +1 -0
  63. package/src/price/priceOracleKit.js +17 -15
  64. package/src/price/roundsManager.d.ts +204 -0
  65. package/src/price/roundsManager.d.ts.map +1 -0
  66. package/src/price/roundsManager.js +132 -85
  67. package/src/proposals/README.md +2 -3
  68. package/src/proposals/add-auction.js +285 -0
  69. package/src/proposals/addAssetToVault.js +192 -40
  70. package/src/proposals/committee-proposal.js +25 -31
  71. package/src/proposals/core-proposal.js +9 -11
  72. package/src/proposals/deploy-price-feeds.js +341 -0
  73. package/src/proposals/econ-behaviors.js +84 -49
  74. package/src/proposals/price-feed-proposal.js +109 -51
  75. package/src/proposals/replace-fee-distributor.js +198 -0
  76. package/src/proposals/replace-scaledPriceAuthorities.js +124 -0
  77. package/src/proposals/replaceElectorate.js +610 -0
  78. package/src/proposals/startEconCommittee.js +2 -2
  79. package/src/proposals/startPSM.js +44 -29
  80. package/src/proposals/upgrade-scaledPriceAuthorities.js +78 -0
  81. package/src/proposals/upgrade-vaults.js +207 -0
  82. package/src/proposals/utils.d.ts +21 -0
  83. package/src/proposals/utils.d.ts.map +1 -0
  84. package/src/proposals/utils.js +66 -9
  85. package/src/proposals/withdraw-reserve-proposal.js +63 -0
  86. package/src/provisionPool.d.ts +69 -0
  87. package/src/provisionPool.d.ts.map +1 -0
  88. package/src/provisionPool.js +138 -0
  89. package/src/provisionPoolKit.d.ts +129 -0
  90. package/src/provisionPoolKit.d.ts.map +1 -0
  91. package/src/provisionPoolKit.js +608 -0
  92. package/src/psm/psm.d.ts +133 -0
  93. package/src/psm/psm.d.ts.map +1 -0
  94. package/src/psm/psm.js +85 -79
  95. package/src/psm/types-ambient.d.ts +2 -0
  96. package/src/psm/types-ambient.d.ts.map +1 -0
  97. package/src/psm/types-ambient.js +3 -0
  98. package/src/reserve/assetReserve.d.ts +58 -0
  99. package/src/reserve/assetReserve.d.ts.map +1 -0
  100. package/src/reserve/assetReserve.js +42 -34
  101. package/src/reserve/assetReserveKit.d.ts +103 -0
  102. package/src/reserve/assetReserveKit.d.ts.map +1 -0
  103. package/src/reserve/assetReserveKit.js +134 -32
  104. package/src/reserve/params.d.ts +16 -0
  105. package/src/reserve/params.d.ts.map +1 -0
  106. package/src/reserve/params.js +8 -2
  107. package/src/tokens.d.ts +3 -0
  108. package/src/tokens.d.ts.map +1 -0
  109. package/src/tokens.js +5 -0
  110. package/src/vaultFactory/burn.d.ts +2 -0
  111. package/src/vaultFactory/burn.d.ts.map +1 -0
  112. package/src/vaultFactory/burn.js +1 -1
  113. package/src/vaultFactory/liquidation.d.ts +25 -0
  114. package/src/vaultFactory/liquidation.d.ts.map +1 -0
  115. package/src/vaultFactory/liquidation.js +37 -24
  116. package/src/vaultFactory/math.d.ts +11 -0
  117. package/src/vaultFactory/math.d.ts.map +1 -0
  118. package/src/vaultFactory/math.js +11 -10
  119. package/src/vaultFactory/orderedVaultStore.d.ts +94 -0
  120. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
  121. package/src/vaultFactory/orderedVaultStore.js +9 -10
  122. package/src/vaultFactory/params.d.ts +143 -0
  123. package/src/vaultFactory/params.d.ts.map +1 -0
  124. package/src/vaultFactory/params.js +56 -25
  125. package/src/vaultFactory/prioritizedVaults.d.ts +280 -0
  126. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
  127. package/src/vaultFactory/prioritizedVaults.js +7 -4
  128. package/src/vaultFactory/proceeds.d.ts +35 -0
  129. package/src/vaultFactory/proceeds.d.ts.map +1 -0
  130. package/src/vaultFactory/proceeds.js +26 -18
  131. package/src/vaultFactory/storeUtils.d.ts +25 -0
  132. package/src/vaultFactory/storeUtils.d.ts.map +1 -0
  133. package/src/vaultFactory/storeUtils.js +10 -12
  134. package/src/vaultFactory/types-ambient.d.ts +137 -0
  135. package/src/vaultFactory/types-ambient.d.ts.map +1 -0
  136. package/src/vaultFactory/{types.js → types-ambient.js} +47 -44
  137. package/src/vaultFactory/vault.d.ts +344 -0
  138. package/src/vaultFactory/vault.d.ts.map +1 -0
  139. package/src/vaultFactory/vault.js +107 -100
  140. package/src/vaultFactory/vaultDirector.d.ts +347 -0
  141. package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
  142. package/src/vaultFactory/vaultDirector.js +94 -64
  143. package/src/vaultFactory/vaultFactory.d.ts +250 -0
  144. package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
  145. package/src/vaultFactory/vaultFactory.js +56 -33
  146. package/src/vaultFactory/vaultHolder.d.ts +170 -0
  147. package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
  148. package/src/vaultFactory/vaultHolder.js +14 -15
  149. package/src/vaultFactory/vaultKit.d.ts +33 -0
  150. package/src/vaultFactory/vaultKit.d.ts.map +1 -0
  151. package/src/vaultFactory/vaultKit.js +9 -4
  152. package/src/vaultFactory/vaultManager.d.ts +676 -0
  153. package/src/vaultFactory/vaultManager.d.ts.map +1 -0
  154. package/src/vaultFactory/vaultManager.js +286 -167
  155. package/CHANGELOG.md +0 -1041
  156. package/exported.js +0 -2
  157. package/scripts/add-collateral-core.js +0 -112
  158. package/scripts/deploy-contracts.js +0 -100
  159. package/scripts/init-core.js +0 -198
  160. package/scripts/invite-committee-core.js +0 -42
  161. package/scripts/manual-price-feed.js +0 -117
  162. package/scripts/price-feed-core.js +0 -104
  163. package/scripts/start-local-chain.sh +0 -84
  164. package/src/psm/types.js +0 -3
  165. package/src/typeGuards.js +0 -13
  166. package/src/vaultFactory/type-imports.js +0 -4
@@ -0,0 +1,676 @@
1
+ export function watchQuoteNotifier<T, A extends any[] = unknown[]>(notifierP: ERef<LatestTopic<T>>, watcher: import("@agoric/swingset-liveslots").PromiseWatcher<T, A>, ...args: A): Promise<void>;
2
+ export function prepareVaultManagerKit(baggage: import("@agoric/swingset-liveslots").Baggage, { zcf, marshaller, makeRecorderKit, factoryPowers }: {
3
+ zcf: import("./vaultFactory.js").VaultFactoryZCF;
4
+ marshaller: ERef<Marshaller>;
5
+ makeRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").MakeRecorderKit;
6
+ makeERecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").MakeERecorderKit;
7
+ factoryPowers: import("./vaultDirector.js").FactoryPowersFacet;
8
+ }): (externalParams: Omit<Parameters<(params: Readonly<{
9
+ debtMint: ZCFMint<"nat">;
10
+ collateralBrand: Brand<"nat">;
11
+ collateralUnit: Amount<"nat">;
12
+ descriptionScope: string;
13
+ startTimeStamp: Timestamp;
14
+ storageNode: StorageNode;
15
+ }> & {
16
+ metricsStorageNode: StorageNode;
17
+ }) => import("@endo/exo").GuardedKit<{
18
+ collateral: {
19
+ makeVaultInvitation(): Promise<globalThis.Invitation<{
20
+ publicSubscribers: {
21
+ vault: {
22
+ description: string;
23
+ subscriber: globalThis.Subscriber<VaultNotification>;
24
+ storagePath: Promise<string>;
25
+ };
26
+ };
27
+ invitationMakers: import("@endo/exo").Guarded<{
28
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
29
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
30
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
31
+ }>;
32
+ vault: import("@endo/exo").Guarded<{
33
+ getPublicTopics(): {
34
+ vault: {
35
+ description: string;
36
+ subscriber: globalThis.Subscriber<VaultNotification>;
37
+ storagePath: Promise<string>;
38
+ };
39
+ };
40
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
41
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
42
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
43
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
44
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
45
+ getNormalizedDebt(): NormalizedDebt;
46
+ }>;
47
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
48
+ }, undefined>>;
49
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
50
+ getCompoundedInterest(): Ratio;
51
+ getPublicTopics(): {
52
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<AssetState>;
53
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<MetricsNotification>;
54
+ };
55
+ };
56
+ helper: {
57
+ /** Start non-durable processes (or restart if needed after vat restart) */
58
+ start(): void;
59
+ ensureQuoteNotifierWatched(): void;
60
+ /** @param {Timestamp} updateTime */
61
+ chargeAllVaults(updateTime: Timestamp): Promise<void>;
62
+ assetNotify(): Promise<void>;
63
+ burnToCoverDebt(debt: any, proceeds: any, seat: any): void;
64
+ sendToReserve(penalty: any, seat: any, seatKeyword?: string): void;
65
+ markLiquidating(debt: any, collateral: any): void;
66
+ /**
67
+ * @param {Amount<'nat'>} debt
68
+ * @param {Amount<'nat'>} collateral
69
+ * @param {Amount<'nat'>} overage
70
+ * @param {Amount<'nat'>} shortfall
71
+ */
72
+ markDoneLiquidating(debt: Amount<"nat">, collateral: Amount<"nat">, overage: Amount<"nat">, shortfall: Amount<"nat">): void;
73
+ writeMetrics(): Promise<void>;
74
+ /**
75
+ * This is designed to tolerate an incomplete plan, in case
76
+ * calculateDistributionPlan encounters an error during its calculation.
77
+ * We don't have a way to induce such errors in CI so we've done so
78
+ * manually in dev and verified this function recovers as expected.
79
+ *
80
+ * @param {AmountKeywordRecord} proceeds
81
+ * @param {Amount<'nat'>} totalDebt
82
+ * @param {Pick<PriceQuote, 'quoteAmount'>} oraclePriceAtStart
83
+ * @param {MapStore<
84
+ * Vault,
85
+ * { collateralAmount: Amount<'nat'>; debtAmount: Amount<'nat'> }
86
+ * >} vaultData
87
+ * @param {Amount<'nat'>} totalCollateral
88
+ */
89
+ planProceedsDistribution(proceeds: AmountKeywordRecord, totalDebt: Amount<"nat">, oraclePriceAtStart: Pick<PriceQuote, "quoteAmount">, vaultData: MapStore<Vault, {
90
+ collateralAmount: Amount<"nat">;
91
+ debtAmount: Amount<"nat">;
92
+ }>, totalCollateral: Amount<"nat">): {
93
+ plan: import("./proceeds.js").DistributionPlan;
94
+ vaultsInPlan: import("@endo/exo").Guarded<{
95
+ getVaultSeat(): globalThis.ZCFSeat;
96
+ initVaultKit(seat: ZCFSeat, storageNode: StorageNode): Promise<{
97
+ publicSubscribers: {
98
+ vault: {
99
+ description: string;
100
+ subscriber: globalThis.Subscriber<VaultNotification>;
101
+ storagePath: Promise<string>;
102
+ };
103
+ };
104
+ invitationMakers: import("@endo/exo").Guarded<{
105
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
106
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
107
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
108
+ }>;
109
+ vault: import("@endo/exo").Guarded<{
110
+ getPublicTopics(): {
111
+ vault: {
112
+ description: string;
113
+ subscriber: globalThis.Subscriber<VaultNotification>;
114
+ storagePath: Promise<string>;
115
+ };
116
+ };
117
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
118
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
119
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
120
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
121
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
122
+ getNormalizedDebt(): NormalizedDebt;
123
+ }>;
124
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
125
+ }>;
126
+ liquidating(): void;
127
+ liquidated(): void;
128
+ abortLiquidation(): string;
129
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
130
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
131
+ makeTransferInvitation(): Promise<Invitation<VaultKit>>;
132
+ getCollateralAmount(): Amount<"nat">;
133
+ getCurrentDebt(): Amount<"nat">;
134
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
135
+ }>[];
136
+ };
137
+ /**
138
+ * This is designed to tolerate an incomplete plan, in case
139
+ * calculateDistributionPlan encounters an error during its calculation.
140
+ * We don't have a way to induce such errors in CI so we've done so
141
+ * manually in dev and verified this function recovers as expected.
142
+ *
143
+ * @param {object} obj
144
+ * @param {import('./proceeds.js').DistributionPlan} obj.plan
145
+ * @param {Vault[]} obj.vaultsInPlan
146
+ * @param {ZCFSeat} obj.liqSeat
147
+ * @param {Amount<'nat'>} obj.totalCollateral
148
+ * @param {Amount<'nat'>} obj.totalDebt
149
+ * @returns {void}
150
+ */
151
+ distributeProceeds({ plan, vaultsInPlan, liqSeat, totalCollateral, totalDebt, }: {
152
+ plan: import("./proceeds.js").DistributionPlan;
153
+ vaultsInPlan: Vault[];
154
+ liqSeat: ZCFSeat;
155
+ totalCollateral: Amount<"nat">;
156
+ totalDebt: Amount<"nat">;
157
+ }): void;
158
+ };
159
+ manager: {
160
+ getGovernedParams(): GovernedParamGetters;
161
+ /**
162
+ * Look up the most recent price authority price to determine the max
163
+ * debt this manager config will allow for the collateral.
164
+ *
165
+ * @param {Amount<'nat'>} collateralAmount
166
+ */
167
+ maxDebtFor(collateralAmount: Amount<"nat">): import("@agoric/ertp").NatAmount;
168
+ mintAndTransfer(mintReceiver: ZCFSeat, toMint: Amount<"nat">, fee: Amount<"nat">, transfers: TransferPart[]): void;
169
+ /**
170
+ * @param {Amount<'nat'>} toBurn
171
+ * @param {ZCFSeat} seat
172
+ */
173
+ burn(toBurn: Amount<"nat">, seat: ZCFSeat): void;
174
+ getAssetSubscriber(): globalThis.Subscriber<AssetState>;
175
+ getCollateralBrand(): globalThis.Brand<"nat">;
176
+ getDebtBrand(): globalThis.Brand<"nat">;
177
+ /**
178
+ * Prepend with an identifier of this vault manager
179
+ *
180
+ * @param {string} base
181
+ */
182
+ scopeDescription(base: string): string;
183
+ /** coefficient on existing debt to calculate new debt */
184
+ getCompoundedInterest(): Ratio;
185
+ /**
186
+ * Called by a vault when its balances change.
187
+ *
188
+ * @param {NormalizedDebt} oldDebtNormalized
189
+ * @param {Amount<'nat'>} oldCollateral
190
+ * @param {VaultId} vaultId
191
+ * @param {import('./vault.js').VaultPhase} vaultPhase at the end of
192
+ * whatever change updated balances
193
+ * @param {Vault} vault
194
+ * @returns {void}
195
+ */
196
+ handleBalanceChange(oldDebtNormalized: NormalizedDebt, oldCollateral: Amount<"nat">, vaultId: VaultId, vaultPhase: import("./vault.js").VaultPhase, vault: Vault): void;
197
+ };
198
+ self: {
199
+ getGovernedParams(): GovernedParamGetters;
200
+ /** @param {ZCFSeat} seat */
201
+ makeVaultKit(seat: ZCFSeat): Promise<{
202
+ publicSubscribers: {
203
+ vault: {
204
+ description: string;
205
+ subscriber: globalThis.Subscriber<VaultNotification>;
206
+ storagePath: Promise<string>;
207
+ };
208
+ };
209
+ invitationMakers: import("@endo/exo").Guarded<{
210
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
211
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
212
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
213
+ }>;
214
+ vault: import("@endo/exo").Guarded<{
215
+ getPublicTopics(): {
216
+ vault: {
217
+ description: string;
218
+ subscriber: globalThis.Subscriber<VaultNotification>;
219
+ storagePath: Promise<string>;
220
+ };
221
+ };
222
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
223
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
224
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
225
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
226
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
227
+ getNormalizedDebt(): NormalizedDebt;
228
+ }>;
229
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
230
+ }>;
231
+ getCollateralQuote(): PriceQuote;
232
+ getPublicFacet(): import("@endo/exo").Guarded<{
233
+ makeVaultInvitation(): Promise<globalThis.Invitation<{
234
+ publicSubscribers: {
235
+ vault: {
236
+ description: string;
237
+ subscriber: globalThis.Subscriber<VaultNotification>;
238
+ storagePath: Promise<string>;
239
+ };
240
+ };
241
+ invitationMakers: import("@endo/exo").Guarded<{
242
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
243
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
244
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
245
+ }>;
246
+ vault: import("@endo/exo").Guarded<{
247
+ getPublicTopics(): {
248
+ vault: {
249
+ description: string;
250
+ subscriber: globalThis.Subscriber<VaultNotification>;
251
+ storagePath: Promise<string>;
252
+ };
253
+ };
254
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
255
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
256
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
257
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
258
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
259
+ getNormalizedDebt(): NormalizedDebt;
260
+ }>;
261
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
262
+ }, undefined>>;
263
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
264
+ getCompoundedInterest(): Ratio;
265
+ getPublicTopics(): {
266
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<AssetState>;
267
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<MetricsNotification>;
268
+ };
269
+ }>;
270
+ lockOraclePrices(): PriceQuote;
271
+ /** @param {ERef<AuctioneerPublicFacet>} auctionPF */
272
+ liquidateVaults(auctionPF: ERef<AuctioneerPublicFacet>): Promise<void>;
273
+ };
274
+ }>>[0], "metricsStorageNode">) => Promise<import("@endo/exo").GuardedKit<{
275
+ collateral: {
276
+ makeVaultInvitation(): Promise<globalThis.Invitation<{
277
+ publicSubscribers: {
278
+ vault: {
279
+ description: string;
280
+ subscriber: globalThis.Subscriber<VaultNotification>;
281
+ storagePath: Promise<string>;
282
+ };
283
+ };
284
+ invitationMakers: import("@endo/exo").Guarded<{
285
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
286
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
287
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
288
+ }>;
289
+ vault: import("@endo/exo").Guarded<{
290
+ getPublicTopics(): {
291
+ vault: {
292
+ description: string;
293
+ subscriber: globalThis.Subscriber<VaultNotification>;
294
+ storagePath: Promise<string>;
295
+ };
296
+ };
297
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
298
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
299
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
300
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
301
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
302
+ getNormalizedDebt(): NormalizedDebt;
303
+ }>;
304
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
305
+ }, undefined>>;
306
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
307
+ getCompoundedInterest(): Ratio;
308
+ getPublicTopics(): {
309
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<AssetState>;
310
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<MetricsNotification>;
311
+ };
312
+ };
313
+ helper: {
314
+ /** Start non-durable processes (or restart if needed after vat restart) */
315
+ start(): void;
316
+ ensureQuoteNotifierWatched(): void;
317
+ /** @param {Timestamp} updateTime */
318
+ chargeAllVaults(updateTime: Timestamp): Promise<void>;
319
+ assetNotify(): Promise<void>;
320
+ burnToCoverDebt(debt: any, proceeds: any, seat: any): void;
321
+ sendToReserve(penalty: any, seat: any, seatKeyword?: string): void;
322
+ markLiquidating(debt: any, collateral: any): void;
323
+ /**
324
+ * @param {Amount<'nat'>} debt
325
+ * @param {Amount<'nat'>} collateral
326
+ * @param {Amount<'nat'>} overage
327
+ * @param {Amount<'nat'>} shortfall
328
+ */
329
+ markDoneLiquidating(debt: Amount<"nat">, collateral: Amount<"nat">, overage: Amount<"nat">, shortfall: Amount<"nat">): void;
330
+ writeMetrics(): Promise<void>;
331
+ /**
332
+ * This is designed to tolerate an incomplete plan, in case
333
+ * calculateDistributionPlan encounters an error during its calculation.
334
+ * We don't have a way to induce such errors in CI so we've done so
335
+ * manually in dev and verified this function recovers as expected.
336
+ *
337
+ * @param {AmountKeywordRecord} proceeds
338
+ * @param {Amount<'nat'>} totalDebt
339
+ * @param {Pick<PriceQuote, 'quoteAmount'>} oraclePriceAtStart
340
+ * @param {MapStore<
341
+ * Vault,
342
+ * { collateralAmount: Amount<'nat'>; debtAmount: Amount<'nat'> }
343
+ * >} vaultData
344
+ * @param {Amount<'nat'>} totalCollateral
345
+ */
346
+ planProceedsDistribution(proceeds: AmountKeywordRecord, totalDebt: Amount<"nat">, oraclePriceAtStart: Pick<PriceQuote, "quoteAmount">, vaultData: MapStore<Vault, {
347
+ collateralAmount: Amount<"nat">;
348
+ debtAmount: Amount<"nat">;
349
+ }>, totalCollateral: Amount<"nat">): {
350
+ plan: import("./proceeds.js").DistributionPlan;
351
+ vaultsInPlan: import("@endo/exo").Guarded<{
352
+ getVaultSeat(): globalThis.ZCFSeat;
353
+ initVaultKit(seat: ZCFSeat, storageNode: StorageNode): Promise<{
354
+ publicSubscribers: {
355
+ vault: {
356
+ description: string;
357
+ subscriber: globalThis.Subscriber<VaultNotification>;
358
+ storagePath: Promise<string>;
359
+ };
360
+ };
361
+ invitationMakers: import("@endo/exo").Guarded<{
362
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
363
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
364
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
365
+ }>;
366
+ vault: import("@endo/exo").Guarded<{
367
+ getPublicTopics(): {
368
+ vault: {
369
+ description: string;
370
+ subscriber: globalThis.Subscriber<VaultNotification>;
371
+ storagePath: Promise<string>;
372
+ };
373
+ };
374
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
375
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
376
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
377
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
378
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
379
+ getNormalizedDebt(): NormalizedDebt;
380
+ }>;
381
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
382
+ }>;
383
+ liquidating(): void;
384
+ liquidated(): void;
385
+ abortLiquidation(): string;
386
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
387
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
388
+ makeTransferInvitation(): Promise<Invitation<VaultKit>>;
389
+ getCollateralAmount(): Amount<"nat">;
390
+ getCurrentDebt(): Amount<"nat">;
391
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
392
+ }>[];
393
+ };
394
+ /**
395
+ * This is designed to tolerate an incomplete plan, in case
396
+ * calculateDistributionPlan encounters an error during its calculation.
397
+ * We don't have a way to induce such errors in CI so we've done so
398
+ * manually in dev and verified this function recovers as expected.
399
+ *
400
+ * @param {object} obj
401
+ * @param {import('./proceeds.js').DistributionPlan} obj.plan
402
+ * @param {Vault[]} obj.vaultsInPlan
403
+ * @param {ZCFSeat} obj.liqSeat
404
+ * @param {Amount<'nat'>} obj.totalCollateral
405
+ * @param {Amount<'nat'>} obj.totalDebt
406
+ * @returns {void}
407
+ */
408
+ distributeProceeds({ plan, vaultsInPlan, liqSeat, totalCollateral, totalDebt, }: {
409
+ plan: import("./proceeds.js").DistributionPlan;
410
+ vaultsInPlan: Vault[];
411
+ liqSeat: ZCFSeat;
412
+ totalCollateral: Amount<"nat">;
413
+ totalDebt: Amount<"nat">;
414
+ }): void;
415
+ };
416
+ manager: {
417
+ getGovernedParams(): GovernedParamGetters;
418
+ /**
419
+ * Look up the most recent price authority price to determine the max
420
+ * debt this manager config will allow for the collateral.
421
+ *
422
+ * @param {Amount<'nat'>} collateralAmount
423
+ */
424
+ maxDebtFor(collateralAmount: Amount<"nat">): import("@agoric/ertp").NatAmount;
425
+ mintAndTransfer(mintReceiver: ZCFSeat, toMint: Amount<"nat">, fee: Amount<"nat">, transfers: TransferPart[]): void;
426
+ /**
427
+ * @param {Amount<'nat'>} toBurn
428
+ * @param {ZCFSeat} seat
429
+ */
430
+ burn(toBurn: Amount<"nat">, seat: ZCFSeat): void;
431
+ getAssetSubscriber(): globalThis.Subscriber<AssetState>;
432
+ getCollateralBrand(): globalThis.Brand<"nat">;
433
+ getDebtBrand(): globalThis.Brand<"nat">;
434
+ /**
435
+ * Prepend with an identifier of this vault manager
436
+ *
437
+ * @param {string} base
438
+ */
439
+ scopeDescription(base: string): string;
440
+ /** coefficient on existing debt to calculate new debt */
441
+ getCompoundedInterest(): Ratio;
442
+ /**
443
+ * Called by a vault when its balances change.
444
+ *
445
+ * @param {NormalizedDebt} oldDebtNormalized
446
+ * @param {Amount<'nat'>} oldCollateral
447
+ * @param {VaultId} vaultId
448
+ * @param {import('./vault.js').VaultPhase} vaultPhase at the end of
449
+ * whatever change updated balances
450
+ * @param {Vault} vault
451
+ * @returns {void}
452
+ */
453
+ handleBalanceChange(oldDebtNormalized: NormalizedDebt, oldCollateral: Amount<"nat">, vaultId: VaultId, vaultPhase: import("./vault.js").VaultPhase, vault: Vault): void;
454
+ };
455
+ self: {
456
+ getGovernedParams(): GovernedParamGetters;
457
+ /** @param {ZCFSeat} seat */
458
+ makeVaultKit(seat: ZCFSeat): Promise<{
459
+ publicSubscribers: {
460
+ vault: {
461
+ description: string;
462
+ subscriber: globalThis.Subscriber<VaultNotification>;
463
+ storagePath: Promise<string>;
464
+ };
465
+ };
466
+ invitationMakers: import("@endo/exo").Guarded<{
467
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
468
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
469
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
470
+ }>;
471
+ vault: import("@endo/exo").Guarded<{
472
+ getPublicTopics(): {
473
+ vault: {
474
+ description: string;
475
+ subscriber: globalThis.Subscriber<VaultNotification>;
476
+ storagePath: Promise<string>;
477
+ };
478
+ };
479
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
480
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
481
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
482
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
483
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
484
+ getNormalizedDebt(): NormalizedDebt;
485
+ }>;
486
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
487
+ }>;
488
+ getCollateralQuote(): PriceQuote;
489
+ getPublicFacet(): import("@endo/exo").Guarded<{
490
+ makeVaultInvitation(): Promise<globalThis.Invitation<{
491
+ publicSubscribers: {
492
+ vault: {
493
+ description: string;
494
+ subscriber: globalThis.Subscriber<VaultNotification>;
495
+ storagePath: Promise<string>;
496
+ };
497
+ };
498
+ invitationMakers: import("@endo/exo").Guarded<{
499
+ AdjustBalances(): Promise<globalThis.Invitation<string, undefined>>;
500
+ CloseVault(): Promise<globalThis.Invitation<string, undefined>>;
501
+ TransferVault(): Promise<globalThis.Invitation</*elided*/ any>>;
502
+ }>;
503
+ vault: import("@endo/exo").Guarded<{
504
+ getPublicTopics(): {
505
+ vault: {
506
+ description: string;
507
+ subscriber: globalThis.Subscriber<VaultNotification>;
508
+ storagePath: Promise<string>;
509
+ };
510
+ };
511
+ makeAdjustBalancesInvitation(): Promise<globalThis.Invitation<string, undefined>>;
512
+ makeCloseInvitation(): Promise<globalThis.Invitation<string, undefined>>;
513
+ makeTransferInvitation(): Promise<globalThis.Invitation</*elided*/ any>>;
514
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
515
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
516
+ getNormalizedDebt(): NormalizedDebt;
517
+ }>;
518
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
519
+ }, undefined>>;
520
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
521
+ getCompoundedInterest(): Ratio;
522
+ getPublicTopics(): {
523
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<AssetState>;
524
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<MetricsNotification>;
525
+ };
526
+ }>;
527
+ lockOraclePrices(): PriceQuote;
528
+ /** @param {ERef<AuctioneerPublicFacet>} auctionPF */
529
+ liquidateVaults(auctionPF: ERef<AuctioneerPublicFacet>): Promise<void>;
530
+ };
531
+ }>>;
532
+ export function provideAndStartVaultManagerKits(baggage: import("@agoric/vat-data").Baggage): {
533
+ /** @type {(kit: VaultManagerKit) => void} */
534
+ add: (kit: VaultManagerKit) => void;
535
+ /** @type {(index: number) => VaultManagerKit} */
536
+ get: (index: number) => VaultManagerKit;
537
+ length: () => any;
538
+ };
539
+ export type MetricsNotification = {
540
+ /**
541
+ * priceQuote that will be used for
542
+ * liquidation. Non-null from priceLock time until liquidation has taken
543
+ * place.
544
+ */
545
+ lockedQuote: Ratio | null;
546
+ /**
547
+ * present count of vaults
548
+ */
549
+ numActiveVaults: number;
550
+ /**
551
+ * present count of liquidating vaults
552
+ */
553
+ numLiquidatingVaults: number;
554
+ /**
555
+ * present sum of collateral across
556
+ * all vaults
557
+ */
558
+ totalCollateral: Amount<"nat">;
559
+ /**
560
+ * present sum of debt across all vaults
561
+ */
562
+ totalDebt: Amount<"nat">;
563
+ /**
564
+ * collateral held as a result of
565
+ * not returning excess refunds to owners of vaults liquidated with
566
+ * shortfalls
567
+ */
568
+ retainedCollateral: Amount<"nat">;
569
+ /**
570
+ * present sum of collateral in
571
+ * vaults sent for liquidation
572
+ */
573
+ liquidatingCollateral: Amount<"nat">;
574
+ /**
575
+ * present sum of debt in vaults sent
576
+ * for liquidation
577
+ */
578
+ liquidatingDebt: Amount<"nat">;
579
+ /**
580
+ * running sum of collateral sold
581
+ * in liquidation
582
+ */
583
+ totalCollateralSold: Amount<"nat">;
584
+ /**
585
+ * running sum of overages,
586
+ * central received greater than debt
587
+ */
588
+ totalOverageReceived: Amount<"nat">;
589
+ /**
590
+ * running sum of minted
591
+ * received from liquidation
592
+ */
593
+ totalProceedsReceived: Amount<"nat">;
594
+ /**
595
+ * running sum of shortfalls,
596
+ * minted received less than debt
597
+ */
598
+ totalShortfallReceived: Amount<"nat">;
599
+ /**
600
+ * running count of liquidated
601
+ * vaults
602
+ */
603
+ numLiquidationsCompleted: number;
604
+ /**
605
+ * running count of vault liquidations
606
+ * that were reverted.
607
+ */
608
+ numLiquidationsAborted: number;
609
+ };
610
+ export type AssetState = {
611
+ compoundedInterest: Ratio;
612
+ interestRate: Ratio;
613
+ latestInterestUpdate: Timestamp;
614
+ };
615
+ export type GovernedParamGetters = {
616
+ getChargingPeriod: () => RelativeTime;
617
+ getRecordingPeriod: () => RelativeTime;
618
+ getDebtLimit: () => Amount<"nat">;
619
+ getInterestRate: () => Ratio;
620
+ getLiquidationPadding: () => Ratio;
621
+ getLiquidationMargin: () => Ratio;
622
+ getLiquidationPenalty: () => Ratio;
623
+ getMintFee: () => Ratio;
624
+ getMinInitialDebt: () => Amount<"nat">;
625
+ };
626
+ export type HeldParams = Readonly<{
627
+ debtMint: ZCFMint<"nat">;
628
+ collateralBrand: Brand<"nat">;
629
+ collateralUnit: Amount<"nat">;
630
+ descriptionScope: string;
631
+ startTimeStamp: Timestamp;
632
+ storageNode: StorageNode;
633
+ }>;
634
+ export type ImmutableState = {
635
+ assetTopicKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<AssetState>;
636
+ debtBrand: Brand<"nat">;
637
+ liquidatingVaults: SetStore<Vault>;
638
+ metricsTopicKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<MetricsNotification>;
639
+ poolIncrementSeat: ZCFSeat;
640
+ retainedCollateralSeat: ZCFSeat;
641
+ unsettledVaults: MapStore<string, Vault>;
642
+ };
643
+ export type MutableState = {
644
+ compoundedInterest: Ratio;
645
+ latestInterestUpdate: Timestamp;
646
+ numLiquidationsCompleted: number;
647
+ numLiquidationsAborted: number;
648
+ totalCollateral: Amount<"nat">;
649
+ totalCollateralSold: Amount<"nat">;
650
+ totalDebt: Amount<"nat">;
651
+ liquidatingCollateral: Amount<"nat">;
652
+ liquidatingDebt: Amount<"nat">;
653
+ totalOverageReceived: Amount<"nat">;
654
+ totalProceedsReceived: Amount<"nat">;
655
+ totalShortfallReceived: Amount<"nat">;
656
+ vaultCounter: number;
657
+ lockedQuote: PriceQuote | undefined;
658
+ };
659
+ export type VaultManagerKit = EReturn<EReturn<typeof prepareVaultManagerKit>>;
660
+ /**
661
+ * Each VaultManager manages a
662
+ * single collateral type.
663
+ *
664
+ * It manages some number of outstanding debt positions, each called a Vault,
665
+ * for which the collateral is provided in exchange for borrowed Minted.
666
+ */
667
+ export type VaultManager = VaultManagerKit["self"];
668
+ export type CollateralManager = VaultManagerKit["collateral"];
669
+ import type { ZCFMint } from '@agoric/zoe';
670
+ import type { NormalizedDebt } from './storeUtils.js';
671
+ import type { PriceQuote } from '@agoric/zoe/tools/types.js';
672
+ import type { MapStore } from '@agoric/store';
673
+ import type { RelativeTime } from '@agoric/time';
674
+ import type { SetStore } from '@agoric/store';
675
+ import type { EReturn } from '@endo/far';
676
+ //# sourceMappingURL=vaultManager.d.ts.map