// Code generated by github.com/atombender/go-jsonschema, DO NOT EDIT.

package otelconf

type Aggregation struct {
	// Base2ExponentialBucketHistogram corresponds to the JSON schema field
	// "base2_exponential_bucket_histogram".
	Base2ExponentialBucketHistogram *Base2ExponentialBucketHistogramAggregation `json:"base2_exponential_bucket_histogram,omitempty" yaml:"base2_exponential_bucket_histogram,omitempty" mapstructure:"base2_exponential_bucket_histogram,omitempty"`

	// Default corresponds to the JSON schema field "default".
	Default DefaultAggregation `json:"default,omitempty" yaml:"default,omitempty" mapstructure:"default,omitempty"`

	// Drop corresponds to the JSON schema field "drop".
	Drop DropAggregation `json:"drop,omitempty" yaml:"drop,omitempty" mapstructure:"drop,omitempty"`

	// ExplicitBucketHistogram corresponds to the JSON schema field
	// "explicit_bucket_histogram".
	ExplicitBucketHistogram *ExplicitBucketHistogramAggregation `json:"explicit_bucket_histogram,omitempty" yaml:"explicit_bucket_histogram,omitempty" mapstructure:"explicit_bucket_histogram,omitempty"`

	// LastValue corresponds to the JSON schema field "last_value".
	LastValue LastValueAggregation `json:"last_value,omitempty" yaml:"last_value,omitempty" mapstructure:"last_value,omitempty"`

	// Sum corresponds to the JSON schema field "sum".
	Sum SumAggregation `json:"sum,omitempty" yaml:"sum,omitempty" mapstructure:"sum,omitempty"`
}

type AlwaysOffSampler map[string]interface{}

type AlwaysOnSampler map[string]interface{}

type AttributeLimits struct {
	// AttributeCountLimit corresponds to the JSON schema field
	// "attribute_count_limit".
	AttributeCountLimit *int `json:"attribute_count_limit,omitempty" yaml:"attribute_count_limit,omitempty" mapstructure:"attribute_count_limit,omitempty"`

	// AttributeValueLengthLimit corresponds to the JSON schema field
	// "attribute_value_length_limit".
	AttributeValueLengthLimit *int `json:"attribute_value_length_limit,omitempty" yaml:"attribute_value_length_limit,omitempty" mapstructure:"attribute_value_length_limit,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type AttributeNameValue struct {
	// Name corresponds to the JSON schema field "name".
	Name string `json:"name" yaml:"name" mapstructure:"name"`

	// Type corresponds to the JSON schema field "type".
	Type *AttributeType `json:"type,omitempty" yaml:"type,omitempty" mapstructure:"type,omitempty"`

	// Value corresponds to the JSON schema field "value".
	Value interface{} `json:"value" yaml:"value" mapstructure:"value"`
}

type AttributeType struct {
	Value interface{}
}

type B3MultiPropagator map[string]interface{}

type B3Propagator map[string]interface{}

type BaggagePropagator map[string]interface{}

type Base2ExponentialBucketHistogramAggregation struct {
	// MaxScale corresponds to the JSON schema field "max_scale".
	MaxScale *int `json:"max_scale,omitempty" yaml:"max_scale,omitempty" mapstructure:"max_scale,omitempty"`

	// MaxSize corresponds to the JSON schema field "max_size".
	MaxSize *int `json:"max_size,omitempty" yaml:"max_size,omitempty" mapstructure:"max_size,omitempty"`

	// RecordMinMax corresponds to the JSON schema field "record_min_max".
	RecordMinMax *bool `json:"record_min_max,omitempty" yaml:"record_min_max,omitempty" mapstructure:"record_min_max,omitempty"`
}

type BatchLogRecordProcessor struct {
	// ExportTimeout corresponds to the JSON schema field "export_timeout".
	ExportTimeout *int `json:"export_timeout,omitempty" yaml:"export_timeout,omitempty" mapstructure:"export_timeout,omitempty"`

	// Exporter corresponds to the JSON schema field "exporter".
	Exporter LogRecordExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`

	// MaxExportBatchSize corresponds to the JSON schema field
	// "max_export_batch_size".
	MaxExportBatchSize *int `json:"max_export_batch_size,omitempty" yaml:"max_export_batch_size,omitempty" mapstructure:"max_export_batch_size,omitempty"`

	// MaxQueueSize corresponds to the JSON schema field "max_queue_size".
	MaxQueueSize *int `json:"max_queue_size,omitempty" yaml:"max_queue_size,omitempty" mapstructure:"max_queue_size,omitempty"`

	// ScheduleDelay corresponds to the JSON schema field "schedule_delay".
	ScheduleDelay *int `json:"schedule_delay,omitempty" yaml:"schedule_delay,omitempty" mapstructure:"schedule_delay,omitempty"`
}

type BatchSpanProcessor struct {
	// ExportTimeout corresponds to the JSON schema field "export_timeout".
	ExportTimeout *int `json:"export_timeout,omitempty" yaml:"export_timeout,omitempty" mapstructure:"export_timeout,omitempty"`

	// Exporter corresponds to the JSON schema field "exporter".
	Exporter SpanExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`

	// MaxExportBatchSize corresponds to the JSON schema field
	// "max_export_batch_size".
	MaxExportBatchSize *int `json:"max_export_batch_size,omitempty" yaml:"max_export_batch_size,omitempty" mapstructure:"max_export_batch_size,omitempty"`

	// MaxQueueSize corresponds to the JSON schema field "max_queue_size".
	MaxQueueSize *int `json:"max_queue_size,omitempty" yaml:"max_queue_size,omitempty" mapstructure:"max_queue_size,omitempty"`

	// ScheduleDelay corresponds to the JSON schema field "schedule_delay".
	ScheduleDelay *int `json:"schedule_delay,omitempty" yaml:"schedule_delay,omitempty" mapstructure:"schedule_delay,omitempty"`
}

type CardinalityLimits struct {
	// Counter corresponds to the JSON schema field "counter".
	Counter *int `json:"counter,omitempty" yaml:"counter,omitempty" mapstructure:"counter,omitempty"`

	// Default corresponds to the JSON schema field "default".
	Default *int `json:"default,omitempty" yaml:"default,omitempty" mapstructure:"default,omitempty"`

	// Gauge corresponds to the JSON schema field "gauge".
	Gauge *int `json:"gauge,omitempty" yaml:"gauge,omitempty" mapstructure:"gauge,omitempty"`

	// Histogram corresponds to the JSON schema field "histogram".
	Histogram *int `json:"histogram,omitempty" yaml:"histogram,omitempty" mapstructure:"histogram,omitempty"`

	// ObservableCounter corresponds to the JSON schema field "observable_counter".
	ObservableCounter *int `json:"observable_counter,omitempty" yaml:"observable_counter,omitempty" mapstructure:"observable_counter,omitempty"`

	// ObservableGauge corresponds to the JSON schema field "observable_gauge".
	ObservableGauge *int `json:"observable_gauge,omitempty" yaml:"observable_gauge,omitempty" mapstructure:"observable_gauge,omitempty"`

	// ObservableUpDownCounter corresponds to the JSON schema field
	// "observable_up_down_counter".
	ObservableUpDownCounter *int `json:"observable_up_down_counter,omitempty" yaml:"observable_up_down_counter,omitempty" mapstructure:"observable_up_down_counter,omitempty"`

	// UpDownCounter corresponds to the JSON schema field "up_down_counter".
	UpDownCounter *int `json:"up_down_counter,omitempty" yaml:"up_down_counter,omitempty" mapstructure:"up_down_counter,omitempty"`
}

type ConsoleExporter map[string]interface{}

type DefaultAggregation map[string]interface{}

type DropAggregation map[string]interface{}

type ExemplarFilter string

const ExemplarFilterAlwaysOff ExemplarFilter = "always_off"
const ExemplarFilterAlwaysOn ExemplarFilter = "always_on"
const ExemplarFilterTraceBased ExemplarFilter = "trace_based"

type ExperimentalContainerResourceDetector map[string]interface{}

type ExperimentalGeneralInstrumentation struct {
	// Http corresponds to the JSON schema field "http".
	Http *ExperimentalHttpInstrumentation `json:"http,omitempty" yaml:"http,omitempty" mapstructure:"http,omitempty"`

	// Peer corresponds to the JSON schema field "peer".
	Peer *ExperimentalPeerInstrumentation `json:"peer,omitempty" yaml:"peer,omitempty" mapstructure:"peer,omitempty"`
}

type ExperimentalHostResourceDetector map[string]interface{}

type ExperimentalHttpInstrumentation struct {
	// Client corresponds to the JSON schema field "client".
	Client *ExperimentalHttpInstrumentationClient `json:"client,omitempty" yaml:"client,omitempty" mapstructure:"client,omitempty"`

	// Server corresponds to the JSON schema field "server".
	Server *ExperimentalHttpInstrumentationServer `json:"server,omitempty" yaml:"server,omitempty" mapstructure:"server,omitempty"`
}

type ExperimentalHttpInstrumentationClient struct {
	// RequestCapturedHeaders corresponds to the JSON schema field
	// "request_captured_headers".
	RequestCapturedHeaders []string `json:"request_captured_headers,omitempty" yaml:"request_captured_headers,omitempty" mapstructure:"request_captured_headers,omitempty"`

	// ResponseCapturedHeaders corresponds to the JSON schema field
	// "response_captured_headers".
	ResponseCapturedHeaders []string `json:"response_captured_headers,omitempty" yaml:"response_captured_headers,omitempty" mapstructure:"response_captured_headers,omitempty"`
}

type ExperimentalHttpInstrumentationServer struct {
	// RequestCapturedHeaders corresponds to the JSON schema field
	// "request_captured_headers".
	RequestCapturedHeaders []string `json:"request_captured_headers,omitempty" yaml:"request_captured_headers,omitempty" mapstructure:"request_captured_headers,omitempty"`

	// ResponseCapturedHeaders corresponds to the JSON schema field
	// "response_captured_headers".
	ResponseCapturedHeaders []string `json:"response_captured_headers,omitempty" yaml:"response_captured_headers,omitempty" mapstructure:"response_captured_headers,omitempty"`
}

type ExperimentalLanguageSpecificInstrumentation map[string]interface{}

type ExperimentalLoggerConfig struct {
	// Disabled corresponds to the JSON schema field "disabled".
	Disabled *bool `json:"disabled,omitempty" yaml:"disabled,omitempty" mapstructure:"disabled,omitempty"`
}

type ExperimentalLoggerConfigurator struct {
	// DefaultConfig corresponds to the JSON schema field "default_config".
	DefaultConfig *ExperimentalLoggerConfig `json:"default_config,omitempty" yaml:"default_config,omitempty" mapstructure:"default_config,omitempty"`

	// Loggers corresponds to the JSON schema field "loggers".
	Loggers []ExperimentalLoggerMatcherAndConfig `json:"loggers,omitempty" yaml:"loggers,omitempty" mapstructure:"loggers,omitempty"`
}

type ExperimentalLoggerMatcherAndConfig struct {
	// Config corresponds to the JSON schema field "config".
	Config *ExperimentalLoggerConfig `json:"config,omitempty" yaml:"config,omitempty" mapstructure:"config,omitempty"`

	// Name corresponds to the JSON schema field "name".
	Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}

type ExperimentalMeterConfig struct {
	// Disabled corresponds to the JSON schema field "disabled".
	Disabled *bool `json:"disabled,omitempty" yaml:"disabled,omitempty" mapstructure:"disabled,omitempty"`
}

type ExperimentalMeterConfigurator struct {
	// DefaultConfig corresponds to the JSON schema field "default_config".
	DefaultConfig *ExperimentalMeterConfig `json:"default_config,omitempty" yaml:"default_config,omitempty" mapstructure:"default_config,omitempty"`

	// Meters corresponds to the JSON schema field "meters".
	Meters []ExperimentalMeterMatcherAndConfig `json:"meters,omitempty" yaml:"meters,omitempty" mapstructure:"meters,omitempty"`
}

type ExperimentalMeterMatcherAndConfig struct {
	// Config corresponds to the JSON schema field "config".
	Config *ExperimentalMeterConfig `json:"config,omitempty" yaml:"config,omitempty" mapstructure:"config,omitempty"`

	// Name corresponds to the JSON schema field "name".
	Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}

type ExperimentalOTLPFileExporter struct {
	// OutputStream corresponds to the JSON schema field "output_stream".
	OutputStream *string `json:"output_stream,omitempty" yaml:"output_stream,omitempty" mapstructure:"output_stream,omitempty"`
}

type ExperimentalOTLPFileMetricExporter struct {
	// DefaultHistogramAggregation corresponds to the JSON schema field
	// "default_histogram_aggregation".
	DefaultHistogramAggregation *ExporterDefaultHistogramAggregation `json:"default_histogram_aggregation,omitempty" yaml:"default_histogram_aggregation,omitempty" mapstructure:"default_histogram_aggregation,omitempty"`

	// OutputStream corresponds to the JSON schema field "output_stream".
	OutputStream *string `json:"output_stream,omitempty" yaml:"output_stream,omitempty" mapstructure:"output_stream,omitempty"`

	// TemporalityPreference corresponds to the JSON schema field
	// "temporality_preference".
	TemporalityPreference *ExporterTemporalityPreference `json:"temporality_preference,omitempty" yaml:"temporality_preference,omitempty" mapstructure:"temporality_preference,omitempty"`
}

type ExperimentalPeerInstrumentation struct {
	// ServiceMapping corresponds to the JSON schema field "service_mapping".
	ServiceMapping []ExperimentalPeerInstrumentationServiceMappingElem `json:"service_mapping,omitempty" yaml:"service_mapping,omitempty" mapstructure:"service_mapping,omitempty"`
}

type ExperimentalPeerInstrumentationServiceMappingElem struct {
	// Peer corresponds to the JSON schema field "peer".
	Peer string `json:"peer" yaml:"peer" mapstructure:"peer"`

	// Service corresponds to the JSON schema field "service".
	Service string `json:"service" yaml:"service" mapstructure:"service"`
}

type ExperimentalProcessResourceDetector map[string]interface{}

type ExperimentalPrometheusMetricExporter struct {
	// Host corresponds to the JSON schema field "host".
	Host *string `json:"host,omitempty" yaml:"host,omitempty" mapstructure:"host,omitempty"`

	// Port corresponds to the JSON schema field "port".
	Port *int `json:"port,omitempty" yaml:"port,omitempty" mapstructure:"port,omitempty"`

	// TranslationStrategy corresponds to the JSON schema field
	// "translation_strategy".
	TranslationStrategy *ExperimentalPrometheusMetricExporterTranslationStrategy `json:"translation_strategy,omitempty" yaml:"translation_strategy,omitempty" mapstructure:"translation_strategy,omitempty"`

	// WithResourceConstantLabels corresponds to the JSON schema field
	// "with_resource_constant_labels".
	WithResourceConstantLabels *IncludeExclude `json:"with_resource_constant_labels,omitempty" yaml:"with_resource_constant_labels,omitempty" mapstructure:"with_resource_constant_labels,omitempty"`

	// WithoutScopeInfo corresponds to the JSON schema field "without_scope_info".
	WithoutScopeInfo *bool `json:"without_scope_info,omitempty" yaml:"without_scope_info,omitempty" mapstructure:"without_scope_info,omitempty"`
}

type ExperimentalPrometheusMetricExporterTranslationStrategy string

const ExperimentalPrometheusMetricExporterTranslationStrategyNoTranslation ExperimentalPrometheusMetricExporterTranslationStrategy = "NoTranslation"
const ExperimentalPrometheusMetricExporterTranslationStrategyNoUTF8EscapingWithSuffixes ExperimentalPrometheusMetricExporterTranslationStrategy = "NoUTF8EscapingWithSuffixes"
const ExperimentalPrometheusMetricExporterTranslationStrategyUnderscoreEscapingWithSuffixes ExperimentalPrometheusMetricExporterTranslationStrategy = "UnderscoreEscapingWithSuffixes"
const ExperimentalPrometheusMetricExporterTranslationStrategyUnderscoreEscapingWithoutSuffixes ExperimentalPrometheusMetricExporterTranslationStrategy = "UnderscoreEscapingWithoutSuffixes"

type ExperimentalResourceDetection struct {
	// Attributes corresponds to the JSON schema field "attributes".
	Attributes *IncludeExclude `json:"attributes,omitempty" yaml:"attributes,omitempty" mapstructure:"attributes,omitempty"`

	// Detectors corresponds to the JSON schema field "detectors".
	Detectors []ExperimentalResourceDetector `json:"detectors,omitempty" yaml:"detectors,omitempty" mapstructure:"detectors,omitempty"`
}

type ExperimentalResourceDetector struct {
	// Container corresponds to the JSON schema field "container".
	Container ExperimentalContainerResourceDetector `json:"container,omitempty" yaml:"container,omitempty" mapstructure:"container,omitempty"`

	// Host corresponds to the JSON schema field "host".
	Host ExperimentalHostResourceDetector `json:"host,omitempty" yaml:"host,omitempty" mapstructure:"host,omitempty"`

	// Process corresponds to the JSON schema field "process".
	Process ExperimentalProcessResourceDetector `json:"process,omitempty" yaml:"process,omitempty" mapstructure:"process,omitempty"`

	// Service corresponds to the JSON schema field "service".
	Service ExperimentalServiceResourceDetector `json:"service,omitempty" yaml:"service,omitempty" mapstructure:"service,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type ExperimentalServiceResourceDetector map[string]interface{}

type ExperimentalTracerConfig struct {
	// Disabled corresponds to the JSON schema field "disabled".
	Disabled *bool `json:"disabled,omitempty" yaml:"disabled,omitempty" mapstructure:"disabled,omitempty"`
}

type ExperimentalTracerConfigurator struct {
	// DefaultConfig corresponds to the JSON schema field "default_config".
	DefaultConfig *ExperimentalTracerConfig `json:"default_config,omitempty" yaml:"default_config,omitempty" mapstructure:"default_config,omitempty"`

	// Tracers corresponds to the JSON schema field "tracers".
	Tracers []ExperimentalTracerMatcherAndConfig `json:"tracers,omitempty" yaml:"tracers,omitempty" mapstructure:"tracers,omitempty"`
}

type ExperimentalTracerMatcherAndConfig struct {
	// Config corresponds to the JSON schema field "config".
	Config *ExperimentalTracerConfig `json:"config,omitempty" yaml:"config,omitempty" mapstructure:"config,omitempty"`

	// Name corresponds to the JSON schema field "name".
	Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}

type ExplicitBucketHistogramAggregation struct {
	// Boundaries corresponds to the JSON schema field "boundaries".
	Boundaries []float64 `json:"boundaries,omitempty" yaml:"boundaries,omitempty" mapstructure:"boundaries,omitempty"`

	// RecordMinMax corresponds to the JSON schema field "record_min_max".
	RecordMinMax *bool `json:"record_min_max,omitempty" yaml:"record_min_max,omitempty" mapstructure:"record_min_max,omitempty"`
}

type ExporterDefaultHistogramAggregation string

const ExporterDefaultHistogramAggregationBase2ExponentialBucketHistogram ExporterDefaultHistogramAggregation = "base2_exponential_bucket_histogram"
const ExporterDefaultHistogramAggregationExplicitBucketHistogram ExporterDefaultHistogramAggregation = "explicit_bucket_histogram"

type ExporterTemporalityPreference string

const ExporterTemporalityPreferenceCumulative ExporterTemporalityPreference = "cumulative"
const ExporterTemporalityPreferenceDelta ExporterTemporalityPreference = "delta"
const ExporterTemporalityPreferenceLowMemory ExporterTemporalityPreference = "low_memory"

type IncludeExclude struct {
	// Excluded corresponds to the JSON schema field "excluded".
	Excluded []string `json:"excluded,omitempty" yaml:"excluded,omitempty" mapstructure:"excluded,omitempty"`

	// Included corresponds to the JSON schema field "included".
	Included []string `json:"included,omitempty" yaml:"included,omitempty" mapstructure:"included,omitempty"`
}

type InstrumentType string

const InstrumentTypeCounter InstrumentType = "counter"
const InstrumentTypeGauge InstrumentType = "gauge"
const InstrumentTypeHistogram InstrumentType = "histogram"
const InstrumentTypeObservableCounter InstrumentType = "observable_counter"
const InstrumentTypeObservableGauge InstrumentType = "observable_gauge"
const InstrumentTypeObservableUpDownCounter InstrumentType = "observable_up_down_counter"
const InstrumentTypeUpDownCounter InstrumentType = "up_down_counter"

type InstrumentationJson struct {
	// Cpp corresponds to the JSON schema field "cpp".
	Cpp ExperimentalLanguageSpecificInstrumentation `json:"cpp,omitempty" yaml:"cpp,omitempty" mapstructure:"cpp,omitempty"`

	// Dotnet corresponds to the JSON schema field "dotnet".
	Dotnet ExperimentalLanguageSpecificInstrumentation `json:"dotnet,omitempty" yaml:"dotnet,omitempty" mapstructure:"dotnet,omitempty"`

	// Erlang corresponds to the JSON schema field "erlang".
	Erlang ExperimentalLanguageSpecificInstrumentation `json:"erlang,omitempty" yaml:"erlang,omitempty" mapstructure:"erlang,omitempty"`

	// General corresponds to the JSON schema field "general".
	General *ExperimentalGeneralInstrumentation `json:"general,omitempty" yaml:"general,omitempty" mapstructure:"general,omitempty"`

	// Go corresponds to the JSON schema field "go".
	Go ExperimentalLanguageSpecificInstrumentation `json:"go,omitempty" yaml:"go,omitempty" mapstructure:"go,omitempty"`

	// Java corresponds to the JSON schema field "java".
	Java ExperimentalLanguageSpecificInstrumentation `json:"java,omitempty" yaml:"java,omitempty" mapstructure:"java,omitempty"`

	// Js corresponds to the JSON schema field "js".
	Js ExperimentalLanguageSpecificInstrumentation `json:"js,omitempty" yaml:"js,omitempty" mapstructure:"js,omitempty"`

	// Php corresponds to the JSON schema field "php".
	Php ExperimentalLanguageSpecificInstrumentation `json:"php,omitempty" yaml:"php,omitempty" mapstructure:"php,omitempty"`

	// Python corresponds to the JSON schema field "python".
	Python ExperimentalLanguageSpecificInstrumentation `json:"python,omitempty" yaml:"python,omitempty" mapstructure:"python,omitempty"`

	// Ruby corresponds to the JSON schema field "ruby".
	Ruby ExperimentalLanguageSpecificInstrumentation `json:"ruby,omitempty" yaml:"ruby,omitempty" mapstructure:"ruby,omitempty"`

	// Rust corresponds to the JSON schema field "rust".
	Rust ExperimentalLanguageSpecificInstrumentation `json:"rust,omitempty" yaml:"rust,omitempty" mapstructure:"rust,omitempty"`

	// Swift corresponds to the JSON schema field "swift".
	Swift ExperimentalLanguageSpecificInstrumentation `json:"swift,omitempty" yaml:"swift,omitempty" mapstructure:"swift,omitempty"`
}

type JaegerPropagator map[string]interface{}

type JaegerRemoteSampler struct {
	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// InitialSampler corresponds to the JSON schema field "initial_sampler".
	InitialSampler *Sampler `json:"initial_sampler,omitempty" yaml:"initial_sampler,omitempty" mapstructure:"initial_sampler,omitempty"`

	// Interval corresponds to the JSON schema field "interval".
	Interval *int `json:"interval,omitempty" yaml:"interval,omitempty" mapstructure:"interval,omitempty"`
}

type LastValueAggregation map[string]interface{}

type LogRecordExporter struct {
	// Console corresponds to the JSON schema field "console".
	Console ConsoleExporter `json:"console,omitempty" yaml:"console,omitempty" mapstructure:"console,omitempty"`

	// OTLPFileDevelopment corresponds to the JSON schema field
	// "otlp_file/development".
	OTLPFileDevelopment *ExperimentalOTLPFileExporter `json:"otlp_file/development,omitempty" yaml:"otlp_file/development,omitempty" mapstructure:"otlp_file/development,omitempty"`

	// OTLPGrpc corresponds to the JSON schema field "otlp_grpc".
	OTLPGrpc *OTLPGrpcExporter `json:"otlp_grpc,omitempty" yaml:"otlp_grpc,omitempty" mapstructure:"otlp_grpc,omitempty"`

	// OTLPHttp corresponds to the JSON schema field "otlp_http".
	OTLPHttp *OTLPHttpExporter `json:"otlp_http,omitempty" yaml:"otlp_http,omitempty" mapstructure:"otlp_http,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type LogRecordLimits struct {
	// AttributeCountLimit corresponds to the JSON schema field
	// "attribute_count_limit".
	AttributeCountLimit *int `json:"attribute_count_limit,omitempty" yaml:"attribute_count_limit,omitempty" mapstructure:"attribute_count_limit,omitempty"`

	// AttributeValueLengthLimit corresponds to the JSON schema field
	// "attribute_value_length_limit".
	AttributeValueLengthLimit *int `json:"attribute_value_length_limit,omitempty" yaml:"attribute_value_length_limit,omitempty" mapstructure:"attribute_value_length_limit,omitempty"`
}

type LogRecordProcessor struct {
	// Batch corresponds to the JSON schema field "batch".
	Batch *BatchLogRecordProcessor `json:"batch,omitempty" yaml:"batch,omitempty" mapstructure:"batch,omitempty"`

	// Simple corresponds to the JSON schema field "simple".
	Simple *SimpleLogRecordProcessor `json:"simple,omitempty" yaml:"simple,omitempty" mapstructure:"simple,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type LoggerProviderJson struct {
	// Limits corresponds to the JSON schema field "limits".
	Limits *LogRecordLimits `json:"limits,omitempty" yaml:"limits,omitempty" mapstructure:"limits,omitempty"`

	// LoggerConfiguratorDevelopment corresponds to the JSON schema field
	// "logger_configurator/development".
	LoggerConfiguratorDevelopment *ExperimentalLoggerConfigurator `json:"logger_configurator/development,omitempty" yaml:"logger_configurator/development,omitempty" mapstructure:"logger_configurator/development,omitempty"`

	// Processors corresponds to the JSON schema field "processors".
	Processors []LogRecordProcessor `json:"processors" yaml:"processors" mapstructure:"processors"`
}

type MeterProviderJson struct {
	// ExemplarFilter corresponds to the JSON schema field "exemplar_filter".
	ExemplarFilter *ExemplarFilter `json:"exemplar_filter,omitempty" yaml:"exemplar_filter,omitempty" mapstructure:"exemplar_filter,omitempty"`

	// MeterConfiguratorDevelopment corresponds to the JSON schema field
	// "meter_configurator/development".
	MeterConfiguratorDevelopment *ExperimentalMeterConfigurator `json:"meter_configurator/development,omitempty" yaml:"meter_configurator/development,omitempty" mapstructure:"meter_configurator/development,omitempty"`

	// Readers corresponds to the JSON schema field "readers".
	Readers []MetricReader `json:"readers" yaml:"readers" mapstructure:"readers"`

	// Views corresponds to the JSON schema field "views".
	Views []View `json:"views,omitempty" yaml:"views,omitempty" mapstructure:"views,omitempty"`
}

type MetricProducer struct {
	// Opencensus corresponds to the JSON schema field "opencensus".
	Opencensus OpenCensusMetricProducer `json:"opencensus,omitempty" yaml:"opencensus,omitempty" mapstructure:"opencensus,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type MetricReader struct {
	// Periodic corresponds to the JSON schema field "periodic".
	Periodic *PeriodicMetricReader `json:"periodic,omitempty" yaml:"periodic,omitempty" mapstructure:"periodic,omitempty"`

	// Pull corresponds to the JSON schema field "pull".
	Pull *PullMetricReader `json:"pull,omitempty" yaml:"pull,omitempty" mapstructure:"pull,omitempty"`
}

type NameStringValuePair struct {
	// Name corresponds to the JSON schema field "name".
	Name string `json:"name" yaml:"name" mapstructure:"name"`

	// Value corresponds to the JSON schema field "value".
	Value *string `json:"value" yaml:"value" mapstructure:"value"`
}

type OTLPGrpcExporter struct {
	// CertificateFile corresponds to the JSON schema field "certificate_file".
	CertificateFile *string `json:"certificate_file,omitempty" yaml:"certificate_file,omitempty" mapstructure:"certificate_file,omitempty"`

	// ClientCertificateFile corresponds to the JSON schema field
	// "client_certificate_file".
	ClientCertificateFile *string `json:"client_certificate_file,omitempty" yaml:"client_certificate_file,omitempty" mapstructure:"client_certificate_file,omitempty"`

	// ClientKeyFile corresponds to the JSON schema field "client_key_file".
	ClientKeyFile *string `json:"client_key_file,omitempty" yaml:"client_key_file,omitempty" mapstructure:"client_key_file,omitempty"`

	// Compression corresponds to the JSON schema field "compression".
	Compression *string `json:"compression,omitempty" yaml:"compression,omitempty" mapstructure:"compression,omitempty"`

	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// Headers corresponds to the JSON schema field "headers".
	Headers []NameStringValuePair `json:"headers,omitempty" yaml:"headers,omitempty" mapstructure:"headers,omitempty"`

	// HeadersList corresponds to the JSON schema field "headers_list".
	HeadersList *string `json:"headers_list,omitempty" yaml:"headers_list,omitempty" mapstructure:"headers_list,omitempty"`

	// Insecure corresponds to the JSON schema field "insecure".
	Insecure *bool `json:"insecure,omitempty" yaml:"insecure,omitempty" mapstructure:"insecure,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}

type OTLPGrpcMetricExporter struct {
	// CertificateFile corresponds to the JSON schema field "certificate_file".
	CertificateFile *string `json:"certificate_file,omitempty" yaml:"certificate_file,omitempty" mapstructure:"certificate_file,omitempty"`

	// ClientCertificateFile corresponds to the JSON schema field
	// "client_certificate_file".
	ClientCertificateFile *string `json:"client_certificate_file,omitempty" yaml:"client_certificate_file,omitempty" mapstructure:"client_certificate_file,omitempty"`

	// ClientKeyFile corresponds to the JSON schema field "client_key_file".
	ClientKeyFile *string `json:"client_key_file,omitempty" yaml:"client_key_file,omitempty" mapstructure:"client_key_file,omitempty"`

	// Compression corresponds to the JSON schema field "compression".
	Compression *string `json:"compression,omitempty" yaml:"compression,omitempty" mapstructure:"compression,omitempty"`

	// DefaultHistogramAggregation corresponds to the JSON schema field
	// "default_histogram_aggregation".
	DefaultHistogramAggregation *ExporterDefaultHistogramAggregation `json:"default_histogram_aggregation,omitempty" yaml:"default_histogram_aggregation,omitempty" mapstructure:"default_histogram_aggregation,omitempty"`

	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// Headers corresponds to the JSON schema field "headers".
	Headers []NameStringValuePair `json:"headers,omitempty" yaml:"headers,omitempty" mapstructure:"headers,omitempty"`

	// HeadersList corresponds to the JSON schema field "headers_list".
	HeadersList *string `json:"headers_list,omitempty" yaml:"headers_list,omitempty" mapstructure:"headers_list,omitempty"`

	// Insecure corresponds to the JSON schema field "insecure".
	Insecure *bool `json:"insecure,omitempty" yaml:"insecure,omitempty" mapstructure:"insecure,omitempty"`

	// TemporalityPreference corresponds to the JSON schema field
	// "temporality_preference".
	TemporalityPreference *ExporterTemporalityPreference `json:"temporality_preference,omitempty" yaml:"temporality_preference,omitempty" mapstructure:"temporality_preference,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}

type OTLPHttpEncoding string

const OTLPHttpEncodingJson OTLPHttpEncoding = "json"
const OTLPHttpEncodingProtobuf OTLPHttpEncoding = "protobuf"

type OTLPHttpExporter struct {
	// CertificateFile corresponds to the JSON schema field "certificate_file".
	CertificateFile *string `json:"certificate_file,omitempty" yaml:"certificate_file,omitempty" mapstructure:"certificate_file,omitempty"`

	// ClientCertificateFile corresponds to the JSON schema field
	// "client_certificate_file".
	ClientCertificateFile *string `json:"client_certificate_file,omitempty" yaml:"client_certificate_file,omitempty" mapstructure:"client_certificate_file,omitempty"`

	// ClientKeyFile corresponds to the JSON schema field "client_key_file".
	ClientKeyFile *string `json:"client_key_file,omitempty" yaml:"client_key_file,omitempty" mapstructure:"client_key_file,omitempty"`

	// Compression corresponds to the JSON schema field "compression".
	Compression *string `json:"compression,omitempty" yaml:"compression,omitempty" mapstructure:"compression,omitempty"`

	// Encoding corresponds to the JSON schema field "encoding".
	Encoding *OTLPHttpEncoding `json:"encoding,omitempty" yaml:"encoding,omitempty" mapstructure:"encoding,omitempty"`

	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// Headers corresponds to the JSON schema field "headers".
	Headers []NameStringValuePair `json:"headers,omitempty" yaml:"headers,omitempty" mapstructure:"headers,omitempty"`

	// HeadersList corresponds to the JSON schema field "headers_list".
	HeadersList *string `json:"headers_list,omitempty" yaml:"headers_list,omitempty" mapstructure:"headers_list,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}

type OTLPHttpMetricExporter struct {
	// CertificateFile corresponds to the JSON schema field "certificate_file".
	CertificateFile *string `json:"certificate_file,omitempty" yaml:"certificate_file,omitempty" mapstructure:"certificate_file,omitempty"`

	// ClientCertificateFile corresponds to the JSON schema field
	// "client_certificate_file".
	ClientCertificateFile *string `json:"client_certificate_file,omitempty" yaml:"client_certificate_file,omitempty" mapstructure:"client_certificate_file,omitempty"`

	// ClientKeyFile corresponds to the JSON schema field "client_key_file".
	ClientKeyFile *string `json:"client_key_file,omitempty" yaml:"client_key_file,omitempty" mapstructure:"client_key_file,omitempty"`

	// Compression corresponds to the JSON schema field "compression".
	Compression *string `json:"compression,omitempty" yaml:"compression,omitempty" mapstructure:"compression,omitempty"`

	// DefaultHistogramAggregation corresponds to the JSON schema field
	// "default_histogram_aggregation".
	DefaultHistogramAggregation *ExporterDefaultHistogramAggregation `json:"default_histogram_aggregation,omitempty" yaml:"default_histogram_aggregation,omitempty" mapstructure:"default_histogram_aggregation,omitempty"`

	// Encoding corresponds to the JSON schema field "encoding".
	Encoding *OTLPHttpEncoding `json:"encoding,omitempty" yaml:"encoding,omitempty" mapstructure:"encoding,omitempty"`

	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// Headers corresponds to the JSON schema field "headers".
	Headers []NameStringValuePair `json:"headers,omitempty" yaml:"headers,omitempty" mapstructure:"headers,omitempty"`

	// HeadersList corresponds to the JSON schema field "headers_list".
	HeadersList *string `json:"headers_list,omitempty" yaml:"headers_list,omitempty" mapstructure:"headers_list,omitempty"`

	// TemporalityPreference corresponds to the JSON schema field
	// "temporality_preference".
	TemporalityPreference *ExporterTemporalityPreference `json:"temporality_preference,omitempty" yaml:"temporality_preference,omitempty" mapstructure:"temporality_preference,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}

type OpenCensusMetricProducer map[string]interface{}

type OpenTelemetryConfiguration struct {
	// AttributeLimits corresponds to the JSON schema field "attribute_limits".
	AttributeLimits *AttributeLimits `json:"attribute_limits,omitempty" yaml:"attribute_limits,omitempty" mapstructure:"attribute_limits,omitempty"`

	// Disabled corresponds to the JSON schema field "disabled".
	Disabled *bool `json:"disabled,omitempty" yaml:"disabled,omitempty" mapstructure:"disabled,omitempty"`

	// FileFormat corresponds to the JSON schema field "file_format".
	FileFormat string `json:"file_format" yaml:"file_format" mapstructure:"file_format"`

	// InstrumentationDevelopment corresponds to the JSON schema field
	// "instrumentation/development".
	InstrumentationDevelopment OpenTelemetryConfigurationInstrumentationDevelopment `json:"instrumentation/development,omitempty" yaml:"instrumentation/development,omitempty" mapstructure:"instrumentation/development,omitempty"`

	// LogLevel corresponds to the JSON schema field "log_level".
	LogLevel *string `json:"log_level,omitempty" yaml:"log_level,omitempty" mapstructure:"log_level,omitempty"`

	// LoggerProvider corresponds to the JSON schema field "logger_provider".
	LoggerProvider OpenTelemetryConfigurationLoggerProvider `json:"logger_provider,omitempty" yaml:"logger_provider,omitempty" mapstructure:"logger_provider,omitempty"`

	// MeterProvider corresponds to the JSON schema field "meter_provider".
	MeterProvider OpenTelemetryConfigurationMeterProvider `json:"meter_provider,omitempty" yaml:"meter_provider,omitempty" mapstructure:"meter_provider,omitempty"`

	// Propagator corresponds to the JSON schema field "propagator".
	Propagator OpenTelemetryConfigurationPropagator `json:"propagator,omitempty" yaml:"propagator,omitempty" mapstructure:"propagator,omitempty"`

	// Resource corresponds to the JSON schema field "resource".
	Resource OpenTelemetryConfigurationResource `json:"resource,omitempty" yaml:"resource,omitempty" mapstructure:"resource,omitempty"`

	// TracerProvider corresponds to the JSON schema field "tracer_provider".
	TracerProvider OpenTelemetryConfigurationTracerProvider `json:"tracer_provider,omitempty" yaml:"tracer_provider,omitempty" mapstructure:"tracer_provider,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type OpenTelemetryConfigurationInstrumentationDevelopment interface{}

type OpenTelemetryConfigurationLoggerProvider interface{}

type OpenTelemetryConfigurationMeterProvider interface{}

type OpenTelemetryConfigurationPropagator interface{}

type OpenTelemetryConfigurationResource interface{}

type OpenTelemetryConfigurationTracerProvider interface{}

type OpenTracingPropagator map[string]interface{}

type ParentBasedSampler struct {
	// LocalParentNotSampled corresponds to the JSON schema field
	// "local_parent_not_sampled".
	LocalParentNotSampled *Sampler `json:"local_parent_not_sampled,omitempty" yaml:"local_parent_not_sampled,omitempty" mapstructure:"local_parent_not_sampled,omitempty"`

	// LocalParentSampled corresponds to the JSON schema field "local_parent_sampled".
	LocalParentSampled *Sampler `json:"local_parent_sampled,omitempty" yaml:"local_parent_sampled,omitempty" mapstructure:"local_parent_sampled,omitempty"`

	// RemoteParentNotSampled corresponds to the JSON schema field
	// "remote_parent_not_sampled".
	RemoteParentNotSampled *Sampler `json:"remote_parent_not_sampled,omitempty" yaml:"remote_parent_not_sampled,omitempty" mapstructure:"remote_parent_not_sampled,omitempty"`

	// RemoteParentSampled corresponds to the JSON schema field
	// "remote_parent_sampled".
	RemoteParentSampled *Sampler `json:"remote_parent_sampled,omitempty" yaml:"remote_parent_sampled,omitempty" mapstructure:"remote_parent_sampled,omitempty"`

	// Root corresponds to the JSON schema field "root".
	Root *Sampler `json:"root,omitempty" yaml:"root,omitempty" mapstructure:"root,omitempty"`
}

type PeriodicMetricReader struct {
	// CardinalityLimits corresponds to the JSON schema field "cardinality_limits".
	CardinalityLimits *CardinalityLimits `json:"cardinality_limits,omitempty" yaml:"cardinality_limits,omitempty" mapstructure:"cardinality_limits,omitempty"`

	// Exporter corresponds to the JSON schema field "exporter".
	Exporter PushMetricExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`

	// Interval corresponds to the JSON schema field "interval".
	Interval *int `json:"interval,omitempty" yaml:"interval,omitempty" mapstructure:"interval,omitempty"`

	// Producers corresponds to the JSON schema field "producers".
	Producers []MetricProducer `json:"producers,omitempty" yaml:"producers,omitempty" mapstructure:"producers,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}

type PropagatorJson struct {
	// Composite corresponds to the JSON schema field "composite".
	Composite []TextMapPropagator `json:"composite,omitempty" yaml:"composite,omitempty" mapstructure:"composite,omitempty"`

	// CompositeList corresponds to the JSON schema field "composite_list".
	CompositeList *string `json:"composite_list,omitempty" yaml:"composite_list,omitempty" mapstructure:"composite_list,omitempty"`
}

type PullMetricExporter struct {
	// PrometheusDevelopment corresponds to the JSON schema field
	// "prometheus/development".
	PrometheusDevelopment *ExperimentalPrometheusMetricExporter `json:"prometheus/development,omitempty" yaml:"prometheus/development,omitempty" mapstructure:"prometheus/development,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type PullMetricReader struct {
	// CardinalityLimits corresponds to the JSON schema field "cardinality_limits".
	CardinalityLimits *CardinalityLimits `json:"cardinality_limits,omitempty" yaml:"cardinality_limits,omitempty" mapstructure:"cardinality_limits,omitempty"`

	// Exporter corresponds to the JSON schema field "exporter".
	Exporter PullMetricExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`

	// Producers corresponds to the JSON schema field "producers".
	Producers []MetricProducer `json:"producers,omitempty" yaml:"producers,omitempty" mapstructure:"producers,omitempty"`
}

type PushMetricExporter struct {
	// Console corresponds to the JSON schema field "console".
	Console ConsoleExporter `json:"console,omitempty" yaml:"console,omitempty" mapstructure:"console,omitempty"`

	// OTLPFileDevelopment corresponds to the JSON schema field
	// "otlp_file/development".
	OTLPFileDevelopment *ExperimentalOTLPFileMetricExporter `json:"otlp_file/development,omitempty" yaml:"otlp_file/development,omitempty" mapstructure:"otlp_file/development,omitempty"`

	// OTLPGrpc corresponds to the JSON schema field "otlp_grpc".
	OTLPGrpc *OTLPGrpcMetricExporter `json:"otlp_grpc,omitempty" yaml:"otlp_grpc,omitempty" mapstructure:"otlp_grpc,omitempty"`

	// OTLPHttp corresponds to the JSON schema field "otlp_http".
	OTLPHttp *OTLPHttpMetricExporter `json:"otlp_http,omitempty" yaml:"otlp_http,omitempty" mapstructure:"otlp_http,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type ResourceJson struct {
	// Attributes corresponds to the JSON schema field "attributes".
	Attributes []AttributeNameValue `json:"attributes,omitempty" yaml:"attributes,omitempty" mapstructure:"attributes,omitempty"`

	// AttributesList corresponds to the JSON schema field "attributes_list".
	AttributesList *string `json:"attributes_list,omitempty" yaml:"attributes_list,omitempty" mapstructure:"attributes_list,omitempty"`

	// DetectionDevelopment corresponds to the JSON schema field
	// "detection/development".
	DetectionDevelopment *ExperimentalResourceDetection `json:"detection/development,omitempty" yaml:"detection/development,omitempty" mapstructure:"detection/development,omitempty"`

	// SchemaUrl corresponds to the JSON schema field "schema_url".
	SchemaUrl *string `json:"schema_url,omitempty" yaml:"schema_url,omitempty" mapstructure:"schema_url,omitempty"`
}

type Sampler struct {
	// AlwaysOff corresponds to the JSON schema field "always_off".
	AlwaysOff AlwaysOffSampler `json:"always_off,omitempty" yaml:"always_off,omitempty" mapstructure:"always_off,omitempty"`

	// AlwaysOn corresponds to the JSON schema field "always_on".
	AlwaysOn AlwaysOnSampler `json:"always_on,omitempty" yaml:"always_on,omitempty" mapstructure:"always_on,omitempty"`

	// JaegerRemote corresponds to the JSON schema field "jaeger_remote".
	JaegerRemote *JaegerRemoteSampler `json:"jaeger_remote,omitempty" yaml:"jaeger_remote,omitempty" mapstructure:"jaeger_remote,omitempty"`

	// ParentBased corresponds to the JSON schema field "parent_based".
	ParentBased *ParentBasedSampler `json:"parent_based,omitempty" yaml:"parent_based,omitempty" mapstructure:"parent_based,omitempty"`

	// TraceIDRatioBased corresponds to the JSON schema field "trace_id_ratio_based".
	TraceIDRatioBased *TraceIDRatioBasedSampler `json:"trace_id_ratio_based,omitempty" yaml:"trace_id_ratio_based,omitempty" mapstructure:"trace_id_ratio_based,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type SimpleLogRecordProcessor struct {
	// Exporter corresponds to the JSON schema field "exporter".
	Exporter LogRecordExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`
}

type SimpleSpanProcessor struct {
	// Exporter corresponds to the JSON schema field "exporter".
	Exporter SpanExporter `json:"exporter" yaml:"exporter" mapstructure:"exporter"`
}

type SpanExporter struct {
	// Console corresponds to the JSON schema field "console".
	Console ConsoleExporter `json:"console,omitempty" yaml:"console,omitempty" mapstructure:"console,omitempty"`

	// OTLPFileDevelopment corresponds to the JSON schema field
	// "otlp_file/development".
	OTLPFileDevelopment *ExperimentalOTLPFileExporter `json:"otlp_file/development,omitempty" yaml:"otlp_file/development,omitempty" mapstructure:"otlp_file/development,omitempty"`

	// OTLPGrpc corresponds to the JSON schema field "otlp_grpc".
	OTLPGrpc *OTLPGrpcExporter `json:"otlp_grpc,omitempty" yaml:"otlp_grpc,omitempty" mapstructure:"otlp_grpc,omitempty"`

	// OTLPHttp corresponds to the JSON schema field "otlp_http".
	OTLPHttp *OTLPHttpExporter `json:"otlp_http,omitempty" yaml:"otlp_http,omitempty" mapstructure:"otlp_http,omitempty"`

	// Zipkin corresponds to the JSON schema field "zipkin".
	Zipkin *ZipkinSpanExporter `json:"zipkin,omitempty" yaml:"zipkin,omitempty" mapstructure:"zipkin,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type SpanLimits struct {
	// AttributeCountLimit corresponds to the JSON schema field
	// "attribute_count_limit".
	AttributeCountLimit *int `json:"attribute_count_limit,omitempty" yaml:"attribute_count_limit,omitempty" mapstructure:"attribute_count_limit,omitempty"`

	// AttributeValueLengthLimit corresponds to the JSON schema field
	// "attribute_value_length_limit".
	AttributeValueLengthLimit *int `json:"attribute_value_length_limit,omitempty" yaml:"attribute_value_length_limit,omitempty" mapstructure:"attribute_value_length_limit,omitempty"`

	// EventAttributeCountLimit corresponds to the JSON schema field
	// "event_attribute_count_limit".
	EventAttributeCountLimit *int `json:"event_attribute_count_limit,omitempty" yaml:"event_attribute_count_limit,omitempty" mapstructure:"event_attribute_count_limit,omitempty"`

	// EventCountLimit corresponds to the JSON schema field "event_count_limit".
	EventCountLimit *int `json:"event_count_limit,omitempty" yaml:"event_count_limit,omitempty" mapstructure:"event_count_limit,omitempty"`

	// LinkAttributeCountLimit corresponds to the JSON schema field
	// "link_attribute_count_limit".
	LinkAttributeCountLimit *int `json:"link_attribute_count_limit,omitempty" yaml:"link_attribute_count_limit,omitempty" mapstructure:"link_attribute_count_limit,omitempty"`

	// LinkCountLimit corresponds to the JSON schema field "link_count_limit".
	LinkCountLimit *int `json:"link_count_limit,omitempty" yaml:"link_count_limit,omitempty" mapstructure:"link_count_limit,omitempty"`
}

type SpanProcessor struct {
	// Batch corresponds to the JSON schema field "batch".
	Batch *BatchSpanProcessor `json:"batch,omitempty" yaml:"batch,omitempty" mapstructure:"batch,omitempty"`

	// Simple corresponds to the JSON schema field "simple".
	Simple *SimpleSpanProcessor `json:"simple,omitempty" yaml:"simple,omitempty" mapstructure:"simple,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type SumAggregation map[string]interface{}

type TextMapPropagator struct {
	// B3 corresponds to the JSON schema field "b3".
	B3 B3Propagator `json:"b3,omitempty" yaml:"b3,omitempty" mapstructure:"b3,omitempty"`

	// B3Multi corresponds to the JSON schema field "b3multi".
	B3Multi B3MultiPropagator `json:"b3multi,omitempty" yaml:"b3multi,omitempty" mapstructure:"b3multi,omitempty"`

	// Baggage corresponds to the JSON schema field "baggage".
	Baggage BaggagePropagator `json:"baggage,omitempty" yaml:"baggage,omitempty" mapstructure:"baggage,omitempty"`

	// Jaeger corresponds to the JSON schema field "jaeger".
	Jaeger JaegerPropagator `json:"jaeger,omitempty" yaml:"jaeger,omitempty" mapstructure:"jaeger,omitempty"`

	// Ottrace corresponds to the JSON schema field "ottrace".
	Ottrace OpenTracingPropagator `json:"ottrace,omitempty" yaml:"ottrace,omitempty" mapstructure:"ottrace,omitempty"`

	// Tracecontext corresponds to the JSON schema field "tracecontext".
	Tracecontext TraceContextPropagator `json:"tracecontext,omitempty" yaml:"tracecontext,omitempty" mapstructure:"tracecontext,omitempty"`

	AdditionalProperties interface{} `mapstructure:",remain"`
}

type TraceContextPropagator map[string]interface{}

type TraceIDRatioBasedSampler struct {
	// Ratio corresponds to the JSON schema field "ratio".
	Ratio *float64 `json:"ratio,omitempty" yaml:"ratio,omitempty" mapstructure:"ratio,omitempty"`
}

type TracerProviderJson struct {
	// Limits corresponds to the JSON schema field "limits".
	Limits *SpanLimits `json:"limits,omitempty" yaml:"limits,omitempty" mapstructure:"limits,omitempty"`

	// Processors corresponds to the JSON schema field "processors".
	Processors []SpanProcessor `json:"processors" yaml:"processors" mapstructure:"processors"`

	// Sampler corresponds to the JSON schema field "sampler".
	Sampler *Sampler `json:"sampler,omitempty" yaml:"sampler,omitempty" mapstructure:"sampler,omitempty"`

	// TracerConfiguratorDevelopment corresponds to the JSON schema field
	// "tracer_configurator/development".
	TracerConfiguratorDevelopment *ExperimentalTracerConfigurator `json:"tracer_configurator/development,omitempty" yaml:"tracer_configurator/development,omitempty" mapstructure:"tracer_configurator/development,omitempty"`
}

type View struct {
	// Selector corresponds to the JSON schema field "selector".
	Selector *ViewSelector `json:"selector,omitempty" yaml:"selector,omitempty" mapstructure:"selector,omitempty"`

	// Stream corresponds to the JSON schema field "stream".
	Stream *ViewStream `json:"stream,omitempty" yaml:"stream,omitempty" mapstructure:"stream,omitempty"`
}

type ViewSelector struct {
	// InstrumentName corresponds to the JSON schema field "instrument_name".
	InstrumentName *string `json:"instrument_name,omitempty" yaml:"instrument_name,omitempty" mapstructure:"instrument_name,omitempty"`

	// InstrumentType corresponds to the JSON schema field "instrument_type".
	InstrumentType *InstrumentType `json:"instrument_type,omitempty" yaml:"instrument_type,omitempty" mapstructure:"instrument_type,omitempty"`

	// MeterName corresponds to the JSON schema field "meter_name".
	MeterName *string `json:"meter_name,omitempty" yaml:"meter_name,omitempty" mapstructure:"meter_name,omitempty"`

	// MeterSchemaUrl corresponds to the JSON schema field "meter_schema_url".
	MeterSchemaUrl *string `json:"meter_schema_url,omitempty" yaml:"meter_schema_url,omitempty" mapstructure:"meter_schema_url,omitempty"`

	// MeterVersion corresponds to the JSON schema field "meter_version".
	MeterVersion *string `json:"meter_version,omitempty" yaml:"meter_version,omitempty" mapstructure:"meter_version,omitempty"`

	// Unit corresponds to the JSON schema field "unit".
	Unit *string `json:"unit,omitempty" yaml:"unit,omitempty" mapstructure:"unit,omitempty"`
}

type ViewStream struct {
	// Aggregation corresponds to the JSON schema field "aggregation".
	Aggregation *Aggregation `json:"aggregation,omitempty" yaml:"aggregation,omitempty" mapstructure:"aggregation,omitempty"`

	// AggregationCardinalityLimit corresponds to the JSON schema field
	// "aggregation_cardinality_limit".
	AggregationCardinalityLimit *int `json:"aggregation_cardinality_limit,omitempty" yaml:"aggregation_cardinality_limit,omitempty" mapstructure:"aggregation_cardinality_limit,omitempty"`

	// AttributeKeys corresponds to the JSON schema field "attribute_keys".
	AttributeKeys *IncludeExclude `json:"attribute_keys,omitempty" yaml:"attribute_keys,omitempty" mapstructure:"attribute_keys,omitempty"`

	// Description corresponds to the JSON schema field "description".
	Description *string `json:"description,omitempty" yaml:"description,omitempty" mapstructure:"description,omitempty"`

	// Name corresponds to the JSON schema field "name".
	Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}

type ZipkinSpanExporter struct {
	// Endpoint corresponds to the JSON schema field "endpoint".
	Endpoint *string `json:"endpoint,omitempty" yaml:"endpoint,omitempty" mapstructure:"endpoint,omitempty"`

	// Timeout corresponds to the JSON schema field "timeout".
	Timeout *int `json:"timeout,omitempty" yaml:"timeout,omitempty" mapstructure:"timeout,omitempty"`
}
