@agoric/inter-protocol 0.16.2-other-dev-3eb1a1d.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 (145) hide show
  1. package/package.json +36 -35
  2. package/src/auction/auctionBook.d.ts +6 -6
  3. package/src/auction/auctionBook.d.ts.map +1 -1
  4. package/src/auction/auctionBook.js +51 -26
  5. package/src/auction/auctionMath.d.ts +1 -1
  6. package/src/auction/auctionMath.d.ts.map +1 -1
  7. package/src/auction/auctioneer.d.ts +5 -4
  8. package/src/auction/auctioneer.d.ts.map +1 -1
  9. package/src/auction/auctioneer.js +2 -0
  10. package/src/auction/offerBook.d.ts +3 -2
  11. package/src/auction/offerBook.d.ts.map +1 -1
  12. package/src/auction/offerBook.js +5 -1
  13. package/src/auction/params.d.ts +2 -1
  14. package/src/auction/params.d.ts.map +1 -1
  15. package/src/auction/params.js +1 -0
  16. package/src/auction/scheduler.d.ts +1 -1
  17. package/src/auction/util.d.ts +2 -1
  18. package/src/auction/util.d.ts.map +1 -1
  19. package/src/auction/util.js +4 -1
  20. package/src/clientSupport.d.ts +1 -0
  21. package/src/clientSupport.d.ts.map +1 -1
  22. package/src/clientSupport.js +6 -1
  23. package/src/contractSupport.d.ts +2 -2
  24. package/src/contractSupport.d.ts.map +1 -1
  25. package/src/econCommitteeCharter.d.ts +8 -5
  26. package/src/econCommitteeCharter.d.ts.map +1 -1
  27. package/src/econCommitteeCharter.js +4 -0
  28. package/src/feeDistributor.d.ts +33 -33
  29. package/src/feeDistributor.d.ts.map +1 -1
  30. package/src/feeDistributor.js +4 -0
  31. package/src/interest-math.d.ts +1 -0
  32. package/src/interest-math.d.ts.map +1 -1
  33. package/src/interest-math.js +5 -1
  34. package/src/interest.d.ts +3 -1
  35. package/src/interest.d.ts.map +1 -1
  36. package/src/interest.js +2 -5
  37. package/src/price/README.md +1 -1
  38. package/src/price/fluxAggregatorContract.d.ts +6 -6
  39. package/src/price/fluxAggregatorContract.d.ts.map +1 -1
  40. package/src/price/fluxAggregatorKit.d.ts +6 -5
  41. package/src/price/fluxAggregatorKit.d.ts.map +1 -1
  42. package/src/price/fluxAggregatorKit.js +3 -2
  43. package/src/price/priceOracleKit.d.ts +2 -1
  44. package/src/price/priceOracleKit.d.ts.map +1 -1
  45. package/src/price/priceOracleKit.js +5 -1
  46. package/src/price/roundsManager.d.ts +2 -2
  47. package/src/price/roundsManager.d.ts.map +1 -1
  48. package/src/price/roundsManager.js +1 -0
  49. package/src/proposals/add-auction.js +31 -2
  50. package/src/proposals/addAssetToVault.js +1 -1
  51. package/src/proposals/deploy-price-feeds.js +28 -3
  52. package/src/proposals/econ-behaviors.js +21 -5
  53. package/src/proposals/replace-fee-distributor.js +5 -2
  54. package/src/proposals/replaceElectorate.js +105 -16
  55. package/src/proposals/upgrade-vaults.js +7 -2
  56. package/src/proposals/utils.d.ts +2 -0
  57. package/src/proposals/utils.d.ts.map +1 -1
  58. package/src/proposals/utils.js +24 -1
  59. package/src/proposals/withdraw-reserve-proposal.js +63 -0
  60. package/src/provisionPool.d.ts +19 -113
  61. package/src/provisionPool.d.ts.map +1 -1
  62. package/src/provisionPool.js +29 -13
  63. package/src/provisionPoolKit.d.ts +36 -266
  64. package/src/provisionPoolKit.d.ts.map +1 -1
  65. package/src/provisionPoolKit.js +193 -107
  66. package/src/psm/psm.d.ts +15 -7
  67. package/src/psm/psm.d.ts.map +1 -1
  68. package/src/psm/psm.js +6 -1
  69. package/src/reserve/assetReserve.d.ts +15 -4
  70. package/src/reserve/assetReserve.d.ts.map +1 -1
  71. package/src/reserve/assetReserve.js +16 -17
  72. package/src/reserve/assetReserveKit.d.ts +32 -3
  73. package/src/reserve/assetReserveKit.d.ts.map +1 -1
  74. package/src/reserve/assetReserveKit.js +110 -2
  75. package/src/reserve/params.d.ts +9 -3
  76. package/src/reserve/params.d.ts.map +1 -1
  77. package/src/reserve/params.js +8 -2
  78. package/src/vaultFactory/burn.d.ts +1 -1
  79. package/src/vaultFactory/burn.d.ts.map +1 -1
  80. package/src/vaultFactory/liquidation.d.ts +2 -0
  81. package/src/vaultFactory/liquidation.d.ts.map +1 -1
  82. package/src/vaultFactory/liquidation.js +5 -5
  83. package/src/vaultFactory/math.d.ts +1 -1
  84. package/src/vaultFactory/math.d.ts.map +1 -1
  85. package/src/vaultFactory/math.js +1 -1
  86. package/src/vaultFactory/orderedVaultStore.d.ts +19 -18
  87. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -1
  88. package/src/vaultFactory/orderedVaultStore.js +4 -2
  89. package/src/vaultFactory/params.d.ts +5 -2
  90. package/src/vaultFactory/params.d.ts.map +1 -1
  91. package/src/vaultFactory/params.js +5 -2
  92. package/src/vaultFactory/prioritizedVaults.d.ts +58 -57
  93. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -1
  94. package/src/vaultFactory/prioritizedVaults.js +5 -2
  95. package/src/vaultFactory/storeUtils.d.ts +2 -2
  96. package/src/vaultFactory/storeUtils.d.ts.map +1 -1
  97. package/src/vaultFactory/types-ambient.d.ts +2 -2
  98. package/src/vaultFactory/types-ambient.d.ts.map +1 -1
  99. package/src/vaultFactory/types-ambient.js +5 -2
  100. package/src/vaultFactory/vault.d.ts +11 -10
  101. package/src/vaultFactory/vault.d.ts.map +1 -1
  102. package/src/vaultFactory/vault.js +2 -1
  103. package/src/vaultFactory/vaultDirector.d.ts +53 -47
  104. package/src/vaultFactory/vaultDirector.d.ts.map +1 -1
  105. package/src/vaultFactory/vaultDirector.js +10 -2
  106. package/src/vaultFactory/vaultFactory.d.ts +63 -15
  107. package/src/vaultFactory/vaultFactory.d.ts.map +1 -1
  108. package/src/vaultFactory/vaultFactory.js +6 -2
  109. package/src/vaultFactory/vaultHolder.d.ts +68 -24
  110. package/src/vaultFactory/vaultHolder.d.ts.map +1 -1
  111. package/src/vaultFactory/vaultHolder.js +4 -0
  112. package/src/vaultFactory/vaultKit.d.ts +8 -7
  113. package/src/vaultFactory/vaultKit.d.ts.map +1 -1
  114. package/src/vaultFactory/vaultKit.js +5 -1
  115. package/src/vaultFactory/vaultManager.d.ts +65 -63
  116. package/src/vaultFactory/vaultManager.d.ts.map +1 -1
  117. package/src/vaultFactory/vaultManager.js +58 -38
  118. package/src/proposals/add-auction.d.ts +0 -109
  119. package/src/proposals/add-auction.d.ts.map +0 -1
  120. package/src/proposals/addAssetToVault.d.ts +0 -173
  121. package/src/proposals/addAssetToVault.d.ts.map +0 -1
  122. package/src/proposals/committee-proposal.d.ts +0 -113
  123. package/src/proposals/committee-proposal.d.ts.map +0 -1
  124. package/src/proposals/core-proposal.d.ts +0 -149
  125. package/src/proposals/core-proposal.d.ts.map +0 -1
  126. package/src/proposals/deploy-price-feeds.d.ts +0 -76
  127. package/src/proposals/deploy-price-feeds.d.ts.map +0 -1
  128. package/src/proposals/econ-behaviors.d.ts +0 -541
  129. package/src/proposals/econ-behaviors.d.ts.map +0 -1
  130. package/src/proposals/price-feed-proposal.d.ts +0 -84
  131. package/src/proposals/price-feed-proposal.d.ts.map +0 -1
  132. package/src/proposals/replace-fee-distributor.d.ts +0 -48
  133. package/src/proposals/replace-fee-distributor.d.ts.map +0 -1
  134. package/src/proposals/replace-scaledPriceAuthorities.d.ts +0 -30
  135. package/src/proposals/replace-scaledPriceAuthorities.d.ts.map +0 -1
  136. package/src/proposals/replaceElectorate.d.ts +0 -55
  137. package/src/proposals/replaceElectorate.d.ts.map +0 -1
  138. package/src/proposals/startEconCommittee.d.ts +0 -34
  139. package/src/proposals/startEconCommittee.d.ts.map +0 -1
  140. package/src/proposals/startPSM.d.ts +0 -59
  141. package/src/proposals/startPSM.d.ts.map +0 -1
  142. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts +0 -24
  143. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts.map +0 -1
  144. package/src/proposals/upgrade-vaults.d.ts +0 -41
  145. package/src/proposals/upgrade-vaults.d.ts.map +0 -1
@@ -5,6 +5,7 @@ import { E } from '@endo/far';
5
5
  import { unitAmount } from '@agoric/zoe/src/contractSupport/priceQuote.js';
6
6
  import {
7
7
  oracleBrandFeedName,
8
+ provideRetiredInstances,
8
9
  reserveThenDeposit,
9
10
  sanitizePathSegment,
10
11
  } from './utils.js';
@@ -84,7 +85,8 @@ export const ensureOracleBrand = async (
84
85
  };
85
86
 
86
87
  /**
87
- * @param {EconomyBootstrapPowers} powers
88
+ * @param {EconomyBootstrapPowers &
89
+ * PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
88
90
  * @param {{
89
91
  * AGORIC_INSTANCE_NAME: string;
90
92
  * contractTerms: import('@agoric/inter-protocol/src/price/fluxAggregatorKit.js').ChainlinkConfig;
@@ -96,6 +98,7 @@ export const ensureOracleBrand = async (
96
98
  const startPriceAggregatorInstance = async (
97
99
  {
98
100
  consume: {
101
+ agoricNames,
99
102
  board,
100
103
  chainStorage,
101
104
  chainTimerService,
@@ -103,8 +106,10 @@ const startPriceAggregatorInstance = async (
103
106
  highPrioritySendersManager,
104
107
  namesByAddressAdmin,
105
108
  startGovernedUpgradable,
109
+ retiredContractInstances: retiredContractInstancesP,
106
110
  },
107
111
  instance: { produce: produceInstance },
112
+ produce: { retiredContractInstances: produceRetiredInstances },
108
113
  },
109
114
  { AGORIC_INSTANCE_NAME, contractTerms, brandIn, brandOut },
110
115
  installation,
@@ -139,6 +144,22 @@ const startPriceAggregatorInstance = async (
139
144
  // @ts-expect-error GovernableStartFn vs. fluxAggregatorContract.js start
140
145
  installation,
141
146
  });
147
+ const retiredContractInstances = await provideRetiredInstances(
148
+ retiredContractInstancesP,
149
+ produceRetiredInstances,
150
+ );
151
+
152
+ // save the instance so we can manage it later
153
+ const retiringInstance = await E(agoricNames).lookup(
154
+ 'instance',
155
+ AGORIC_INSTANCE_NAME,
156
+ );
157
+ const boardID = await E(board).getId(retiringInstance);
158
+ retiredContractInstances.init(
159
+ `priceFeed-${AGORIC_INSTANCE_NAME}-${boardID}`,
160
+ retiringInstance,
161
+ );
162
+
142
163
  produceInstance[AGORIC_INSTANCE_NAME].reset();
143
164
  produceInstance[AGORIC_INSTANCE_NAME].resolve(governedKit.instance);
144
165
  trace(
@@ -191,7 +212,9 @@ const distributeInvitations = async (
191
212
  };
192
213
 
193
214
  /**
194
- * @param {EconomyBootstrapPowers & NamedVatPowers} powers
215
+ * @param {EconomyBootstrapPowers &
216
+ * NamedVatPowers &
217
+ * PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
195
218
  * @param {{
196
219
  * options: PriceFeedConfig & {
197
220
  * priceAggregatorRef: { bundleID: string };
@@ -300,6 +323,7 @@ export const getManifestForPriceFeeds = async (
300
323
  namesByAddressAdmin: t,
301
324
  priceAuthority: t,
302
325
  priceAuthorityAdmin: t,
326
+ retiredContractInstances: t,
303
327
  startGovernedUpgradable: t,
304
328
  startUpgradable: t,
305
329
  zoe: t,
@@ -307,9 +331,10 @@ export const getManifestForPriceFeeds = async (
307
331
  installation: { produce: { priceAggregator: t } },
308
332
  instance: {
309
333
  produce: t,
334
+ consume: t,
310
335
  },
311
336
  oracleBrand: { produce: t },
312
- produce: { priceAuthority8400: t },
337
+ produce: { priceAuthority8400: t, retiredContractInstances: t },
313
338
  },
314
339
  },
315
340
  options: { ...priceFeedOptions },
@@ -10,7 +10,20 @@ import { makeGovernedTerms as makeGovernedATerms } from '../auction/params.js';
10
10
  import { makeReserveTerms } from '../reserve/params.js';
11
11
  import { makeGovernedTerms as makeGovernedVFTerms } from '../vaultFactory/params.js';
12
12
 
13
- /** @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js' */
13
+ /**
14
+ * @import {GovernorCreatorFacet, GovernanceFacetKit, GovernorStartedInstallationKit} from '@agoric/governance/src/types.js';
15
+ * @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js';
16
+ * @import {AdminFacet} from '@agoric/zoe';
17
+ * @import {MapStore, SetStore} from '@agoric/store';
18
+ */
19
+
20
+ // Duplicated from vaultFactory/types-ambient.js to solve a CI problem.
21
+ // Not worth refactoring to DRY because vaultFactory is going away.
22
+ /**
23
+ * @typedef {object} InterestTiming
24
+ * @property {import('@agoric/time').RelativeTime} chargingPeriod in seconds
25
+ * @property {import('@agoric/time').RelativeTime} recordingPeriod in seconds
26
+ */
14
27
 
15
28
  const trace = makeTracer('RunEconBehaviors', true);
16
29
 
@@ -25,8 +38,10 @@ export const SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY;
25
38
  /**
26
39
  * @typedef {object} PSMKit
27
40
  * @property {string} label
28
- * @property {Instance} psm
29
- * @property {Instance} psmGovernor
41
+ * @property {Instance<import('../psm/psm.js').start>} psm
42
+ * @property {Instance<
43
+ * import('../../../governance/src/contractGovernor.js').start
44
+ * >} psmGovernor
30
45
  * @property {Awaited<
31
46
  * ReturnType<
32
47
  * Awaited<
@@ -157,9 +172,10 @@ export const setupReserve = async ({
157
172
  'reserve.governor',
158
173
  );
159
174
 
160
- const [creatorFacet, publicFacet, instance] = await Promise.all([
175
+ const [creatorFacet, publicFacet, adminFacet, instance] = await Promise.all([
161
176
  E(g.creatorFacet).getCreatorFacet(),
162
177
  E(g.creatorFacet).getPublicFacet(),
178
+ E(g.creatorFacet).getAdminFacet(),
163
179
  E(g.publicFacet).getGovernedContract(),
164
180
  ]);
165
181
 
@@ -169,7 +185,7 @@ export const setupReserve = async ({
169
185
  instance,
170
186
  publicFacet,
171
187
  creatorFacet,
172
- adminFacet: g.adminFacet,
188
+ adminFacet,
173
189
 
174
190
  governor: g.instance,
175
191
  governorCreatorFacet: g.creatorFacet,
@@ -159,8 +159,8 @@ harden(replaceFeeDistributor);
159
159
 
160
160
  const t = 'replaceFeeDistributor';
161
161
  export const getManifestForReplaceFeeDistributor = async (
162
- _,
163
- feeDistributorOptions,
162
+ { restoreRef },
163
+ { feeDistributorRef, ...feeDistributorOptions },
164
164
  ) => ({
165
165
  manifest: {
166
166
  [replaceFeeDistributor.name]: {
@@ -191,5 +191,8 @@ export const getManifestForReplaceFeeDistributor = async (
191
191
  },
192
192
  },
193
193
  },
194
+ installations: {
195
+ feeDistributor: restoreRef(feeDistributorRef),
196
+ },
194
197
  options: { ...feeDistributorOptions },
195
198
  });
@@ -15,7 +15,7 @@ import {
15
15
  assertPathSegment,
16
16
  makeStorageNodeChild,
17
17
  } from '@agoric/internal/src/lib-chainStorage.js';
18
- import { reserveThenDeposit } from './utils.js';
18
+ import { provideRetiredInstances, reserveThenDeposit } from './utils.js';
19
19
 
20
20
  /** @import {EconomyBootstrapPowers} from './econ-behaviors.js' */
21
21
  /** @import {EconCharterStartResult} from './econ-behaviors.js' */
@@ -181,8 +181,10 @@ const inviteToEconCharter = async (
181
181
  * Starts a new Economic Committee (EC) by creating an instance with the
182
182
  * provided committee specifications.
183
183
  *
184
- * @param {EconomyBootstrapPowers} powers - The resources and capabilities
185
- * required to start the committee.
184
+ * @param {EconomyBootstrapPowers &
185
+ * PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
186
+ * - The resources and capabilities required to start the committee.
187
+ *
186
188
  * @param {{
187
189
  * options: {
188
190
  * committeeName: string;
@@ -196,12 +198,22 @@ const inviteToEconCharter = async (
196
198
  */
197
199
  const startNewEconomicCommittee = async (
198
200
  {
199
- consume: { board, chainStorage, startUpgradable },
200
- produce: { economicCommitteeKit, economicCommitteeCreatorFacet },
201
+ consume: {
202
+ board,
203
+ chainStorage,
204
+ startUpgradable,
205
+ retiredContractInstances: retiredInstancesP,
206
+ },
207
+ produce: {
208
+ economicCommitteeKit,
209
+ economicCommitteeCreatorFacet,
210
+ retiredContractInstances: produceRetiredInstances,
211
+ },
201
212
  installation: {
202
213
  consume: { committee },
203
214
  },
204
215
  instance: {
216
+ consume: { economicCommittee: economicCommitteeOriginalP },
205
217
  produce: { economicCommittee },
206
218
  },
207
219
  },
@@ -214,6 +226,19 @@ const startNewEconomicCommittee = async (
214
226
  trace(`committeeName ${committeeName}`);
215
227
  trace(`committeeSize ${committeeSize}`);
216
228
 
229
+ const retiredInstances = await provideRetiredInstances(
230
+ retiredInstancesP,
231
+ produceRetiredInstances,
232
+ );
233
+
234
+ // Record the retired electorate instance so we can manage it later.
235
+ const economicCommitteeOriginal = await economicCommitteeOriginalP;
236
+ const boardID = await E(board).getId(economicCommitteeOriginal);
237
+ retiredInstances.init(
238
+ `economicCommittee-${boardID}`,
239
+ economicCommitteeOriginal,
240
+ );
241
+
217
242
  const committeesNode = await makeStorageNodeChild(
218
243
  chainStorage,
219
244
  COMMITTEES_ROOT,
@@ -264,33 +289,87 @@ const startNewEconomicCommittee = async (
264
289
  * Starts a new Economic Committee Charter by creating an instance with the
265
290
  * provided committee specifications.
266
291
  *
267
- * @param {EconomyBootstrapPowers} powers - The resources and capabilities
268
- * required to start the committee.
292
+ * @param {EconomyBootstrapPowers &
293
+ * PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
294
+ * - The resources and capabilities required to start the committee.
295
+ *
269
296
  * @returns {Promise<EconCharterStartResult>} A promise that resolves to the
270
297
  * charter kit result.
271
298
  */
272
299
  const startNewEconCharter = async ({
273
- consume: { startUpgradable },
274
- produce: { econCharterKit },
300
+ consume: {
301
+ board,
302
+ startUpgradable,
303
+ contractKits: contractKitsP,
304
+ econCharterKit: econCharterKitP,
305
+ retiredContractInstances: retiredContractInstancesP,
306
+ },
307
+ produce: {
308
+ econCharterKit: produceEconCharterKit,
309
+ retiredContractInstances: produceRetiredInstances,
310
+ },
275
311
  installation: {
276
312
  consume: { binaryVoteCounter: counterP, econCommitteeCharter: installP },
277
313
  },
278
314
  instance: {
279
315
  produce: { econCommitteeCharter },
316
+ consume: { econCommitteeCharter: previousInstanceP },
280
317
  },
281
318
  }) => {
282
- const [charterInstall, counterInstall] = await Promise.all([
319
+ const [
320
+ charterInstall,
321
+ counterInstall,
322
+ previousInstance,
323
+ contractKits,
324
+ econCharterKit,
325
+ retiredInstances,
326
+ ] = await Promise.all([
283
327
  installP,
284
328
  counterP,
329
+ previousInstanceP,
330
+ contractKitsP,
331
+ econCharterKitP,
332
+ provideRetiredInstances(retiredContractInstancesP, produceRetiredInstances),
285
333
  ]);
286
- const terms = await harden({
287
- binaryVoteCounterInstallation: counterInstall,
288
- });
334
+
335
+ const label = 'econCommitteeCharter';
336
+ const previousCharterKit = { ...econCharterKit, label };
337
+
338
+ const boardID = await E(board).getId(previousCharterKit.instance);
339
+ const identifier = `${label}-${boardID}`;
340
+ trace('Saving previous EC Charter Instance', label);
341
+
342
+ // save the old charter instance kit so we can manage it later
343
+ if (retiredInstances.has(identifier)) {
344
+ // bootstrap tests start having already run this upgrade. Actual upgrades on
345
+ // mainNet or testnets should start with the promiseSpace post upgrade-17,
346
+ // which doesn't have this entry in the map.
347
+ trace(
348
+ '⚠️ WARNING: collision on storing Charter in retireInstances not' +
349
+ ' expected during chain upgrade. It IS normal during bootstrap tests',
350
+ );
351
+ } else {
352
+ retiredInstances.init(identifier, previousCharterKit.instance);
353
+ }
354
+ if (contractKits.has(previousInstance)) {
355
+ // bootstrap tests start having already run this upgrade. Actual upgrades on
356
+ // mainNet or testnets should start with the promiseSpace post upgrade-17,
357
+ // which doesn't have this entry in the map.
358
+ trace(
359
+ '⚠️ WARNING: collision on storing Charter in contractKits not' +
360
+ ' expected during chain upgrade. It IS normal during bootstrap tests',
361
+ );
362
+ } else {
363
+ contractKits.init(previousInstance, previousCharterKit);
364
+ }
289
365
 
290
366
  trace('Starting new EC Charter Instance');
291
367
 
368
+ const terms = harden({
369
+ binaryVoteCounterInstallation: counterInstall,
370
+ });
292
371
  const startResult = await E(startUpgradable)({
293
- label: 'econCommitteeCharter',
372
+ label,
294
373
  installation: charterInstall,
295
374
  terms,
296
375
  });
@@ -300,8 +379,8 @@ const startNewEconCharter = async ({
300
379
  econCommitteeCharter.reset();
301
380
  econCommitteeCharter.resolve(E.get(startResult).instance);
302
381
 
303
- econCharterKit.reset();
304
- econCharterKit.resolve(startResult);
382
+ produceEconCharterKit.reset();
383
+ produceEconCharterKit.resolve(startResult);
305
384
  return startResult;
306
385
  };
307
386
 
@@ -309,6 +388,7 @@ const startNewEconCharter = async ({
309
388
  * @typedef {PromiseSpaceOf<{
310
389
  * auctionUpgradeNewInstance: Instance;
311
390
  * auctionUpgradeNewGovCreator: any;
391
+ * retiredContractInstances: MapStore<string, Instance>;
312
392
  * }>} interlockPowers
313
393
  */
314
394
 
@@ -485,13 +565,17 @@ export const getManifestForReplaceAllElectorates = async (
485
565
  manifest: {
486
566
  [replaceAllElectorates.name]: {
487
567
  consume: {
568
+ agoricNames: true,
488
569
  auctionUpgradeNewGovCreator: true,
489
570
  auctionUpgradeNewInstance: true,
490
571
  psmKit: true,
572
+ contractKits: true,
573
+ econCharterKit: true,
491
574
  governedContractKits: true,
492
575
  chainStorage: true,
493
576
  highPrioritySendersManager: true,
494
577
  namesByAddressAdmin: true,
578
+ retiredContractInstances: true,
495
579
  // Rest of these are designed to be widely shared
496
580
  board: true,
497
581
  startUpgradable: true,
@@ -501,6 +585,7 @@ export const getManifestForReplaceAllElectorates = async (
501
585
  economicCommitteeKit: true,
502
586
  economicCommitteeCreatorFacet: true,
503
587
  auctionUpgradeNewGovCreator: true,
588
+ retiredContractInstances: true,
504
589
  },
505
590
  installation: {
506
591
  consume: {
@@ -514,6 +599,10 @@ export const getManifestForReplaceAllElectorates = async (
514
599
  economicCommittee: true,
515
600
  econCommitteeCharter: true,
516
601
  },
602
+ consume: {
603
+ economicCommittee: true,
604
+ econCommitteeCharter: true,
605
+ },
517
606
  },
518
607
  },
519
608
  },
@@ -1,3 +1,9 @@
1
+ /**
2
+ * @file this core-eval proposal is specific to the upgrade-18 scenario,
3
+ * handling tasks beyond generic Vault Factory null upgrade. For a reusable
4
+ * proposal, see upgrade-vaultFactory-proposal.js.
5
+ */
6
+
1
7
  import { E } from '@endo/far';
2
8
  import { makeNotifierFromAsyncIterable } from '@agoric/notifier';
3
9
  import { makeTracer } from '@agoric/internal/src/index.js';
@@ -49,10 +55,10 @@ export const upgradeVaults = async (
49
55
 
50
56
  await priceAuthority8400;
51
57
 
58
+ /** @type {Instance<import('../auction/auctioneer.js').start>} */
52
59
  const auctionNewInstance = await auctionUpgradeNewInstance;
53
60
  auctionUpgradeNewInstanceProducer.reset();
54
61
  const publicFacet = E(zoe).getPublicFacet(auctionNewInstance);
55
- /** @type {import('@agoric/inter-protocol/src/auction/scheduler.js').FullSchedule} */
56
62
  const schedules = await E(publicFacet).getSchedules();
57
63
  const now = await E(chainTimerService).getCurrentTimestamp();
58
64
  (schedules.nextAuctionSchedule &&
@@ -91,7 +97,6 @@ export const upgradeVaults = async (
91
97
  for (const kwd of Object.keys(vaultBrands)) {
92
98
  const collateralBrand = vaultBrands[kwd];
93
99
 
94
- /** @type {any} */
95
100
  const governedParams = await E(directorPF).getGovernedParams({
96
101
  collateralBrand,
97
102
  });
@@ -16,4 +16,6 @@ export function oracleBrandFeedName(inBrandName: any, outBrandName: any): string
16
16
  export function scaledPriceFeedName(issuerName: any): string;
17
17
  /** @type {(name: string) => string} */
18
18
  export const sanitizePathSegment: (name: string) => string;
19
+ export function provideRetiredInstances(consume: Promise<MapStore>, produce: Producer<MapStore>): Promise<MapStore>;
20
+ import type { MapStore } from '@agoric/store';
19
21
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAYO,mDAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,EAAE,kBA+BpB;AAMM,+CAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,kBAMhB;AAQI,8CALI,MAAM,uBACN,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,QACtC,MAAM,YACN,IAAI,CAAC,OAAO,CAAC,EAAE,iBAuBzB;AA6BM,wCAPI,OAAO,CAAC;IACd,OAAO,EAAE,IAAI,CAAC,OAAO,iCAAiC,EAAE,UAAU,CAAC,CAAC;CACrE,CAAC,mCAEF;IAAkE,UAAU,EAApE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,eAAe;CAAC;;;GAoDxC;AAEM,iFACsC;AAEtC,6DAC+B;AAEtC,uCAAuC;AACvC,kCADW,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAKjC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAgBO,mDAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,EAAE,kBA+BpB;AAMM,+CAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,kBAMhB;AAQI,8CALI,MAAM,uBACN,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,QACtC,MAAM,YACN,IAAI,CAAC,OAAO,CAAC,EAAE,iBAuBzB;AA6BM,wCAPI,OAAO,CAAC;IACd,OAAO,EAAE,IAAI,CAAC,OAAO,iCAAiC,EAAE,UAAU,CAAC,CAAC;CACrE,CAAC,mCAEF;IAAkE,UAAU,EAApE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,eAAe;CAAC;oCAkCD,UAAK,EAAE,UAAK,EAAE,SAAI;;GAkBzD;AAEM,iFACsC;AAEtC,6DAC+B;AAEtC,uCAAuC;AACvC,kCADW,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAKjC;AAUK,iDAJI,OAAO,CAAC,QAAQ,CAAC,WACjB,QAAQ,CAAC,QAAQ,CAAC,GAChB,OAAO,CAAC,QAAQ,CAAC,CAW7B;8BA1LoC,eAAe"}
@@ -3,8 +3,12 @@ import { E } from '@endo/far';
3
3
  import { WalletName } from '@agoric/internal';
4
4
  import { getCopyMapEntries, makeCopyMap } from '@agoric/store';
5
5
  import { assertPathSegment } from '@agoric/internal/src/lib-chainStorage.js';
6
+ import { makeScalarBigMapStore } from '@agoric/vat-data';
6
7
 
7
- /** @import {CopyMap} from '@endo/patterns'; */
8
+ /**
9
+ * @import {CopyMap} from '@endo/patterns';
10
+ * @import {MapStore, SetStore} from '@agoric/store';
11
+ */
8
12
 
9
13
  /**
10
14
  * @param {ERef<import('@agoric/vats').NameAdmin>} nameAdmin
@@ -171,3 +175,22 @@ export const sanitizePathSegment = name => {
171
175
  assertPathSegment(candidate);
172
176
  return candidate;
173
177
  };
178
+
179
+ /**
180
+ * Idempotently provide an empty MapStore for the `retiredContractInstances`
181
+ * value in promise space
182
+ *
183
+ * @param {Promise<MapStore>} consume
184
+ * @param {Producer<MapStore>} produce
185
+ * @returns {Promise<MapStore>}
186
+ */
187
+ export const provideRetiredInstances = async (consume, produce) => {
188
+ // Promise space has no way to look for an existing value other than awaiting a promise,
189
+ // but it does allow extra production so it's safe to do this redundantly.
190
+ produce.resolve(
191
+ makeScalarBigMapStore('retiredContractInstances', {
192
+ durable: true,
193
+ }),
194
+ );
195
+ return consume;
196
+ };
@@ -0,0 +1,63 @@
1
+ import { E } from '@endo/far';
2
+ import { makeTracer } from '@agoric/internal/src/debug.js';
3
+ import { reserveThenDeposit } from './utils.js';
4
+
5
+ /**
6
+ * @param {BootstrapPowers & {
7
+ * consume: {
8
+ * reserveKit: Promise<
9
+ * ReturnType<import('../reserve/assetReserve.js')['start']>
10
+ * >;
11
+ * };
12
+ * }} powers
13
+ * @param {{ options: { address: string; count?: number } }} namedArgs
14
+ */
15
+ export const inviteReserveWithdrawer = async (
16
+ { consume: { namesByAddressAdmin, reserveKit } },
17
+ { options: { address, count = 1 } },
18
+ ) => {
19
+ const trace = makeTracer('InviteReserveWithdrawer');
20
+
21
+ const maybeGovernedCreatorFacetP = E.get(reserveKit).creatorFacet;
22
+ const creatorFacetP = E(maybeGovernedCreatorFacetP)
23
+ .getLimitedCreatorFacet()
24
+ .catch(err => {
25
+ trace('Failed to get limited creator facet:', err);
26
+ return maybeGovernedCreatorFacetP;
27
+ });
28
+
29
+ const makeInvitation = () =>
30
+ // @ts-expect-error tolerate translation from governed to limited creatorFacet
31
+ E(creatorFacetP).makeSingleWithdrawalInvitation();
32
+
33
+ const invitations = await Promise.all(
34
+ Array.from({ length: count }, makeInvitation),
35
+ );
36
+
37
+ // Deposit the invitations, but don't block in case the address does not yet
38
+ // have a smart wallet.
39
+ void reserveThenDeposit(
40
+ `reserve withdrawer ${address}`,
41
+ namesByAddressAdmin,
42
+ address,
43
+ invitations,
44
+ );
45
+ };
46
+ harden(inviteReserveWithdrawer);
47
+
48
+ export const getManifestForInviteWithdrawer = async (
49
+ { restoreRef: _ },
50
+ { address, count },
51
+ ) => {
52
+ return {
53
+ manifest: {
54
+ [inviteReserveWithdrawer.name]: /** @type {const} */ ({
55
+ consume: {
56
+ namesByAddressAdmin: true,
57
+ reserveKit: true,
58
+ },
59
+ }),
60
+ },
61
+ options: { address, count },
62
+ };
63
+ };