export type ChannelStatus = {
  channel_id: number;
  streamer_id: number;
  kick_channel_id: string;
  kick_user_id: string;
  kick_chatroom_id: string;
  slug: string;
  display_name: string;
  live_status: "online" | "offline" | "unknown";
  link_status?: "pending" | "verified";
  bot_enabled?: boolean;
  moderator_status: ModeratorStatus;
};

export type ModeratorStatus =
  | "not_added"
  | "checking"
  | "moderator"
  | "removed"
  | "session_unavailable"
  | "channel_unavailable"
  | "unknown";

export type ChatSender = {
  kick_user_id: string;
  username: string;
  roles: string[];
};

export type ChatMessage = {
  event_id: string;
  channel_id: number;
  kick_channel_id: string;
  kick_chatroom_id: string;
  content: string;
  sender: ChatSender;
  created_at: string;
};

export type OutboundMessage = {
  id: number;
  channel_id: number;
  message_text: string;
  priority: number;
  module: string;
  attempts: number;
  idempotency_key: string;
  kick_channel_id: string;
  kick_chatroom_id: string;
  slug: string;
};

export type SessionPayload = {
  version: 2;
  provider: "kick";
  accountUsername: "fiIyx";
  kickUserId: string;
  accessToken: string;
  refreshToken: string;
  tokenType: "Bearer";
  scopes: string[];
  expiresAt: string;
  lastValidatedAt: string;
};

export type EngineEvent = {
  id: string;
  channel_id: number;
  type: string;
  payload: Record<string, unknown>;
};

export type InboundKickEvent = {
  id: number;
  channel_id: number;
  kick_message_id: string;
  event_type: string;
  event_version: string;
  payload_json: string;
  attempts: number;
};
