import * as pulumi from '@pulumi/pulumi';
import { OTLPReceiver } from './otlp-receiver';
import type { OtelCollector } from '.';
import type { PrometheusRemoteWriteExporter } from './prometheus-remote-write-exporter';
export declare namespace OtelCollectorConfigBuilder {
    type WithDefaultArgs = {
        prometheusNamespace: PrometheusRemoteWriteExporter.Config['namespace'];
        prometheusEndpoint: PrometheusRemoteWriteExporter.Config['endpoint'];
        region: string;
        logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'];
        logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'];
        logRetention: OtelCollector.AwsCloudWatchLogsExporterConfig['log_retention'];
    };
}
export declare class OtelCollectorConfigBuilder {
    private readonly _receivers;
    private readonly _processors;
    private readonly _exporters;
    private readonly _extensions;
    private readonly _service;
    withOTLPReceiver(protocols?: OTLPReceiver.Protocol[]): this;
    withBatchProcessor(name?: string, size?: number, maxSize?: number, timeout?: string): this;
    withMemoryLimiterProcessor(checkInterval?: string, limitPercentage?: number, spikeLimitPercentage?: number): this;
    withAWSXRayExporter(region: string): this;
    withCloudWatchLogsExporter(region: OtelCollector.AwsCloudWatchLogsExporterConfig['region'], logGroupName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_group_name'], logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'], logRetention: OtelCollector.AwsCloudWatchLogsExporterConfig['log_retention']): this;
    withHealthCheckExtension(endpoint?: string): this;
    withPprofExtension(endpoint?: string): this;
    withAPS(namespace: pulumi.Input<string>, endpoint: pulumi.Input<string>, region: string): this;
    withDebug(verbosity?: 'normal' | 'basic' | 'detailed'): this;
    withTelemetry(logLevel?: 'debug' | 'warn' | 'error', metricsVerbosity?: 'basic' | 'normal' | 'detailed'): this;
    withMetricsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
    withTracesPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
    withLogsPipeline(receivers: OtelCollector.ReceiverType[], processors: OtelCollector.ProcessorType[], exporters: OtelCollector.ExporterType[]): this;
    withDefault({ prometheusNamespace, prometheusEndpoint, region, logGroupName, logStreamName, logRetention, }: OtelCollectorConfigBuilder.WithDefaultArgs): this;
    build(): OtelCollector.Config;
    private validatePipelineProcessorOrder;
    private validatePipelineComponents;
}
//# sourceMappingURL=config.d.ts.map