import 'buno.js';
import { type UserConfig } from './config';
import { Context } from './context';
import { type Method } from './method';
import type { Address, ServeHandler as Handler, Hostname, Pattern, Port, Resolver } from './types';
export declare class Application {
    #private;
    constructor(config?: UserConfig);
    context(request: Request): Context;
    use(handler: Handler, ...handlers: Handler[]): this;
    get(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    head(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    post(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    put(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    patch(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    delete(pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    on(method: Method, pattern: Pattern, resolver: Resolver, ...resolvers: Resolver[]): this;
    serve(path: string, base?: string): this;
    handle(root: string, base?: string): this;
    routes(): Handler;
    useRoutes(): this;
    run(): void;
    start(): void;
    fetch(request: Request): Promise<Response>;
    listen(port: Port): void;
    listen(hostname: Hostname): void;
    listen(port: Port, hostname: Hostname): void;
    listen(address: Address): void;
}
export declare function app(config: UserConfig): Application;
