import { Client, ClientOptions, ApiResponse } from '@elastic/elasticsearch'; import TransportStream = require('winston-transport'); export interface LogData { message: any; level: string; meta: { [key: string]: any }; timestamp?: string; } export interface Transformer { (logData: LogData): any; } export interface ElasticsearchTransportOptions extends TransportStream.TransportStreamOptions { timestamp?: () => string; level?: string; index?: string; indexPrefix?: string; indexSuffixPattern?: string; messageType?: string; transformer?: Transformer; mappingTemplate?: { [key: string]: any }; ensureMappingTemplate?: boolean; flushInterval?: number; waitForActiveShards?: number | 'all'; handleExceptions?: boolean; pipeline?: string; client?: Client; clientOpts?: ClientOptions; buffering?: boolean; bufferLimit?: number; } export class ElasticsearchTransport extends TransportStream { constructor(opts?: ElasticsearchTransportOptions); query(options: any, callback?: () => void): Promise>; query(q: string): Promise>; getIndexName(opts: ElasticsearchTransportOptions): string; }