import { ActionRowBuilder, ButtonBuilder, InteractionEditReplyOptions, Message, MessageEditOptions, MessagePayload, User, } from 'discord.js'; import { EventEmitter } from 'node:events'; import { BaseConstructorOptions, DeepRequired, MessageType } from './Base'; // I am bad at naming export interface HangmanBody { hat?: string; head?: string; shirt?: string; pants?: string; boots?: string; } export interface HangmanConstructorOptions extends BaseConstructorOptions { embed?: { title?: string; color?: string }; hangman?: HangmanBody; customWord?: string | null; timeoutTime?: number; theme?: string; winMessage?: string; loseMessage?: string; } export class Hangman extends EventEmitter { options: DeepRequired>; message: MessageType; hangman: HangmanBody; word: string | null; buttonPage: number; guessed: string[]; damage: number; on( eventName: 'gameOver', listener: (result: { result: 'win' | 'lose'; player: User; word: string | null; damage: number; guessed: string[]; }) => void ): this; once(...args: Parameters): this; constructor(options: HangmanConstructorOptions); getBoardContent(): string; sendMessage( content: string | MessagePayload | (IsSlashGame extends true ? InteractionEditReplyOptions : MessageEditOptions) ): Promise; startGame(): Promise; handleButtons(msg: Message): void; gameOver(msg: Message, result: boolean): Promise; foundWord(): boolean; getWordEmojis(): string; getComponent(page: number): ActionRowBuilder; }