import { ApplicationCommandStore } from "./application-command-store.js";
import { MessageComponentStore } from "./message-component-store.js";
import type { ComponentStructure, DynamicComponentStructure } from "./message-component-store.js";
import type { HandlerListener } from "./shared.js";
import type { ApplicationCommandStoreOptions, SubCommandStructure, BaseCommandOption, CommandStructure, CommandOption } from "./application-command-store.js";
import type { Transformers, Awaitable, Listeners, Client } from "lilybird";
export declare class Handler<T extends Transformers<Client> = Transformers<Client>, HO extends (...args: any) => any = never, AO extends (...args: any) => any = never> {
    #private;
    constructor(options: {
        cachePath?: string;
        enableDynamicComponents?: boolean;
        acsOptions?: ApplicationCommandStoreOptions;
        handlerListener?: HandlerListener;
    });
    buttonCollector(component: DynamicComponentStructure): void;
    storeCommand<const O extends Array<CommandOption>>(data: CommandStructure<O, HO, AO> & {
        components?: Array<ComponentStructure>;
    }): void;
    subCommandMock<const O extends Array<BaseCommandOption>>(data: SubCommandStructure<O, HO, AO>): SubCommandStructure<O, HO, AO>;
    storeListener<TR extends Transformers<Client> = T, K extends keyof TR = keyof TR>(data: {
        event: K;
        handle: Required<Listeners<Client, TR>>[K];
    }): void;
    clearStores(): void;
    getCompilationStack(): {
        functionNames: Array<string>;
        handlers: Array<(...args: any) => any>;
        stack: string;
    } | null;
    compileCommands(): ((...args: any) => Awaitable<unknown>) | null;
    getListenersObject(includeCommands?: boolean): Listeners<Client, T>;
    loadGlobalCommands(client: Client): Promise<void>;
    getStoredData(): {
        commands: {
            global: ReturnType<ApplicationCommandStore<HO, AO>["getStoredGlobalCommands"]>;
            guild: ReturnType<ApplicationCommandStore<HO, AO>["getStoredGuildCommands"]>;
        };
        components: ReturnType<MessageComponentStore["getStoredComponents"]>;
        listeners: Array<[name: string, handle: (...args: Array<any>) => any]>;
    };
    addDebugListener(listener: HandlerListener): void;
    set cachePath(path: string);
    get cachePath(): string | undefined;
    set enableDynamicComponents(bool: boolean);
    get enableDynamicComponents(): boolean;
}
export declare const handler: Handler<Transformers<Client>, never, never>;
export declare const $applicationCommand: <const O extends Array<CommandOption>>(data: CommandStructure<O, never, never> & {
    components?: Array<ComponentStructure>;
}) => void;
export declare const $subCommand: <const O extends Array<BaseCommandOption>>(data: SubCommandStructure<O, never, never>) => SubCommandStructure<O, never, never>;
export declare const $listener: <TR extends Transformers<Client> = Transformers<Client>, K extends keyof TR = keyof TR>(data: {
    event: K;
    handle: Required<Listeners<Client, TR>>[K];
}) => void;
export declare const $component: (component: DynamicComponentStructure) => void;
//# sourceMappingURL=handler.d.ts.map