@agoric/inter-protocol 0.16.2-upgrade-14-dev-0169c7e.0 → 0.16.2-upgrade-16-dev-8879538.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/package.json +41 -34
  2. package/scripts/build-bundles.js +5 -21
  3. package/src/auction/auctionBook.d.ts +84 -0
  4. package/src/auction/auctionBook.d.ts.map +1 -0
  5. package/src/auction/auctionBook.js +135 -103
  6. package/src/auction/auctioneer.d.ts +83 -0
  7. package/src/auction/auctioneer.d.ts.map +1 -0
  8. package/src/auction/auctioneer.js +63 -49
  9. package/src/auction/offerBook.d.ts +45 -0
  10. package/src/auction/offerBook.d.ts.map +1 -0
  11. package/src/auction/offerBook.js +13 -12
  12. package/src/auction/params.d.ts +149 -0
  13. package/src/auction/params.d.ts.map +1 -0
  14. package/src/auction/params.js +10 -9
  15. package/src/auction/scheduleMath.d.ts +5 -0
  16. package/src/auction/scheduleMath.d.ts.map +1 -0
  17. package/src/auction/scheduleMath.js +17 -15
  18. package/src/auction/scheduler.d.ts +49 -0
  19. package/src/auction/scheduler.d.ts.map +1 -0
  20. package/src/auction/scheduler.js +51 -43
  21. package/src/auction/sortedOffers.d.ts +8 -0
  22. package/src/auction/sortedOffers.d.ts.map +1 -0
  23. package/src/auction/sortedOffers.js +9 -7
  24. package/src/auction/util.d.ts +32 -0
  25. package/src/auction/util.d.ts.map +1 -0
  26. package/src/auction/util.js +6 -4
  27. package/src/clientSupport.d.ts +167 -0
  28. package/src/clientSupport.d.ts.map +1 -0
  29. package/src/clientSupport.js +97 -40
  30. package/src/collectFees.d.ts +2 -0
  31. package/src/collectFees.d.ts.map +1 -0
  32. package/src/contractSupport.d.ts +28 -0
  33. package/src/contractSupport.d.ts.map +1 -0
  34. package/src/contractSupport.js +14 -12
  35. package/src/econCommitteeCharter.d.ts +39 -0
  36. package/src/econCommitteeCharter.d.ts.map +1 -0
  37. package/src/econCommitteeCharter.js +21 -20
  38. package/src/feeDistributor.d.ts +224 -0
  39. package/src/feeDistributor.d.ts.map +1 -0
  40. package/src/feeDistributor.js +37 -33
  41. package/src/index.d.ts +2 -0
  42. package/src/index.d.ts.map +1 -0
  43. package/src/index.js +1 -0
  44. package/src/interest-math.d.ts +3 -0
  45. package/src/interest-math.d.ts.map +1 -0
  46. package/src/interest.d.ts +28 -0
  47. package/src/interest.d.ts.map +1 -0
  48. package/src/interest.js +21 -16
  49. package/src/price/README.md +13 -0
  50. package/src/price/fluxAggregatorContract.d.ts +70 -0
  51. package/src/price/fluxAggregatorContract.d.ts.map +1 -0
  52. package/src/price/fluxAggregatorContract.js +62 -55
  53. package/src/price/fluxAggregatorKit.d.ts +103 -0
  54. package/src/price/fluxAggregatorKit.d.ts.map +1 -0
  55. package/src/price/fluxAggregatorKit.js +50 -37
  56. package/src/price/priceOracleKit.d.ts +38 -0
  57. package/src/price/priceOracleKit.d.ts.map +1 -0
  58. package/src/price/priceOracleKit.js +11 -13
  59. package/src/price/roundsManager.d.ts +238 -0
  60. package/src/price/roundsManager.d.ts.map +1 -0
  61. package/src/price/roundsManager.js +77 -82
  62. package/src/proposals/README.md +2 -3
  63. package/src/proposals/add-auction.d.ts +69 -0
  64. package/src/proposals/add-auction.d.ts.map +1 -0
  65. package/src/proposals/add-auction.js +181 -0
  66. package/src/proposals/addAssetToVault.d.ts +160 -0
  67. package/src/proposals/addAssetToVault.d.ts.map +1 -0
  68. package/src/proposals/addAssetToVault.js +172 -38
  69. package/src/proposals/committee-proposal.d.ts +113 -0
  70. package/src/proposals/committee-proposal.d.ts.map +1 -0
  71. package/src/proposals/committee-proposal.js +25 -31
  72. package/src/proposals/core-proposal.d.ts +149 -0
  73. package/src/proposals/core-proposal.d.ts.map +1 -0
  74. package/src/proposals/core-proposal.js +9 -11
  75. package/src/proposals/econ-behaviors.d.ts +1169 -0
  76. package/src/proposals/econ-behaviors.d.ts.map +1 -0
  77. package/src/proposals/econ-behaviors.js +66 -45
  78. package/src/proposals/price-feed-proposal.d.ts +84 -0
  79. package/src/proposals/price-feed-proposal.d.ts.map +1 -0
  80. package/src/proposals/price-feed-proposal.js +108 -51
  81. package/src/proposals/startEconCommittee.d.ts +34 -0
  82. package/src/proposals/startEconCommittee.d.ts.map +1 -0
  83. package/src/proposals/startEconCommittee.js +2 -2
  84. package/src/proposals/startPSM.d.ts +59 -0
  85. package/src/proposals/startPSM.d.ts.map +1 -0
  86. package/src/proposals/startPSM.js +38 -27
  87. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts +24 -0
  88. package/src/proposals/upgrade-scaledPriceAuthorities.d.ts.map +1 -0
  89. package/src/proposals/upgrade-scaledPriceAuthorities.js +78 -0
  90. package/src/proposals/upgrade-vaults.d.ts +35 -0
  91. package/src/proposals/upgrade-vaults.d.ts.map +1 -0
  92. package/src/proposals/upgrade-vaults.js +202 -0
  93. package/src/proposals/utils.d.ts +17 -0
  94. package/src/proposals/utils.d.ts.map +1 -0
  95. package/src/proposals/utils.js +34 -7
  96. package/src/provisionPool.d.ts +167 -0
  97. package/src/provisionPool.d.ts.map +1 -0
  98. package/src/provisionPool.js +122 -0
  99. package/src/provisionPoolKit.d.ts +770 -0
  100. package/src/provisionPoolKit.d.ts.map +1 -0
  101. package/src/provisionPoolKit.js +463 -0
  102. package/src/psm/psm.d.ts +122 -0
  103. package/src/psm/psm.d.ts.map +1 -0
  104. package/src/psm/psm.js +73 -69
  105. package/src/psm/types-ambient.d.ts +2 -0
  106. package/src/psm/types-ambient.d.ts.map +1 -0
  107. package/src/psm/types-ambient.js +3 -0
  108. package/src/reserve/assetReserve.d.ts +47 -0
  109. package/src/reserve/assetReserve.d.ts.map +1 -0
  110. package/src/reserve/assetReserve.js +28 -19
  111. package/src/reserve/assetReserveKit.d.ts +74 -0
  112. package/src/reserve/assetReserveKit.d.ts.map +1 -0
  113. package/src/reserve/assetReserveKit.js +18 -24
  114. package/src/reserve/params.d.ts +10 -0
  115. package/src/reserve/params.d.ts.map +1 -0
  116. package/src/tokens.d.ts +3 -0
  117. package/src/tokens.d.ts.map +1 -0
  118. package/src/tokens.js +5 -0
  119. package/src/vaultFactory/burn.d.ts +2 -0
  120. package/src/vaultFactory/burn.d.ts.map +1 -0
  121. package/src/vaultFactory/burn.js +1 -1
  122. package/src/vaultFactory/liquidation.d.ts +163 -0
  123. package/src/vaultFactory/liquidation.d.ts.map +1 -0
  124. package/src/vaultFactory/liquidation.js +36 -22
  125. package/src/vaultFactory/math.d.ts +11 -0
  126. package/src/vaultFactory/math.d.ts.map +1 -0
  127. package/src/vaultFactory/math.js +10 -9
  128. package/src/vaultFactory/orderedVaultStore.d.ts +360 -0
  129. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
  130. package/src/vaultFactory/orderedVaultStore.js +8 -11
  131. package/src/vaultFactory/params.d.ts +145 -0
  132. package/src/vaultFactory/params.d.ts.map +1 -0
  133. package/src/vaultFactory/params.js +52 -24
  134. package/src/vaultFactory/prioritizedVaults.d.ts +992 -0
  135. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
  136. package/src/vaultFactory/prioritizedVaults.js +4 -4
  137. package/src/vaultFactory/proceeds.d.ts +35 -0
  138. package/src/vaultFactory/proceeds.d.ts.map +1 -0
  139. package/src/vaultFactory/proceeds.js +26 -18
  140. package/src/vaultFactory/storeUtils.d.ts +25 -0
  141. package/src/vaultFactory/storeUtils.d.ts.map +1 -0
  142. package/src/vaultFactory/storeUtils.js +10 -12
  143. package/src/vaultFactory/types-ambient.d.ts +234 -0
  144. package/src/vaultFactory/types-ambient.d.ts.map +1 -0
  145. package/src/vaultFactory/{types.js → types-ambient.js} +42 -42
  146. package/src/vaultFactory/vault.d.ts +402 -0
  147. package/src/vaultFactory/vault.d.ts.map +1 -0
  148. package/src/vaultFactory/vault.js +99 -93
  149. package/src/vaultFactory/vaultDirector.d.ts +388 -0
  150. package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
  151. package/src/vaultFactory/vaultDirector.js +61 -50
  152. package/src/vaultFactory/vaultFactory.d.ts +277 -0
  153. package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
  154. package/src/vaultFactory/vaultFactory.js +49 -32
  155. package/src/vaultFactory/vaultHolder.d.ts +270 -0
  156. package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
  157. package/src/vaultFactory/vaultHolder.js +10 -14
  158. package/src/vaultFactory/vaultKit.d.ts +102 -0
  159. package/src/vaultFactory/vaultKit.d.ts.map +1 -0
  160. package/src/vaultFactory/vaultKit.js +5 -4
  161. package/src/vaultFactory/vaultManager.d.ts +819 -0
  162. package/src/vaultFactory/vaultManager.d.ts.map +1 -0
  163. package/src/vaultFactory/vaultManager.js +248 -151
  164. package/CHANGELOG.md +0 -1066
  165. package/exported.js +0 -2
  166. package/scripts/add-collateral-core.js +0 -113
  167. package/scripts/deploy-contracts.js +0 -100
  168. package/scripts/init-core.js +0 -200
  169. package/scripts/invite-committee-core.js +0 -42
  170. package/scripts/manual-price-feed.js +0 -117
  171. package/scripts/price-feed-core.js +0 -104
  172. package/scripts/start-local-chain.sh +0 -84
  173. package/src/psm/types.js +0 -3
  174. package/src/typeGuards.js +0 -13
  175. package/src/vaultFactory/type-imports.js +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"econ-behaviors.d.ts","sourceRoot":"","sources":["econ-behaviors.js"],"names":[],"mappings":"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"}
@@ -1,20 +1,17 @@
1
1
  // @jessie-check
2
2
 
3
- import '../../exported.js';
4
-
5
3
  import { AmountMath } from '@agoric/ertp';
6
- import '@agoric/governance/exported.js';
7
4
  import { deeplyFulfilledObject, makeTracer } from '@agoric/internal';
8
5
  import { makeStorageNodeChild } from '@agoric/internal/src/lib-chainStorage.js';
9
- import '@agoric/vats/exported.js';
10
- import '@agoric/vats/src/core/types.js';
11
- import { Stable } from '@agoric/vats/src/tokens.js';
12
6
  import { E } from '@endo/far';
13
7
  import { makeScalarBigMapStore } from '@agoric/vat-data';
8
+ import { Stable } from '@agoric/internal/src/tokens.js';
14
9
  import { makeGovernedTerms as makeGovernedATerms } from '../auction/params.js';
15
10
  import { makeReserveTerms } from '../reserve/params.js';
16
11
  import { makeGovernedTerms as makeGovernedVFTerms } from '../vaultFactory/params.js';
17
12
 
13
+ /** @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js' */
14
+
18
15
  const trace = makeTracer('RunEconBehaviors', true);
19
16
 
20
17
  export const SECONDS_PER_MINUTE = 60n;
@@ -22,54 +19,72 @@ export const SECONDS_PER_HOUR = 60n * 60n;
22
19
  export const SECONDS_PER_DAY = 24n * SECONDS_PER_HOUR;
23
20
  export const SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY;
24
21
 
25
- /**
26
- * @typedef {import('../vaultFactory/vaultFactory.js').VaultFactoryContract['publicFacet']} VaultFactoryPublicFacet
27
- * @typedef {import('../auction/auctioneer.js').AuctioneerPublicFacet} AuctioneerPublicFacet
28
- * @typedef {import('../auction/auctioneer.js').AuctioneerCreatorFacet} AuctioneerCreatorFacet
29
- */
22
+ /** @import {start as VFStart} from '../vaultFactory/vaultFactory.js' */
23
+ /** @typedef {Awaited<ReturnType<VFStart>>['publicFacet']} VaultFactoryPublicFacet */
30
24
 
31
25
  /**
32
26
  * @typedef {object} PSMKit
33
27
  * @property {string} label
34
28
  * @property {Instance} psm
35
29
  * @property {Instance} psmGovernor
36
- * @property {Awaited<ReturnType<Awaited<ReturnType<import('../psm/psm.js')['prepare']>>['creatorFacet']['getLimitedCreatorFacet']>>} psmCreatorFacet
37
- * @property {GovernorCreatorFacet<import('../../src/psm/psm.js')['prepare']>} psmGovernorCreatorFacet
30
+ * @property {Awaited<
31
+ * ReturnType<
32
+ * Awaited<
33
+ * ReturnType<import('../psm/psm.js')['start']>
34
+ * >['creatorFacet']['getLimitedCreatorFacet']
35
+ * >
36
+ * >} psmCreatorFacet
37
+ * @property {GovernorCreatorFacet<import('../../src/psm/psm.js')['start']>} psmGovernorCreatorFacet
38
38
  * @property {AdminFacet} psmAdminFacet
39
39
  */
40
40
 
41
- /**
42
- * @typedef {GovernanceFacetKit<import('../auction/auctioneer.js').start>} AuctioneerKit
43
- */
41
+ /** @typedef {GovernanceFacetKit<import('../auction/auctioneer.js').start>} AuctioneerKit */
44
42
 
45
43
  /**
46
- * @typedef { WellKnownSpaces & ChainBootstrapSpace & EconomyBootstrapSpace
47
- * } EconomyBootstrapPowers
44
+ * @typedef {WellKnownSpaces & ChainBootstrapSpace & EconomyBootstrapSpace} EconomyBootstrapPowers
45
+ *
48
46
  * @typedef {PromiseSpaceOf<{
49
- * economicCommitteeKit: CommitteeStartResult,
50
- * economicCommitteeCreatorFacet: import('@agoric/governance/src/committee.js').CommitteeElectorateCreatorFacet,
51
- * feeDistributorKit: StartedInstanceKit<typeof import('../feeDistributor.js').start>,
52
- * periodicFeeCollectors: MapStore<number, import('../feeDistributor.js').PeriodicFeeCollector>,
53
- * psmKit: MapStore<Brand, PSMKit>,
54
- * anchorBalancePayments: MapStore<Brand, Payment<'nat'>>,
55
- * econCharterKit: EconCharterStartResult,
56
- * reserveKit: GovernanceFacetKit<import('../reserve/assetReserve.js')['prepare']>,
57
- * vaultFactoryKit: GovernanceFacetKit<import('../vaultFactory/vaultFactory.js')['prepare']>,
58
- * auctioneerKit: AuctioneerKit,
59
- * minInitialDebt: NatValue,
47
+ * economicCommitteeKit: CommitteeStartResult;
48
+ * economicCommitteeCreatorFacet: import('@agoric/governance/src/committee.js').CommitteeElectorateCreatorFacet;
49
+ * feeDistributorKit: StartedInstanceKit<
50
+ * typeof import('../feeDistributor.js').start
51
+ * >;
52
+ * periodicFeeCollectors: MapStore<
53
+ * number,
54
+ * import('../feeDistributor.js').PeriodicFeeCollector
55
+ * >;
56
+ * psmKit: MapStore<Brand, PSMKit>;
57
+ * anchorBalancePayments: MapStore<Brand, Payment<'nat'>>;
58
+ * econCharterKit: EconCharterStartResult;
59
+ * reserveKit: GovernanceFacetKit<
60
+ * import('../reserve/assetReserve.js')['start']
61
+ * >;
62
+ * vaultFactoryKit: GovernanceFacetKit<VFStart>;
63
+ * auctioneerKit: AuctioneerKit;
64
+ * newAuctioneerKit: AuctioneerKit | undefined;
65
+ * minInitialDebt: NatValue;
60
66
  * }>} EconomyBootstrapSpace
61
67
  */
62
68
 
63
- /** @typedef {import('@agoric/zoe/src/zoeService/utils.js').StartedInstanceKit<import('../econCommitteeCharter')['prepare']>} EconCharterStartResult */
64
- /** @typedef {import('@agoric/zoe/src/zoeService/utils.js').StartedInstanceKit<import('@agoric/governance/src/committee.js')['prepare']>} CommitteeStartResult */
69
+ /**
70
+ * @typedef {StartedInstanceKit<
71
+ * import('../econCommitteeCharter.js')['start']
72
+ * >} EconCharterStartResult
73
+ */
74
+ /**
75
+ * @typedef {StartedInstanceKit<
76
+ * import('@agoric/governance/src/committee.js')['start']
77
+ * >} CommitteeStartResult
78
+ */
65
79
 
66
80
  /**
67
81
  * @file A collection of productions, each of which declares inputs and outputs.
68
- * Each function is passed a set of powers for reading from and writing to the vat config.
82
+ * Each function is passed a set of powers for reading from and writing to the
83
+ * vat config.
69
84
  *
70
- * Each of the things they produce they're responsible for resolving or setting.
85
+ * Each of the things they produce they're responsible for resolving or setting.
71
86
  *
72
- * In production called by @agoric/vats to bootstrap.
87
+ * In production called by @agoric/vats to bootstrap.
73
88
  */
74
89
 
75
90
  /** @param {EconomyBootstrapPowers} powers */
@@ -148,6 +163,7 @@ export const setupReserve = async ({
148
163
  ]);
149
164
 
150
165
  reserveKit.resolve(
166
+ // @ts-expect-error XXX
151
167
  harden({
152
168
  label: 'AssetReserve',
153
169
  instance,
@@ -214,14 +230,14 @@ export const setupVaultFactoryArguments = async (
214
230
  initialShortfallInvitation,
215
231
  shortfallInvitationAmount,
216
232
  feeMintAccess,
217
- auctioneerPublicFacet,
233
+ auctioneerInstance,
218
234
  ] = await Promise.all([
219
235
  poserInvitationP,
220
236
  E(E(zoe).getInvitationIssuer()).getAmountOf(poserInvitationP),
221
237
  shortfallInvitationP,
222
238
  E(E(zoe).getInvitationIssuer()).getAmountOf(shortfallInvitationP),
223
239
  feeMintAccessP,
224
- E.get(auctioneerKit).publicFacet,
240
+ E.get(auctioneerKit).instance,
225
241
  ]);
226
242
 
227
243
  const reservePublicFacet = await E.get(reserveKit).publicFacet;
@@ -230,7 +246,6 @@ export const setupVaultFactoryArguments = async (
230
246
 
231
247
  const vaultFactoryTerms = makeGovernedVFTerms({
232
248
  priceAuthority,
233
- auctioneerPublicFacet,
234
249
  reservePublicFacet,
235
250
  interestTiming,
236
251
  timer: chainTimerService,
@@ -242,6 +257,7 @@ export const setupVaultFactoryArguments = async (
242
257
  });
243
258
 
244
259
  const vaultFactoryPrivateArgs = {
260
+ auctioneerInstance,
245
261
  feeMintAccess,
246
262
  initialPoserInvitation,
247
263
  initialShortfallInvitation,
@@ -301,7 +317,11 @@ export const startVaultFactory = async (
301
317
  }),
302
318
  );
303
319
 
304
- /** @type {GovernorStartedInstallationKit<typeof vaultFactoryInstallation>} */
320
+ /**
321
+ * @type {GovernorStartedInstallationKit<
322
+ * typeof vaultFactoryInstallation
323
+ * >}
324
+ */
305
325
  const g = await E(consume.zoe).startInstance(
306
326
  contractGovernorInstallation,
307
327
  undefined,
@@ -328,6 +348,7 @@ export const startVaultFactory = async (
328
348
  );
329
349
 
330
350
  vaultFactoryKit.resolve(
351
+ // @ts-expect-error XXX
331
352
  harden({
332
353
  label: 'VaultFactory',
333
354
  creatorFacet: vaultFactoryCreator,
@@ -350,8 +371,8 @@ export const startVaultFactory = async (
350
371
  };
351
372
 
352
373
  /**
353
- * Grant access to the VaultFactory creatorFacet
354
- * to up to one user based on address.
374
+ * Grant access to the VaultFactory creatorFacet to up to one user based on
375
+ * address.
355
376
  *
356
377
  * @param {EconomyBootstrapPowers} powers
357
378
  * @param {object} [root0]
@@ -436,19 +457,18 @@ export const startRewardDistributor = async ({
436
457
  });
437
458
 
438
459
  /**
439
- * @type {Awaited<
440
- * ReturnType<typeof import('../feeDistributor.js').makeFeeDistributor>>
441
- * & { adminFacet: AdminFacet, instance: Instance }
442
- * }
460
+ * @type {StartedInstanceKit<
461
+ * typeof import('@agoric/inter-protocol/src/feeDistributor.js').start
462
+ * >}
443
463
  */
444
464
  const instanceKit = await E(zoe).startInstance(
445
465
  feeDistributor,
446
466
  { Fee: centralIssuer },
467
+ // @ts-expect-error XXX
447
468
  feeDistributorTerms,
448
469
  undefined,
449
470
  'feeDistributor',
450
471
  );
451
- /** @type {ERef<import('../feeDistributor.js').FeeDestination>} */
452
472
  await E(instanceKit.creatorFacet).setDestinations({
453
473
  ...(rewardDistributorDepositFacet && {
454
474
  RewardDistributor: E(
@@ -603,6 +623,7 @@ export const startAuctioneer = async (
603
623
  ]);
604
624
 
605
625
  auctioneerKit.resolve(
626
+ // @ts-expect-error XXX
606
627
  harden({
607
628
  label: 'auctioneer',
608
629
  creatorFacet: governedCreatorFacet,
@@ -0,0 +1,84 @@
1
+ export { oracleBrandFeedName as instanceNameFor };
2
+ export function ensureOracleBrands({ namedVat: { consume: { agoricNames }, }, oracleBrand: { produce: oracleBrandProduce }, }: ChainBootstrapSpace & NamedVatPowers, { options: { priceFeedOptions: { brandIn: rawBrandIn, brandOut: rawBrandOut, IN_BRAND_NAME, IN_BRAND_DECIMALS, OUT_BRAND_NAME, OUT_BRAND_DECIMALS, }, }, }: {
3
+ options: {
4
+ priceFeedOptions: PriceFeedOptions;
5
+ };
6
+ }): Promise<[Brand<"nat">, Brand<"nat">]>;
7
+ export function createPriceFeed({ consume: { agoricNamesAdmin, board, chainStorage, chainTimerService, client, econCharterKit, highPrioritySendersManager, namesByAddressAdmin, priceAuthority, priceAuthorityAdmin, startGovernedUpgradable, zoe, }, instance: { produce: produceInstance }, }: ChainBootstrapSpace, { options: { priceFeedOptions: { AGORIC_INSTANCE_NAME, oracleAddresses, contractTerms, IN_BRAND_NAME, OUT_BRAND_NAME, priceAggregatorRef, }, }, }: {
8
+ options: {
9
+ priceFeedOptions: {
10
+ AGORIC_INSTANCE_NAME: string;
11
+ oracleAddresses: string[];
12
+ contractTerms: import("@agoric/inter-protocol/src/price/fluxAggregatorKit.js").ChainlinkConfig;
13
+ IN_BRAND_NAME: string;
14
+ OUT_BRAND_NAME: string;
15
+ priceAggregatorRef: Installation;
16
+ };
17
+ };
18
+ }): Promise<void>;
19
+ export function getManifestForPriceFeed({ restoreRef }: {
20
+ restoreRef?: ((ref: unknown) => Promise<unknown>) | undefined;
21
+ }, priceFeedOptions: PriceFeedOptions): Promise<{
22
+ manifest: {
23
+ [x: string]: {
24
+ consume: {
25
+ agoricNamesAdmin: string;
26
+ board: string;
27
+ chainStorage: string;
28
+ chainTimerService: string;
29
+ client: string;
30
+ econCharterKit: string;
31
+ highPrioritySendersManager: string;
32
+ namesByAddressAdmin: string;
33
+ priceAuthority: string;
34
+ priceAuthorityAdmin: string;
35
+ startGovernedUpgradable: string;
36
+ zoe: string;
37
+ };
38
+ instance: {
39
+ produce: string;
40
+ };
41
+ namedVat?: undefined;
42
+ oracleBrand?: undefined;
43
+ } | {
44
+ namedVat: {
45
+ consume: {
46
+ agoricNames: string;
47
+ };
48
+ };
49
+ oracleBrand: {
50
+ produce: string;
51
+ };
52
+ consume?: undefined;
53
+ instance?: undefined;
54
+ };
55
+ };
56
+ installations: {
57
+ priceAggregator: Promise<unknown>;
58
+ };
59
+ options: {
60
+ priceFeedOptions: {
61
+ brandIn: any;
62
+ brandOut: any;
63
+ IN_BRAND_NAME: string;
64
+ IN_BRAND_DECIMALS: string;
65
+ OUT_BRAND_NAME: string;
66
+ OUT_BRAND_DECIMALS: string;
67
+ };
68
+ };
69
+ }>;
70
+ export function startPriceFeeds({ consume, produce, installation: { consume: { priceAggregator }, }, }: import("./econ-behaviors.js").EconomyBootstrapPowers, { options: { demoOracleAddresses } }?: {
71
+ options?: {
72
+ demoOracleAddresses?: string[] | undefined;
73
+ } | undefined;
74
+ } | undefined): Promise<void>;
75
+ export type PriceFeedOptions = {
76
+ brandIn?: ERef<Brand<"nat"> | undefined>;
77
+ brandOut?: ERef<Brand<"nat"> | undefined>;
78
+ IN_BRAND_NAME: string;
79
+ IN_BRAND_DECIMALS: string;
80
+ OUT_BRAND_NAME: string;
81
+ OUT_BRAND_DECIMALS: string;
82
+ };
83
+ import { oracleBrandFeedName } from './utils.js';
84
+ //# sourceMappingURL=price-feed-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-feed-proposal.d.ts","sourceRoot":"","sources":["price-feed-proposal.js"],"names":[],"mappings":";AA6CO,+HAJI,mBAAmB,GAAG,cAAc,8JACpC;IAAE,OAAO,EAAE;QAAE,gBAAgB,EAAE,gBAAgB,CAAA;KAAE,CAAA;CAAE,GACjD,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAsCjD;AAiBM,iSAdI,mBAAmB,qJACnB;IACV,OAAW,EAAE;QACb,gBAAsB,EAAE;YACxB,oBAA4B,EAAE,MAAM,CAAC;YACrC,eAAuB,EAAE,MAAM,EAAE,CAAC;YAClC,aAAqB,EAAE,OAAO,uDAAuD,EAAE,eAAe,CAAC;YACvG,aAAqB,EAAE,MAAM,CAAC;YAC9B,cAAsB,EAAE,MAAM,CAAC;YAC/B,kBAA0B,EAAE,YAAY,CAAC;SAClC,CAAC;KACH,CAAC;CACH,iBAgKH;AAWM;IAH+C,UAAU,UAA/C,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;qBAClC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA1OP,MAAM;+BACF,MAAM;4BACT,MAAM;gCACF,MAAM;;;GAwR7B;AAQK,wGALI,OAAO,qBAAqB,EAAE,sBAAsB;;;;8BA8D9D;+BA/VY;IACZ,OAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7C,QAAY,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9C,aAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAsB,EAAE,MAAM,CAAC;CAC5B;oCAtBG,YAAY"}
@@ -1,13 +1,20 @@
1
1
  // @ts-nocheck -- lots of type errors. low prio b/c proposals are like scripts
2
- import { E } from '@endo/far';
2
+ import { makeTracer } from '@agoric/internal';
3
3
  import {
4
- makeStorageNodeChild,
5
4
  assertPathSegment,
5
+ makeStorageNodeChild,
6
6
  } from '@agoric/internal/src/lib-chainStorage.js';
7
- import { makeTracer } from '@agoric/internal';
7
+ import { E } from '@endo/far';
8
8
 
9
9
  import { unitAmount } from '@agoric/zoe/src/contractSupport/priceQuote.js';
10
- import { reserveThenDeposit, reserveThenGetNames } from './utils.js';
10
+ import {
11
+ oracleBrandFeedName,
12
+ reserveThenDeposit,
13
+ reserveThenGetNames,
14
+ } from './utils.js';
15
+
16
+ // backwards compatibility
17
+ export { oracleBrandFeedName as instanceNameFor };
11
18
 
12
19
  const trace = makeTracer('RunPriceFeed', true);
13
20
 
@@ -20,12 +27,12 @@ const sanitizePathSegment = name => {
20
27
 
21
28
  /**
22
29
  * @typedef {{
23
- * brandIn?: ERef<Brand<'nat'> | undefined>,
24
- * brandOut?: ERef<Brand<'nat'> | undefined>,
25
- * IN_BRAND_NAME: string,
26
- * IN_BRAND_DECIMALS: string,
27
- * OUT_BRAND_NAME: string,
28
- * OUT_BRAND_DECIMALS: string,
30
+ * brandIn?: ERef<Brand<'nat'> | undefined>;
31
+ * brandOut?: ERef<Brand<'nat'> | undefined>;
32
+ * IN_BRAND_NAME: string;
33
+ * IN_BRAND_DECIMALS: string;
34
+ * OUT_BRAND_NAME: string;
35
+ * OUT_BRAND_DECIMALS: string;
29
36
  * }} PriceFeedOptions
30
37
  */
31
38
 
@@ -33,7 +40,7 @@ const sanitizePathSegment = name => {
33
40
  * Create inert brands (no mint or issuer) referred to by price oracles.
34
41
  *
35
42
  * @param {ChainBootstrapSpace & NamedVatPowers} space
36
- * @param {{options: {priceFeedOptions: PriceFeedOptions}}} opt
43
+ * @param {{ options: { priceFeedOptions: PriceFeedOptions } }} opt
37
44
  * @returns {Promise<[Brand<'nat'>, Brand<'nat'>]>}
38
45
  */
39
46
  export const ensureOracleBrands = async (
@@ -56,13 +63,10 @@ export const ensureOracleBrands = async (
56
63
  },
57
64
  },
58
65
  ) => {
59
- trace('ensureOracleBrands');
60
-
61
66
  const updateFreshBrand = async (brand, name, decimals) => {
62
67
  let b = await brand;
63
68
  if (!b) {
64
69
  // not 1st await
65
- // eslint-disable-next-line @jessie.js/no-nested-await
66
70
  b = await E(agoricNames).provideInertBrand(
67
71
  name,
68
72
  harden({ decimalPlaces: parseInt(decimals, 10) }),
@@ -79,7 +83,18 @@ export const ensureOracleBrands = async (
79
83
 
80
84
  /**
81
85
  * @param {ChainBootstrapSpace} powers
82
- * @param {{options: {priceFeedOptions: {AGORIC_INSTANCE_NAME: string, oracleAddresses: string[], contractTerms: import('@agoric/inter-protocol/src/price/fluxAggregatorKit.js').ChainlinkConfig, IN_BRAND_NAME: string, OUT_BRAND_NAME: string}}}} config
86
+ * @param {{
87
+ * options: {
88
+ * priceFeedOptions: {
89
+ * AGORIC_INSTANCE_NAME: string;
90
+ * oracleAddresses: string[];
91
+ * contractTerms: import('@agoric/inter-protocol/src/price/fluxAggregatorKit.js').ChainlinkConfig;
92
+ * IN_BRAND_NAME: string;
93
+ * OUT_BRAND_NAME: string;
94
+ * priceAggregatorRef: Installation;
95
+ * };
96
+ * };
97
+ * }} config
83
98
  */
84
99
  export const createPriceFeed = async (
85
100
  {
@@ -95,7 +110,9 @@ export const createPriceFeed = async (
95
110
  priceAuthority,
96
111
  priceAuthorityAdmin,
97
112
  startGovernedUpgradable,
113
+ zoe,
98
114
  },
115
+ instance: { produce: produceInstance },
99
116
  },
100
117
  {
101
118
  options: {
@@ -105,30 +122,62 @@ export const createPriceFeed = async (
105
122
  contractTerms,
106
123
  IN_BRAND_NAME,
107
124
  OUT_BRAND_NAME,
125
+ priceAggregatorRef,
108
126
  },
109
127
  },
110
128
  },
111
129
  ) => {
112
- trace('createPriceFeed');
130
+ trace('createPriceFeed', AGORIC_INSTANCE_NAME);
113
131
  const STORAGE_PATH = 'priceFeed';
114
132
 
115
133
  void E(client).assignBundle([_addr => ({ priceAuthority })]);
116
134
 
117
- const timer = await chainTimerService;
135
+ let installationP;
136
+ await null;
137
+ if (priceAggregatorRef) {
138
+ const bundleID = await E.get(priceAggregatorRef).bundleID;
139
+ if (bundleID) {
140
+ installationP = E(zoe).installBundleID(bundleID);
141
+ await E.when(
142
+ installationP,
143
+ installation =>
144
+ E(E(agoricNamesAdmin).lookupAdmin('installation')).update(
145
+ 'priceAggregator',
146
+ installation,
147
+ ),
148
+ err =>
149
+ console.error(
150
+ `🚨 failed to update priceAggregator installation for ${AGORIC_INSTANCE_NAME}`,
151
+ err,
152
+ ),
153
+ );
154
+ }
155
+ }
156
+ if (!installationP) {
157
+ installationP = E.get(
158
+ reserveThenGetNames(E(agoricNamesAdmin).lookupAdmin('installation'), [
159
+ 'priceAggregator',
160
+ ]),
161
+ )[0];
162
+ console.error(
163
+ '🚨 failed to install new fluxAggregator bundle, reusing previous one.',
164
+ );
165
+ }
118
166
 
119
167
  /**
120
- * Values come from economy-template.json, which at this writing had IN:ATOM, OUT:USD
121
- *
122
- * @type {[[Brand<'nat'>, Brand<'nat'>], [Installation<import('@agoric/inter-protocol/src/price/fluxAggregatorContract.js').prepare>]]}
168
+ * @type {[
169
+ * [Brand<'nat'>, Brand<'nat'>],
170
+ * Installation<import('@agoric/inter-protocol/src/price/fluxAggregatorContract.js')['start]>,
171
+ * Timer,
172
+ * ]}
123
173
  */
124
- const [[brandIn, brandOut], [priceAggregator]] = await Promise.all([
174
+ const [[brandIn, brandOut], installation, timer] = await Promise.all([
125
175
  reserveThenGetNames(E(agoricNamesAdmin).lookupAdmin('oracleBrand'), [
126
176
  IN_BRAND_NAME,
127
177
  OUT_BRAND_NAME,
128
178
  ]),
129
- reserveThenGetNames(E(agoricNamesAdmin).lookupAdmin('installation'), [
130
- 'priceAggregator',
131
- ]),
179
+ installationP,
180
+ chainTimerService,
132
181
  ]);
133
182
 
134
183
  const unitAmountIn = await unitAmount(brandIn);
@@ -140,14 +189,11 @@ export const createPriceFeed = async (
140
189
  timer,
141
190
  unitAmountIn,
142
191
  });
143
- trace('got terms');
144
-
145
192
  const label = sanitizePathSegment(AGORIC_INSTANCE_NAME);
146
193
 
147
194
  const storageNode = await makeStorageNodeChild(chainStorage, STORAGE_PATH);
148
195
  const marshaller = await E(board).getReadonlyMarshaller();
149
196
 
150
- trace('awaiting startInstance');
151
197
  const faKit = await E(startGovernedUpgradable)({
152
198
  governedParams: {},
153
199
  privateArgs: {
@@ -158,30 +204,37 @@ export const createPriceFeed = async (
158
204
  },
159
205
  terms,
160
206
  label,
161
- installation: priceAggregator,
207
+ installation,
162
208
  });
163
209
 
164
- E(E(agoricNamesAdmin).lookupAdmin('instance'))
210
+ // Publish price feed in home.priceAuthority.
211
+ const forceReplace = true;
212
+ // Make sure this PA is registered before sharing the instance in agoricNames,
213
+ // which allows contracts that depend on the registry value to wait for it and
214
+ // prevent a race.
215
+ await E(priceAuthorityAdmin).registerPriceAuthority(
216
+ E(faKit.publicFacet).getPriceAuthority(),
217
+ brandIn,
218
+ brandOut,
219
+ forceReplace,
220
+ );
221
+
222
+ await E(E(agoricNamesAdmin).lookupAdmin('instance'))
165
223
  .update(AGORIC_INSTANCE_NAME, faKit.instance)
166
224
  .catch(err =>
167
225
  console.error(`🚨 failed to update ${AGORIC_INSTANCE_NAME}`, err),
168
226
  );
169
227
 
228
+ // being after the above awaits means that when this resolves, the consumer
229
+ // gets notified that the authority is in the registry and its instance is in
230
+ // agoricNames.
231
+ produceInstance[AGORIC_INSTANCE_NAME].resolve(faKit.instance);
232
+
170
233
  E(E.get(econCharterKit).creatorFacet).addInstance(
171
234
  faKit.instance,
172
235
  faKit.governorCreatorFacet,
173
236
  AGORIC_INSTANCE_NAME,
174
237
  );
175
- trace('registered', AGORIC_INSTANCE_NAME, faKit.instance);
176
-
177
- // Publish price feed in home.priceAuthority.
178
- const forceReplace = true;
179
- void E(priceAuthorityAdmin).registerPriceAuthority(
180
- E(faKit.publicFacet).getPriceAuthority(),
181
- brandIn,
182
- brandOut,
183
- forceReplace,
184
- );
185
238
 
186
239
  /**
187
240
  * Initialize a new oracle and send an invitation to administer it.
@@ -190,22 +243,23 @@ export const createPriceFeed = async (
190
243
  */
191
244
  const addOracle = async addr => {
192
245
  const invitation = await E(faKit.creatorFacet).makeOracleInvitation(addr);
193
- await reserveThenDeposit(
194
- `${AGORIC_INSTANCE_NAME} member ${addr}`,
195
- namesByAddressAdmin,
196
- addr,
197
- [invitation],
198
- );
246
+ const debugName = `${AGORIC_INSTANCE_NAME} member ${addr}`;
247
+ await reserveThenDeposit(debugName, namesByAddressAdmin, addr, [
248
+ invitation,
249
+ ]).catch(err => console.error(`failed deposit to ${debugName}`, err));
199
250
  };
200
251
 
201
252
  trace('distributing invitations', oracleAddresses);
202
- await Promise.all(oracleAddresses.map(addOracle));
253
+ // This doesn't resolve until oracle operators create their smart wallets.
254
+ // Don't block bootstrap on it.
255
+ void Promise.all(oracleAddresses.map(addOracle));
203
256
  trace('createPriceFeed complete');
204
257
  };
205
258
 
206
259
  const t = 'priceFeed';
207
260
  /**
208
- * Add a price feed to a running chain, returning the manifest, installations, and options.
261
+ * Add a price feed to a running chain, returning the manifest, installations,
262
+ * and options.
209
263
  *
210
264
  * @param {object} utils
211
265
  * @param {(ref: unknown) => Promise<unknown>} [utils.restoreRef]
@@ -223,14 +277,16 @@ export const getManifestForPriceFeed = async (
223
277
  chainStorage: t,
224
278
  chainTimerService: t,
225
279
  client: t,
226
- contractGovernor: t,
227
280
  econCharterKit: t,
228
- economicCommitteeCreatorFacet: t,
229
281
  highPrioritySendersManager: t,
230
282
  namesByAddressAdmin: t,
231
283
  priceAuthority: t,
232
284
  priceAuthorityAdmin: t,
233
285
  startGovernedUpgradable: t,
286
+ zoe: t,
287
+ },
288
+ instance: {
289
+ produce: t,
234
290
  },
235
291
  },
236
292
  [ensureOracleBrands.name]: {
@@ -243,6 +299,7 @@ export const getManifestForPriceFeed = async (
243
299
  },
244
300
  },
245
301
  installations: {
302
+ // ??? will every eval of price-feed-proposal install priceAggregator ?
246
303
  priceAggregator: restoreRef(priceFeedOptions.priceAggregatorRef),
247
304
  },
248
305
  options: {
@@ -258,7 +315,7 @@ export const getManifestForPriceFeed = async (
258
315
  });
259
316
 
260
317
  /**
261
- * @param {import('./econ-behaviors').EconomyBootstrapPowers} powers
318
+ * @param {import('./econ-behaviors.js').EconomyBootstrapPowers} powers
262
319
  * @param {object} [config]
263
320
  * @param {object} [config.options]
264
321
  * @param {string[]} [config.options.demoOracleAddresses]
@@ -303,7 +360,7 @@ export const startPriceFeeds = async (
303
360
  {
304
361
  options: {
305
362
  priceFeedOptions: {
306
- AGORIC_INSTANCE_NAME: `${inBrandName}-${outBrandName} price feed`,
363
+ AGORIC_INSTANCE_NAME: oracleBrandFeedName(inBrandName, outBrandName),
307
364
  contractTerms: {
308
365
  minSubmissionCount: 2,
309
366
  minSubmissionValue: 1,
@@ -0,0 +1,34 @@
1
+ export function startEconomicCommittee({ consume: { board, chainStorage, diagnostics, zoe }, produce: { economicCommitteeKit, economicCommitteeCreatorFacet }, installation: { consume: { committee }, }, instance: { produce: { economicCommittee }, }, }: import("./econ-behaviors.js").EconomyBootstrapPowers, { options: { econCommitteeOptions } }: {
2
+ options?: {
3
+ econCommitteeOptions?: EconCommitteeOptions | undefined;
4
+ } | undefined;
5
+ }): Promise<void>;
6
+ export const ECON_COMMITTEE_MANIFEST: {
7
+ [x: string]: {
8
+ consume: {
9
+ board: boolean;
10
+ chainStorage: boolean;
11
+ diagnostics: boolean;
12
+ zoe: boolean;
13
+ };
14
+ produce: {
15
+ economicCommitteeKit: boolean;
16
+ economicCommitteeCreatorFacet: string;
17
+ };
18
+ installation: {
19
+ consume: {
20
+ committee: string;
21
+ };
22
+ };
23
+ instance: {
24
+ produce: {
25
+ economicCommittee: string;
26
+ };
27
+ };
28
+ };
29
+ };
30
+ export type EconCommitteeOptions = {
31
+ committeeName?: string | undefined;
32
+ committeeSize?: number | undefined;
33
+ };
34
+ //# sourceMappingURL=startEconCommittee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startEconCommittee.d.ts","sourceRoot":"","sources":["startEconCommittee.js"],"names":[],"mappings":"AA4BO,4PALI,OAAO,qBAAqB,EAAE,sBAAsB;IAEpC,OAAO;;;kBA0DjC;AAGD;;;;;;;;;;;;;;;;;;;;;;;EAmBG"}