interface ISwapRegistry {
    /** @notice Log when a new `ISwap` is registered */
    event SwapRegistered(ISwap swap);

    /** @notice Log when an `ISwap` is removed */
    event SwapRemoved(string name);

    /**
     * @notice Add a new `ISwap` to the registry
     * @dev Should not allow duplicate swaps
     * @param swap The new `ISwap`
     */
    function registerSwap(ISwap swap) external;

    /**
     * @notice Remove an `ISwap` from the registry
     * @param name The name of the `ISwap` (see `INameIdentifier`)
     */
    function removeSwap(string calldata name) external;

    /**
     * @notice Get the names of all registered `ISwap`
     * @return An array of `ISwap` names
     */
    function swapNames() external view returns (string[] memory);
}
/**
 * @notice For managing a collection of `ISwap` contracts
 */
function removeSwap(string calldata name) external;

/**
 * @notice Remove an `ISwap` from the registry
 * @param name The name of the `ISwap` (see `INameIdentifier`)
 */