import Namespace from '../services/namespace.js'; import Config from '../services/config.js'; import Logger from '../services/logger.js'; import HttpClient from '../services/http_client.js'; import type { Request, Response, NextFunction } from 'express'; interface ZipkinEndpoint { serviceName: unknown; ipv4: string; port: unknown; } interface ZipkinAnnotation { endpoint: ZipkinEndpoint; timestamp: number; value: string; } interface ZipkinBinaryAnnotation { key: string; value: unknown; } interface ZipkinSpan { id: string; traceId: string; name: string; timestamp: number; duration: number; annotations: ZipkinAnnotation[]; binaryAnnotations: ZipkinBinaryAnnotation[]; parentId?: string; } interface TracerQuery { query: unknown; cost: number; finishedAt: number; } interface Tracer { serviceName: unknown; method: string; url: string; port: string | number; spanId: string; traceId: string; parentId: string; sampled: number; timestamp: number; duration: number; statusCode: number; queries: TracerQuery[]; debug: Record; } export declare const tracerToZipkins: (tracer: Tracer | null | undefined) => false | ZipkinSpan[]; declare function TraceMiddleware(ns: Namespace, config: Config, logger: Logger, client: HttpClient): (name?: string) => (req: Request, res: Response, next: NextFunction) => void; export default TraceMiddleware;