/**
 * 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