/// <reference path="../../adonis-typings/events.d.ts" />
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
import { AnyHandler, EventHandler } from '@ioc:Adonis/Core/Event';
/**
 * Resolves string based event listeners from the IoC container. Also this method wraps
 * the IoC container bindings in a closure. That closure is later used to remove
 * the event listeners properly.
 */
export declare class IocResolver {
    /**
     * A reference to the event handlers resolved from the IoC container and
     * cached. It is a map of
     *
     * [event, [namespace, resolvedHandler]]
     */
    private eventHandlers;
    /**
     * A reference to the catch all event handlers. It is a map of
     *
     * [namespace, resolvedHandler]
     */
    private anyHandlers;
    /**
     * Reference to AdonisJS IoC container resolver. It looks for listeners inside the
     * `App/Listeners` namespace or the namespace defined inside `eventListeners`
     * property
     */
    private containerResolver;
    /**
     * A custom base namespace defined directly on the event class.
     */
    private listenersBaseNamespace?;
    constructor(app: ApplicationContract);
    /**
     * Returns the listener by resolving the namespace from the IoC container
     */
    private getReferenceListener;
    /**
     * Returns all handlers for a given event.
     */
    private getHandlersFor;
    /**
     * Define custom namespace for Event listeners
     */
    namespace(namespace: string): void;
    /**
     * Returns event handler callback for an IoC container string reference.
     * Adding same handler for the same event is noop.
     */
    getEventHandler(event: string, handler: string): EventHandler;
    /**
     * Removes the event handler from the tracked list and also returns
     * it back.
     */
    removeEventHandler(event: string, handler: string): EventHandler | null;
    /**
     * Returns Event handler for wildcard events. Adding the same
     * handler for multiple times is a noop.
     */
    getAnyHandler(handler: string): AnyHandler;
    /**
     * Removes and returns the handler for a string reference.
     */
    removeAnyHandler(handler: string): AnyHandler | null;
}
