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

import {AtomicTypes} from "../AtomicTypes.sol";

interface IAtomicLiquidityVault {
    function fundCorridor(bytes32 corridorId, address token, uint256 amount) external;

    function reserveLiquidity(bytes32 corridorId, address token, bytes32 obligationId, uint256 amount) external;

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

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

    function reconcileSettlement(bytes32 corridorId, address token, uint256 amount, address from) external;

    function getCorridorLiquidityState(bytes32 corridorId, address token)
        external
        view
        returns (AtomicTypes.CorridorLiquidityState memory);

    function freeLiquidity(bytes32 corridorId, address token) external view returns (uint256);
}
