import * as pulumi from '@pulumi/pulumi';
import * as aws from '@pulumi/aws';
import { OtelCollector } from '.';
import { OTLPReceiver } from './otlp-receiver';
import { PrometheusRemoteWriteExporter } from './prometheus-remote-write-exporter';
export declare namespace OtelCollectorBuilder {
    type WithDefaultArgs = {
        prometheusNamespace: PrometheusRemoteWriteExporter.Config['namespace'];
        prometheusWorkspace: aws.amp.Workspace;
        region: string;
        logGroup: aws.cloudwatch.LogGroup;
        logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name'];
    };
}
export declare class OtelCollectorBuilder {
    private readonly _serviceName;
    private readonly _env;
    private readonly _configBuilder;
    private _taskRoleInlinePolicies;
    constructor(serviceName: pulumi.Input<string>, env: pulumi.Input<string>);
    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'], logGroup: aws.cloudwatch.LogGroup, logStreamName: OtelCollector.AwsCloudWatchLogsExporterConfig['log_stream_name']): this;
    withHealthCheckExtension(endpoint?: string): this;
    withPprofExtension(endpoint?: string): this;
    withAPS(namespace: pulumi.Input<string>, workspace: aws.amp.Workspace, 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, prometheusWorkspace, region, logGroup, logStreamName, }: OtelCollectorBuilder.WithDefaultArgs): this;
    build(): OtelCollector;
    private createAPSInlinePolicy;
    private createAWSXRayPolicy;
    private createCloudWatchLogsPolicy;
}
//# sourceMappingURL=builder.d.ts.map