Skip to main content
import type { CollabKitUser, CollabKitRoom, CollabKitOrganization, CollabKitComment, CollabKitUserSession } from '@collab-kit/utils';

CollabKitUser

Represents a user in a room.
interface CollabKitUser {
  id: string;
  room_id: string;
  name: string;
  profile_picture?: string;
  custom_id?: string;          // optional external identifier
  created_at: string;
  joined_at?: string;
  left_at?: string;
  status: 'online' | 'offline';
  token?: string;
  following?: string[];
  followers?: string[];
}

CollabKitRoom

Represents a collaboration room.
interface CollabKitRoom {
  id: string;
  account_id: string;
  name: string;
  custom_id?: string;          // optional external identifier
  created_at: string;
  state: 'active' | 'disabled';
  duration_seconds: number;
  active_participants: number;
  total_users_created: number;
}

CollabKitOrganization

Represents an organization (account).
interface CollabKitOrganization {
  id: string;
  user_id: string;
  email: string;
  name: string;
  description?: string;
  created_at: string;
  status: 'active' | 'disabled' | 'blocked';
}

CollabKitClientOptions

Options passed to the CollabKitClient constructor.
interface CollabKitClientOptions<T extends StoresConfig = StoresConfig> {
  serverUrl: string;
  authToken: string;
  stores?: T;
}

CollabKitComment

Represents a comment (top-level or reply).
interface CollabKitComment {
  id: string;
  userId: string;
  text: string;
  reactions: Record<string, string[]>;
  tags: string[];
  parentId: string | null;
  replies: CollabKitComment[];
  createdAt: string;
}

CollabKitUserSession

A user’s session record (join/leave timestamps).
interface CollabKitUserSession {
  id: string;
  user_id: string;
  room_id: string;
  joined_at: string;
  left_at?: string;
}