export type DiscordKind = "map" | "party"; export type DiscordAnnouncement = { id: string; kind: DiscordKind; target_id: string; state: "pending" | "sending" | "sent" | "skipped" | "failed"; attempts: number; next_attempt_at: string; lease_owner: string | null; lease_until: string | null; channel_id: string | null; message_id: string | null; last_error: string | null; created_at: string; sent_at: string | null; closed_at?: string | null; delete_after?: string | null; deleted_at?: string | null; cleanup_run_id?: string | null; cleanup_lease_until?: string | null; cleanup_error?: string | null; }; export type PartyAnnouncement = { available: boolean; state: DiscordAnnouncement["state"] | null; }; export type DiscordStatus = { botConfigured: boolean; publicUrlConfigured: boolean; mapsConfigured: boolean; partiesConfigured: boolean; pending: number; failed: number; sent: number; };