import { Request, Response } from 'express';
import qs from 'qs';
import * as winston from 'winston';
import { ECSWinston } from './interfaces/ecs-winston.interface';
import { ECS } from './interfaces/ecs.interface';
export declare const stringify: (doc: string | number | boolean | object | any[]) => string;
declare type GetHttpRequestDataParams = {
    req: Request | undefined;
    res: Response | undefined;
    requestId: string | null;
};
declare type GetMetadataParams = {
    config: ECSWinston.Config | undefined;
    message: ECSWinston.Log.Metadata;
    rest: ECSWinston.Log.Metadata;
};
declare type GetECSLogParsedParams = {
    config: ECSWinston.Config;
    level: string;
    message: string | ECSWinston.Log.Metadata;
    timestamp: string;
    rest: any;
};
export declare function getHttpRequestData({ req, res, requestId, }: GetHttpRequestDataParams): {
    http: ECS.Http;
    user_agent: ECS.Useragent;
    url: ECS.Url;
};
export declare function getMetadata({ rest, config, message }: GetMetadataParams): {
    req: Request<import("express-serve-static-core").ParamsDictionary, any, any, qs.ParsedQs, Record<string, any>>;
    res: Response<any, Record<string, any>>;
    ecs: ECS.Fields;
    error: any;
    exclude: string[];
};
export declare function getErrorData(error: any): {
    type: string;
    message: string;
    stack_trace: string;
};
export declare function getECSLogParsed({ config, level, message, timestamp, rest, }: GetECSLogParsedParams): string;
export declare const ecsWinstonFormat: (config?: ECSWinston.Config) => winston.Logform.Format;
export {};
