def info(server, channel=None, layer=None):
    """
    Get information about a channel or a specific layer on a channel.
    If layer is omitted information about the whole channel is returned.
    If both video_channel and layer are omitted, retrieves a list of the available channels.

    :param CasparServer server: The :py:class:`~caspartalk.CasparServer` that the *amcp_command* will be sent to.
    :param int channel: The number of the channel to query.
    :param int layer: The number of the layer on channel *channel* to query.
    :rtype: List
    :return: A list containing either a list of channels, the information about a given channel or information \
    about a given layer on a channel.
    """
    # INFO [video_channel:int]{-[layer:int]}

    if channel:
        if layer:
            amcp_string = "INFO {video_channel}-{layer}".format(video_channel=channel,
                                                                layer=layer)
        else:
            amcp_string = "INFO {video_channel}".format(video_channel=channel)
    else:
        amcp_string = "INFO"

    response = server.send_amcp_command(amcp_string)

    if response:
        return response[0]
    else:
        return None