/**
 * Web-Stub. Ergibt im Browser keinen funktionalen Schutz — der Filter ist
 * inhärent device-bound. Verhindert nur dass Imports auf Web crashen.
 */
import { registerWebModule, NativeModule } from 'expo';

import type {
  ActivateResult,
  DeviceLayers,
  DisableResult,
  HealthProbeResult,
  RebreakProtectionEvents,
  SyncBlocklistResult,
} from './RebreakProtection.types';

class RebreakProtectionModuleWeb extends NativeModule<RebreakProtectionEvents> {
  async activate(): Promise<ActivateResult> {
    return { allLayersOn: false, missingLayers: [] };
  }

  async disable(): Promise<DisableResult> {
    return { allLayersOff: true };
  }

  async getDeviceState(): Promise<DeviceLayers> {
    return { blocklistCount: 0, blocklistLastSyncAt: null };
  }

  async syncBlocklist(): Promise<SyncBlocklistResult> {
    return { updated: false, count: 0 };
  }

  async runHealthProbe(): Promise<HealthProbeResult> {
    return {
      outcome: 'offline',
      reason: 'web_stub',
      durationMs: 0,
      target: '',
    };
  }

  async openSystemSettings(): Promise<void> {
    // no-op
  }

  // Android-only stubs (Web nutzt keinen davon, aber Type-Compat).
  async isAccessibilityEnabled() {
    return { enabled: false };
  }
  async openAccessibilitySettings() {
    return { opened: false };
  }
  async armTamperLock() {
    return { armed: false };
  }
  async disarmTamperLock() {
    return { armed: false };
  }
  async getProtectionStatus() {
    return {
      vpnEnabled: false,
      accessibilityEnabled: false,
      blocklistCount: 0,
      tamperArmed: false,
    };
  }
  async reconcileVpn() {
    return { restarted: false };
  }
}

export default registerWebModule(RebreakProtectionModuleWeb, 'RebreakProtection');
