@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
@@ -2,6 +2,8 @@ import { WalletName } from '@agoric/internal';
2
2
  import { getCopyMapEntries, makeCopyMap } from '@agoric/store';
3
3
  import { E } from '@endo/far';
4
4
 
5
+ /** @import {CopyMap} from '@endo/patterns') */
6
+
5
7
  const { Fail } = assert;
6
8
 
7
9
  /**
@@ -10,7 +12,6 @@ const { Fail } = assert;
10
12
  */
11
13
  export const reserveThenGetNamePaths = async (nameAdmin, paths) => {
12
14
  /**
13
- *
14
15
  * @param {ERef<import('@agoric/vats').NameAdmin>} nextAdmin
15
16
  * @param {string[]} path
16
17
  */
@@ -54,7 +55,7 @@ export const reserveThenGetNames = async (nameAdmin, names) =>
54
55
  * @param {string} debugName
55
56
  * @param {ERef<import('@agoric/vats').NameAdmin>} namesByAddressAdmin
56
57
  * @param {string} addr
57
- * @param {Array<ERef<Payment>>} payments
58
+ * @param {ERef<Payment>[]} payments
58
59
  */
59
60
  export const reserveThenDeposit = async (
60
61
  debugName,
@@ -79,7 +80,15 @@ export const reserveThenDeposit = async (
79
80
  );
80
81
  };
81
82
 
82
- /** @type {<T>(store: ERef<Map<string, T> | import('@agoric/internal/src/scratch.js').ScratchPad>, key: string, make: () => T) => Promise<T>} */
83
+ /**
84
+ * @type {<T>(
85
+ * store: ERef<
86
+ * Map<string, T> | import('@agoric/internal/src/scratch.js').ScratchPad
87
+ * >,
88
+ * key: string,
89
+ * make: () => T,
90
+ * ) => Promise<T>}
91
+ */
83
92
  const provideWhen = async (store, key, make) => {
84
93
  const found = await E(store).get(key);
85
94
  if (found) {
@@ -91,21 +100,33 @@ const provideWhen = async (store, key, make) => {
91
100
  };
92
101
 
93
102
  /**
94
- * @param {{ scratch: ERef<import('@agoric/internal/src/scratch.js').ScratchPad> }} homeP
103
+ * @param {{
104
+ * scratch: ERef<import('@agoric/internal/src/scratch.js').ScratchPad>;
105
+ * }} homeP
95
106
  * @param {object} opts
96
- * @param {(specifier: string) => Promise<{default: Bundle}>} opts.loadBundle
107
+ * @param {(specifier: string) => Promise<{ default: Bundle }>} opts.loadBundle
97
108
  * @param {string} [opts.installCacheKey]
98
109
  */
99
110
  export const makeInstallCache = async (
100
111
  homeP,
101
112
  { installCacheKey = 'installCache', loadBundle },
102
113
  ) => {
103
- /** @type {CopyMap<string, {installation: Installation, boardId: string, path?: string}>} */
114
+ /**
115
+ * @type {CopyMap<
116
+ * string,
117
+ * { installation: Installation; boardId: string; path?: string }
118
+ * >}
119
+ */
104
120
  const initial = await provideWhen(E.get(homeP).scratch, installCacheKey, () =>
105
121
  makeCopyMap([]),
106
122
  );
107
123
  // ISSUE: getCopyMapEntries of CopyMap<K, V> loses K, V.
108
- /** @type {Map<string, {installation: Installation, boardId: string, path?: string}>} */
124
+ /**
125
+ * @type {Map<
126
+ * string,
127
+ * { installation: Installation; boardId: string; path?: string }
128
+ * >}
129
+ */
109
130
  const working = new Map(getCopyMapEntries(initial));
110
131
 
111
132
  const saveCache = async () => {
@@ -137,3 +158,9 @@ export const makeInstallCache = async (
137
158
 
138
159
  return { wrapInstall, saveCache };
139
160
  };
161
+
162
+ export const oracleBrandFeedName = (inBrandName, outBrandName) =>
163
+ `${inBrandName}-${outBrandName} price feed`;
164
+
165
+ export const scaledPriceFeedName = issuerName =>
166
+ `scaledPriceAuthority-${issuerName}`;
@@ -0,0 +1,167 @@
1
+ /** @import {Marshal} from '@endo/marshal'; */
2
+ /** @type {ContractMeta} */
3
+ export const meta: ContractMeta;
4
+ export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
5
+ poolBank: import("@endo/far").ERef<import("@agoric/vats/src/vat-bank.js").Bank>;
6
+ initialPoserInvitation: Invitation;
7
+ storageNode: StorageNode;
8
+ marshaller: Marshal<any>;
9
+ metricsOverride?: import("./provisionPoolKit.js").MetricsNotification;
10
+ }, baggage: import("@agoric/vat-data").Baggage): Promise<{
11
+ creatorFacet: import("@endo/exo").Guarded<{
12
+ getParamMgrRetriever: () => {
13
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
14
+ PerAccountInitialAmount: "amount";
15
+ } & {
16
+ Electorate: "invitation";
17
+ }>;
18
+ } & import("@endo/marshal").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
19
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
20
+ PerAccountInitialAmount: "amount";
21
+ } & {
22
+ Electorate: "invitation";
23
+ }>;
24
+ }>;
25
+ getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>;
26
+ getLimitedCreatorFacet: () => import("@endo/exo").Guarded<{
27
+ addRevivableAddresses(oldAddresses: string[]): void;
28
+ getWalletReviver(): import("@endo/exo").Guarded<{
29
+ reviveWallet(address: string): Promise<{
30
+ handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
31
+ getDepositFacet(): import("@endo/exo").Guarded<{
32
+ receive(payment: Payment): Promise<globalThis.Amount>;
33
+ }>;
34
+ getOffersFacet(): import("@endo/exo").Guarded<{
35
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
36
+ tryExitOffer(offerId: OfferId): Promise<void>;
37
+ }>;
38
+ getCurrentSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
39
+ getUpdatesSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
40
+ getPublicTopics(): {
41
+ current: {
42
+ description: string;
43
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
44
+ storagePath: Promise<string>;
45
+ };
46
+ updates: {
47
+ description: string;
48
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
49
+ storagePath: Promise<string>;
50
+ };
51
+ };
52
+ repairWalletForIncarnation2(key: object): void;
53
+ } & import("../../../node_modules/@endo/exo/src/get-interface.js").GetInterfaceGuard<{
54
+ handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
55
+ getDepositFacet(): import("@endo/exo").Guarded<{
56
+ receive(payment: Payment): Promise<globalThis.Amount>;
57
+ }>;
58
+ getOffersFacet(): import("@endo/exo").Guarded<{
59
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
60
+ tryExitOffer(offerId: OfferId): Promise<void>;
61
+ }>;
62
+ getCurrentSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
63
+ getUpdatesSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
64
+ getPublicTopics(): {
65
+ current: {
66
+ description: string;
67
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
68
+ storagePath: Promise<string>;
69
+ };
70
+ updates: {
71
+ description: string;
72
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
73
+ storagePath: Promise<string>;
74
+ };
75
+ };
76
+ repairWalletForIncarnation2(key: object): void;
77
+ }> & import("@endo/eventual-send").RemotableBrand<{}, {
78
+ handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
79
+ getDepositFacet(): import("@endo/exo").Guarded<{
80
+ receive(payment: Payment): Promise<globalThis.Amount>;
81
+ }>;
82
+ getOffersFacet(): import("@endo/exo").Guarded<{
83
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
84
+ tryExitOffer(offerId: OfferId): Promise<void>;
85
+ }>;
86
+ getCurrentSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
87
+ getUpdatesSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
88
+ getPublicTopics(): {
89
+ current: {
90
+ description: string;
91
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
92
+ storagePath: Promise<string>;
93
+ };
94
+ updates: {
95
+ description: string;
96
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
97
+ storagePath: Promise<string>;
98
+ };
99
+ };
100
+ repairWalletForIncarnation2(key: object): void;
101
+ } & import("../../../node_modules/@endo/exo/src/get-interface.js").GetInterfaceGuard<{
102
+ handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
103
+ getDepositFacet(): import("@endo/exo").Guarded<{
104
+ receive(payment: Payment): Promise<globalThis.Amount>;
105
+ }>;
106
+ getOffersFacet(): import("@endo/exo").Guarded<{
107
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
108
+ tryExitOffer(offerId: OfferId): Promise<void>;
109
+ }>;
110
+ getCurrentSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
111
+ getUpdatesSubscriber(): globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
112
+ getPublicTopics(): {
113
+ current: {
114
+ description: string;
115
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").CurrentWalletRecord>;
116
+ storagePath: Promise<string>;
117
+ };
118
+ updates: {
119
+ description: string;
120
+ subscriber: globalThis.Subscriber<import("@agoric/smart-wallet/src/smartWallet.js").UpdateRecord>;
121
+ storagePath: Promise<string>;
122
+ };
123
+ };
124
+ repairWalletForIncarnation2(key: object): void;
125
+ }>> & import("@endo/marshal").RemotableObject>;
126
+ ackWallet(address: string): boolean;
127
+ }>;
128
+ setReferences(erefs: ProvisionPoolKitReferences): Promise<void>;
129
+ makeHandler(): {
130
+ fromBridge: (obj: any) => Promise<void>;
131
+ } & import("@endo/marshal").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
132
+ fromBridge: (obj: any) => Promise<void>;
133
+ }>;
134
+ initPSM(brand: Brand, instance: PsmInstance): void;
135
+ }>;
136
+ getGovernedApis: () => globalThis.GovernedApis;
137
+ getGovernedApiNames: () => string[];
138
+ setOfferFilter: (strings: any) => Promise<void>;
139
+ }>;
140
+ publicFacet: import("@endo/exo").Guarded<{
141
+ getAmount: (name: string) => globalThis.Amount;
142
+ getBrand: (name: string) => globalThis.Brand;
143
+ getInstance: (name: string) => Instance;
144
+ getInstallation: (name: string) => Installation<any>;
145
+ getInvitationAmount: (name: string) => import("@agoric/ertp/src/types.js").SetAmount<InvitationDetails>;
146
+ getNat: (name: string) => bigint;
147
+ getRatio: (name: string) => Ratio;
148
+ getString: (name: string) => string;
149
+ getTimestamp: (name: string) => import("@agoric/time").TimestampRecord;
150
+ getRelativeTime: (name: string) => import("@agoric/time").RelativeTimeRecord;
151
+ getUnknown: (name: string) => any;
152
+ getSubscription: () => globalThis.StoredSubscription<globalThis.GovernanceSubscriptionState>;
153
+ getGovernedParams: () => globalThis.ERef<globalThis.ParamStateRecord>;
154
+ getMetrics(): globalThis.Subscriber<import("./provisionPoolKit.js").MetricsNotification>;
155
+ getPublicTopics(): {
156
+ metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./provisionPoolKit.js").MetricsNotification>;
157
+ };
158
+ }>;
159
+ }>;
160
+ /**
161
+ * TODO: ERef<GovernedCreatorFacet<ProvisionCreator>>
162
+ */
163
+ export type ProvisionTerms = StandardTerms & GovernanceTerms<{
164
+ PerAccountInitialAmount: "amount";
165
+ }>;
166
+ import type { Marshal } from '@endo/marshal';
167
+ //# sourceMappingURL=provisionPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAgBA,8CAA8C;AAE9C,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAqBK,2BAZI,GAAG,CAAC,cAAc,CAAC;cAEf,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C;4BACuB,UAAU;iBACrB,WAAW;;sBAEN,OAAO,uBAAuB,EAAE,mBAAmB;YAE/D,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;gDAsEi4E,QAAQ;;;sDAA40+B,OAAO,eAAe,EAAE,OAAO,CAAC,SAAQ,IAAK,CAAC;;yCAAzjS,OAAO;;;gDAAm5I,SAAS;8CAA+tH,OAAO;;;;;;;;;;;;;;;;;;8EAA05B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;iCAAlj+B,0BAA0B;;;;;;2BAAgkC,KAAK,YAA2B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;GAHn3H;;;;6BAlFY,aAAa,GACzB,eAAmB,CAAC;IACpB,uBAA6B,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
@@ -0,0 +1,122 @@
1
+ // @jessie-check
2
+ // @ts-check
3
+
4
+ import {
5
+ handleParamGovernance,
6
+ ParamTypes,
7
+ publicMixinAPI,
8
+ } from '@agoric/governance';
9
+ import { InvitationShape } from '@agoric/governance/src/typeGuards.js';
10
+ import { M } from '@agoric/store';
11
+ import { prepareExo } from '@agoric/vat-data';
12
+ import { provideSingleton } from '@agoric/zoe/src/contractSupport/durability.js';
13
+ import { prepareRecorderKitMakers } from '@agoric/zoe/src/contractSupport/recorder.js';
14
+ import { TopicsRecordShape } from '@agoric/zoe/src/contractSupport/topics.js';
15
+ import { prepareProvisionPoolKit } from './provisionPoolKit.js';
16
+
17
+ /** @import {Marshal} from '@endo/marshal'; */
18
+
19
+ /** @type {ContractMeta} */
20
+ export const meta = {
21
+ privateArgsShape: M.splitRecord(
22
+ {
23
+ poolBank: M.eref(M.remotable('bank')),
24
+ storageNode: M.eref(M.remotable('storageNode')),
25
+ marshaller: M.eref(M.remotable('marshaller')),
26
+ },
27
+ {
28
+ // only necessary on first invocation, not subsequent
29
+ initialPoserInvitation: InvitationShape,
30
+ metricsOverride: M.recordOf(M.string()),
31
+ },
32
+ ),
33
+ upgradability: 'canUpgrade',
34
+ };
35
+ harden(meta);
36
+
37
+ /**
38
+ * @typedef {StandardTerms &
39
+ * GovernanceTerms<{
40
+ * PerAccountInitialAmount: 'amount';
41
+ * }>} ProvisionTerms
42
+ * TODO: ERef<GovernedCreatorFacet<ProvisionCreator>>
43
+ * @param {ZCF<ProvisionTerms>} zcf
44
+ * @param {{
45
+ * poolBank: import('@endo/far').ERef<
46
+ * import('@agoric/vats/src/vat-bank.js').Bank
47
+ * >;
48
+ * initialPoserInvitation: Invitation;
49
+ * storageNode: StorageNode;
50
+ * marshaller: Marshal<any>;
51
+ * metricsOverride?: import('./provisionPoolKit.js').MetricsNotification;
52
+ * }} privateArgs
53
+ * @param {import('@agoric/vat-data').Baggage} baggage
54
+ */
55
+ export const start = async (zcf, privateArgs, baggage) => {
56
+ const { poolBank, metricsOverride } = privateArgs;
57
+
58
+ const { makeRecorderKit } = prepareRecorderKitMakers(
59
+ baggage,
60
+ privateArgs.marshaller,
61
+ );
62
+
63
+ // Governance
64
+ const { publicMixin, makeDurableGovernorFacet, params } =
65
+ await handleParamGovernance(
66
+ zcf,
67
+ privateArgs.initialPoserInvitation,
68
+ {
69
+ PerAccountInitialAmount: ParamTypes.AMOUNT,
70
+ },
71
+ privateArgs.storageNode,
72
+ privateArgs.marshaller,
73
+ );
74
+
75
+ const makeProvisionPoolKit = prepareProvisionPoolKit(baggage, {
76
+ makeRecorderKit,
77
+ params,
78
+ poolBank,
79
+ zcf,
80
+ });
81
+
82
+ const provisionPoolKit = await provideSingleton(
83
+ baggage,
84
+ 'provisionPoolKit',
85
+ () =>
86
+ makeProvisionPoolKit({
87
+ // XXX governance can change the brand of the amount but should only be able to change the value
88
+ // NB: changing the brand will break this pool
89
+ // @ts-expect-error XXX Brand AssetKind
90
+ poolBrand: params.getPerAccountInitialAmount().brand,
91
+ storageNode: privateArgs.storageNode,
92
+ }),
93
+ kit => kit.helper.start({ metrics: metricsOverride }),
94
+ );
95
+
96
+ const publicFacet = prepareExo(
97
+ baggage,
98
+ 'Provisioning Pool public',
99
+ M.interface('ProvisionPool', {
100
+ getMetrics: M.call().returns(M.remotable('MetricsSubscriber')),
101
+ getPublicTopics: M.call().returns(TopicsRecordShape),
102
+ ...publicMixinAPI,
103
+ }),
104
+ {
105
+ getMetrics() {
106
+ return provisionPoolKit.public.getPublicTopics().metrics.subscriber;
107
+ },
108
+ getPublicTopics() {
109
+ return provisionPoolKit.public.getPublicTopics();
110
+ },
111
+ ...publicMixin,
112
+ },
113
+ );
114
+
115
+ return harden({
116
+ creatorFacet: makeDurableGovernorFacet(baggage, provisionPoolKit.machine)
117
+ .governorFacet,
118
+ publicFacet,
119
+ });
120
+ };
121
+
122
+ harden(start);