@moonwell-fi/moonwell-sdk
Version:
TypeScript Interface for Moonwell
67 lines • 3 kB
TypeScript
/**
* Lunar Indexer Response Transformers
*
* Transforms Lunar Indexer API responses to match the SDK's internal types.
*/
import type { MarketSnapshot } from "../types/market.js";
import type { MorphoVaultStakingSnapshot } from "../types/morphoVault.js";
import type { StakingSnapshot } from "../types/staking.js";
import type { UserPositionSnapshot } from "../types/userPosition.js";
import type { LunarMarketSnapshot, LunarPortfolio, LunarStakingSnapshot, LunarVaultStakingSnapshot } from "./lunar-indexer-client.js";
/**
* Transform a Lunar market snapshot to SDK MarketSnapshot format
*
* Key differences:
* - Lunar uses decimal numbers, SDK uses numbers
* - Lunar has timeInterval field (not needed in SDK)
* - Field name mapping: totalSupplies → totalSupply, totalBorrows → totalBorrows
*/
export declare function transformMarketSnapshot(lunar: LunarMarketSnapshot, chainId: number): MarketSnapshot;
/**
* Transform an array of Lunar market snapshots
*/
export declare function transformMarketSnapshots(snapshots: LunarMarketSnapshot[], chainId: number): MarketSnapshot[];
/**
* Transform Lunar portfolio to SDK UserPositionSnapshot array
*
* Key transformation:
* - Aggregate per-market USD balances across all markets per timestamp
* - Sum supplyBalanceUsd → totalSupplyUsd
* - Sum borrowBalanceUsd → totalBorrowsUsd
* - Assume totalCollateralUsd = totalSupplyUsd (all supplies are collateral)
*/
export declare function transformPortfolioToSnapshots(lunarPortfolio: LunarPortfolio, chainId: number): UserPositionSnapshot[];
/**
* Transform a Lunar staking snapshot to SDK StakingSnapshot format
*
* Key differences:
* - Lunar returns totalStaked/totalStakedUSD as decimal strings
* - Lunar timestamp is already in Unix seconds (same as SDK)
*/
export declare function transformStakingSnapshot(snapshot: LunarStakingSnapshot): StakingSnapshot;
/**
* Transform an array of Lunar staking snapshots
*/
export declare function transformStakingSnapshots(snapshots: LunarStakingSnapshot[]): StakingSnapshot[];
/**
* Transform a Lunar vault staking snapshot to SDK MorphoVaultStakingSnapshot format
*
* Key differences:
* - Lunar returns totalStaked/totalStakedUSD as decimal strings
* - Lunar timestamp is in Unix seconds; SDK expects milliseconds
* - Lunar field is totalStakedUSD (uppercase); SDK type is totalStakedUsd (mixed case)
*/
export declare function transformVaultStakingSnapshot(snapshot: LunarVaultStakingSnapshot): MorphoVaultStakingSnapshot;
/**
* Transform an array of Lunar vault staking snapshots
*/
export declare function transformVaultStakingSnapshots(snapshots: LunarVaultStakingSnapshot[]): MorphoVaultStakingSnapshot[];
/**
* Check if there are more pages available
*/
export declare function hasMorePages(nextCursor: string | null): boolean;
/**
* Extract cursor for next page
*/
export declare function getNextCursor(nextCursor: string | null): string | undefined;
//# sourceMappingURL=lunar-indexer-transformers.d.ts.map