import { NodeOptions } from '@highlight-run/node';
import { IncomingHttpHeaders } from 'http';

declare interface Metric {
    name: string;
    value: number;
    tags?: {
        name: string;
        value: string;
    }[];
}
interface HighlightInterface {
    init: (options: NodeOptions) => void;
    isInitialized: () => boolean;
    metrics: (metrics: Metric[]) => void;
}
declare const H: HighlightInterface;
declare type HasHeaders = {
    headers: IncomingHttpHeaders;
};
declare type HasStatus = {
    statusCode: number;
    statusMessage: string;
};
declare type ApiHandler<T extends HasHeaders, S extends HasStatus> = (req: T, res: S) => unknown | Promise<unknown>;
declare const Highlight: (options: NodeOptions) => <T extends HasHeaders, S extends HasStatus>(origHandler: ApiHandler<T, S>) => ApiHandler<T, S>;

export { ApiHandler as A, HasHeaders as H, HasStatus as a, H as b, Highlight as c };
