import type { ServerOptions } from '@burgerTypes';
export declare class Burger {
    private options;
    /**
     * The server instance
     */
    private server;
    /**
     * The API router instance
     */
    private apiRouter?;
    /**
     * The page router instance
     */
    private pageRouter?;
    /**
     * The global middleware
     */
    private globalMiddleware;
    /**
     * The OpenAPI document
     */
    private openApiDoc;
    /**
     * The routes object
     */
    private routes;
    /**
     * Pre-computed responses for reuse
     */
    private readonly METHOD_NOT_ALLOWED;
    /**
     * The not found response
     */
    private readonly NOT_FOUND;
    /**
     * The OpenAPI error response
     */
    private readonly OPENAPI_ERROR;
    /**
     * Constructor for the Burger class.
     * @param options - The options for the server and router.
     * The options object should contain the following properties:
     * - port: The port number to listen on.
     * - apiDir: The directory path to load API routes from.
     * - pageDir: The directory path to load page routes from.
     * - middleware: An array of global middleware functions.
     */
    constructor(options: ServerOptions);
    /**
     * Process the page routes and add them to the routes object
     * @returns A promise that resolves to a boolean
     */
    private processPageRoutes;
    /**
     * Process the API routes and add them to the routes object
     * @returns A promise that resolves to a boolean
     */
    private processApiRoutes;
    /**
     * Process the middleware and handler
     * @param request - The request object
     * @param middlewares - The middleware array
     * @param handler - The handler function
     * @returns A promise that resolves to a response
     */
    private processMiddleware;
    /**
     * Starts the server and begins listening for incoming requests.
     * @param port - The port number to listen on. Defaults to `4000`.
     * @param cb - An optional cb function to be executed when the server is listening.
     * @returns A Promise that resolves when the server has started listening.
     */
    serve(port?: number, cb?: () => void): Promise<void>;
}
export { setDir } from './utils/index.js';
export type { ServerOptions, RequestHandler, BurgerRequest, BurgerNext, Middleware, openapi, } from '@burgerTypes';
