import { type Hex } from "viem"; export declare enum InterestRateModelType { UNKNOWN = 0, KINK = 1, ADAPTIVE_CURVE = 2, KINKY = 3, FIXED_CYCLICAL_BINARY = 4, FIXED_CYCLICAL_BINARY_MONTHLY = 5 } export interface KinkIRMInfo { baseRate: bigint; slope1: bigint; slope2: bigint; kink: bigint; } export interface LinearKinkIRMParams { kinkPct: number; baseBorrowAPY: number; kinkBorrowAPY: number; maxBorrowAPY: number; baseSupplyAPY: number; kinkSupplyAPY: number; maxSupplyAPY: number; } export interface AdaptiveCurveIRMInfo { targetUtilization: bigint; initialRateAtTarget: bigint; minRateAtTarget: bigint; maxRateAtTarget: bigint; curveSteepness: bigint; adjustmentSpeed: bigint; } export interface KinkyIRMInfo { baseRate: bigint; slope: bigint; shape: bigint; kink: bigint; cutoff: bigint; } export interface FixedCyclicalBinaryIRMInfo { primaryRate: bigint; secondaryRate: bigint; primaryDuration: bigint; secondaryDuration: bigint; startTimestamp: bigint; } export interface FixedCyclicalBinaryMonthlyIRMInfo { primaryRate: bigint; secondaryRate: bigint; cycleStartDay: bigint; secondaryDays: bigint; } export type IRMParams = KinkIRMInfo | AdaptiveCurveIRMInfo | KinkyIRMInfo | FixedCyclicalBinaryIRMInfo | FixedCyclicalBinaryMonthlyIRMInfo; export declare const ADAPTIVE_RATE_AT_TARGET_TO_BORROW_SPY_SCALE: bigint; export declare function adaptiveRateAtTargetToBorrowSPY(wadPerSecond: bigint): bigint | null; /** * Decodes IRM parameters from the encoded bytes returned by IRMLens.getInterestRateModelInfo * @param type The interest rate model type * @param params The encoded parameters as a hex string * @returns The decoded IRM parameters matching the specified type * @throws Error if the type is UNKNOWN or invalid */ export declare function decodeIRMParams(type: InterestRateModelType, params: Hex): IRMParams; export declare function normalizeIRMParams(type: InterestRateModelType, data: unknown): IRMParams | null; export declare function decorateIRMParams(type: InterestRateModelType.KINK, data: KinkIRMInfo | null, interestFee: number): LinearKinkIRMParams | null; export declare function decorateIRMParams(type: InterestRateModelType.ADAPTIVE_CURVE, data: AdaptiveCurveIRMInfo | null, interestFee: number): null; export declare function decorateIRMParams(type: InterestRateModelType.KINKY, data: KinkyIRMInfo | null, interestFee: number): null; export declare function decorateIRMParams(type: InterestRateModelType.FIXED_CYCLICAL_BINARY, data: FixedCyclicalBinaryIRMInfo | null, interestFee: number): null; export declare function decorateIRMParams(type: InterestRateModelType.FIXED_CYCLICAL_BINARY_MONTHLY, data: FixedCyclicalBinaryMonthlyIRMInfo | null, interestFee: number): null; export declare function decorateIRMParams(type: InterestRateModelType, data: IRMParams | null, interestFee: number): LinearKinkIRMParams | null; //# sourceMappingURL=irm.d.ts.map