/**
 * ByteLystDiagnostics
 *
 * Remote diagnostics and debug tracing client for the ByteLyst ecosystem.
 * Provides polling, logging, tracing, network capture, and breadcrumbs for iOS/macOS.
 *
 * Example usage:
 * ```swift
 * import ByteLystDiagnostics
 *
 * // Configure
 * let config = DiagnosticsConfiguration(
 *     productId: "myapp",
 *     anonymousInstallId: "install_123",
 *     platform: "ios",
 *     channel: "ios_app",
 *     osFamily: "ios",
 *     appVersion: "1.0.0",
 *     buildNumber: "100",
 *     releaseChannel: "stable",
 *     serverUrl: "https://api.bytelyst.com"
 * )
 *
 * await DiagnosticsClient.shared.configure(config)
 * await DiagnosticsClient.shared.start()
 *
 * // Auto-instrumented trace
 * let result = try await DiagnosticsClient.shared.trace(name: "fetchUser") {
 *     try await fetchUser()
 * }
 *
 * // Manual breadcrumb
 * await DiagnosticsClient.shared.breadcrumb(
 *     category: "user",
 *     message: "Tapped submit button",
 *     data: ["buttonId": AnyCodable("submit")]
 * )
 *
 * // Manual log
 * await DiagnosticsClient.shared.log(
 *     level: .info,
 *     message: "User signed in",
 *     module: "Auth",
 *     context: ["userId": AnyCodable(userId)]
 * )
 * ```
 */

// MARK: - Core
@_exported import Foundation

// Types
public typealias ByteLystDiagnosticsTypes = DiagnosticsSession
public typealias ByteLystDiagnosticsLogLevel = DiagnosticsLogLevel
public typealias ByteLystDiagnosticsSessionStatus = DiagnosticsSessionStatus
public typealias ByteLystDiagnosticsCollectionLevel = DiagnosticsCollectionLevel
public typealias ByteLystDiagnosticsTraceSpan = DiagnosticsTraceSpan
public typealias ByteLystDiagnosticsLogEntry = DiagnosticsLogEntry
public typealias ByteLystDiagnosticsBreadcrumb = DiagnosticsBreadcrumb
public typealias ByteLystDiagnosticsNetworkRequest = DiagnosticsNetworkRequest
public typealias ByteLystDiagnosticsDeviceState = DiagnosticsDeviceState
public typealias ByteLystDiagnosticsIngestBatch = DiagnosticsIngestBatch
public typealias ByteLystDiagnosticsClientState = DiagnosticsClientState
public typealias ByteLystDiagnosticsConfiguration = DiagnosticsConfiguration
public typealias ByteLystDiagnosticsLogger = DiagnosticsLogger
public typealias ByteLystDiagnosticsNoOpLogger = NoOpDiagnosticsLogger
public typealias ByteLystDiagnosticsOSLogger = OSDiagnosticsLogger

// Errors
public typealias ByteLystDiagnosticsError = DiagnosticsError

// Version
public let ByteLystDiagnosticsVersion = "0.1.0"
