@agoric/inter-protocol 0.16.2-dev-857e650.0 → 0.16.2-dev-fb922d3.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/bundles/bundle-auctioneer-js-meta.json +181 -181
- package/bundles/bundle-auctioneer.js +1 -1
- package/bundles/bundle-econCommitteeCharter-js-meta.json +129 -129
- package/bundles/bundle-econCommitteeCharter.js +1 -1
- package/bundles/bundle-feeDistributor-js-meta.json +115 -115
- package/bundles/bundle-feeDistributor.js +1 -1
- package/bundles/bundle-fluxAggregatorKit-js-meta.json +169 -169
- package/bundles/bundle-fluxAggregatorKit.js +1 -1
- package/bundles/bundle-psm-js-meta.json +167 -167
- package/bundles/bundle-psm.js +1 -1
- package/bundles/bundle-reserve-js-meta.json +169 -169
- package/bundles/bundle-reserve.js +1 -1
- package/bundles/bundle-scaledPriceAuthority-js-meta.json +142 -142
- package/bundles/bundle-scaledPriceAuthority.js +1 -1
- package/bundles/bundle-vaultFactory-js-meta.json +200 -200
- package/bundles/bundle-vaultFactory.js +1 -1
- package/package.json +17 -17
- package/scripts/deploy-contracts.js +12 -2
- package/scripts/init-core.js +5 -6
- package/scripts/manual-price-feed.js +20 -15
- package/src/auction/auctionBook.d.ts +16 -13
- package/src/auction/auctionBook.d.ts.map +1 -1
- package/src/auction/auctionBook.js +68 -56
- package/src/auction/auctioneer.d.ts.map +1 -1
- package/src/auction/auctioneer.js +54 -42
- package/src/auction/offerBook.d.ts.map +1 -1
- package/src/auction/offerBook.js +12 -11
- package/src/auction/params.d.ts +1 -1
- package/src/auction/params.d.ts.map +1 -1
- package/src/auction/params.js +3 -5
- package/src/auction/scheduleMath.d.ts.map +1 -1
- package/src/auction/scheduleMath.js +13 -13
- package/src/auction/scheduler.d.ts +4 -4
- package/src/auction/scheduler.d.ts.map +1 -1
- package/src/auction/scheduler.js +20 -20
- package/src/auction/sortedOffers.d.ts.map +1 -1
- package/src/auction/sortedOffers.js +8 -7
- package/src/auction/util.d.ts +1 -1
- package/src/auction/util.js +4 -4
- package/src/clientSupport.d.ts +65 -27
- package/src/clientSupport.d.ts.map +1 -1
- package/src/clientSupport.js +92 -34
- package/src/contractSupport.js +5 -5
- package/src/econCommitteeCharter.d.ts +4 -6
- package/src/econCommitteeCharter.d.ts.map +1 -1
- package/src/econCommitteeCharter.js +7 -11
- package/src/feeDistributor.d.ts +8 -24
- package/src/feeDistributor.d.ts.map +1 -1
- package/src/feeDistributor.js +26 -28
- package/src/interest.d.ts +1 -0
- package/src/interest.d.ts.map +1 -1
- package/src/interest.js +22 -15
- package/src/price/fluxAggregatorContract.d.ts +1 -0
- package/src/price/fluxAggregatorContract.d.ts.map +1 -1
- package/src/price/fluxAggregatorContract.js +24 -19
- package/src/price/fluxAggregatorKit.d.ts +23 -18
- package/src/price/fluxAggregatorKit.d.ts.map +1 -1
- package/src/price/fluxAggregatorKit.js +47 -32
- package/src/price/priceOracleKit.d.ts +2 -8
- package/src/price/priceOracleKit.d.ts.map +1 -1
- package/src/price/priceOracleKit.js +11 -13
- package/src/price/roundsManager.d.ts +28 -46
- package/src/price/roundsManager.d.ts.map +1 -1
- package/src/price/roundsManager.js +51 -63
- package/src/proposals/committee-proposal.d.ts.map +1 -1
- package/src/proposals/committee-proposal.js +5 -9
- package/src/proposals/core-proposal.d.ts.map +1 -1
- package/src/proposals/core-proposal.js +3 -5
- package/src/proposals/econ-behaviors.d.ts.map +1 -1
- package/src/proposals/econ-behaviors.js +55 -28
- package/src/proposals/price-feed-proposal.d.ts.map +1 -1
- package/src/proposals/price-feed-proposal.js +30 -11
- package/src/proposals/startPSM.d.ts.map +1 -1
- package/src/proposals/startPSM.js +24 -17
- package/src/proposals/utils.d.ts +1 -1
- package/src/proposals/utils.d.ts.map +1 -1
- package/src/proposals/utils.js +26 -7
- package/src/psm/psm.d.ts +14 -22
- package/src/psm/psm.d.ts.map +1 -1
- package/src/psm/psm.js +34 -31
- package/src/reserve/assetReserve.d.ts.map +1 -1
- package/src/reserve/assetReserve.js +16 -13
- package/src/reserve/assetReserveKit.d.ts +14 -26
- package/src/reserve/assetReserveKit.d.ts.map +1 -1
- package/src/reserve/assetReserveKit.js +13 -21
- package/src/tokens.d.ts +3 -3
- package/src/tokens.d.ts.map +1 -1
- package/src/tokens.js +5 -5
- package/src/typeGuards.d.ts +1 -3
- package/src/typeGuards.d.ts.map +1 -1
- package/src/typeGuards.js +1 -3
- package/src/vaultFactory/liquidation.d.ts.map +1 -1
- package/src/vaultFactory/liquidation.js +29 -16
- package/src/vaultFactory/math.d.ts.map +1 -1
- package/src/vaultFactory/math.js +8 -9
- package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -1
- package/src/vaultFactory/orderedVaultStore.js +6 -9
- package/src/vaultFactory/params.d.ts +1 -4
- package/src/vaultFactory/params.d.ts.map +1 -1
- package/src/vaultFactory/params.js +24 -18
- package/src/vaultFactory/prioritizedVaults.js +2 -2
- package/src/vaultFactory/proceeds.d.ts +3 -3
- package/src/vaultFactory/proceeds.d.ts.map +1 -1
- package/src/vaultFactory/proceeds.js +24 -18
- package/src/vaultFactory/storeUtils.d.ts +2 -6
- package/src/vaultFactory/storeUtils.d.ts.map +1 -1
- package/src/vaultFactory/storeUtils.js +8 -12
- package/src/vaultFactory/types.d.ts +16 -11
- package/src/vaultFactory/types.d.ts.map +1 -1
- package/src/vaultFactory/types.js +37 -27
- package/src/vaultFactory/vault.d.ts +103 -159
- package/src/vaultFactory/vault.d.ts.map +1 -1
- package/src/vaultFactory/vault.js +84 -85
- package/src/vaultFactory/vaultDirector.d.ts +21 -43
- package/src/vaultFactory/vaultDirector.d.ts.map +1 -1
- package/src/vaultFactory/vaultDirector.js +30 -40
- package/src/vaultFactory/vaultFactory.d.ts +8 -6
- package/src/vaultFactory/vaultFactory.d.ts.map +1 -1
- package/src/vaultFactory/vaultFactory.js +13 -11
- package/src/vaultFactory/vaultHolder.d.ts +12 -16
- package/src/vaultFactory/vaultHolder.d.ts.map +1 -1
- package/src/vaultFactory/vaultHolder.js +7 -12
- package/src/vaultFactory/vaultKit.d.ts +1 -1
- package/src/vaultFactory/vaultKit.d.ts.map +1 -1
- package/src/vaultFactory/vaultKit.js +3 -2
- package/src/vaultFactory/vaultManager.d.ts +454 -68
- package/src/vaultFactory/vaultManager.d.ts.map +1 -1
- package/src/vaultFactory/vaultManager.js +120 -110
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vaultManager.d.ts","sourceRoot":"","sources":["vaultManager.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vaultManager.d.ts","sourceRoot":"","sources":["vaultManager.js"],"names":[],"mappings":"AA4LO,gIARI;IACV,GAAO,EAAE,OAAO,mBAAmB,EAAE,eAAe,CAAC;IACrD,UAAc,EAAE,KAAK,UAAU,CAAC,CAAC;IACjC,eAAmB,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;IAC3F,gBAAoB,EAAE,OAAO,6CAA6C,EAAE,gBAAgB,CAAC;IAC7F,aAAiB,EAAE,OAAO,oBAAoB,EAAE,kBAAkB,CAAC;CAChE;cA1DW,QAAQ,KAAK,CAAC;qBACP,MAAM,KAAK,CAAC;oBACb,OAAO,KAAK,CAAC;sBACX,MAAM;oBACR,SAAS;iBACZ,WAAW;;wBAgEmB,WAAW;;;;;;;;;;;;QA4JnD,2EAA2E;;QAoE3E,oCAAoC;oCAAxB,SAAS;;;;;QAuGrB;;;;;WAKG;kCAJQ,OAAO,KAAK,CAAC,cACb,OAAO,KAAK,CAAC,WACb,OAAO,KAAK,CAAC,aACb,OAAO,KAAK,CAAC;;QA8ExB;;;;;;;;;;;;;;WAcG;2CARQ,mBAAmB,aACnB,OAAO,KAAK,CAAC,sBACb,KAAK,UAAU,EAAE,aAAa,CAAC,aAC/B,SACV,KAAS,EACT;YAAM,gBAAgB,EAAE,OAAO,KAAK,CAAC,CAAC;YAAC,UAAU,EAAE,OAAO,KAAK,CAAC,CAAA;SAAE,CAC/D,mBACO,OAAO,KAAK,CAAC;;;;;;;;;;;;;wBAniBhC,4EAA4E;wBAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA6BG;wBAEH;;;;;;;;;;;;;;;;;;2BAkBG;wBAEH;;;;;;;;;2BASG;wBAEH;;;;;;;;;;2BAUG;wBAEH;;;;;;;;;;;;;;;;;2BAiBG;wBAEH;;;;;;2BAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmfK;;;;;;;;;;;;;WAaG;;YANsD,IAAI,EAAlD,OAAO,eAAe,EAAE,gBAAgB;YAC3B,YAAY,EAAzB,KAAK,EAAE;YACM,OAAO,EAApB,OAAO;YACY,eAAe,EAAlC,OAAO,KAAK,CAAC;YACM,SAAS,EAA5B,OAAO,KAAK,CAAC;YACX,IAAI;;;;QA+FjB;;;;;WAKG;qCADQ,OAAO,KAAK,CAAC;QAwBxB,8BAA8B;;QAY9B;;;WAGG;qBAFQ,OAAO,KAAK,CAAC,QACb,OAAO;;;;QAuBlB;;;;WAIG;+BADQ,MAAM;QAMjB,yDAAyD;;QAIzD;;;;;;;;;;WAUG;+CAPQ,cAAc,iBACd,OAAO,KAAK,CAAC,WACb,OAAO,cACP,OAAO,YAAY,EAAE,UAAU,SAE/B,KAAK,GACH,IAAI;;;;QAmFjB,4BAA4B;2BAAhB,OAAO;;;;;;;;;gBA92B3B,4EAA4E;gBAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6BG;gBAEH;;;;;;;;;;;;;;;;;;mBAkBG;gBAEH;;;;;;;;;mBASG;gBAEH;;;;;;;;;;mBAUG;gBAEH;;;;;;;;;;;;;;;;;mBAiBG;gBAEH;;;;;;mBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAk3BK,qDAAqD;mCAAzC,KAAK,qBAAqB,CAAC;;;;;;;;;;;;;QA/rBvC,2EAA2E;;QAoE3E,oCAAoC;oCAAxB,SAAS;;;;;QAuGrB;;;;;WAKG;kCAJQ,OAAO,KAAK,CAAC,cACb,OAAO,KAAK,CAAC,WACb,OAAO,KAAK,CAAC,aACb,OAAO,KAAK,CAAC;;QA8ExB;;;;;;;;;;;;;;WAcG;2CARQ,mBAAmB,aACnB,OAAO,KAAK,CAAC,sBACb,KAAK,UAAU,EAAE,aAAa,CAAC,aAC/B,SACV,KAAS,EACT;YAAM,gBAAgB,EAAE,OAAO,KAAK,CAAC,CAAC;YAAC,UAAU,EAAE,OAAO,KAAK,CAAC,CAAA;SAAE,CAC/D,mBACO,OAAO,KAAK,CAAC;;;;;;;;;;;;;wBAniBhC,4EAA4E;wBAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA6BG;wBAEH;;;;;;;;;;;;;;;;;;2BAkBG;wBAEH;;;;;;;;;2BASG;wBAEH;;;;;;;;;;2BAUG;wBAEH;;;;;;;;;;;;;;;;;2BAiBG;wBAEH;;;;;;2BAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmfK;;;;;;;;;;;;;WAaG;;YANsD,IAAI,EAAlD,OAAO,eAAe,EAAE,gBAAgB;YAC3B,YAAY,EAAzB,KAAK,EAAE;YACM,OAAO,EAApB,OAAO;YACY,eAAe,EAAlC,OAAO,KAAK,CAAC;YACM,SAAS,EAA5B,OAAO,KAAK,CAAC;YACX,IAAI;;;;QA+FjB;;;;;WAKG;qCADQ,OAAO,KAAK,CAAC;QAwBxB,8BAA8B;;QAY9B;;;WAGG;qBAFQ,OAAO,KAAK,CAAC,QACb,OAAO;;;;QAuBlB;;;;WAIG;+BADQ,MAAM;QAMjB,yDAAyD;;QAIzD;;;;;;;;;;WAUG;+CAPQ,cAAc,iBACd,OAAO,KAAK,CAAC,WACb,OAAO,cACP,OAAO,YAAY,EAAE,UAAU,SAE/B,KAAK,GACH,IAAI;;;;QAmFjB,4BAA4B;2BAAhB,OAAO;;;;;;;;;gBA92B3B,4EAA4E;gBAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA6BG;gBAEH;;;;;;;;;;;;;;;;;;mBAkBG;gBAEH;;;;;;;;;mBASG;gBAEH;;;;;;;;;;mBAUG;gBAEH;;;;;;;;;;;;;;;;;mBAiBG;gBAEH;;;;;;mBAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAk3BK,qDAAqD;mCAAzC,KAAK,qBAAqB,CAAC;;IAsJ9C;AAiBM;IAYH,6CAA6C;eAA5B,eAAe,KAAK,IAAI;IAIzC,iDAAiD;iBAA9B,MAAM,KAAK,eAAe;;EAQhD;6BAxpCa,OAAO,iBAAiB,EAAE,cAAc;2BACxC,OAAO,wBAAwB,EAAE,YAAY;;;;;;;iBAK7C,KAAK,GAAG,IAAI;;;;qBAGZ,MAAM;;;;0BACN,MAAM;;;;;qBACN,OAAO,KAAK,CAAC;;;;eAEb,OAAO,KAAK,CAAC;;;;;;wBACb,OAAO,KAAK,CAAC;;;;;2BAGb,OAAO,KAAK,CAAC;;;;;qBAEb,OAAO,KAAK,CAAC;;;;;yBAEb,OAAO,KAAK,CAAC;;;;;0BAEb,OAAO,KAAK,CAAC;;;;;2BAEb,OAAO,KAAK,CAAC;;;;;4BAEb,OAAO,KAAK,CAAC;;;;;8BAEb,MAAM;;;;;4BAEN,MAAM;;yBAKP;IACZ,sBAA0B,EAAE,KAAK,CAAC;IAClC,YAAgB,EAAE,KAAK,CAAC;IACxB,wBAA4B,EAAE,SAAS,CAAC;CACrC;mCAES;IACZ,iBAAqB,EAAE,MAAM,YAAY,CAAC;IAC1C,kBAAsB,EAAE,MAAM,YAAY,CAAC;IAC3C,YAAgB,EAAE,MAAM,OAAO,KAAK,CAAC,CAAC;IACtC,eAAmB,EAAE,MAAM,KAAK,CAAC;IACjC,qBAAyB,EAAE,MAAM,KAAK,CAAC;IACvC,oBAAwB,EAAE,MAAM,KAAK,CAAC;IACtC,qBAAyB,EAAE,MAAM,KAAK,CAAC;IACvC,UAAc,EAAE,MAAM,KAAK,CAAC;IAC5B,iBAAqB,EAAE,MAAM,OAAO,KAAK,CAAC,CAAC;CACxC;yBAIS,SAAS;IACrB,QAAY,EAAE,QAAQ,KAAK,CAAC,CAAC;IAC7B,eAAmB,EAAE,MAAM,KAAK,CAAC,CAAC;IAClC,cAAkB,EAAE,OAAO,KAAK,CAAC,CAAC;IAClC,gBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAkB,EAAE,SAAS,CAAC;IAC9B,WAAe,EAAE,WAAW,CAAC;CAC1B,CAAC;6BAIQ;IACZ,aAAiB,EAAE,OAAO,6CAA6C,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACjG,SAAa,EAAE,MAAM,KAAK,CAAC,CAAC;IAC5B,iBAAqB,EAAE,SAAS,KAAK,CAAC,CAAC;IACvC,eAAmB,EAAE,OAAO,6CAA6C,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC5G,iBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAA0B,EAAE,OAAO,CAAC;IACpC,eAAmB,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC,CAAC;CAC1C;2BAIS;IACZ,sBAA0B,EAAE,KAAK,CAAC;IAClC,wBAA4B,EAAE,SAAS,CAAC;IACxC,wBAA4B,EAAE,MAAM,CAAC;IACrC,sBAA0B,EAAE,MAAM,CAAC;IACnC,eAAmB,EAAE,OAAO,KAAK,CAAC,CAAC;IACnC,mBAAuB,EAAE,OAAO,KAAK,CAAC,CAAC;IACvC,SAAa,EAAE,OAAO,KAAK,CAAC,CAAC;IAC7B,qBAAyB,EAAE,OAAO,KAAK,CAAC,CAAC;IACzC,eAAmB,EAAE,OAAO,KAAK,CAAC,CAAC;IACnC,oBAAwB,EAAE,OAAO,KAAK,CAAC,CAAC;IACxC,qBAAyB,EAAE,OAAO,KAAK,CAAC,CAAC;IACzC,sBAA0B,EAAE,OAAO,KAAK,CAAC,CAAC;IAC1C,YAAgB,EAAE,MAAM,CAAC;IACzB,WAAe,EAAE,UAAU,GAAG,SAAS,CAAC;CACrC;8BAmhCU,QAAQ,WAAW,WAAW,6BAA6B,CAAC,CAAC,CAAC;;;;;;;;2BAE/D,eAAe,CAAC,MAAM,CAAC;gCAMtB,eAAe,CAAC,YAAY,CAAC"}
|
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @file Vault Manager object manages vault-based debts for a collateral type.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* - opening a new vault backed by the collateral
|
|
7
|
-
* - publishing metrics on the vault economy for that collateral
|
|
8
|
-
* - charging interest on all active vaults
|
|
9
|
-
* - liquidating active vaults that have exceeded the debt ratio
|
|
5
|
+
* The responsibilities include:
|
|
10
6
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
7
|
+
* - opening a new vault backed by the collateral
|
|
8
|
+
* - publishing metrics on the vault economy for that collateral
|
|
9
|
+
* - charging interest on all active vaults
|
|
10
|
+
* - liquidating active vaults that have exceeded the debt ratio
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* Once a vault is settled (liquidated or closed) it can still be used, traded,
|
|
13
|
+
* etc. but is no longer the concern of the manager. It can't be liquidated,
|
|
14
|
+
* have interest charged, or be counted in the metrics.
|
|
15
|
+
*
|
|
16
|
+
* Undercollateralized vaults can have their assets sent to the auctioneer to be
|
|
17
|
+
* liquidated. If the auction is unsuccessful, the liquidation may be
|
|
18
|
+
* reverted.
|
|
17
19
|
*/
|
|
18
20
|
import '@agoric/zoe/exported.js';
|
|
19
21
|
|
|
@@ -73,93 +75,102 @@ const trace = makeTracer('VM');
|
|
|
73
75
|
// Metrics naming scheme: nouns are present values; past-participles are accumulative.
|
|
74
76
|
/**
|
|
75
77
|
* @typedef {object} MetricsNotification
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* @property {number}
|
|
80
|
-
* @property {number}
|
|
81
|
-
* @property {Amount<'nat'>}
|
|
82
|
-
*
|
|
83
|
-
* @property {Amount<'nat'>}
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @property {Amount<'nat'>}
|
|
90
|
-
*
|
|
91
|
-
* @property {Amount<'nat'>}
|
|
92
|
-
*
|
|
93
|
-
* @property {
|
|
78
|
+
* @property {Ratio | null} lockedQuote priceQuote that will be used for
|
|
79
|
+
* liquidation. Non-null from priceLock time until liquidation has taken
|
|
80
|
+
* place.
|
|
81
|
+
* @property {number} numActiveVaults present count of vaults
|
|
82
|
+
* @property {number} numLiquidatingVaults present count of liquidating vaults
|
|
83
|
+
* @property {Amount<'nat'>} totalCollateral present sum of collateral across
|
|
84
|
+
* all vaults
|
|
85
|
+
* @property {Amount<'nat'>} totalDebt present sum of debt across all vaults
|
|
86
|
+
* @property {Amount<'nat'>} retainedCollateral collateral held as a result of
|
|
87
|
+
* not returning excess refunds to owners of vaults liquidated with
|
|
88
|
+
* shortfalls
|
|
89
|
+
* @property {Amount<'nat'>} liquidatingCollateral present sum of collateral in
|
|
90
|
+
* vaults sent for liquidation
|
|
91
|
+
* @property {Amount<'nat'>} liquidatingDebt present sum of debt in vaults sent
|
|
92
|
+
* for liquidation
|
|
93
|
+
* @property {Amount<'nat'>} totalCollateralSold running sum of collateral sold
|
|
94
|
+
* in liquidation
|
|
95
|
+
* @property {Amount<'nat'>} totalOverageReceived running sum of overages,
|
|
96
|
+
* central received greater than debt
|
|
97
|
+
* @property {Amount<'nat'>} totalProceedsReceived running sum of minted
|
|
98
|
+
* received from liquidation
|
|
99
|
+
* @property {Amount<'nat'>} totalShortfallReceived running sum of shortfalls,
|
|
100
|
+
* minted received less than debt
|
|
101
|
+
* @property {number} numLiquidationsCompleted running count of liquidated
|
|
102
|
+
* vaults
|
|
103
|
+
* @property {number} numLiquidationsAborted running count of vault liquidations
|
|
104
|
+
* that were reverted.
|
|
94
105
|
*/
|
|
95
106
|
|
|
96
107
|
/**
|
|
97
108
|
* @typedef {{
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
109
|
+
* compoundedStabilityFee: Ratio;
|
|
110
|
+
* stabilityFee: Ratio;
|
|
111
|
+
* latestStabilityFeeUpdate: Timestamp;
|
|
101
112
|
* }} AssetState
|
|
102
113
|
*
|
|
103
114
|
* @typedef {{
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
115
|
+
* getChargingPeriod: () => RelativeTime;
|
|
116
|
+
* getRecordingPeriod: () => RelativeTime;
|
|
117
|
+
* getDebtLimit: () => Amount<'nat'>;
|
|
118
|
+
* getStabilityFee: () => Ratio;
|
|
119
|
+
* getLiquidationPadding: () => Ratio;
|
|
120
|
+
* getLiquidationMargin: () => Ratio;
|
|
121
|
+
* getLiquidationPenalty: () => Ratio;
|
|
122
|
+
* getMintFee: () => Ratio;
|
|
123
|
+
* getMinInitialDebt: () => Amount<'nat'>;
|
|
113
124
|
* }} GovernedParamGetters
|
|
114
125
|
*/
|
|
115
126
|
|
|
116
127
|
/**
|
|
117
128
|
* @typedef {Readonly<{
|
|
118
|
-
* debtMint: ZCFMint<'nat'
|
|
119
|
-
* collateralBrand: Brand<'nat'
|
|
120
|
-
* collateralUnit: Amount<'nat'
|
|
121
|
-
* descriptionScope: string
|
|
122
|
-
* startTimeStamp: Timestamp
|
|
123
|
-
* storageNode: StorageNode
|
|
129
|
+
* debtMint: ZCFMint<'nat'>;
|
|
130
|
+
* collateralBrand: Brand<'nat'>;
|
|
131
|
+
* collateralUnit: Amount<'nat'>;
|
|
132
|
+
* descriptionScope: string;
|
|
133
|
+
* startTimeStamp: Timestamp;
|
|
134
|
+
* storageNode: StorageNode;
|
|
124
135
|
* }>} HeldParams
|
|
125
136
|
*/
|
|
126
137
|
|
|
127
138
|
/**
|
|
128
139
|
* @typedef {{
|
|
129
|
-
* assetTopicKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<AssetState
|
|
130
|
-
* debtBrand: Brand<'nat'
|
|
131
|
-
* liquidatingVaults: SetStore<Vault
|
|
132
|
-
* metricsTopicKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<MetricsNotification
|
|
133
|
-
* poolIncrementSeat: ZCFSeat
|
|
134
|
-
* retainedCollateralSeat: ZCFSeat
|
|
135
|
-
* unsettledVaults: MapStore<string, Vault
|
|
140
|
+
* assetTopicKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<AssetState>;
|
|
141
|
+
* debtBrand: Brand<'nat'>;
|
|
142
|
+
* liquidatingVaults: SetStore<Vault>;
|
|
143
|
+
* metricsTopicKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<MetricsNotification>;
|
|
144
|
+
* poolIncrementSeat: ZCFSeat;
|
|
145
|
+
* retainedCollateralSeat: ZCFSeat;
|
|
146
|
+
* unsettledVaults: MapStore<string, Vault>;
|
|
136
147
|
* }} ImmutableState
|
|
137
148
|
*/
|
|
138
149
|
|
|
139
150
|
/**
|
|
140
151
|
* @typedef {{
|
|
141
|
-
* compoundedStabilityFee: Ratio
|
|
142
|
-
* latestStabilityFeeUpdate: Timestamp
|
|
143
|
-
* numLiquidationsCompleted: number
|
|
144
|
-
* numLiquidationsAborted: number
|
|
145
|
-
* totalCollateral: Amount<'nat'
|
|
146
|
-
* totalCollateralSold: Amount<'nat'
|
|
147
|
-
* totalDebt: Amount<'nat'
|
|
148
|
-
* liquidatingCollateral: Amount<'nat'
|
|
149
|
-
* liquidatingDebt: Amount<'nat'
|
|
150
|
-
* totalOverageReceived: Amount<'nat'
|
|
151
|
-
* totalProceedsReceived: Amount<'nat'
|
|
152
|
-
* totalShortfallReceived: Amount<'nat'
|
|
153
|
-
* vaultCounter: number
|
|
154
|
-
* lockedQuote: PriceQuote | undefined
|
|
152
|
+
* compoundedStabilityFee: Ratio;
|
|
153
|
+
* latestStabilityFeeUpdate: Timestamp;
|
|
154
|
+
* numLiquidationsCompleted: number;
|
|
155
|
+
* numLiquidationsAborted: number;
|
|
156
|
+
* totalCollateral: Amount<'nat'>;
|
|
157
|
+
* totalCollateralSold: Amount<'nat'>;
|
|
158
|
+
* totalDebt: Amount<'nat'>;
|
|
159
|
+
* liquidatingCollateral: Amount<'nat'>;
|
|
160
|
+
* liquidatingDebt: Amount<'nat'>;
|
|
161
|
+
* totalOverageReceived: Amount<'nat'>;
|
|
162
|
+
* totalProceedsReceived: Amount<'nat'>;
|
|
163
|
+
* totalShortfallReceived: Amount<'nat'>;
|
|
164
|
+
* vaultCounter: number;
|
|
165
|
+
* lockedQuote: PriceQuote | undefined;
|
|
155
166
|
* }} MutableState
|
|
156
167
|
*/
|
|
157
168
|
|
|
158
169
|
/**
|
|
159
170
|
* @type {(brand: Brand) => {
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
171
|
+
* prioritizedVaults: ReturnType<typeof makePrioritizedVaults>;
|
|
172
|
+
* storedQuotesNotifier: import('@agoric/notifier').StoredNotifier<PriceQuote>;
|
|
173
|
+
* storedCollateralQuote: PriceQuote;
|
|
163
174
|
* }}
|
|
164
175
|
*/
|
|
165
176
|
// any b/c will be filled after start()
|
|
@@ -168,11 +179,11 @@ const collateralEphemera = makeEphemeraProvider(() => /** @type {any} */ ({}));
|
|
|
168
179
|
/**
|
|
169
180
|
* @param {import('@agoric/ertp').Baggage} baggage
|
|
170
181
|
* @param {{
|
|
171
|
-
* zcf: import('./vaultFactory.js').VaultFactoryZCF
|
|
172
|
-
* marshaller: ERef<Marshaller
|
|
173
|
-
* makeRecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').MakeRecorderKit
|
|
174
|
-
* makeERecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').MakeERecorderKit
|
|
175
|
-
* factoryPowers: import('./vaultDirector.js').FactoryPowersFacet
|
|
182
|
+
* zcf: import('./vaultFactory.js').VaultFactoryZCF;
|
|
183
|
+
* marshaller: ERef<Marshaller>;
|
|
184
|
+
* makeRecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').MakeRecorderKit;
|
|
185
|
+
* makeERecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').MakeERecorderKit;
|
|
186
|
+
* factoryPowers: import('./vaultDirector.js').FactoryPowersFacet;
|
|
176
187
|
* }} powers
|
|
177
188
|
*/
|
|
178
189
|
export const prepareVaultManagerKit = (
|
|
@@ -203,8 +214,9 @@ export const prepareVaultManagerKit = (
|
|
|
203
214
|
poolIncrementSeat: zcf.makeEmptySeatKit().zcfSeat,
|
|
204
215
|
|
|
205
216
|
/**
|
|
206
|
-
* Vaults that have been sent for liquidation. When we get proceeds (or
|
|
207
|
-
* thereof) back from the liquidator, we will allocate them among the
|
|
217
|
+
* Vaults that have been sent for liquidation. When we get proceeds (or
|
|
218
|
+
* lack thereof) back from the liquidator, we will allocate them among the
|
|
219
|
+
* vaults.
|
|
208
220
|
*
|
|
209
221
|
* @type {SetStore<Vault>}
|
|
210
222
|
*/
|
|
@@ -339,9 +351,7 @@ export const prepareVaultManagerKit = (
|
|
|
339
351
|
|
|
340
352
|
// Some of these could go in closures but are kept on a facet anticipating future durability options.
|
|
341
353
|
helper: {
|
|
342
|
-
/**
|
|
343
|
-
* Start non-durable processes (or restart if needed after vat restart)
|
|
344
|
-
*/
|
|
354
|
+
/** Start non-durable processes (or restart if needed after vat restart) */
|
|
345
355
|
start() {
|
|
346
356
|
const { state, facets } = this;
|
|
347
357
|
trace(state.collateralBrand, 'helper.start()', state.vaultCounter);
|
|
@@ -409,9 +419,7 @@ export const prepareVaultManagerKit = (
|
|
|
409
419
|
});
|
|
410
420
|
trace('helper.start() done');
|
|
411
421
|
},
|
|
412
|
-
/**
|
|
413
|
-
* @param {Timestamp} updateTime
|
|
414
|
-
*/
|
|
422
|
+
/** @param {Timestamp} updateTime */
|
|
415
423
|
async chargeAllVaults(updateTime) {
|
|
416
424
|
const { state, facets } = this;
|
|
417
425
|
const { collateralBrand, debtMint, poolIncrementSeat } = state;
|
|
@@ -515,7 +523,6 @@ export const prepareVaultManagerKit = (
|
|
|
515
523
|
state.liquidatingDebt = AmountMath.add(state.liquidatingDebt, debt);
|
|
516
524
|
},
|
|
517
525
|
/**
|
|
518
|
-
*
|
|
519
526
|
* @param {Amount<'nat'>} debt
|
|
520
527
|
* @param {Amount<'nat'>} collateral
|
|
521
528
|
* @param {Amount<'nat'>} overage
|
|
@@ -598,14 +605,18 @@ export const prepareVaultManagerKit = (
|
|
|
598
605
|
},
|
|
599
606
|
|
|
600
607
|
/**
|
|
601
|
-
* This is designed to tolerate an incomplete plan, in case
|
|
602
|
-
* an error during its calculation.
|
|
603
|
-
*
|
|
608
|
+
* This is designed to tolerate an incomplete plan, in case
|
|
609
|
+
* calculateDistributionPlan encounters an error during its calculation.
|
|
610
|
+
* We don't have a way to induce such errors in CI so we've done so
|
|
611
|
+
* manually in dev and verified this function recovers as expected.
|
|
604
612
|
*
|
|
605
613
|
* @param {AmountKeywordRecord} proceeds
|
|
606
614
|
* @param {Amount<'nat'>} totalDebt
|
|
607
615
|
* @param {Pick<PriceQuote, 'quoteAmount'>} oraclePriceAtStart
|
|
608
|
-
* @param {MapStore<
|
|
616
|
+
* @param {MapStore<
|
|
617
|
+
* Vault,
|
|
618
|
+
* { collateralAmount: Amount<'nat'>; debtAmount: Amount<'nat'> }
|
|
619
|
+
* >} vaultData
|
|
609
620
|
* @param {Amount<'nat'>} totalCollateral
|
|
610
621
|
*/
|
|
611
622
|
planProceedsDistribution(
|
|
@@ -661,13 +672,14 @@ export const prepareVaultManagerKit = (
|
|
|
661
672
|
},
|
|
662
673
|
|
|
663
674
|
/**
|
|
664
|
-
* This is designed to tolerate an incomplete plan, in case
|
|
665
|
-
* an error during its calculation.
|
|
666
|
-
*
|
|
675
|
+
* This is designed to tolerate an incomplete plan, in case
|
|
676
|
+
* calculateDistributionPlan encounters an error during its calculation.
|
|
677
|
+
* We don't have a way to induce such errors in CI so we've done so
|
|
678
|
+
* manually in dev and verified this function recovers as expected.
|
|
667
679
|
*
|
|
668
680
|
* @param {object} obj
|
|
669
681
|
* @param {import('./proceeds.js').DistributionPlan} obj.plan
|
|
670
|
-
* @param {
|
|
682
|
+
* @param {Vault[]} obj.vaultsInPlan
|
|
671
683
|
* @param {ZCFSeat} obj.liqSeat
|
|
672
684
|
* @param {Amount<'nat'>} obj.totalCollateral
|
|
673
685
|
* @param {Amount<'nat'>} obj.totalDebt
|
|
@@ -840,9 +852,7 @@ export const prepareVaultManagerKit = (
|
|
|
840
852
|
const { descriptionScope } = this.state;
|
|
841
853
|
return `${descriptionScope}: ${base}`;
|
|
842
854
|
},
|
|
843
|
-
/**
|
|
844
|
-
* coefficient on existing debt to calculate new debt
|
|
845
|
-
*/
|
|
855
|
+
/** coefficient on existing debt to calculate new debt */
|
|
846
856
|
getCompoundedStabilityFee() {
|
|
847
857
|
return this.state.compoundedStabilityFee;
|
|
848
858
|
},
|
|
@@ -852,7 +862,8 @@ export const prepareVaultManagerKit = (
|
|
|
852
862
|
* @param {NormalizedDebt} oldDebtNormalized
|
|
853
863
|
* @param {Amount<'nat'>} oldCollateral
|
|
854
864
|
* @param {VaultId} vaultId
|
|
855
|
-
* @param {import('./vault.js').VaultPhase} vaultPhase at the end of
|
|
865
|
+
* @param {import('./vault.js').VaultPhase} vaultPhase at the end of
|
|
866
|
+
* whatever change updated balances
|
|
856
867
|
* @param {Vault} vault
|
|
857
868
|
* @returns {void}
|
|
858
869
|
*/
|
|
@@ -937,9 +948,7 @@ export const prepareVaultManagerKit = (
|
|
|
937
948
|
return factoryPowers.getGovernedParams(collateralBrand);
|
|
938
949
|
},
|
|
939
950
|
|
|
940
|
-
/**
|
|
941
|
-
* @param {ZCFSeat} seat
|
|
942
|
-
*/
|
|
951
|
+
/** @param {ZCFSeat} seat */
|
|
943
952
|
async makeVaultKit(seat) {
|
|
944
953
|
const {
|
|
945
954
|
state,
|
|
@@ -1045,9 +1054,7 @@ export const prepareVaultManagerKit = (
|
|
|
1045
1054
|
facets.helper.writeMetrics();
|
|
1046
1055
|
return storedCollateralQuote;
|
|
1047
1056
|
},
|
|
1048
|
-
/**
|
|
1049
|
-
* @param {ERef<AuctioneerPublicFacet>} auctionPF
|
|
1050
|
-
*/
|
|
1057
|
+
/** @param {ERef<AuctioneerPublicFacet>} auctionPF */
|
|
1051
1058
|
async liquidateVaults(auctionPF) {
|
|
1052
1059
|
const { state, facets } = this;
|
|
1053
1060
|
const { self, helper } = facets;
|
|
@@ -1181,7 +1188,12 @@ export const prepareVaultManagerKit = (
|
|
|
1181
1188
|
},
|
|
1182
1189
|
);
|
|
1183
1190
|
|
|
1184
|
-
/**
|
|
1191
|
+
/**
|
|
1192
|
+
* @param {Omit<
|
|
1193
|
+
* Parameters<typeof makeVaultManagerKitInternal>[0],
|
|
1194
|
+
* 'metricsStorageNode'
|
|
1195
|
+
* >} externalParams
|
|
1196
|
+
*/
|
|
1185
1197
|
const makeVaultManagerKit = async externalParams => {
|
|
1186
1198
|
const metricsStorageNode = await E(
|
|
1187
1199
|
externalParams.storageNode,
|
|
@@ -1194,15 +1206,13 @@ export const prepareVaultManagerKit = (
|
|
|
1194
1206
|
return makeVaultManagerKit;
|
|
1195
1207
|
};
|
|
1196
1208
|
|
|
1209
|
+
/** @typedef {Awaited<ReturnType<ReturnType<typeof prepareVaultManagerKit>>>} VaultManagerKit */
|
|
1197
1210
|
/**
|
|
1198
|
-
* @typedef {
|
|
1199
|
-
|
|
1200
|
-
/**
|
|
1201
|
-
* @typedef {VaultManagerKit['self']} VaultManager
|
|
1202
|
-
* Each VaultManager manages a single collateral type.
|
|
1211
|
+
* @typedef {VaultManagerKit['self']} VaultManager Each VaultManager manages a
|
|
1212
|
+
* single collateral type.
|
|
1203
1213
|
*
|
|
1204
|
-
*
|
|
1205
|
-
*
|
|
1214
|
+
* It manages some number of outstanding debt positions, each called a Vault,
|
|
1215
|
+
* for which the collateral is provided in exchange for borrowed Minted.
|
|
1206
1216
|
*/
|
|
1207
1217
|
/** @typedef {VaultManagerKit['collateral']} CollateralManager */
|
|
1208
1218
|
|