import { type Address, type Hex } from "viem"; import { type IMarketParams, MarketParams } from "../../market/index.js"; import type { AccrualPosition } from "../../position/index.js"; import type { BigIntish, Hash } from "../../types.js"; import { CapacityLimitReason } from "../../utils.js"; import type { IAccrualVaultV2Adapter, IVaultV2Adapter } from "./VaultV2Adapter.js"; import { VaultV2Adapter } from "./VaultV2Adapter.js"; /** Plain input shape for a Vault V2 adapter investing in Morpho Blue markets. */ export interface IVaultV2MorphoMarketV1Adapter extends Omit { type?: "VaultV2MorphoMarketV1Adapter"; marketParamsList: IMarketParams[]; } /** Represents a Vault V2 adapter investing in Morpho Blue markets. */ export declare class VaultV2MorphoMarketV1Adapter extends VaultV2Adapter implements IVaultV2MorphoMarketV1Adapter { readonly type: "VaultV2MorphoMarketV1Adapter"; /** * Returns the adapter-wide allocation-cap id. * * @param address - Adapter address. * @returns The adapter-wide allocation-cap id. * @example * ```ts * const id = VaultV2MorphoMarketV1Adapter.adapterCapId(adapter); * ``` */ static adapterCapId(address: Address): `0x${string}`; /** * Returns the collateral-wide allocation-cap id. * * @param address - Collateral token address. * @returns The collateral-wide allocation-cap id. * @example * ```ts * const id = VaultV2MorphoMarketV1Adapter.collateralCapId(collateral); * ``` */ static collateralCapId(address: Address): `0x${string}`; /** * Returns the adapter-market allocation-cap id. * * @param address - Adapter address. * @param params - Morpho Blue market parameters. * @returns The adapter-market allocation-cap id. * @example * ```ts * const id = VaultV2MorphoMarketV1Adapter.adapterMarketCapId( * adapter, * marketParams, * ); * ``` */ static adapterMarketCapId(address: Address, params: MarketParams): `0x${string}`; marketParamsList: MarketParams[]; constructor({ marketParamsList, ...vaultV2Adapter }: IVaultV2MorphoMarketV1Adapter); /** * Returns this adapter's allocation-cap ids for a Morpho Blue market. * * @param params - Morpho Blue market parameters. * @returns A readonly tuple containing the adapter, collateral, and adapter-market * allocation-cap ids, in that order. * @example * ```ts * import { * MarketParams, * VaultV2MorphoMarketV1Adapter, * } from "@morpho-org/blue-sdk"; * import { ZERO_ADDRESS } from "@morpho-org/morpho-ts"; * * const marketParams = MarketParams.idle(ZERO_ADDRESS); * const adapter = new VaultV2MorphoMarketV1Adapter({ * address: ZERO_ADDRESS, * parentVault: ZERO_ADDRESS, * skimRecipient: ZERO_ADDRESS, * marketParamsList: [marketParams], * }); * const [adapterCapId, collateralCapId, adapterMarketCapId] = * adapter.ids(marketParams); * ``` */ ids(params: MarketParams): readonly [ adapterCapId: Hash, collateralCapId: Hash, adapterMarketCapId: Hash ]; } /** Plain input shape for an accrued Morpho Blue market Vault V2 adapter. */ export interface IAccrualVaultV2MorphoMarketV1Adapter extends IVaultV2MorphoMarketV1Adapter { } /** Represents an accrued Morpho Blue market Vault V2 adapter. */ export declare class AccrualVaultV2MorphoMarketV1Adapter extends VaultV2MorphoMarketV1Adapter implements IAccrualVaultV2MorphoMarketV1Adapter, IAccrualVaultV2Adapter { positions: AccrualPosition[]; constructor(adapter: IAccrualVaultV2MorphoMarketV1Adapter, positions: AccrualPosition[]); /** {@inheritDoc IAccrualVaultV2Adapter.realAssets} */ realAssets(timestamp?: BigIntish): bigint; /** * Returns a new adapter whose underlying positions (and their markets) have * been accrued up to the given timestamp. * Past timestamps and markets already ahead of `timestamp` keep their snapshots * without throwing. Zero-share positions are left unchanged. * @param timestamp The timestamp at which to accrue interest. * @returns A new `AccrualVaultV2MorphoMarketV1Adapter` with contributing * positions accrued to `timestamp`. * @throws {UnsupportedMarketIrmError} when forward projection of a market with * positive debt requires an unsupported IRM. * @example * ```ts * import { * AccrualPosition, * AccrualVaultV2MorphoMarketV1Adapter, * MarketParams, * } from "@morpho-org/blue-sdk"; * import { ZERO_ADDRESS } from "@morpho-org/morpho-ts"; * * const marketParams = MarketParams.idle(ZERO_ADDRESS); * const position = new AccrualPosition( * { user: ZERO_ADDRESS, supplyShares: 0n, borrowShares: 0n, collateral: 0n }, * { * params: marketParams, * totalSupplyAssets: 0n, * totalBorrowAssets: 0n, * totalSupplyShares: 0n, * totalBorrowShares: 0n, * lastUpdate: 1_700_000_000n, * fee: 0n, * }, * ); * const adapter = new AccrualVaultV2MorphoMarketV1Adapter( * { * address: ZERO_ADDRESS, * parentVault: ZERO_ADDRESS, * skimRecipient: ZERO_ADDRESS, * marketParamsList: [marketParams], * }, * [position], * ); * const accrued = adapter.accrueInterest(position.market.lastUpdate); * // accrued.positions[0]!.market.lastUpdate === position.market.lastUpdate * ``` */ accrueInterest(timestamp: BigIntish): AccrualVaultV2MorphoMarketV1Adapter; maxDeposit(_data: Hex, assets: BigIntish): { value: bigint; limiter: CapacityLimitReason; }; maxWithdraw(data: Hex): import("../../utils.js").CapacityLimit; }