import { ChatInputCommandInteraction, Message } from 'discord.js'; // Helper type export type DeepRequired = T extends object ? { [K in keyof T]-?: DeepRequired } : T; export type ButtonStyle = 'PRIMARY' | 'SECONDARY' | 'SUCCESS' | 'DANGER'; export interface Position { x: number; y: number; } export type MessageType = IsSlashGame extends true ? ChatInputCommandInteraction : Message; export interface BaseConstructorOptions { isSlashGame?: IsSlashGame; message: MessageType; playerOnlyMessage: string | false; // Wouldn't string | null be more natural? }