import { TraceContext } from './trace-context.service';
export interface StructuredLog {
    '@timestamp': string;
    level: string;
    message: string;
    trace?: {
        id: string;
        span_id: string;
        parent_span_id?: string;
    };
    http?: {
        request_id: string;
        method: string;
        url: string;
        status_code: number;
        duration_ms: number;
    };
    user?: {
        id: string;
        name: string;
    };
    client?: {
        ip: string;
        user_agent: string;
        geo?: {
            country?: string;
            city?: string;
        };
    };
    service: {
        name: string;
        version: string;
        instance: string;
        region: string;
    };
    temporal?: {
        workflow_id: string;
        workflow_type: string;
        workflow_run_id?: string;
        activity_id?: string;
        activity_type?: string;
        attempt?: number;
    };
    error?: {
        type: string;
        message: string;
        code?: string;
        stack?: string;
        details?: Record<string, any>;
    };
    metadata?: Record<string, any>;
}
export interface HttpLogInput {
    traceContext: TraceContext;
    requestId: string;
    method: string;
    url: string;
    statusCode: number;
    durationMs: number;
    userId?: string;
    userName?: string;
    clientIp?: string;
    userAgent?: string;
    error?: {
        type: string;
        message: string;
        code?: string;
        stack?: string;
        details?: Record<string, any>;
    };
    metadata?: Record<string, any>;
}
export interface TemporalLogInput {
    traceContext?: TraceContext;
    workflowId: string;
    workflowType: string;
    workflowRunId?: string;
    activityId?: string;
    activityType?: string;
    attempt?: number;
    status: 'STARTED' | 'COMPLETED' | 'FAILED' | 'RETRYING';
    durationMs?: number;
    error?: {
        type: string;
        message: string;
    };
    metadata?: Record<string, any>;
}
export declare class StructuredLoggerService {
    private readonly serviceName;
    private readonly serviceVersion;
    private readonly serviceInstance;
    private readonly serviceRegion;
    private readonly isDevelopment;
    constructor();
    private baseLog;
    createHttpLog(level: string, message: string, input: HttpLogInput): StructuredLog;
    createTemporalLog(level: string, message: string, input: TemporalLogInput): StructuredLog;
    createLog(level: string, message: string, options?: {
        traceContext?: TraceContext;
        error?: {
            type: string;
            message: string;
            code?: string;
            stack?: string;
        };
        metadata?: Record<string, any>;
    }): StructuredLog;
    toJson(log: StructuredLog): string;
    toReadable(log: StructuredLog): string;
    private getLevelEmoji;
}
