@agoric/inter-protocol 0.18.0-u23.0 → 0.18.0-u23.1

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 (70) hide show
  1. package/package.json +13 -13
  2. package/src/auction/util.d.ts +33 -0
  3. package/src/auction/util.d.ts.map +1 -0
  4. package/src/clientSupport.d.ts +124 -0
  5. package/src/clientSupport.d.ts.map +1 -0
  6. package/src/collectFees.d.ts +6 -0
  7. package/src/collectFees.d.ts.map +1 -0
  8. package/src/contractSupport.d.ts +36 -0
  9. package/src/contractSupport.d.ts.map +1 -0
  10. package/src/econCommitteeCharter.d.ts +54 -0
  11. package/src/econCommitteeCharter.d.ts.map +1 -0
  12. package/src/feeDistributor.d.ts +228 -0
  13. package/src/feeDistributor.d.ts.map +1 -0
  14. package/src/index.d.ts +2 -0
  15. package/src/index.d.ts.map +1 -0
  16. package/src/interest-math.d.ts +5 -0
  17. package/src/interest-math.d.ts.map +1 -0
  18. package/src/interest.d.ts +42 -0
  19. package/src/interest.d.ts.map +1 -0
  20. package/src/price/fluxAggregatorContract.d.ts +95 -0
  21. package/src/price/fluxAggregatorContract.d.ts.map +1 -0
  22. package/src/price/fluxAggregatorKit.d.ts +114 -0
  23. package/src/price/fluxAggregatorKit.d.ts.map +1 -0
  24. package/src/price/priceOracleKit.d.ts +41 -0
  25. package/src/price/priceOracleKit.d.ts.map +1 -0
  26. package/src/price/roundsManager.d.ts +211 -0
  27. package/src/price/roundsManager.d.ts.map +1 -0
  28. package/src/proposals/utils.d.ts +27 -0
  29. package/src/proposals/utils.d.ts.map +1 -0
  30. package/src/provisionPool.d.ts +87 -0
  31. package/src/provisionPool.d.ts.map +1 -0
  32. package/src/provisionPoolKit.d.ts +81 -0
  33. package/src/provisionPoolKit.d.ts.map +1 -0
  34. package/src/psm/psm.d.ts +145 -0
  35. package/src/psm/psm.d.ts.map +1 -0
  36. package/src/reserve/assetReserve.d.ts +68 -0
  37. package/src/reserve/assetReserve.d.ts.map +1 -0
  38. package/src/reserve/assetReserveKit.d.ts +106 -0
  39. package/src/reserve/assetReserveKit.d.ts.map +1 -0
  40. package/src/reserve/params.d.ts +16 -0
  41. package/src/reserve/params.d.ts.map +1 -0
  42. package/src/tokens.d.ts +3 -0
  43. package/src/tokens.d.ts.map +1 -0
  44. package/src/vaultFactory/burn.d.ts +5 -0
  45. package/src/vaultFactory/burn.d.ts.map +1 -0
  46. package/src/vaultFactory/math.d.ts +13 -0
  47. package/src/vaultFactory/math.d.ts.map +1 -0
  48. package/src/vaultFactory/orderedVaultStore.d.ts +94 -0
  49. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
  50. package/src/vaultFactory/params.d.ts +170 -0
  51. package/src/vaultFactory/params.d.ts.map +1 -0
  52. package/src/vaultFactory/prioritizedVaults.d.ts +283 -0
  53. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
  54. package/src/vaultFactory/storeUtils.d.ts +30 -0
  55. package/src/vaultFactory/storeUtils.d.ts.map +1 -0
  56. package/src/vaultFactory/types.d.ts +137 -0
  57. package/src/vaultFactory/types.d.ts.map +1 -0
  58. package/src/vaultFactory/vault.d.ts +360 -0
  59. package/src/vaultFactory/vault.d.ts.map +1 -0
  60. package/src/vaultFactory/vaultDirector.d.ts +337 -0
  61. package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
  62. package/src/vaultFactory/vaultFactory.d.ts +202 -0
  63. package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
  64. package/src/vaultFactory/vaultHolder.d.ts +177 -0
  65. package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
  66. package/src/vaultFactory/vaultKit.d.ts +38 -0
  67. package/src/vaultFactory/vaultKit.d.ts.map +1 -0
  68. package/src/vaultFactory/vaultManager.d.ts +526 -0
  69. package/src/vaultFactory/vaultManager.d.ts.map +1 -0
  70. package/src/c.log +0 -1
@@ -0,0 +1,360 @@
1
+ /**
2
+ * Constants for vault phase.
3
+ *
4
+ * - ACTIVE - vault is in use and can be changed
5
+ * - LIQUIDATING - vault is being liquidated by the vault manager, and cannot be
6
+ * changed by the user. If liquidation fails, vaults may remain in this state.
7
+ * An upgrade to the contract might be able to recover them.
8
+ * - TRANSFER - vault is able to be transferred (payments and debits frozen until
9
+ * it has a new owner)
10
+ * - CLOSED - vault was closed by the user and all assets have been paid out
11
+ * - LIQUIDATED - vault was closed by the manager, with remaining assets paid to
12
+ * owner
13
+ */
14
+ export type Phase = (typeof Phase)[keyof typeof Phase];
15
+ export namespace Phase {
16
+ let ACTIVE: "active";
17
+ let LIQUIDATING: "liquidating";
18
+ let CLOSED: "closed";
19
+ let LIQUIDATED: "liquidated";
20
+ let TRANSFER: "transfer";
21
+ }
22
+ /**
23
+ * @typedef {object} VaultNotification
24
+ * @property {Amount<'nat'>} locked Amount of Collateral locked
25
+ * @property {{
26
+ * debt: Amount<'nat'>;
27
+ * interest: Ratio;
28
+ * }} debtSnapshot
29
+ * 'debt' at the point the compounded interest was 'interest'
30
+ * @property {Phase} vaultState
31
+ */
32
+ /**
33
+ * @typedef {object} VaultManager
34
+ * @property {() => Subscriber<AssetState>} getAssetSubscriber
35
+ * @property {(collateralAmount: Amount) => Amount<'nat'>} maxDebtFor
36
+ * @property {() => Brand<'nat'>} getCollateralBrand
37
+ * @property {(base: string) => string} scopeDescription
38
+ * @property {() => Brand<'nat'>} getDebtBrand
39
+ * @property {MintAndTransfer} mintAndTransfer
40
+ * @property {(amount: Amount, seat: ZCFSeat) => void} burn
41
+ * @property {() => Ratio} getCompoundedInterest
42
+ * @property {(
43
+ * oldDebt: NormalizedDebt,
44
+ * oldCollateral: Amount<'nat'>,
45
+ * vaultId: VaultId,
46
+ * vaultPhase: VaultPhase,
47
+ * vault: Vault,
48
+ * ) => void} handleBalanceChange
49
+ * @property {() => GovernedParamGetters} getGovernedParams
50
+ */
51
+ /**
52
+ * @typedef {Readonly<{
53
+ * idInManager: VaultId;
54
+ * manager: VaultManager;
55
+ * storageNode: Remote<StorageNode>;
56
+ * vaultSeat: ZCFSeat;
57
+ * }>} ImmutableState
58
+ */
59
+ /**
60
+ * Snapshot is of the debt and compounded interest when the principal was last
61
+ * changed.
62
+ *
63
+ * @typedef {{
64
+ * interestSnapshot: Ratio;
65
+ * phase: VaultPhase;
66
+ * debtSnapshot: Amount<'nat'>;
67
+ * outerUpdater: Recorder<VaultNotification> | null;
68
+ * }} MutableState
69
+ */
70
+ export const VaultI: import("@endo/patterns").InterfaceGuard<{
71
+ getCollateralAmount: import("@endo/patterns").MethodGuard;
72
+ getCurrentDebt: import("@endo/patterns").MethodGuard;
73
+ getNormalizedDebt: import("@endo/patterns").MethodGuard;
74
+ getVaultSeat: import("@endo/patterns").MethodGuard;
75
+ initVaultKit: import("@endo/patterns").MethodGuard;
76
+ liquidated: import("@endo/patterns").MethodGuard;
77
+ liquidating: import("@endo/patterns").MethodGuard;
78
+ makeAdjustBalancesInvitation: import("@endo/patterns").MethodGuard;
79
+ makeCloseInvitation: import("@endo/patterns").MethodGuard;
80
+ makeTransferInvitation: import("@endo/patterns").MethodGuard;
81
+ abortLiquidation: import("@endo/patterns").MethodGuard;
82
+ }>;
83
+ export function prepareVault(baggage: Baggage, makeRecorderKit: MakeRecorderKit, zcf: ZCF): (manager: VaultManager, idInManager: string, storageNode: Remote<StorageNode>) => import("@endo/exo").GuardedKit<{
84
+ helper: {
85
+ collateralBrand(): Brand<"nat">;
86
+ debtBrand(): Brand<"nat">;
87
+ emptyCollateral(): import("@agoric/ertp").NatAmount;
88
+ emptyDebt(): import("@agoric/ertp").NatAmount;
89
+ /**
90
+ * @typedef {{
91
+ * give: { Collateral: Amount<'nat'>; Minted: Amount<'nat'> };
92
+ * want: { Collateral: Amount<'nat'>; Minted: Amount<'nat'> };
93
+ * }} FullProposal
94
+ */
95
+ /**
96
+ * @param {ProposalRecord} partial
97
+ * @returns {FullProposal}
98
+ */
99
+ fullProposal(partial: ProposalRecord): {
100
+ give: {
101
+ Collateral: Amount<"nat">;
102
+ Minted: Amount<"nat">;
103
+ };
104
+ want: {
105
+ Collateral: Amount<"nat">;
106
+ Minted: Amount<"nat">;
107
+ };
108
+ };
109
+ /** @param {VaultPhase} newPhase */
110
+ assignPhase(newPhase: VaultPhase): void;
111
+ assertActive(): void;
112
+ assertCloseable(): void;
113
+ /**
114
+ * Called whenever the debt is paid or created through a transaction,
115
+ * but not for interest accrual.
116
+ *
117
+ * @param {Amount<'nat'>} newDebt - principal and all accrued interest
118
+ */
119
+ updateDebtSnapshot(newDebt: Amount<"nat">): void;
120
+ /**
121
+ * Update the debt balance and propagate upwards to maintain aggregate
122
+ * debt and liquidation order.
123
+ *
124
+ * @param {NormalizedDebt} oldDebtNormalized - prior principal and all
125
+ * accrued interest, normalized to the launch of the vaultManager
126
+ * @param {Amount<'nat'>} oldCollateral - actual collateral
127
+ * @param {Amount<'nat'>} newDebtActual - actual principal and all
128
+ * accrued interest
129
+ */
130
+ updateDebtAccounting(oldDebtNormalized: NormalizedDebt, oldCollateral: Amount<"nat">, newDebtActual: Amount<"nat">): void;
131
+ /**
132
+ * @param {ZCFSeat} seat
133
+ * @returns {Amount<'nat'>}
134
+ */
135
+ getCollateralAllocated(seat: ZCFSeat): Amount<"nat">;
136
+ /**
137
+ * @param {ZCFSeat} seat
138
+ * @returns {Amount<'nat'>}
139
+ */
140
+ getMintedAllocated(seat: ZCFSeat): Amount<"nat">;
141
+ assertVaultHoldsNoMinted(): void;
142
+ /**
143
+ * @param {Amount<'nat'>} collateralAmount
144
+ * @param {Amount<'nat'>} proposedDebt
145
+ */
146
+ assertSufficientCollateral(collateralAmount: Amount<"nat">, proposedDebt: Amount<"nat">): void;
147
+ /** @param {Phase} newPhase */
148
+ getStateSnapshot(newPhase: Phase): {
149
+ debtSnapshot: {
150
+ debt: import("@agoric/ertp").NatAmount;
151
+ interest: Ratio;
152
+ };
153
+ locked: import("@agoric/ertp").NatAmount;
154
+ vaultState: Phase;
155
+ };
156
+ /** call this whenever anything changes! */
157
+ updateUiState(): void;
158
+ /** @param {ZCFSeat} seat */
159
+ closeHook(seat: ZCFSeat): Promise<string>;
160
+ /**
161
+ * Calculate the fee, the amount to mint and the resulting debt. The
162
+ * give and the want together reflect a delta, where typically one is
163
+ * zero because they come from the gave/want of an offer proposal. If
164
+ * the `want` is zero, the `fee` will also be zero, so the simple math
165
+ * works.
166
+ *
167
+ * @param {Amount<'nat'>} currentDebt
168
+ * @param {Amount<'nat'>} giveAmount
169
+ * @param {Amount<'nat'>} wantAmount
170
+ */
171
+ debtFee(currentDebt: Amount<"nat">, giveAmount: Amount<"nat">, wantAmount: Amount<"nat">): {
172
+ newDebt: import("@agoric/ertp").NatAmount;
173
+ toMint: import("@agoric/ertp").NatAmount;
174
+ fee: import("@agoric/ertp").NatAmount;
175
+ surplus: import("@agoric/ertp").NatAmount;
176
+ };
177
+ /**
178
+ * Adjust principal and collateral (atomically for offer safety)
179
+ *
180
+ * @param {ZCFSeat} clientSeat
181
+ * @returns {string} success message
182
+ */
183
+ adjustBalancesHook(clientSeat: ZCFSeat): string;
184
+ /**
185
+ * @param {ZCFSeat} clientSeat
186
+ * @param {FullProposal} fp
187
+ * @param {ReturnType<typeof calculateDebtCosts>} costs
188
+ * @param {object} accounting
189
+ * @param {NormalizedDebt} accounting.normalizedDebtPre
190
+ * @param {Amount<'nat'>} accounting.collateralPre
191
+ * @returns {string} success message
192
+ */
193
+ commitBalanceAdjustment(clientSeat: ZCFSeat, fp: {
194
+ give: {
195
+ Collateral: Amount<"nat">;
196
+ Minted: Amount<"nat">;
197
+ };
198
+ want: {
199
+ Collateral: Amount<"nat">;
200
+ Minted: Amount<"nat">;
201
+ };
202
+ }, { newDebt, fee, surplus, toMint }: ReturnType<typeof calculateDebtCosts>, { normalizedDebtPre, collateralPre }: {
203
+ normalizedDebtPre: NormalizedDebt;
204
+ collateralPre: Amount<"nat">;
205
+ }): string;
206
+ /**
207
+ * @param {ZCFSeat} seat
208
+ * @returns {VaultKit}
209
+ */
210
+ makeTransferInvitationHook(seat: ZCFSeat): VaultKit;
211
+ };
212
+ self: {
213
+ getVaultSeat(): ZCFSeat;
214
+ /**
215
+ * @param {ZCFSeat} seat
216
+ * @param {Remote<StorageNode>} storageNode
217
+ */
218
+ initVaultKit(seat: ZCFSeat, storageNode: Remote<StorageNode>): Promise<{
219
+ publicSubscribers: {
220
+ vault: {
221
+ description: string;
222
+ subscriber: Subscriber<VaultNotification>;
223
+ storagePath: Promise<string>;
224
+ };
225
+ };
226
+ invitationMakers: import("@endo/exo").Guarded<{
227
+ AdjustBalances(): Promise<Invitation<string, undefined>>;
228
+ CloseVault(): Promise<Invitation<string, undefined>>;
229
+ TransferVault(): Promise<Invitation</*elided*/ any>>;
230
+ }>;
231
+ vault: import("@endo/exo").Guarded<{
232
+ getPublicTopics(): {
233
+ vault: {
234
+ description: string;
235
+ subscriber: Subscriber<VaultNotification>;
236
+ storagePath: Promise<string>;
237
+ };
238
+ };
239
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
240
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
241
+ makeTransferInvitation(): Promise<Invitation</*elided*/ any>>;
242
+ getCollateralAmount(): import("@agoric/ertp").NatAmount;
243
+ getCurrentDebt(): import("@agoric/ertp").NatAmount;
244
+ getNormalizedDebt(): NormalizedDebt;
245
+ }>;
246
+ vaultUpdater: Recorder<VaultNotification>;
247
+ }>;
248
+ /** Called by manager at start of liquidation. */
249
+ liquidating(): void;
250
+ /**
251
+ * Called by manager at end of liquidation, at which point all debts
252
+ * have been covered.
253
+ */
254
+ liquidated(): void;
255
+ /**
256
+ * Called by vaultManager when the auction wasn't able to sell the
257
+ * collateral. The liquidation fee was charged against the collateral,
258
+ * but the debt will be restored and the vault will be active again.
259
+ * Liquidation.md has details on the liquidation approach.
260
+ */
261
+ abortLiquidation(): string;
262
+ makeAdjustBalancesInvitation(): Promise<Invitation<string, undefined>>;
263
+ makeCloseInvitation(): Promise<Invitation<string, undefined>>;
264
+ /** @returns {Promise<Invitation<VaultKit>>} */
265
+ makeTransferInvitation(): Promise<Invitation<VaultKit>>;
266
+ /** @returns {Amount<'nat'>} */
267
+ getCollateralAmount(): Amount<"nat">;
268
+ /**
269
+ * The actual current debt, including accrued interest.
270
+ *
271
+ * This looks like a simple getter but it does a lot of the heavy
272
+ * lifting for interest accrual. Rather than updating all records when
273
+ * interest accrues, the vault manager updates just its rolling
274
+ * compounded interest. Here we calculate what the current debt is given
275
+ * what's recorded in this vault and what interest has compounded since
276
+ * this vault record was written.
277
+ *
278
+ * @returns {Amount<'nat'>}
279
+ * @see getNormalizedDebt
280
+ */
281
+ getCurrentDebt(): Amount<"nat">;
282
+ /**
283
+ * The normalization puts all debts on a common time-independent scale
284
+ * since the launch of this vault manager. This allows the manager to
285
+ * order vaults by their debt-to-collateral ratios without having to
286
+ * mutate the debts as the interest accrues.
287
+ *
288
+ * @returns {NormalizedDebt} as if the vault was open at the launch of
289
+ * this manager, before any interest accrued
290
+ * @see getActualDebAmount
291
+ */
292
+ getNormalizedDebt(): NormalizedDebt;
293
+ };
294
+ }>;
295
+ export type VaultPhase = Exclude<Phase, "transfer">;
296
+ export type VaultNotification = {
297
+ /**
298
+ * Amount of Collateral locked
299
+ */
300
+ locked: Amount<"nat">;
301
+ /**
302
+ * 'debt' at the point the compounded interest was 'interest'
303
+ */
304
+ debtSnapshot: {
305
+ debt: Amount<"nat">;
306
+ interest: Ratio;
307
+ };
308
+ vaultState: Phase;
309
+ };
310
+ export type VaultManager = {
311
+ getAssetSubscriber: () => Subscriber<AssetState>;
312
+ maxDebtFor: (collateralAmount: Amount) => Amount<"nat">;
313
+ getCollateralBrand: () => Brand<"nat">;
314
+ scopeDescription: (base: string) => string;
315
+ getDebtBrand: () => Brand<"nat">;
316
+ mintAndTransfer: MintAndTransfer;
317
+ burn: (amount: Amount, seat: ZCFSeat) => void;
318
+ getCompoundedInterest: () => Ratio;
319
+ handleBalanceChange: (oldDebt: NormalizedDebt, oldCollateral: Amount<"nat">, vaultId: VaultId, vaultPhase: VaultPhase, vault: Vault) => void;
320
+ getGovernedParams: () => GovernedParamGetters;
321
+ };
322
+ export type ImmutableState = Readonly<{
323
+ idInManager: VaultId;
324
+ manager: VaultManager;
325
+ storageNode: Remote<StorageNode>;
326
+ vaultSeat: ZCFSeat;
327
+ }>;
328
+ /**
329
+ * Snapshot is of the debt and compounded interest when the principal was last
330
+ * changed.
331
+ */
332
+ export type MutableState = {
333
+ interestSnapshot: Ratio;
334
+ phase: VaultPhase;
335
+ debtSnapshot: Amount<"nat">;
336
+ outerUpdater: Recorder<VaultNotification> | null;
337
+ };
338
+ export type Vault = EReturn<EReturn<typeof prepareVault>>["self"];
339
+ import type { Baggage } from '@agoric/swingset-liveslots';
340
+ import type { MakeRecorderKit } from '@agoric/zoe/src/contractSupport/recorder.js';
341
+ import type { ZCF } from '@agoric/zoe';
342
+ import type { StorageNode } from '@agoric/internal/src/lib-chainStorage.js';
343
+ import type { Remote } from '@agoric/internal';
344
+ import type { Brand } from '@agoric/ertp/src/types.js';
345
+ import type { ProposalRecord } from '@agoric/zoe';
346
+ import type { Amount } from '@agoric/ertp/src/types.js';
347
+ import type { NormalizedDebt } from './storeUtils.js';
348
+ import type { ZCFSeat } from '@agoric/zoe';
349
+ import type { Ratio } from '@agoric/ertp/src/ratio.js';
350
+ import { calculateDebtCosts } from './math.js';
351
+ import type { VaultKit } from './vaultKit.js';
352
+ import type { Subscriber } from '@agoric/notifier';
353
+ import type { Invitation } from '@agoric/zoe';
354
+ import type { Recorder } from '@agoric/zoe/src/contractSupport/recorder.js';
355
+ import type { AssetState } from './vaultManager.js';
356
+ import type { MintAndTransfer } from './types.js';
357
+ import type { VaultId } from './types.js';
358
+ import type { GovernedParamGetters } from './vaultManager.js';
359
+ import type { EReturn } from '@endo/far';
360
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["vault.js"],"names":[],"mappings":"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"}