import { Collection } from "discord.js"; import EventEmitter from "node:events"; import { z } from "zod"; import { Category } from "../util/Category.js"; import { AkairoClient } from "./AkairoClient.js"; import { AkairoModule } from "./AkairoModule.js"; export type Class = abstract new (...args: any[]) => T; export declare class AkairoHandler, Handler extends AkairoHandler> extends EventEmitter { automateCategories: boolean; categories: Collection>; classToHandle: Class; client: AkairoClient; directory: string; extensions: Set; loadFilter: LoadPredicate; modules: Collection; constructor(client: AkairoClient, options: AkairoHandlerOptions); deregister(mod: Module): void; findCategory(name: string): Category | undefined; load(thing: string | Module, isReload?: boolean): Promise; loadAll(directory?: string, filter?: LoadPredicate): Promise; register(mod: Module, filepath?: string): void; reload(id: string): Promise; reloadAll(): Promise; remove(id: string): Module; removeAll(): this; static readdirRecursive(directory: string): string[]; } export type LoadPredicate = (filepath: string) => boolean; export declare const LoadPredicate: z.ZodFunction, z.ZodBoolean>; export type Extension = `.${string}` | string; export declare const Extension: z.ZodString; export type AkairoHandlerOptions, Handler extends AkairoHandler> = { automateCategories?: boolean; classToHandle?: Class; directory: string; extensions?: Extension[] | Set; loadFilter?: LoadPredicate; }; export declare const AkairoHandlerOptions: z.ZodObject<{ automateCategories: z.ZodOptional; classToHandle: z.ZodAny; directory: z.ZodString; extensions: z.ZodOptional, z.ZodSet]>>; loadFilter: z.ZodOptional, z.ZodBoolean>>; }, "passthrough", z.ZodTypeAny, z.objectOutputType<{ automateCategories: z.ZodOptional; classToHandle: z.ZodAny; directory: z.ZodString; extensions: z.ZodOptional, z.ZodSet]>>; loadFilter: z.ZodOptional, z.ZodBoolean>>; }, z.ZodTypeAny, "passthrough">, z.objectInputType<{ automateCategories: z.ZodOptional; classToHandle: z.ZodAny; directory: z.ZodString; extensions: z.ZodOptional, z.ZodSet]>>; loadFilter: z.ZodOptional, z.ZodBoolean>>; }, z.ZodTypeAny, "passthrough">>; //# sourceMappingURL=AkairoHandler.d.ts.map