* THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
*/
#pragma once
#include"types.hpp"
#include"csapi/definitions/room_event_filter.hpp"
#include"csapi/definitions/event_filter.hpp"
namespaceKazv::Api{
/// Filters to be applied to room data.
structRoomFilter
{
/// A list of room IDs to exclude. If this list is absent then no rooms are excluded. A matching room will be excluded even if it is listed in the ``'rooms'`` filter. This filter is applied before the filters in ``ephemeral``, ``state``, ``timeline`` or ``account_data``
immer::array<std::string>notRooms;
/// A list of room IDs to include. If this list is absent then all rooms are included. This filter is applied before the filters in ``ephemeral``, ``state``, ``timeline`` or ``account_data``
immer::array<std::string>rooms;
/// The events that aren't recorded in the room history, e.g. typing and receipts, to include for rooms.
RoomEventFilterephemeral;
/// Include rooms that the user has left in the sync, default false
std::optional<bool>includeLeave;
/// The state events to include for rooms.
RoomEventFilterstate;
/// The message and state update events to include for rooms.
RoomEventFiltertimeline;
/// The per user account data to include for rooms.
/// List of event fields to include. If this list is absent then all fields are included. The entries may include '.' characters to indicate sub-fields. So ['content.body'] will include the 'body' field of the 'content' object. A literal '.' character in a field name may be escaped using a '\\'. A server may include more fields than were requested.
immer::array<std::string>eventFields;
/// The format to use for events. 'client' will return the events in a format suitable for clients. 'federation' will return the raw event as received over federation. The default is 'client'.
std::optional<std::string>eventFormat;
/// The presence updates to include.
EventFilterpresence;
/// The user account data that isn't associated with rooms to include.