import { FetcherResult, OraclePriceEntry, ParseContext } from '../types';
/**
 * Term Finance oracle price fetcher.
 *
 * Term values collateral against `TermPriceConsumerV3` (one singleton per
 * chain, `config.priceOracle`) — the SAME oracle it liquidates against, so it
 * is the correct source for a Term borrower's liquidation risk (its prices can
 * differ from a generic Chainlink read; without this, Term collateral was only
 * priced by cross-protocol flattening, which uses OTHER protocols' feeds).
 *
 * `usdValueOfTokens(token, amount)` returns the USD value of `amount` tokens as
 * an Exp `{ mantissa }` (1e18-scaled). Passing `amount = 10^decimals` yields the
 * price of ONE whole token → direct USD (PASS 1). Many repos share the same
 * collateral/loan tokens, so calls are DEDUPED per unique token (one call each)
 * and the parser fans each priced token out to every repo that uses it.
 */
interface TermTokenMeta {
    token: string;
    /** All repo lender keys (`TERM_FINANCE_<id>`) that reference this token. */
    repoKeys: string[];
}
/** One `usdValueOfTokens(token, 10^dec)` call per unique Term token on a chain. */
export declare function getTermCalls(chainId: string): FetcherResult<TermTokenMeta>[];
/**
 * Parse a token's `usdValueOfTokens(token, 10^dec)` result (Exp mantissa, the
 * per-whole-token USD price in 1e18) into one direct-USD entry per repo that
 * uses the token, keyed by that repo's `TERM_FINANCE_<id>` lender so the
 * marketUids join the Term lending data.
 */
export declare function parseTermResults(data: any[], meta: TermTokenMeta, context: ParseContext): OraclePriceEntry[];
/** ABI for the Term oracle call (`usdValueOfTokens`). */
export declare function getTermAbi(): readonly [{
    readonly type: "function";
    readonly name: "usdValueOfTokens";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "token";
        readonly type: "address";
    }, {
        readonly name: "amount";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly components: readonly [{
            readonly name: "mantissa";
            readonly type: "uint256";
        }];
    }];
}];
/** Term Finance Oracle Fetcher module. */
export declare const termFetcher: {
    getCalls: typeof getTermCalls;
    parse: typeof parseTermResults;
    getAbi: typeof getTermAbi;
};
export {};
//# sourceMappingURL=term.d.ts.map