import { FetcherResult, OraclePriceEntry, ParseContext } from '../types';
/**
 * Teller Protocol V2 oracle price fetcher.
 *
 * Each `LenderCommitmentGroup` pool carries its OWN price mechanism (a Uniswap
 * V3 TWAP / Chainlink feed configured per pool) that values the collateral in
 * principal-token terms — the same price the pool uses to size a borrow's
 * collateral. We read `calculateCollateralTokensAmountEquivalentToPrincipalTokens`
 * (the raw value ratio, WITHOUT the overcollateralization factor) to get "how
 * much collateral equals 1 principal token in value", then invert to the
 * collateral price in principal terms.
 *
 * Why a dedicated fetcher: Teller pools list EXOTIC collateral no other protocol
 * on the chain prices (e.g. VCNT, LFI, DN-FLAGSHIP). Without this, those markets
 * would have no oracle price and their USD/risk numbers would be blank or wrong.
 * For the standard tokens (WETH/USDC/AERO) the generic pipeline already has a
 * price; this adds the exotic ones from Teller's OWN oracle — the correct source
 * for that market.
 *
 * Like Morpho/Midnight, Teller collateral prices are DERIVED: the collateral USD
 * needs the PRINCIPAL token's USD price from an earlier (Pass 1) parser. Parsed
 * with `updatePrices=false` so derived values never overwrite direct oracle reads.
 */
/** Grouped metadata for one pool (one equivalence call). */
interface TellerPoolMeta {
    pool: string;
    principal: string;
    principalDecimals: number;
    collateral: string;
    collateralDecimals: number;
}
/**
 * Build multicall calls for Teller oracles. One `FetcherResult` per curated pool
 * with a single call: the collateral amount whose value equals ONE principal
 * token. `lender` is the pool's `TELLER_<pool>` key so entries join the lending
 * data emitted by `convertTellerMarketsToResponse`.
 */
export declare function getTellerCalls(chainId: string): FetcherResult<TellerPoolMeta>[];
/**
 * Parse Teller oracle results. `data[0]` = the collateral base units of equal
 * value to 1 principal token. The collateral price in principal terms is
 * `10^collateralDecimals / rawCollateralUnits`; USD = that × principal USD.
 * Emits a principal entry (price = 1, the oracle's own unit) + the collateral
 * entry (derived).
 */
export declare function parseTellerResults(data: any[], meta: TellerPoolMeta, context: ParseContext): OraclePriceEntry[];
/** ABI for the Teller oracle call (the pool's value-equivalence view). */
export declare function getTellerAbi(): readonly [{
    readonly type: "function";
    readonly name: "getPrincipalTokenAddress";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "getCollateralTokenAddress";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "getMarketId";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "getMaxLoanDuration";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint32";
    }];
}, {
    readonly type: "function";
    readonly name: "principalToken";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "collateralToken";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "maxLoanDuration";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint32";
    }];
}, {
    readonly type: "function";
    readonly name: "poolSharesToken";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "getPrincipalAmountAvailableToBorrow";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "totalPrincipalTokensCommitted";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "totalPrincipalTokensLended";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "totalPrincipalTokensRepaid";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "getMinInterestRate";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "_amountDelta";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint16";
    }];
}, {
    readonly type: "function";
    readonly name: "calculateCollateralRequiredToBorrowPrincipal";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "_principalAmount";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "calculateCollateralTokensAmountEquivalentToPrincipalTokens";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "_principalAmount";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "sharesExchangeRate";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "rate_";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "getPoolUtilizationRatio";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "_activeLoansAmountDelta";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint16";
    }];
}, {
    readonly type: "function";
    readonly name: "addPrincipalToCommitmentGroup";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "_amount";
        readonly type: "uint256";
    }, {
        readonly name: "_sharesRecipient";
        readonly type: "address";
    }, {
        readonly name: "_minSharesAmountOut";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "sharesAmount_";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "prepareSharesForBurn";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "_amountPoolSharesTokens";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "bool";
    }];
}, {
    readonly type: "function";
    readonly name: "burnSharesToWithdrawEarnings";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "_amountPoolSharesTokens";
        readonly type: "uint256";
    }, {
        readonly name: "_recipient";
        readonly type: "address";
    }, {
        readonly name: "_minAmountOut";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "asset";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "address";
    }];
}, {
    readonly type: "function";
    readonly name: "totalAssets";
    readonly stateMutability: "view";
    readonly inputs: readonly [];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "convertToShares";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "convertToAssets";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "previewRedeem";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }];
    readonly outputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "maxWithdraw";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "maxRedeem";
    readonly stateMutability: "view";
    readonly inputs: readonly [{
        readonly name: "owner";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "deposit";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }, {
        readonly name: "receiver";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "mint";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }, {
        readonly name: "receiver";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "withdraw";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }, {
        readonly name: "receiver";
        readonly type: "address";
    }, {
        readonly name: "owner";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }];
}, {
    readonly type: "function";
    readonly name: "redeem";
    readonly stateMutability: "nonpayable";
    readonly inputs: readonly [{
        readonly name: "shares";
        readonly type: "uint256";
    }, {
        readonly name: "receiver";
        readonly type: "address";
    }, {
        readonly name: "owner";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "assets";
        readonly type: "uint256";
    }];
}];
/** Teller Oracle Fetcher module. */
export declare const tellerFetcher: {
    getCalls: typeof getTellerCalls;
    parse: typeof parseTellerResults;
    getAbi: typeof getTellerAbi;
};
export {};
//# sourceMappingURL=teller.d.ts.map