import { SlashCommandBuilder, ChatInputCommandInteraction, PermissionResolvable, Client } from 'discord.js';

export interface SlashCommand {
  data: SlashCommandBuilder;
  execute: (interaction: ChatInputCommandInteraction, client: Client) => Promise<void>;
  cooldown?: number;
  requiredPermissions?: PermissionResolvable[];
  guildOnly?: boolean;
}

export interface EventHandler {
  name: string;
  once?: boolean;
  execute: (...args: any[]) => Promise<void> | void;
}

export interface TicketRecord {
  id: string;
  userId: string;
  channelId: string;
  guildId: string;
  topic?: string;
  priority?: 'low' | 'normal' | 'high';
  status: TicketStatus;
  claimedBy?: string;
  transcript?: string;
  firstClaimAt?: Date | null;
  firstResponseAt?: Date | null;
  kbSuggestionSentAt?: Date | null;
  createdAt?: Date;
  updatedAt?: Date;
}

export type TicketStatus = 'neu' | 'in_bearbeitung' | 'warten_auf_user' | 'erledigt' | 'open' | 'in-progress' | 'closed';

export interface ForumUser {
  discordId: string;
  forumUserId: string;
  username?: string;
}

export interface ForumRoleSync {
  discordRoleId: string;
  forumRoleId: string;
}

export interface ForumTicketLink {
  ticketId: string;
  forumThreadId?: string;
}
