ISharedAssetController
Interface for the Reinsurance (Backstop) system.
View deployed contract addresses in the Contract Addresses section.
The ISharedAssetController manages the Reinsurance (Backstop) pool. This system provides a shared layer of protection for all Syndicates by absorbing losses that exceed a Syndicate's capacity and enabling liquidity during claim payouts.
Interface
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.20; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /** * @title ISharedAssetController * @notice Interface for the single-pool reinsurance controller * @dev Simplified ERC-4626 vault with backstop hook for future extensibility */ interface ISharedAssetController { // Events event PremiumReceived(uint256 amount); event DrawExecuted(uint256 requestedAmount, uint256 sentToCapitalPool); event AdapterChanged(address indexed newAdapter); event DepositToAdapter(uint256 amount); event Harvest(uint256 gainRealized); event LossRealized(uint256 lossAmount); event SalvageReceived(uint256 amount); event SalvageDistributed(uint256 amount); event BackstopHookUpdated(address indexed previousHook, address indexed newHook); event WithdrawalRequested(address indexed user, uint256 shares, uint256 unlockTime); // Views function asset() external view returns (address); function adapter() external view returns (address); function backstopHook() external view returns (address); function capitalPoolAddress() external view returns (address); function policyManagerAddress() external view returns (address); function riskManagerAddress() external view returns (address); function totalAssets() external view returns (uint256); function harvestCooldown() external view returns (uint256); function lastHarvestTimestamp() external view returns (uint256); function pendingSalvage() external view returns (uint256); function noticePeriod() external view returns (uint256); // Configuration (owner only) function setBackstopHook(address hook) external; function setAdapter(address newAdapter) external; function emergencySetAdapter(address newAdapter) external; function setHarvestCooldown(uint256 newCooldown) external; // Yield adapter operations function flushToAdapter(uint256 amount) external; function harvest() external; // Withdrawal queue function requestWithdrawal(uint256 shares) external; // Premium and drawdown function receiveUsdcPremium(uint256 amount) external; function drawFund(uint256 amountToDraw) external; function receiveSalvage(uint256 amount) external; function claimSalvage(uint256 policyId) external; // Emergency function emergencyTransferFromAdapter(address recipient, uint256 amount) external returns (uint256); function recoverERC20(IERC20 token, uint256 amount, address to) external; }
Backstop Flow
Related Documentation
- Backstop Pool - How the backstop system works
- ICapitalPool - Interacts with backstop for liquidity
- Claims & Salvage - Drawing from backstop