import { ActionRowBuilder, ButtonBuilder, InteractionEditReplyOptions, Message, MessageEditOptions, MessagePayload, User, } from 'discord.js'; import { EventEmitter } from 'node:events'; import { BaseConstructorOptions, DeepRequired, MessageType, Position } from './Base'; export interface MatchPairsConstructorOptions extends BaseConstructorOptions { embed?: { title?: string; color?: string; description?: string }; timeoutTime?: number; emojis?: string[]; winMessage?: string; loseMessage?: string; } export class MatchPairs extends EventEmitter { options: DeepRequired>; message: MessageType; emojis: string[]; remainingPairs: number; components: ActionRowBuilder; selected: (Position & { id: number }) | null; tilesTurned: number; length: number; on( eventName: 'gameOver', listener: (result: { result: 'win' | 'lose'; player: User; tilesTurned: number; remainingPairs: number }) => void ): this; once(...args: Parameters): this; constructor(options: MatchPairsConstructorOptions); sendMessage( content: string | MessagePayload | (IsSlashGame extends true ? InteractionEditReplyOptions : MessageEditOptions) ): Promise; startGame(): Promise; getPairEmoji(emoji: string): (Position & { id: number })[]; getComponent(): ActionRowBuilder; gameOver(msg: Message, result: boolean): Promise; handleButtons(msg: Message): Promise; }