LayerCover

IDenominationAdapter

Interface reference for IDenominationAdapter.

Interface

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/**
 * @title IDenominationAdapter
 * @notice Generic interface for converting between base denomination (e.g. ETH) and
 *         underwriting denomination (e.g. wstETH, USDC, or any future denomination)
 * @dev Used by PolicyManager for denomination-agnostic coverage pricing.
 *      Each deployment instance sets the appropriate adapter:
 *        - wstETH instance → WstETHPriceAdapter (converts ETH → wstETH)
 *        - USDC instance  → no adapter needed (address(0), pass-through)
 *        - Future tokens   → custom adapter implementing this interface
 */
interface IDenominationAdapter {
    /**
     * @notice Convert a raw amount (base denomination) to underwriting denomination
     * @param rawAmount Amount in base denomination (e.g. ETH, 18 decimals)
     * @return converted Amount in underwriting denomination (e.g. wstETH, 18 decimals)
     */
    function convertToUnderwritingDenomination(uint256 rawAmount) external view returns (uint256 converted);

    /**
     * @notice Convert an underwriting denomination amount back to base denomination
     * @param amount Amount in underwriting denomination (e.g. wstETH, 18 decimals)
     * @return converted Amount in base denomination (e.g. ETH, 18 decimals)
     */
    function convertFromUnderwritingDenomination(uint256 amount) external view returns (uint256 converted);
}