interface IRouter {
    // ======================= common ======================= //

    function init(
        IOperation.Type _type,
        address _operator,
        uint256 _amount,
        address _swapper,
        address _swapDest,
        bool _autoFinish
    ) external;

    function finish(address _operation) external;

    // ======================= deposit stable ======================= //

    function depositStable(uint256 _amount) external;

    function depositStable(address _operator, uint256 _amount) external;

    function initDepositStable(uint256 _amount) external;

    function finishDepositStable(address _operation) external;

    // ======================= redeem stable ======================= //

    function redeemStable(uint256 _amount) external;

    function redeemStable(address _operator, uint256 _amount) external;

    function initRedeemStable(uint256 _amount) external;

    function finishRedeemStable(address _operation) external;
}
function depositStable(uint256 _amount) external;

// ======================= deposit stable ======================= //