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