import { TimingCollector } from "@edgefirst-dev/server-timing";
import type { unstable_MiddlewareFunction, unstable_RouterContextProvider } from "react-router";
/**
 * Create a middleware that gives you access to a `TimingCollector` instance,
 * used to collect server timing metrics and report them in the response
 * headers.
 *
 * The reported metrics will be available in the browser's developer tools.
 *
 * @returns A tuple with the middleware function and a function to get the
 * `TimingCollector` instance from the context.
 * @example
 * import { unstable_createServerTimingMiddleware } from "remix-utils/middleware/server-timing";
 *
 * const [serverTimingMiddleware, getTimingCollector] = unstable_createServerTimingMiddleware();
 *
 * export const unstable_middleware = [serverTimingMiddleware];
 *
 * export async function loader({ context }: Route.LoaderArgs) {
 *  let collector = getTimingCollector(context);
 *  return await collector.measure("name", "optional description", () => {
 *    return getData();
 *  });
 * }
 */
export declare function unstable_createServerTimingMiddleware(): unstable_createServerTimingMiddleware.ReturnType;
export declare namespace unstable_createServerTimingMiddleware {
    /**
     * The return type of `unstable_createServerTimingMiddleware`.
     */
    type ReturnType = [
        unstable_MiddlewareFunction<Response>,
        (context: unstable_RouterContextProvider) => TimingCollector
    ];
}
export declare const serverTimingMiddleware: unstable_MiddlewareFunction<Response>, getTimingCollector: (context: unstable_RouterContextProvider) => TimingCollector;
