LayerCover

IPolicyManager

Interface for policy issuance and lifecycle management.

View deployed contract addresses in the Contract Addresses section.

The IPolicyManager is the central entry point for the insurance policy system. It handles policy issuance, modifications, expiration, and claims. It uses a unified purchase flow via the purchaseCoverage function.

Interface

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

import "./IPolicyNFT.sol";
import {Types} from "../libraries/helpers/Types.sol";

/**
 * @title IPolicyManager
 * @notice Interface for policy lifecycle orchestration, configuration, and cover purchase flows.
 * @dev Coordinates premium settings, policy activation state, and upgradeable control hooks.
 */
interface IPolicyManager {
    function policyNFT() external view returns (IPolicyNFT);
    function isPolicyActive(uint256 policyId) external view returns (bool);

    function configureGovernanceSettings(Types.PolicyGovernanceConfig calldata config) external;
    function configureYieldSettings(Types.PolicyYieldConfig calldata config) external;

    function settlePremiumForClaim(uint256 policyId) external returns (bool);
    function forceVoidPolicy(uint256 policyId, uint256 incidentBlock) external;
    function catPremiumBps() external view returns (uint16);

    function purchaseCoverage(Types.PurchaseParams memory params) external returns (uint256 policyId);

    function cancelCover(uint256 policyId) external;

    function forceInitialize() external;
    function upgradeToAndCall(address newImplementation, bytes calldata data) external;
}

PurchaseParams Struct

The unified purchaseCoverage function uses a PurchaseParams struct:

FieldTypeDescription
buyeraddressAddress that will own the policy NFT
poolIduint256The underwriting pool providing coverage
coverageAmountuint256Maximum payout amount in case of claim
agreedRateBpsuint256Annual premium rate in basis points
premiumDeposituint256Upfront premium payment amount
backingUnderwriteraddressSyndicate providing coverage capital
durationuint256Coverage period in seconds
requiresUpfrontboolWhether full premium must be paid upfront
reservationKeybytes32Unique key for capital reservation
referralCodebytes32Optional referral code for rewards
vaultaddress(Vault Cover) The ERC4626 vault being insured
sharesToCoveruint256(Vault Cover) Number of vault shares to protect

Policy Flow