LayerCover

IRMSalvageManager

Interface reference for IRMSalvageManager.

Interface

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

/**
 * @title IRMSalvageManager
 * @notice RiskManager-facing interface for initializing and distributing salvage recoveries.
 */
interface IRMSalvageManager {
    function initializeSalvage(
        uint256 policyId,
        address salvageAsset,
        uint256 amount,
        uint256 poolId,
        address recipient
    ) external returns (uint256 received);

    function claimSalvage(address underwriter, uint256 policyId) external returns (uint256 claimed);

    function sweepSalvageRemainder(uint256 policyId, address to) external;

    // ===========================================
    // ======== Atomic Getters for Viewer ========
    // ===========================================

    function getSalvageState(uint256 policyId)
        external
        view
        returns (
            address asset,
            uint256 totalAmount,
            uint256 claimedAmount,
            uint256 poolId,
            uint64 initializedAt
        );

    function getSalvageEntitlement(uint256 policyId, address user) external view returns (uint256);
    function getSalvageClaimed(uint256 policyId, address user) external view returns (uint256);

    function getSalvageCount() external view returns (uint256);
    function getSalvageIdAt(uint256 index) external view returns (uint256);

    function getSalvageCountForPool(uint256 poolId) external view returns (uint256);
    function getSalvageIdForPoolAt(uint256 poolId, uint256 index) external view returns (uint256);

    function getPoolsWithSalvageCount() external view returns (uint256);
    function getPoolWithSalvageAt(uint256 index) external view returns (uint256);
}