/**
 * Error Tracking interfaces - decoupled contracts
 */

export interface ErrorContext {
  extra?: Record<string, any>;
  tags?: Record<string, string>;
  user?: {
    id?: string;
    email?: string;
    username?: string;
  };
  level?: 'fatal' | 'error' | 'warning' | 'info' | 'debug';
}

export interface ErrorTrackingAdapter {
  captureException(error: any, context?: ErrorContext): void;
  captureMessage(message: string, context?: ErrorContext): void;
  setUser(user: ErrorContext['user']): void;
  setTag(key: string, value: string): void;
  setExtra(key: string, value: any): void;
}

export interface ErrorTrackingConfig {
  dsn: string;
  environment?: string;
  release?: string;
  debug?: boolean;
}
