import type { DollarSign } from "xpresser/types";
import { EventHandlerFn } from "./Types";
declare class EventsServer {
    #private;
    private server;
    port: number;
    private readonly db;
    private readonly $;
    private readonly $router;
    private readonly isCliCommand;
    private retryTimeout;
    /**
     * Take xpresser instance and port.
     * Create our server.
     * @param secretKey
     * @param $
     */
    constructor(secretKey: string, $: DollarSign);
    /**
     * Map event to function or controller
     * @param event
     * @param fn
     */
    on(event: string, fn?: string | EventHandlerFn): this;
    /**
     * Get all loaded events
     */
    private getAllEvents;
    /**
     * Start Listening for events
     */
    startListening(): void;
    /**
     * Initialize Socket
     * @private
     */
    private initializeSocket;
    private processRoutes;
    private addConnectionListener;
    private listenToAllRoutes;
    private triggerRetryFailedEvents;
    /**
     * Wrap a function around Events Server Before and After events.
     * @param $controller
     * @param event
     * @param method
     * @private
     */
    private wrapControllerFunction;
    /**
     * Make Controller Context using socket passed.
     * @param id
     * @param socket
     * @param event
     * @private
     */
    private makeControllerContext;
    /**
     * Run an event.
     * @param socket
     * @param event
     * @param args
     * @private
     */
    private runEvent;
    private retryFailedEvents;
    private runPendingEvents;
}
export = EventsServer;
