import { MorphoGeneralPublicResponse } from '../../../types/lender/morpho-types';
import { AdditionalYields, GenericTokenList } from '../../../types';
import type { ExactlyMarketsRaw } from './types';
/** Synthesized per-market lender key, e.g. `EXACTLY_<MARKET_ADDRESS_HEX_UPPER>`. */
export declare function exactlyLenderKey(market: string): string;
/** Recover the Market address from an `EXACTLY_<HEX>` lender key (or undefined). */
export declare function exactlyMarketFromLenderKey(lender: string): string | undefined;
/**
 * Map the on-chain Previewer batch into the shared `MorphoGeneralPublicResponse`
 * shape (identical to Midnight/Term), keyed by `EXACTLY_<MARKET_ADDRESS>` — one
 * key per asset Market (NOT per maturity; the maturity menu is the market's
 * `params.market.terms[]`, `termId` = maturity timestamp).
 *
 * Per market:
 *  - the LOAN entry carries the FLOATING rates (`depositRate` /
 *    `variableBorrowRate`) plus the best live fixed borrow APR on
 *    `stableBorrowRate`; its own asset is also collateral (self-pair
 *    adjustFactor²) since Exactly is cross-margin;
 *  - one COLLATERAL entry per SIBLING market (cross-margin: any entered market
 *    collateralizes any borrow) with pairwise LTV = adjF_coll × adjF_borrow
 *    (multiplicative, Dolomite-style) and the Auditor liquidation bonus;
 *  - `params.market.fixedTerm` = `{ model: 'exactly', earlyRepay: 'discount',
 *    fees.latePenaltyApr }` — see the wrapper README for the repay mechanics.
 */
export declare function convertExactlyMarketsToResponse(raw: ExactlyMarketsRaw, chainId: string, prices?: {
    [asset: string]: number;
}, _additionalYields?: AdditionalYields, tokens?: GenericTokenList): {
    [m: string]: MorphoGeneralPublicResponse;
};
//# sourceMappingURL=convertPublic.d.ts.map