/**
 * Canonical constants for polling system
 */

// JWT ID regex pattern with numbered capture groups
export const JWT_ID_PATTERN = /^(\d{10})_([A-Za-z0-9]{6})_([a-f0-9]{8})$/;

// Default configuration values
export const DEFAULT_CONFIG = {
  // Outbox pressure controls
  maxUndelivered: 1000,
  backpressureThreshold: 0.8,
  maxRetries: 3,
  cleanupIntervalMs: 3600000, // 1 hour
  
  // Backoff policy
  baseDelayMs: 1000,
  maxDelayMs: 30000,
  jitterFactor: 0.25,
  respectRetryAfter: true,
  retryAfterMaxMs: 300000, // 5 minutes
  
  // Clock sync
  maxClockSkewSeconds: 30,
  skewCheckIntervalMs: 300000, // 5 minutes
  jwtClockSkewTolerance: 30,
  jwtMaxAge: 3600000, // 1 hour
  
  // Telemetry
  metricsPrefix: 'starred_projects',
  logLevel: 'INFO'
} as const;

// Error codes
export const ERROR_CODES = {
  INVALID_REQUEST: 'INVALID_REQUEST',
  VALIDATION_ERROR: 'VALIDATION_ERROR',
  RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED',
  EXECUTION_ERROR: 'EXECUTION_ERROR',
  CLOCK_SKEW_ERROR: 'CLOCK_SKEW_ERROR',
  STORAGE_PRESSURE: 'STORAGE_PRESSURE'
} as const;

// HTTP status codes
export const HTTP_STATUS = {
  OK: 200,
  BAD_REQUEST: 400,
  UNAUTHORIZED: 401,
  FORBIDDEN: 403,
  TOO_MANY_REQUESTS: 429,
  INTERNAL_SERVER_ERROR: 500,
  SERVICE_UNAVAILABLE: 503
} as const;
