import { Component, ComponentAPI } from '@ayanaware/bento';
import { AnyComponentContext } from './contexts/AnyComponentContext';
import type { ComponentHandler } from './interfaces/ComponentHandler';
import type { ParsedCustomId } from './util/ParseCustomId';
export declare type CloseHandler = () => Promise<void>;
export declare enum ComponentManagerEvent {
    /**
     * Fired when a component handler was successfully executed
     * @param ctx AnyComponentContext
     * @param mili Miliseconds
     */
    COMPONENT_SUCCESS = "componentSuccess",
    /**
     * Fired when a component handler throws an error
     * @param error Error
     * @param ctx AnyComponentContext
     * @param mili Miliseconds
     */
    COMPONENT_FAILURE = "componentFailure"
}
export declare class ComponentsManager implements Component {
    name: string;
    api: ComponentAPI;
    private readonly prefixHandlers;
    private readonly messageHandlers;
    onUnload(): Promise<void>;
    hasPrefixHandler(prefix: string): boolean;
    addPrefixHandler(prefix: string, handler: ComponentHandler, close?: CloseHandler): void;
    removePrefixHandler(prefix: string): void;
    hasMessageHandler(messageId: string): boolean;
    addMessageHandler(messageId: string, handler: ComponentHandler, close?: CloseHandler): void;
    removeMessageHandler(messageId: string): void;
    findHandler(ctx: AnyComponentContext, customId: ParsedCustomId): Promise<ComponentHandler>;
    private handleInteraction;
}
