import { Elysia, type Context } from 'elysia';
type MaybePromise<T> = T | Promise<T>;
export interface ServerTimingOptions {
    /**
     * Should Elysia report data back to client via 'Server-Sent-Event'
     */
    report?: boolean;
    /**
     * Allow Server Timing to log specified life-cycle events
     */
    trace?: {
        /**
         * Capture duration from request
         *
         * @default true
         */
        request?: boolean;
        /**
         * Capture duration from parse
         *
         * @default true
         */
        parse?: boolean;
        /**
         * Capture duration from transform
         *
         * @default true
         */
        transform?: boolean;
        /**
         * Capture duration from beforeHandle
         *
         * @default true
         */
        beforeHandle?: boolean;
        /**
         * Capture duration from handle
         *
         * @default true
         */
        handle?: boolean;
        /**
         * Capture duration from afterHandle
         *
         * @default true
         */
        afterHandle?: boolean;
        /**
         * Capture duration from mapResponse
         *
         * @default true
         */
        error?: boolean;
        /**
         * Capture duration from mapResponse
         *
         * @default true
         */
        mapResponse?: boolean;
        /**
         * Capture total duration from start to finish
         *
         * @default true
         */
        total?: boolean;
    };
    /**
     * Determine whether or not Server Timing should be enabled
     *
     * @default NODE_ENV !== 'production'
     */
    enabled?: boolean;
    /**
     * A condition whether server timing should be log
     *
     * @default undefined
     */
    allow?: MaybePromise<boolean> | ((context: Omit<Context, 'path'>) => MaybePromise<boolean>);
}
export declare const serverTiming: ({ allow, enabled, trace: { request: traceRequest, parse: traceParse, transform: traceTransform, beforeHandle: traceBeforeHandle, handle: traceHandle, afterHandle: traceAfterHandle, error: traceError, mapResponse: traceMapResponse, total: traceTotal } }?: ServerTimingOptions) => Elysia<"", {
    decorator: {};
    store: {};
    derive: {};
    resolve: {};
}, {
    typebox: import("@sinclair/typebox").TModule<{}>;
    error: {};
}, {
    schema: {};
    macro: {};
    macroFn: {};
    parser: {};
}, {}, {
    derive: {};
    resolve: {};
    schema: {};
}, {
    derive: {};
    resolve: {};
    schema: {};
}>;
export default serverTiming;
