@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
@@ -1,10 +1,14 @@
1
- import '@agoric/zoe/exported.js';
2
- import '@agoric/zoe/src/contracts/exported.js';
3
-
4
- import '@agoric/governance/exported.js';
1
+ /// <reference types="@agoric/governance/exported" />
2
+ /// <reference types="@agoric/zoe/exported" />
5
3
 
4
+ import { Fail, q } from '@endo/errors';
5
+ import { E } from '@endo/eventual-send';
6
+ import { Far } from '@endo/marshal';
6
7
  import { AmountMath, AmountShape, BrandShape, IssuerShape } from '@agoric/ertp';
7
- import { GovernorFacetShape } from '@agoric/governance/src/typeGuards.js';
8
+ import {
9
+ GovernorFacetShape,
10
+ InvitationShape,
11
+ } from '@agoric/governance/src/typeGuards.js';
8
12
  import { makeTracer } from '@agoric/internal';
9
13
  import { M, mustMatch } from '@agoric/store';
10
14
  import {
@@ -14,15 +18,12 @@ import {
14
18
  } from '@agoric/vat-data';
15
19
  import { assertKeywordName } from '@agoric/zoe/src/cleanProposal.js';
16
20
  import {
17
- atomicRearrange,
18
21
  makeRecorderTopic,
19
22
  provideEmptySeat,
20
23
  SubscriberShape,
21
24
  TopicsRecordShape,
22
25
  unitAmount,
23
26
  } from '@agoric/zoe/src/contractSupport/index.js';
24
- import { E } from '@endo/eventual-send';
25
- import { Far } from '@endo/marshal';
26
27
  import { makeCollectFeesInvitation } from '../collectFees.js';
27
28
  import {
28
29
  setWakeupsForNextAuction,
@@ -38,51 +39,78 @@ import {
38
39
  provideAndStartVaultManagerKits,
39
40
  } from './vaultManager.js';
40
41
 
41
- const { Fail, quote: q } = assert;
42
+ /**
43
+ * @import {MapStore} from '@agoric/store';
44
+ * @import {TransferPart, ZCF, ZCFMint, ZCFSeat} from '@agoric/zoe';
45
+ * @import {EReturn} from '@endo/far';
46
+ * @import {TypedPattern} from '@agoric/internal';
47
+ */
42
48
 
43
49
  const trace = makeTracer('VD', true);
44
50
 
45
51
  /**
46
52
  * @typedef {{
47
- * collaterals: Brand[],
48
- * rewardPoolAllocation: AmountKeywordRecord,
53
+ * collaterals: Brand[];
54
+ * rewardPoolAllocation: AmountKeywordRecord;
49
55
  * }} MetricsNotification
50
56
  *
51
- * @typedef {Readonly<{
52
- * }>} ImmutableState
53
57
  *
54
- * @typedef {{
55
- * }} MutableState
58
+ * @typedef {Readonly<{}>} ImmutableState
59
+ *
60
+ * @typedef {{}} MutableState
56
61
  *
57
62
  * @typedef {ImmutableState & MutableState} State
58
63
  *
59
64
  * @typedef {{
60
- * burnDebt: BurnDebt,
61
- * getGovernedParams: (collateralBrand: Brand) => import('./vaultManager.js').GovernedParamGetters,
62
- * mintAndTransfer: MintAndTransfer,
63
- * getShortfallReporter: () => Promise<import('../reserve/assetReserve.js').ShortfallReporter>,
65
+ * burnDebt: BurnDebt;
66
+ * getGovernedParams: (
67
+ * collateralBrand: Brand,
68
+ * ) => import('./vaultManager.js').GovernedParamGetters;
69
+ * mintAndTransfer: MintAndTransfer;
70
+ * getShortfallReporter: () => Promise<
71
+ * import('../reserve/assetReserve.js').ShortfallReporter
72
+ * >;
64
73
  * }} FactoryPowersFacet
65
74
  *
75
+ *
66
76
  * @typedef {Readonly<{
67
77
  * state: State;
68
78
  * }>} MethodContext
69
79
  *
70
- * @typedef {import('@agoric/governance/src/contractGovernance/typedParamManager').TypedParamManager<import('./params.js').VaultDirectorParams>} VaultDirectorParamManager
80
+ * @typedef {import('@agoric/governance/src/contractGovernance/typedParamManager.js').TypedParamManager<
81
+ * import('./params.js').VaultDirectorParams
82
+ * >} VaultDirectorParamManager
71
83
  */
72
84
 
73
85
  const shortfallInvitationKey = 'shortfallInvitation';
74
86
 
87
+ // If one manager/token fails, we don't want that to block possible success for
88
+ // others, so we .catch() and log separately.
89
+ //
90
+ // exported for testing
91
+ export const makeAllManagersDo = (collateralManagers, vaultManagers) => {
92
+ /** @param {(vm: VaultManager) => void} fn */
93
+ return fn => {
94
+ for (const managerIndex of collateralManagers.values()) {
95
+ Promise.resolve(vaultManagers.get(managerIndex).self)
96
+ .then(vm => fn(vm))
97
+ .catch(e => trace('🚨ERROR: allManagersDo', e));
98
+ }
99
+ };
100
+ };
101
+
75
102
  /**
76
- * @param {import('@agoric/ertp').Baggage} baggage
103
+ * @param {import('@agoric/swingset-liveslots').Baggage} baggage
77
104
  * @param {import('./vaultFactory.js').VaultFactoryZCF} zcf
78
105
  * @param {VaultDirectorParamManager} directorParamManager
79
- * @param {ZCFMint<"nat">} debtMint
80
- * @param {ERef<import('@agoric/time/src/types').TimerService>} timer
106
+ * @param {ZCFMint<'nat'>} debtMint
107
+ * @param {ERef<import('@agoric/time').TimerService>} timer
81
108
  * @param {ERef<import('../auction/auctioneer.js').AuctioneerPublicFacet>} auctioneer
82
109
  * @param {ERef<StorageNode>} storageNode
83
110
  * @param {ERef<Marshaller>} marshaller
84
111
  * @param {import('@agoric/zoe/src/contractSupport/recorder.js').MakeRecorderKit} makeRecorderKit
85
112
  * @param {import('@agoric/zoe/src/contractSupport/recorder.js').MakeERecorderKit} makeERecorderKit
113
+ * @param {Record<string, import('./params.js').VaultManagerParamOverrides>} managerParams
86
114
  */
87
115
  const prepareVaultDirector = (
88
116
  baggage,
@@ -95,6 +123,7 @@ const prepareVaultDirector = (
95
123
  marshaller,
96
124
  makeRecorderKit,
97
125
  makeERecorderKit,
126
+ managerParams,
98
127
  ) => {
99
128
  /** @type {import('../reserve/assetReserve.js').ShortfallReporter} */
100
129
  let shortfallReporter;
@@ -113,22 +142,22 @@ const prepareVaultDirector = (
113
142
  // Non-durable map because param managers aren't durable.
114
143
  // In the event they're needed they can be reconstructed from contract terms and off-chain data.
115
144
  /** a powerful object; can modify parameters */
116
- const vaultParamManagers = provideVaultParamManagers(baggage, marshaller);
145
+ const vaultParamManagers = provideVaultParamManagers(
146
+ baggage,
147
+ marshaller,
148
+ managerParams,
149
+ );
117
150
 
118
151
  const metricsNode = E(storageNode).makeChildNode('metrics');
119
152
 
120
153
  const metricsKit = makeERecorderKit(
121
154
  metricsNode,
122
- /** @type {import('@agoric/zoe/src/contractSupport/recorder.js').TypedMatcher<MetricsNotification>} */ (
123
- M.any()
124
- ),
155
+ /** @type {TypedPattern<MetricsNotification>} */ (M.any()),
125
156
  );
126
157
 
127
158
  const managersNode = E(storageNode).makeChildNode('managers');
128
159
 
129
- /**
130
- * @returns {MetricsNotification}
131
- */
160
+ /** @returns {MetricsNotification} */
132
161
  const sampleMetrics = () => {
133
162
  return harden({
134
163
  collaterals: Array.from(collateralManagers.keys()),
@@ -141,6 +170,7 @@ const prepareVaultDirector = (
141
170
  const oldInvitation = baggage.has(shortfallInvitationKey)
142
171
  ? baggage.get(shortfallInvitationKey)
143
172
  : undefined;
173
+
144
174
  const newInvitation = await directorParamManager.getInternalParamValue(
145
175
  SHORTFALL_INVITATION_KEY,
146
176
  );
@@ -188,22 +218,22 @@ const prepareVaultDirector = (
188
218
  },
189
219
 
190
220
  /**
191
- * Let the manager add rewards to the rewardPoolSeat without
192
- * exposing the rewardPoolSeat to them.
221
+ * Let the manager add rewards to the rewardPoolSeat without exposing the
222
+ * rewardPoolSeat to them.
193
223
  *
194
224
  * @type {MintAndTransfer}
195
225
  */
196
226
  mintAndTransfer: (mintReceiver, toMint, fee, nonMintTransfers) => {
197
227
  const kept = AmountMath.subtract(toMint, fee);
198
228
  debtMint.mintGains(harden({ Minted: toMint }), mintSeat);
199
- /** @type {import('@agoric/zoe/src/contractSupport/atomicTransfer.js').TransferPart[]} */
229
+ /** @type {TransferPart[]} */
200
230
  const transfers = [
201
231
  ...nonMintTransfers,
202
232
  [mintSeat, rewardPoolSeat, { Minted: fee }],
203
233
  [mintSeat, mintReceiver, { Minted: kept }],
204
234
  ];
205
235
  try {
206
- atomicRearrange(zcf, harden(transfers));
236
+ zcf.atomicRearrange(harden(transfers));
207
237
  } catch (e) {
208
238
  console.error('mintAndTransfer failed to rearrange', e);
209
239
  // If the rearrange fails, burn the newly minted tokens.
@@ -250,12 +280,7 @@ const prepareVaultDirector = (
250
280
  metrics: makeRecorderTopic('Vault Factory metrics', metricsKit),
251
281
  });
252
282
 
253
- const allManagersDo = fn => {
254
- for (const managerIndex of collateralManagers.values()) {
255
- const vm = vaultManagers.get(managerIndex).self;
256
- fn(vm);
257
- }
258
- };
283
+ const allManagersDo = makeAllManagersDo(collateralManagers, vaultManagers);
259
284
 
260
285
  const makeWaker = (name, func) => {
261
286
  return Far(name, {
@@ -263,9 +288,7 @@ const prepareVaultDirector = (
263
288
  });
264
289
  };
265
290
 
266
- /**
267
- * @returns {State}
268
- */
291
+ /** @returns {State} */
269
292
  const initState = () => {
270
293
  return {};
271
294
  };
@@ -275,7 +298,7 @@ const prepareVaultDirector = (
275
298
  *
276
299
  * @param {import('./vaultFactory.js').VaultFactoryZCF} zcf
277
300
  * @param {VaultDirectorParamManager} directorParamManager
278
- * @param {ZCFMint<"nat">} debtMint
301
+ * @param {ZCFMint<'nat'>} debtMint
279
302
  */
280
303
  const makeVaultDirector = prepareExoClassKit(
281
304
  baggage,
@@ -293,6 +316,7 @@ const prepareVaultDirector = (
293
316
  makePriceLockWaker: M.call().returns(M.remotable('TimerWaker')),
294
317
  makeLiquidationWaker: M.call().returns(M.remotable('TimerWaker')),
295
318
  makeReschedulerWaker: M.call().returns(M.remotable('TimerWaker')),
319
+ setShortfallReporter: M.call(InvitationShape).returns(M.promise()),
296
320
  }),
297
321
  public: M.interface('public', {
298
322
  getCollateralManager: M.call(BrandShape).returns(M.remotable()),
@@ -301,9 +325,10 @@ const prepareVaultDirector = (
301
325
  SubscriberShape,
302
326
  ),
303
327
  getElectorateSubscription: M.call().returns(SubscriberShape),
304
- getGovernedParams: M.call({ collateralBrand: BrandShape }).returns(
328
+ getGovernedParams: M.callWhen({ collateralBrand: BrandShape }).returns(
305
329
  M.record(),
306
330
  ),
331
+ getDirectorGovernedParams: M.call().returns(M.promise()),
307
332
  getInvitationAmount: M.call(M.string()).returns(AmountShape),
308
333
  getPublicTopics: M.call().returns(TopicsRecordShape),
309
334
  }),
@@ -330,9 +355,7 @@ const prepareVaultDirector = (
330
355
  }
331
356
  },
332
357
  }),
333
- /**
334
- * @param {string} name
335
- */
358
+ /** @param {string} name */
336
359
  getInvitation(name) {
337
360
  return directorParamManager.getInternalParamValue(name);
338
361
  },
@@ -378,9 +401,8 @@ const prepareVaultDirector = (
378
401
  // zero-based index of the manager being made
379
402
  const managerIndex = vaultManagers.length();
380
403
  const managerId = `manager${managerIndex}`;
381
- const managerStorageNode = await E(managersNode).makeChildNode(
382
- managerId,
383
- );
404
+ const managerStorageNode =
405
+ await E(managersNode).makeChildNode(managerId);
384
406
 
385
407
  vaultParamManagers.addParamManager(
386
408
  collateralBrand,
@@ -424,6 +446,7 @@ const prepareVaultDirector = (
424
446
 
425
447
  makeLiquidationWaker() {
426
448
  return makeWaker('liquidationWaker', _timestamp => {
449
+ // XXX floating promise
427
450
  allManagersDo(vm => vm.liquidateVaults(auctioneer));
428
451
  });
429
452
  },
@@ -438,11 +461,15 @@ const prepareVaultDirector = (
438
461
  allManagersDo(vm => vm.lockOraclePrices());
439
462
  });
440
463
  },
464
+ async setShortfallReporter(newInvitation) {
465
+ const zoe = zcf.getZoeService();
466
+ shortfallReporter = await E(
467
+ E(zoe).offer(newInvitation),
468
+ ).getOfferResult();
469
+ },
441
470
  },
442
471
  public: {
443
- /**
444
- * @param {Brand} brandIn
445
- */
472
+ /** @param {Brand} brandIn */
446
473
  getCollateralManager(brandIn) {
447
474
  collateralManagers.has(brandIn) ||
448
475
  Fail`Not a supported collateral type ${brandIn}`;
@@ -463,22 +490,24 @@ const prepareVaultDirector = (
463
490
  getPublicTopics() {
464
491
  return topics;
465
492
  },
466
- /**
467
- * subscription for the paramManager for the vaultFactory's electorate
468
- */
493
+ /** subscription for the paramManager for the vaultFactory's electorate */
469
494
  getElectorateSubscription() {
470
495
  return directorParamManager.getSubscription();
471
496
  },
472
497
  /**
498
+ * Note this works only for a collateral manager. For the director use,
499
+ * `getDirectorGovernedParams`
500
+ *
473
501
  * @param {{ collateralBrand: Brand }} selector
474
502
  */
475
503
  getGovernedParams({ collateralBrand }) {
476
504
  // TODO use named getters of TypedParamManager
477
505
  return vaultParamManagers.get(collateralBrand).getParams();
478
506
  },
479
- /**
480
- * @param {string} name
481
- */
507
+ getDirectorGovernedParams() {
508
+ return directorParamManager.getParams();
509
+ },
510
+ /** @param {string} name */
482
511
  getInvitationAmount(name) {
483
512
  return directorParamManager.getInvitationAmount(name);
484
513
  },
@@ -498,9 +527,7 @@ const prepareVaultDirector = (
498
527
  rescheduleWaker,
499
528
  );
500
529
  },
501
- /**
502
- * Start non-durable processes (or restart if needed after vat restart)
503
- */
530
+ /** Start non-durable processes (or restart if needed after vat restart) */
504
531
  async start() {
505
532
  const { helper, machine } = this.facets;
506
533
 
@@ -521,11 +548,14 @@ const prepareVaultDirector = (
521
548
  return makeVaultDirector;
522
549
  };
523
550
  harden(prepareVaultDirector);
551
+ /** @typedef {EReturn<EReturn<typeof prepareVaultDirector>>} VaultDirector */
524
552
 
525
553
  /**
526
554
  * Prepare the VaultDirector kind, get or make the singleton
527
555
  *
528
- * @type {(...pvdArgs: Parameters<typeof prepareVaultDirector>) => ReturnType<ReturnType<typeof prepareVaultDirector>>}
556
+ * @type {(
557
+ * ...pvdArgs: Parameters<typeof prepareVaultDirector>
558
+ * ) => VaultDirector}
529
559
  */
530
560
  export const provideDirector = (...args) => {
531
561
  const makeVaultDirector = prepareVaultDirector(...args);
@@ -0,0 +1,250 @@
1
+ /**
2
+ * @typedef {ZCF<
3
+ * GovernanceTerms<import('./params').VaultDirectorParams> & {
4
+ * priceAuthority: ERef<PriceAuthority>;
5
+ * reservePublicFacet: AssetReservePublicFacet;
6
+ * timerService: import('@agoric/time').TimerService;
7
+ * }
8
+ * >} VaultFactoryZCF
9
+ */
10
+ /** @type {ContractMeta} */
11
+ export const meta: ContractMeta;
12
+ export function start(zcf: VaultFactoryZCF, privateArgs: {
13
+ feeMintAccess: FeeMintAccess;
14
+ initialPoserInvitation: Invitation;
15
+ initialShortfallInvitation: Invitation;
16
+ storageNode: ERef<StorageNode>;
17
+ marshaller: ERef<Marshaller>;
18
+ auctioneerInstance: Instance<(zcf: ZCF<GovernanceTerms<typeof import("../auction/params.js").auctioneerParamTypes> & {
19
+ timerService: import("@agoric/time").TimerService;
20
+ reservePublicFacet: AssetReservePublicFacet;
21
+ priceAuthority: PriceAuthority;
22
+ }>, privateArgs: {
23
+ initialPoserInvitation: Invitation;
24
+ storageNode: StorageNode;
25
+ marshaller: Marshaller;
26
+ }, baggage: Baggage) => Promise<{
27
+ publicFacet: globalThis.GovernedPublicFacet<{
28
+ getElectorate: () => import("@agoric/ertp").SetAmount<import("@endo/patterns").Key>;
29
+ getStartFrequency: () => RelativeTime;
30
+ getClockStep: () => RelativeTime;
31
+ getStartingRate: () => bigint;
32
+ getLowestRate: () => bigint;
33
+ getDiscountStep: () => bigint;
34
+ getAuctionStartDelay: () => RelativeTime;
35
+ getPriceLockPeriod: () => RelativeTime;
36
+ makeBidInvitation(collateralBrand: Brand<"nat">): Promise<Invitation<string, import("../auction/auctionBook.js").OfferSpec>>;
37
+ getSchedules(): {
38
+ liveAuctionSchedule: import("../auction/scheduler.js").Schedule | null;
39
+ nextAuctionSchedule: import("../auction/scheduler.js").Schedule | null;
40
+ };
41
+ getScheduleUpdates(): globalThis.Subscriber<import("../auction/scheduler.js").ScheduleNotification>;
42
+ getBookDataUpdates(brand: any): globalThis.Subscriber<import("../auction/auctionBook.js").BookDataNotification>;
43
+ getPublicTopics(brand: any): {
44
+ bookData: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("../auction/auctionBook.js").BookDataNotification>;
45
+ } | {
46
+ schedule: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("../auction/scheduler.js").ScheduleNotification>;
47
+ };
48
+ makeDepositInvitation: () => Promise<Invitation<string, {
49
+ goal: Amount<"nat">;
50
+ }>>;
51
+ }>;
52
+ creatorFacet: globalThis.GovernedCreatorFacet<{
53
+ addBrand(issuer: Issuer<"nat">, kwd: Keyword): Promise<void>;
54
+ getSchedule(): Promise<import("../auction/scheduler.js").FullSchedule>;
55
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
56
+ addBrand(issuer: Issuer<"nat">, kwd: Keyword): Promise<void>;
57
+ getSchedule(): Promise<import("../auction/scheduler.js").FullSchedule>;
58
+ }>>;
59
+ }>>;
60
+ managerParams: Record<string, import("./params.js").VaultManagerParamOverrides>;
61
+ directorParamOverrides: [object];
62
+ }, baggage: import("@agoric/swingset-liveslots").Baggage): Promise<{
63
+ creatorFacet: import("@endo/exo").Guarded<{
64
+ getParamMgrRetriever: () => {
65
+ get: (paramPath?: VaultFactoryParamPath) => import("./vaultDirector.js").VaultDirectorParamManager | import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
66
+ DebtLimit: "amount";
67
+ InterestRate: "ratio";
68
+ LiquidationPadding: "ratio";
69
+ LiquidationMargin: "ratio";
70
+ LiquidationPenalty: "ratio";
71
+ MintFee: "ratio";
72
+ }>;
73
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
74
+ get: (paramPath?: VaultFactoryParamPath) => import("./vaultDirector.js").VaultDirectorParamManager | import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
75
+ DebtLimit: "amount";
76
+ InterestRate: "ratio";
77
+ LiquidationPadding: "ratio";
78
+ LiquidationMargin: "ratio";
79
+ LiquidationPenalty: "ratio";
80
+ MintFee: "ratio";
81
+ }>;
82
+ }>;
83
+ getInvitation(name: string): Promise<Invitation>;
84
+ getLimitedCreatorFacet(): import("@endo/exo").Guarded<{
85
+ addVaultType(collateralIssuer: Issuer<"nat">, collateralKeyword: Keyword, initialParamValues: VaultManagerParamValues): Promise<import("@endo/exo").Guarded<{
86
+ getGovernedParams(): import("./vaultManager.js").GovernedParamGetters;
87
+ makeVaultKit(seat: ZCFSeat): Promise<{
88
+ publicSubscribers: {
89
+ vault: {
90
+ description: string;
91
+ subscriber: globalThis.Subscriber<VaultNotification>;
92
+ storagePath: Promise<string>;
93
+ };
94
+ };
95
+ invitationMakers: import("@endo/exo").Guarded<{
96
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
97
+ CloseVault(): Promise<Invitation<string, undefined>>;
98
+ TransferVault(): Promise<Invitation</*elided*/ any>>;
99
+ }>;
100
+ vault: import("@endo/exo").Guarded<{
101
+ getPublicTopics(): {
102
+ vault: {
103
+ description: string;
104
+ subscriber: globalThis.Subscriber<VaultNotification>;
105
+ storagePath: Promise<string>;
106
+ };
107
+ };
108
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
109
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
110
+ makeTransferInvitation(): Promise<Invitation</*elided*/ any>>;
111
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
112
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
113
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
114
+ }>;
115
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
116
+ }>;
117
+ getCollateralQuote(): PriceQuote;
118
+ getPublicFacet(): import("@endo/exo").Guarded<{
119
+ makeVaultInvitation(): Promise<Invitation<{
120
+ publicSubscribers: {
121
+ vault: {
122
+ description: string;
123
+ subscriber: globalThis.Subscriber<VaultNotification>;
124
+ storagePath: Promise<string>;
125
+ };
126
+ };
127
+ invitationMakers: import("@endo/exo").Guarded<{
128
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
129
+ CloseVault(): Promise<Invitation<string, undefined>>;
130
+ TransferVault(): Promise<Invitation</*elided*/ any>>;
131
+ }>;
132
+ vault: import("@endo/exo").Guarded<{
133
+ getPublicTopics(): {
134
+ vault: {
135
+ description: string;
136
+ subscriber: globalThis.Subscriber<VaultNotification>;
137
+ storagePath: Promise<string>;
138
+ };
139
+ };
140
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
141
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
142
+ makeTransferInvitation(): Promise<Invitation</*elided*/ any>>;
143
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
144
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
145
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
146
+ }>;
147
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
148
+ }, undefined>>;
149
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
150
+ getCompoundedInterest(): Ratio;
151
+ getPublicTopics(): {
152
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./vaultManager.js").AssetState>;
153
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./vaultManager.js").MetricsNotification>;
154
+ };
155
+ }>;
156
+ lockOraclePrices(): PriceQuote;
157
+ liquidateVaults(auctionPF: ERef<AuctioneerPublicFacet>): Promise<void>;
158
+ }>>;
159
+ makeCollectFeesInvitation(): Promise<Invitation<string>>;
160
+ getRewardAllocation(): Allocation;
161
+ makeLiquidationWaker(): {
162
+ wake: (timestamp: any) => any;
163
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
164
+ wake: (timestamp: any) => any;
165
+ }>;
166
+ makeReschedulerWaker(): {
167
+ wake: (timestamp: any) => any;
168
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
169
+ wake: (timestamp: any) => any;
170
+ }>;
171
+ makePriceLockWaker(): {
172
+ wake: (timestamp: any) => any;
173
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
174
+ wake: (timestamp: any) => any;
175
+ }>;
176
+ setShortfallReporter(newInvitation: any): Promise<void>;
177
+ }>;
178
+ getGovernedApis(): ERef<GovernedApis>;
179
+ getGovernedApiNames(): never[];
180
+ setOfferFilter: (strings: any) => Promise<void>;
181
+ }>;
182
+ publicFacet: import("@endo/exo").Guarded<{
183
+ getCollateralManager(brandIn: Brand): import("@endo/exo").Guarded<{
184
+ makeVaultInvitation(): Promise<Invitation<{
185
+ publicSubscribers: {
186
+ vault: {
187
+ description: string;
188
+ subscriber: globalThis.Subscriber<VaultNotification>;
189
+ storagePath: Promise<string>;
190
+ };
191
+ };
192
+ invitationMakers: import("@endo/exo").Guarded<{
193
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
194
+ CloseVault(): Promise<Invitation<string, undefined>>;
195
+ TransferVault(): Promise<Invitation</*elided*/ any>>;
196
+ }>;
197
+ vault: import("@endo/exo").Guarded<{
198
+ getPublicTopics(): {
199
+ vault: {
200
+ description: string;
201
+ subscriber: globalThis.Subscriber<VaultNotification>;
202
+ storagePath: Promise<string>;
203
+ };
204
+ };
205
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
206
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
207
+ makeTransferInvitation(): Promise<Invitation</*elided*/ any>>;
208
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
209
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
210
+ getNormalizedDebt(): import("./storeUtils.js").NormalizedDebt;
211
+ }>;
212
+ vaultUpdater: import("@agoric/zoe/src/contractSupport/recorder.js").Recorder<VaultNotification>;
213
+ }, undefined>>;
214
+ getQuotes(): import("@agoric/notifier").StoredNotifier<PriceQuote>;
215
+ getCompoundedInterest(): Ratio;
216
+ getPublicTopics(): {
217
+ asset: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./vaultManager.js").AssetState>;
218
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./vaultManager.js").MetricsNotification>;
219
+ };
220
+ }>;
221
+ getDebtIssuer(): globalThis.Issuer<"nat", import("@endo/patterns").Key>;
222
+ getSubscription({ collateralBrand }: {
223
+ collateralBrand: Brand;
224
+ }): globalThis.StoredSubscription<globalThis.GovernanceSubscriptionState>;
225
+ getPublicTopics(): {
226
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./vaultDirector.js").MetricsNotification>;
227
+ };
228
+ getElectorateSubscription(): globalThis.StoredSubscription<globalThis.GovernanceSubscriptionState>;
229
+ getGovernedParams({ collateralBrand }: {
230
+ collateralBrand: Brand;
231
+ }): globalThis.ERef<globalThis.ParamStateRecord>;
232
+ getDirectorGovernedParams(): globalThis.ERef<globalThis.ParamStateRecord>;
233
+ getInvitationAmount(name: string): import("@agoric/ertp").SetAmount<import("@agoric/zoe").InvitationDetails>;
234
+ }>;
235
+ }>;
236
+ export type VaultFactoryZCF = ZCF<GovernanceTerms<import("./params").VaultDirectorParams> & {
237
+ priceAuthority: ERef<PriceAuthority>;
238
+ reservePublicFacet: AssetReservePublicFacet;
239
+ timerService: import("@agoric/time").TimerService;
240
+ }>;
241
+ export type VaultFactoryContract = ContractOf<typeof start>;
242
+ import type { ContractMeta } from '@agoric/zoe';
243
+ import type { FeeMintAccess } from '@agoric/zoe';
244
+ import type { Invitation } from '@agoric/zoe';
245
+ import type { PriceAuthority } from '@agoric/zoe/tools/types.js';
246
+ import type { ZCF } from '@agoric/zoe';
247
+ import type { ZCFSeat } from '@agoric/zoe';
248
+ import type { PriceQuote } from '@agoric/zoe/tools/types.js';
249
+ import type { ContractOf } from '@agoric/zoe/src/zoeService/utils.js';
250
+ //# sourceMappingURL=vaultFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultFactory.d.ts","sourceRoot":"","sources":["vaultFactory.js"],"names":[],"mappings":"AAuCA;;;;;;;;GAQG;AAEH,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAoBK,2BAhBI,eAAe,eACf;IACN,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,UAAU,CAAC;IACnC,0BAA0B,EAAE,UAAU,CAAC;IACvC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,kBAAkB,EAAE,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAwC,CAAC,CAAC;IACvE,aAAa,EAAE,MAAM,CACzB,MAAY,EACZ,OAAa,aAAa,EAAE,0BAA0B,CACjD,CAAC;IACF,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC;CAClC,WACO,OAAO,4BAA4B,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFtD;8BAhIY,IACR,eAAe,CAAC,OAAO,UAAU,EAAE,mBAAmB,CAAC,GAAG;IACxD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,YAAY,EAAE,OAAO,cAAc,EAAE,YAAY,CAAC;CACnD,CACF;mCA6HU,WAAW,OAAO,KAAK,CAAC;kCA3IoF,aAAa;mCAAb,aAAa;gCAAb,aAAa;oCAE1C,4BAA4B;yBAFC,aAAa;6BAAb,aAAa;gCAE1C,4BAA4B;gCAD5F,qCAAqC"}