use figment::Error as FigmentError;
#[derive(Debug, thiserror::Error)]
#[must_use]
#[non_exhaustive]
pub enum SdkError {
#[error("configuration error: {0}")]
Config(#[source] Box<FigmentError>),
#[error("failed to create trace exporter")]
TraceExporter(#[source] opentelemetry_otlp::ExporterBuildError),
#[error("failed to create metric exporter")]
MetricExporter(#[source] opentelemetry_otlp::ExporterBuildError),
#[error("failed to create log exporter")]
LogExporter(#[source] opentelemetry_otlp::ExporterBuildError),
#[error("failed to initialise tracing subscriber")]
TracingSubscriber(#[from] tracing_subscriber::util::TryInitError),
#[error("failed to flush providers")]
Flush(#[source] opentelemetry_sdk::error::OTelSdkError),
#[error("failed to shut down providers")]
Shutdown(#[source] opentelemetry_sdk::error::OTelSdkError),
#[error("invalid endpoint URL: {url} (must start with http:// or https://)")]
InvalidEndpoint {
url: String,
},
}