LayerCover

IPoolRegistry

Interface for the central registry of underwriting pools.

View deployed contract addresses in the Contract Addresses section.

The IPoolRegistry is the source of truth for all underwriting pools. It stores static configuration data (e.g., risk rating, fee recipient) and dynamic state (e.g., pause status, coverage sold) for each pool. Launch docs focus on the live stablecoin and vault-cover pool configuration.

Interface

// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.20;

import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {Types} from "../libraries/helpers/Types.sol";
import {IPoolCreationPolicy} from "./IPoolCreationPolicy.sol";

/**
 * @title IPoolRegistry
 * @notice Interface for the PoolRegistry contract.
 * @dev CORRECTED: Removed duplicate function declarations and unused enums.
 * The RiskRating enum is now centralized in Types.
 */
interface IPoolRegistry {
    // --- Functions ---

    function updateCoverageSold(uint256 poolId, uint256 amount, bool isSale) external;

    function getPoolCount() external view returns (uint256);

    function setPauseState(uint256 poolId, bool isPaused) external;

    function setFeeRecipient(uint256 poolId, address recipient) external;

    function setPoolRiskRating(uint256 poolId, Types.RiskRating newRating) external;



    function getPoolFeeRecipient(uint256 poolId) external view returns (address);

    function getPoolStaticData(uint256 poolId) external view returns (
        IERC20 protocolTokenToCover,
        uint256 totalCoverageSold,
        bool isPaused,
        address feeRecipient,
        uint256 claimFeeBps,
        Types.RiskRating riskRating,
        bool useEscrow,
        bool isYieldRewardPool,
        uint256 coverageCap
    );

    function addProtocolRiskPool(
        address protocolTokenToCover,

        uint256 claimFeeBps,
        Types.RiskRating riskRating,
        bool usesVaultCover
    ) external returns (uint256);

    function getPoolRiskRating(uint256 poolId) external view returns (Types.RiskRating);

    function setPoolCoverageCap(uint256 poolId, uint256 cap) external;
    function getPoolCoverageCap(uint256 poolId) external view returns (uint256);



    function setReinsurerApproval(address reinsurer, bool approved) external;
    function isApprovedReinsurer(address reinsurer) external view returns (bool);
    
    // ─────────────────── Focused Getters (gas-efficient single-field access) ───────────────────
    
    /// @notice Get pool fee configuration
    /// @return claimFeeBps Fee in basis points
    /// @return feeRecipient Address receiving fees
    function getPoolFeeConfig(uint256 poolId) external view returns (uint256 claimFeeBps, address feeRecipient);
    
    /// @notice Check if pool is paused
    function isPoolPaused(uint256 poolId) external view returns (bool);
    
    /// @notice Get pool's total coverage sold
    function getPoolCoverageSold(uint256 poolId) external view returns (uint256);
    
    /// @notice Get pool's vault cover configuration
    /// @return protocolToken The protocol token for vault cover
    /// @return usesVaultCover Whether pool uses vault cover
    function getPoolVaultCoverConfig(uint256 poolId) external view returns (address protocolToken, bool usesVaultCover);

    /// @notice Get the policy NFT transfer mode for a pool
    function getPoolPolicyTransferMode(uint256 poolId) external view returns (Types.PolicyTransferMode);

    /// @notice Set the policy NFT transfer mode for a pool
    function setPoolPolicyTransferMode(uint256 poolId, Types.PolicyTransferMode mode) external;

    /// @notice Set the pool creation policy contract
    function setPoolCreationPolicy(address policy) external;
    /// @notice Get the current pool creation policy
    function poolCreationPolicy() external view returns (IPoolCreationPolicy);
}

Pool Types

The launch registry supports the live pool types created via addProtocolRiskPool:

Stablecoin And Vault Pools

FieldDescription
protocolTokenToCoverThe token or vault share being insured
claimFeeBpsClaim fee applied when a policyholder executes a claim
riskRatingPool risk grade used by underwriters when allocating capital
usesVaultCovertrue for vault-share cover, false for standard token cover