// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @title IPilotAccessControllerV3
/// @notice Small shared surface required by V3 factories and bond positions.
/// @dev This intentionally avoids coupling a Base-only deployment flow to a
///      concrete controller profile. All implementations must fail closed on
///      an incompatible chain before returning a different requiredChainId.
interface IPilotAccessControllerV3 {
    function requiredChainId() external view returns (uint256);

    function isDesignPartner(address partner) external view returns (bool);

    function positionDesignPartner(address position) external view returns (address);

    function registerGuardianPauseablePosition(address designPartner, address position, uint256 initialAllocation)
        external;

    function increasePositionAllocation(address position, uint256 amount) external;

    function releasePositionAllocation(address position, uint256 amount) external;
}
