/**
 * Marine-specific constants for resilience package
 */

import { common } from '@sailboat-computer/sailboat-types';

// Re-export types from sailboat-types
export type OperationalContextType = common.OperationalContext;
export type MarineFailureTypeType = common.MarineFailureType;
export type CircuitBreakerStateType = common.CircuitBreakerState;

// Re-export constants from common namespace
export const OperationalContext = {
  SAILING: 'context_sailing' as common.OperationalContext,
  MOTORING: 'context_motoring' as common.OperationalContext,
  ANCHORED: 'context_anchored' as common.OperationalContext,
  DOCKED: 'context_docked' as common.OperationalContext,
  MAINTENANCE: 'context_maintenance' as common.OperationalContext,
  EMERGENCY: 'context_emergency' as common.OperationalContext
};

export const MarineFailureType = {
  SENSOR_FAILURE: 'marine_sensor_failure' as common.MarineFailureType,
  CONNECTIVITY_LOSS: 'marine_connectivity_loss' as common.MarineFailureType,
  POWER_FLUCTUATION: 'marine_power_fluctuation' as common.MarineFailureType,
  DATA_QUALITY: 'marine_data_quality' as common.MarineFailureType,
  TIMEOUT: 'marine_timeout' as common.MarineFailureType,
  RESOURCE_EXHAUSTION: 'marine_resource_exhaustion' as common.MarineFailureType,
  ENVIRONMENTAL: 'marine_environmental' as common.MarineFailureType
};

export const CircuitBreakerState = {
  CLOSED: 'circuit_closed' as common.CircuitBreakerState,
  OPEN: 'circuit_open' as common.CircuitBreakerState,
  HALF_OPEN: 'circuit_half_open' as common.CircuitBreakerState
};
