@taufinancexyz/blue-sdk-viem
v1.0.0
Published
Viem-based augmentation of `@taufinancexyz/blue-sdk` that exports (and optionally injects) viem-based fetch methods.
Readme
@taufinancexyz/blue-sdk-viem
Viem-based augmentation of @taufinancexyz/blue-sdk that exports (and optionally injects) viem-based fetch methods.
Installation
npm install @taufinancexyz/blue-sdk-viemyarn add @taufinancexyz/blue-sdk-viemGetting Started
Augment blue-sdk entity classes with fetchers
Opt in classes augmentation to easily fetch an entire entity of the Morpho Blue & MetaMorpho ecosystem using viem:
// Granular, opt-in, per-entity class augmentation:
import "@taufinancexyz/blue-sdk-viem/lib/augment/AccrualPosition";
import "@taufinancexyz/blue-sdk-viem/lib/augment/Holding";
import "@taufinancexyz/blue-sdk-viem/lib/augment/Market";
import "@taufinancexyz/blue-sdk-viem/lib/augment/MarketParams";
import "@taufinancexyz/blue-sdk-viem/lib/augment/Position";
import "@taufinancexyz/blue-sdk-viem/lib/augment/Token";
import "@taufinancexyz/blue-sdk-viem/lib/augment/VaultConfig";
import "@taufinancexyz/blue-sdk-viem/lib/augment/Vault";
import "@taufinancexyz/blue-sdk-viem/lib/augment/VaultUser";
import "@taufinancexyz/blue-sdk-viem/lib/augment/VaultMarketAllocation";
import "@taufinancexyz/blue-sdk-viem/lib/augment/VaultMarketConfig";
import "@taufinancexyz/blue-sdk-viem/lib/augment/VaultMarketPublicAllocatorConfig";
// Or full, opt-in class augmentation:
import "@taufinancexyz/blue-sdk-viem/lib/augment";Fetch the config of a specific market
Leverage the MarketParams class to fetch information on a given market's immutable configuration:
import { MarketId } from "@taufinancexyz/blue-sdk";
// /!\ Import AccrualPosition from the augmentation file (or simply import the file)
import { MarketParams } from "@taufinancexyz/blue-sdk-viem/lib/augment/MarketParams";
const config = await MarketParams.fetch(
"0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc" as MarketId,
client // viem client.
);
config.collateralToken; // e.g. 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0.Fetch data of a specific market
Leverage the Market class to fetch information on a specific market:
import { Time } from "@taufinancexyz/morpho-ts";
import { MarketId } from "@taufinancexyz/blue-sdk";
// /!\ Import AccrualPosition from the augmentation file (or simply import the file)
import { Market } from "@taufinancexyz/blue-sdk-viem/lib/augment/Market";
const market = await Market.fetch(
"0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc" as MarketId,
client // viem client.
);
market.utilization; // e.g. 92% (scaled by WAD).
market.liquidity; // e.g. 23_000000n (in loan assets).
const accruedMarket = market.accrueInterest(Time.timestamp()); // Accrue interest to the latest's timestamp.
accruedMarket.toSupplyAssets(shares); // Convert supply shares to assets.
accruedMarket.apyAtTarget; // e.g. 3% (scaled by WAD).
accruedMarket.borrowApy; // e.g. 8% (scaled by WAD).Fetch data on the position of a specific user on a specific market
Leverage the Position class to fetch the position of a user on a given market:
import { Time } from "@taufinancexyz/morpho-ts";
import { MarketId } from "@taufinancexyz/blue-sdk";
// /!\ Import AccrualPosition from the augmentation file (or simply import the file)
import { AccrualPosition } from "@taufinancexyz/blue-sdk-viem/lib/augment/Position";
const position = await AccrualPosition.fetch(
"0x7f65e7326F22963e2039734dDfF61958D5d284Ca",
"0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc" as MarketId,
client // viem client.
);
position.borrowAssets; // e.g. 23_000000n (in loan assets).
position.isHealthy; // e.g. true.
position.maxBorrowableAssets; // e.g. 2100_000000n (in loan assets).
const accruedPosition = position.accrueInterest(Time.timestamp()); // Accrue interest to the latest's timestamp.
position.borrowAssets; // e.g. 23_500000n (in loan assets).