@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.
- package/package.json +41 -34
- package/scripts/build-bundles.js +5 -21
- package/src/auction/auctionBook.d.ts +84 -0
- package/src/auction/auctionBook.d.ts.map +1 -0
- package/src/auction/auctionBook.js +135 -103
- package/src/auction/auctioneer.d.ts +83 -0
- package/src/auction/auctioneer.d.ts.map +1 -0
- package/src/auction/auctioneer.js +63 -49
- package/src/auction/offerBook.d.ts +45 -0
- package/src/auction/offerBook.d.ts.map +1 -0
- package/src/auction/offerBook.js +13 -12
- package/src/auction/params.d.ts +149 -0
- package/src/auction/params.d.ts.map +1 -0
- package/src/auction/params.js +10 -9
- package/src/auction/scheduleMath.d.ts +5 -0
- package/src/auction/scheduleMath.d.ts.map +1 -0
- package/src/auction/scheduleMath.js +17 -15
- package/src/auction/scheduler.d.ts +49 -0
- package/src/auction/scheduler.d.ts.map +1 -0
- package/src/auction/scheduler.js +51 -43
- package/src/auction/sortedOffers.d.ts +8 -0
- package/src/auction/sortedOffers.d.ts.map +1 -0
- package/src/auction/sortedOffers.js +9 -7
- package/src/auction/util.d.ts +32 -0
- package/src/auction/util.d.ts.map +1 -0
- package/src/auction/util.js +6 -4
- package/src/clientSupport.d.ts +167 -0
- package/src/clientSupport.d.ts.map +1 -0
- package/src/clientSupport.js +97 -40
- package/src/collectFees.d.ts +2 -0
- package/src/collectFees.d.ts.map +1 -0
- package/src/contractSupport.d.ts +28 -0
- package/src/contractSupport.d.ts.map +1 -0
- package/src/contractSupport.js +14 -12
- package/src/econCommitteeCharter.d.ts +39 -0
- package/src/econCommitteeCharter.d.ts.map +1 -0
- package/src/econCommitteeCharter.js +21 -20
- package/src/feeDistributor.d.ts +224 -0
- package/src/feeDistributor.d.ts.map +1 -0
- package/src/feeDistributor.js +37 -33
- package/src/index.d.ts +2 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +1 -0
- package/src/interest-math.d.ts +3 -0
- package/src/interest-math.d.ts.map +1 -0
- package/src/interest.d.ts +28 -0
- package/src/interest.d.ts.map +1 -0
- package/src/interest.js +21 -16
- package/src/price/README.md +13 -0
- package/src/price/fluxAggregatorContract.d.ts +70 -0
- package/src/price/fluxAggregatorContract.d.ts.map +1 -0
- package/src/price/fluxAggregatorContract.js +62 -55
- package/src/price/fluxAggregatorKit.d.ts +103 -0
- package/src/price/fluxAggregatorKit.d.ts.map +1 -0
- package/src/price/fluxAggregatorKit.js +50 -37
- package/src/price/priceOracleKit.d.ts +38 -0
- package/src/price/priceOracleKit.d.ts.map +1 -0
- package/src/price/priceOracleKit.js +11 -13
- package/src/price/roundsManager.d.ts +238 -0
- package/src/price/roundsManager.d.ts.map +1 -0
- package/src/price/roundsManager.js +77 -82
- package/src/proposals/README.md +2 -3
- package/src/proposals/add-auction.d.ts +69 -0
- package/src/proposals/add-auction.d.ts.map +1 -0
- package/src/proposals/add-auction.js +181 -0
- package/src/proposals/addAssetToVault.d.ts +160 -0
- package/src/proposals/addAssetToVault.d.ts.map +1 -0
- package/src/proposals/addAssetToVault.js +172 -38
- package/src/proposals/committee-proposal.d.ts +113 -0
- package/src/proposals/committee-proposal.d.ts.map +1 -0
- package/src/proposals/committee-proposal.js +25 -31
- package/src/proposals/core-proposal.d.ts +149 -0
- package/src/proposals/core-proposal.d.ts.map +1 -0
- package/src/proposals/core-proposal.js +9 -11
- package/src/proposals/econ-behaviors.d.ts +1169 -0
- package/src/proposals/econ-behaviors.d.ts.map +1 -0
- package/src/proposals/econ-behaviors.js +66 -45
- package/src/proposals/price-feed-proposal.d.ts +84 -0
- package/src/proposals/price-feed-proposal.d.ts.map +1 -0
- package/src/proposals/price-feed-proposal.js +108 -51
- package/src/proposals/startEconCommittee.d.ts +34 -0
- package/src/proposals/startEconCommittee.d.ts.map +1 -0
- package/src/proposals/startEconCommittee.js +2 -2
- package/src/proposals/startPSM.d.ts +59 -0
- package/src/proposals/startPSM.d.ts.map +1 -0
- package/src/proposals/startPSM.js +38 -27
- package/src/proposals/upgrade-scaledPriceAuthorities.d.ts +24 -0
- package/src/proposals/upgrade-scaledPriceAuthorities.d.ts.map +1 -0
- package/src/proposals/upgrade-scaledPriceAuthorities.js +78 -0
- package/src/proposals/upgrade-vaults.d.ts +35 -0
- package/src/proposals/upgrade-vaults.d.ts.map +1 -0
- package/src/proposals/upgrade-vaults.js +202 -0
- package/src/proposals/utils.d.ts +17 -0
- package/src/proposals/utils.d.ts.map +1 -0
- package/src/proposals/utils.js +34 -7
- package/src/provisionPool.d.ts +167 -0
- package/src/provisionPool.d.ts.map +1 -0
- package/src/provisionPool.js +122 -0
- package/src/provisionPoolKit.d.ts +770 -0
- package/src/provisionPoolKit.d.ts.map +1 -0
- package/src/provisionPoolKit.js +463 -0
- package/src/psm/psm.d.ts +122 -0
- package/src/psm/psm.d.ts.map +1 -0
- package/src/psm/psm.js +73 -69
- package/src/psm/types-ambient.d.ts +2 -0
- package/src/psm/types-ambient.d.ts.map +1 -0
- package/src/psm/types-ambient.js +3 -0
- package/src/reserve/assetReserve.d.ts +47 -0
- package/src/reserve/assetReserve.d.ts.map +1 -0
- package/src/reserve/assetReserve.js +28 -19
- package/src/reserve/assetReserveKit.d.ts +74 -0
- package/src/reserve/assetReserveKit.d.ts.map +1 -0
- package/src/reserve/assetReserveKit.js +18 -24
- package/src/reserve/params.d.ts +10 -0
- package/src/reserve/params.d.ts.map +1 -0
- package/src/tokens.d.ts +3 -0
- package/src/tokens.d.ts.map +1 -0
- package/src/tokens.js +5 -0
- package/src/vaultFactory/burn.d.ts +2 -0
- package/src/vaultFactory/burn.d.ts.map +1 -0
- package/src/vaultFactory/burn.js +1 -1
- package/src/vaultFactory/liquidation.d.ts +163 -0
- package/src/vaultFactory/liquidation.d.ts.map +1 -0
- package/src/vaultFactory/liquidation.js +36 -22
- package/src/vaultFactory/math.d.ts +11 -0
- package/src/vaultFactory/math.d.ts.map +1 -0
- package/src/vaultFactory/math.js +10 -9
- package/src/vaultFactory/orderedVaultStore.d.ts +360 -0
- package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
- package/src/vaultFactory/orderedVaultStore.js +8 -11
- package/src/vaultFactory/params.d.ts +145 -0
- package/src/vaultFactory/params.d.ts.map +1 -0
- package/src/vaultFactory/params.js +52 -24
- package/src/vaultFactory/prioritizedVaults.d.ts +992 -0
- package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
- package/src/vaultFactory/prioritizedVaults.js +4 -4
- package/src/vaultFactory/proceeds.d.ts +35 -0
- package/src/vaultFactory/proceeds.d.ts.map +1 -0
- package/src/vaultFactory/proceeds.js +26 -18
- package/src/vaultFactory/storeUtils.d.ts +25 -0
- package/src/vaultFactory/storeUtils.d.ts.map +1 -0
- package/src/vaultFactory/storeUtils.js +10 -12
- package/src/vaultFactory/types-ambient.d.ts +234 -0
- package/src/vaultFactory/types-ambient.d.ts.map +1 -0
- package/src/vaultFactory/{types.js → types-ambient.js} +42 -42
- package/src/vaultFactory/vault.d.ts +402 -0
- package/src/vaultFactory/vault.d.ts.map +1 -0
- package/src/vaultFactory/vault.js +99 -93
- package/src/vaultFactory/vaultDirector.d.ts +388 -0
- package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
- package/src/vaultFactory/vaultDirector.js +61 -50
- package/src/vaultFactory/vaultFactory.d.ts +277 -0
- package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
- package/src/vaultFactory/vaultFactory.js +49 -32
- package/src/vaultFactory/vaultHolder.d.ts +270 -0
- package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
- package/src/vaultFactory/vaultHolder.js +10 -14
- package/src/vaultFactory/vaultKit.d.ts +102 -0
- package/src/vaultFactory/vaultKit.d.ts.map +1 -0
- package/src/vaultFactory/vaultKit.js +5 -4
- package/src/vaultFactory/vaultManager.d.ts +819 -0
- package/src/vaultFactory/vaultManager.d.ts.map +1 -0
- package/src/vaultFactory/vaultManager.js +248 -151
- package/CHANGELOG.md +0 -1066
- package/exported.js +0 -2
- package/scripts/add-collateral-core.js +0 -113
- package/scripts/deploy-contracts.js +0 -100
- package/scripts/init-core.js +0 -200
- package/scripts/invite-committee-core.js +0 -42
- package/scripts/manual-price-feed.js +0 -117
- package/scripts/price-feed-core.js +0 -104
- package/scripts/start-local-chain.sh +0 -84
- package/src/psm/types.js +0 -3
- package/src/typeGuards.js +0 -13
- 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
|
-
|
|
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<
|
|
37
|
-
*
|
|
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 {
|
|
47
|
-
*
|
|
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<
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
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
|
-
/**
|
|
64
|
-
|
|
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
|
-
*
|
|
82
|
+
* Each function is passed a set of powers for reading from and writing to the
|
|
83
|
+
* vat config.
|
|
69
84
|
*
|
|
70
|
-
*
|
|
85
|
+
* Each of the things they produce they're responsible for resolving or setting.
|
|
71
86
|
*
|
|
72
|
-
*
|
|
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
|
-
|
|
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).
|
|
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
|
-
/**
|
|
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
|
-
*
|
|
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 {
|
|
440
|
-
*
|
|
441
|
-
*
|
|
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 {
|
|
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 {
|
|
7
|
+
import { E } from '@endo/far';
|
|
8
8
|
|
|
9
9
|
import { unitAmount } from '@agoric/zoe/src/contractSupport/priceQuote.js';
|
|
10
|
-
import {
|
|
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
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
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 {{
|
|
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
|
-
|
|
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
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
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],
|
|
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
|
-
|
|
130
|
-
|
|
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
|
|
207
|
+
installation,
|
|
162
208
|
});
|
|
163
209
|
|
|
164
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
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,
|
|
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:
|
|
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"}
|