type VaultFactoryPublicFacet = import("./vaultFactory.js").VaultFactoryContract["publicFacet"]; type AutoswapLocal = { getInputPrice: (amount: Amount, brand: Brand) => Amount; makeSwapInvitation: () => Invitation; }; type VaultManagerParamValues = { /** * - margin below which collateral will be * liquidated to satisfy the debt. */ liquidationMargin: Ratio; /** * - penalty charged upon liquidation as * proportion of debt */ liquidationPenalty: Ratio; /** * - annual interest rate charged on debt * positions */ interestRate: Ratio; /** * - The fee (in BasisPoints) charged when creating or * increasing a debt position. */ mintFee: Ratio; debtLimit: Amount<"nat">; /** * - vault must maintain this in order to * remove collateral or add debt */ liquidationPadding?: Ratio | undefined; }; type AddVaultType = (collateralIssuer: Issuer, collateralKeyword: Keyword, params: VaultManagerParamValues) => Promise; type VaultFactoryCreatorFacet = { addVaultType: AddVaultType; getRewardAllocation: () => import("@agoric/zoe").Allocation; makeCollectFeesInvitation: () => Promise>; makeLiquidationWaker: () => import("@agoric/time").TimerWaker; makePriceLockWaker: () => import("@agoric/time").TimerWaker; }; /** * Mint new debt `toMint` and transfer the `fee` * portion to the vaultFactory's reward pool. Then reallocate over all the * seat arguments and the rewardPoolSeat. Update the `totalDebt` if the * reallocate succeeds. */ type MintAndTransfer = (mintReceiver: ZCFSeat, toMint: Amount<"nat">, fee: Amount<"nat">, transfers: TransferPart[]) => void; /** * Burn debt tokens off a seat and update the `totalDebt` if * the reallocate succeeds. */ type BurnDebt = (toBurn: Amount, fromSeat: ZCFSeat) => void; type GetVaultParams = { getLiquidationMargin: () => Ratio; getMintFee: () => Ratio; getCollateralQuote: () => Promise; /** * - The annual interest rate on a debt * position */ getInterestRate: () => Ratio; /** * - The period (in seconds) at * which interest is charged to the debt position. */ getChargingPeriod: () => RelativeTime; /** * - The period (in seconds) * at which interest is recorded to the debt position. */ getRecordingPeriod: () => RelativeTime; }; type VaultId = string; type InterestTiming = { /** * in seconds */ chargingPeriod: RelativeTime; /** * in seconds */ recordingPeriod: RelativeTime; }; type LiquidationStrategy = { keywordMapping: () => KeywordKeywordRecord; makeProposal: (collateral: Amount, run: Amount) => import("@agoric/zoe").Proposal; makeInvitation: (debt: Amount) => Promise; }; type Liquidator = { makeLiquidateInvitation: () => Promise; penaltyRate: Ratio; }>>; }; type DebtStatus = { latestInterestUpdate: Timestamp; /** * interest accrued since latestInterestUpdate */ interest: NatValue; /** * total including principal and interest */ newDebt: NatValue; }; type Calculate = (debtStatus: DebtStatus, currentTime: Timestamp) => DebtStatus; type CalculatorKit = { /** * calculate new debt for charging periods up to * the present. */ calculate: Calculate; /** * calculate new debt for * reporting periods up to the present. If some charging periods have elapsed * that don't constitute whole reporting periods, the time is not updated past * them and interest is not accumulated for them. */ calculateReportingPeriod: Calculate; }; type VaultFactoryParamPath = { key: "governedParams" | { collateralBrand: Brand; }; }; import type { VaultNotification } from './vault.js'; import type { Vault } from './vault.js'; import type { VaultKit } from './vaultKit.js'; import type { VaultManager } from './vaultManager.js'; import type { CollateralManager } from './vaultManager.js'; import type { AssetReserveLimitedCreatorFacet } from '../reserve/assetReserve.js'; import type { AssetReservePublicFacet } from '../reserve/assetReserve.js'; import type { AuctioneerPublicFacet } from '../auction/auctioneer.js'; import type { Timestamp } from '@agoric/time'; import type { RelativeTime } from '@agoric/time'; //# sourceMappingURL=types-ambient.d.ts.map