import { GenericLogger } from '@instana/core/src/core';
import { IgnoreEndpoints, Disable } from '@instana/core/src/config/types';

export interface AgentConfig {
  tracing?: {
    http?: {
      extraHttpHeadersToCapture?: string[];
      exit?: {
        classifyAll4xxAsErrors?: boolean;
        classifyAsErrors?: number[];
      };
    };
    kafka?: {
      traceCorrelation?: boolean;
    };
    spanBatchingEnabled?: boolean | string;
    ignoreEndpoints?: IgnoreEndpoints;
    disable?: Disable;
    [key: string]: any;
    global?: {
      stackTrace?: string;
      stackTraceLength?: number;
    };
    otlp?: {
      enabled?: boolean;
    };
  };
  [key: string]: any;
}

export interface CollectorConfig {
  agentPort?: number;
  agentHost?: string;
  agentRequestTimeout?: number;
  tracing?: {
    stackTraceLength?: number;
    [key: string]: any;
  };
  autoProfile?: boolean;
  reportUnhandledPromiseRejections?: boolean;
  logger?: GenericLogger;
  level?: string | number;
  disableCollectorInitEvent?: boolean;
}
