/**
 * @bytelyst/diagnostics-client
 *
 * Remote diagnostics and debug tracing client for the ByteLyst ecosystem.
 * Provides polling, logging, tracing, network capture, and breadcrumbs.
 *
 * @example
 * ```typescript
 * import { DiagnosticsClient } from '@bytelyst/diagnostics-client';
 *
 * const client = DiagnosticsClient.getInstance({
 *   productId: 'myapp',
 *   anonymousInstallId: 'install_123',
 *   platform: 'web',
 *   channel: 'web_app',
 *   osFamily: 'macos',
 *   appVersion: '1.0.0',
 *   buildNumber: '100',
 *   releaseChannel: 'stable',
 *   serverUrl: 'https://api.bytelyst.com',
 * });
 *
 * await client.start();
 *
 * // Auto-instrumented trace
 * const result = await client.trace('fetchUser', async () => {
 *   return await fetch('/api/user').then(r => r.json());
 * });
 *
 * // Manual breadcrumb
 * client.breadcrumb('user', 'Clicked submit button', { formId: 'signup' });
 *
 * // Manual log
 * client.log('info', 'User signed up', { userId: '123' });
 * ```
 */

export { DiagnosticsClient, type DiagnosticsClientOptions } from './client.js';

export { createWebDiagnostics, type WebDiagnosticsConfig } from './web.js';

export { BreadcrumbTrail, type BreadcrumbTrailOptions } from './breadcrumbs.js';

export { NetworkInterceptor, type NetworkInterceptorOptions } from './network.js';

export { collectDeviceState, subscribeToConnectivity } from './device.js';

export type {
  LogLevel,
  SessionStatus,
  CollectionLevel,
  DiagnosticsSession,
  TraceSpan,
  LogEntry,
  Breadcrumb,
  NetworkRequest,
  DeviceState,
  DiagnosticsConfig,
  ClientState,
  IngestBatch,
} from './types.js';
