// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IAtomicFulfillerRegistry {
    function depositBond(uint256 amount) external;

    function withdrawBond(uint256 amount, address recipient) external;

    function lockBond(bytes32 obligationId, address fulfiller, bytes32 corridorId, uint256 amount) external;

    function releaseBond(bytes32 obligationId) external returns (uint256 amount);

    function slashBond(bytes32 obligationId, address recipient) external returns (uint256 amount);

    function availableBond(address fulfiller) external view returns (uint256);

    function isFulfillerAuthorized(address fulfiller, bytes32 corridorId) external view returns (bool);

    function canCover(address fulfiller, uint256 amount) external view returns (bool);
}
