/**
 * Matrix Node - Version 1
 * Discriminator: resource=roomMember, operation=getAll
 */


interface Credentials {
  matrixApi: CredentialReference;
}

/** Get many messages from a room */
export type MatrixV1RoomMemberGetAllParams = {
  resource: 'roomMember';
  operation: 'getAll';
/**
 * Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;
 */
    roomId?: string | Expression<string>;
/**
 * Filtering options
 * @default {}
 */
    filters?: {
    /** Excludes members whose membership is other than selected (uses OR filter with membership)
     */
    notMembership?: '' | 'ban' | 'invite' | 'join' | 'leave' | Expression<string>;
    /** Only fetch users with selected membership status (uses OR filter with exclude membership)
     */
    membership?: '' | 'ban' | 'invite' | 'join' | 'leave' | Expression<string>;
  };
};

export type MatrixV1RoomMemberGetAllOutput = {
  age?: number;
  content?: {
    avatar_url?: string;
    displayname?: string;
    membership?: string;
  };
  event_id?: string;
  origin_server_ts?: number;
  replaces_state?: string;
  room_id?: string;
  sender?: string;
  state_key?: string;
  type?: string;
  unsigned?: {
    age?: number;
    replaces_state?: string;
  };
  user_id?: string;
};

export type MatrixV1RoomMemberGetAllNode = {
  type: 'n8n-nodes-base.matrix';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<MatrixV1RoomMemberGetAllParams>;
  output?: Items<MatrixV1RoomMemberGetAllOutput>;
};