import { api } from './api'; import type { MonitoredService, PingResult, PingHistoryEntry, StatusSummary, SystemHealth, UserOverview, BroadcastPayload, BroadcastPreviewPayload } from '../types/admin.types'; interface ApiResponse { success: boolean; data: T; } export interface FdiskSyncLogEntry { ts: string; line: string; } export interface FdiskSyncLogsResponse { running: boolean; logs: FdiskSyncLogEntry[]; } export const adminApi = { getServices: () => api.get>('/api/admin/services').then(r => r.data.data), createService: (data: { name: string; url: string }) => api.post>('/api/admin/services', data).then(r => r.data.data), updateService: (id: string, data: Partial) => api.put>(`/api/admin/services/${id}`, data).then(r => r.data.data), deleteService: (id: string) => api.delete(`/api/admin/services/${id}`).then(() => undefined), pingAll: () => api.get>('/api/admin/services/ping').then(r => r.data.data), getStatusSummary: () => api.get>('/api/admin/services/status-summary').then(r => r.data.data), getSystemHealth: () => api.get>('/api/admin/system/health').then(r => r.data.data), getUsers: () => api.get>('/api/admin/users').then(r => r.data.data), broadcast: (data: BroadcastPayload) => api.post>('/api/admin/notifications/broadcast', data).then(r => r.data.data), broadcastPreview: (data: BroadcastPreviewPayload) => api.post>('/api/admin/notifications/broadcast/preview', data).then(r => r.data.data), getPingHistory: (serviceId: string) => api.get>(`/api/admin/services/${serviceId}/ping-history`).then(r => r.data.data), fdiskSyncLogs: () => api.get>('/api/admin/fdisk-sync/logs').then(r => r.data.data), fdiskSyncTrigger: (force = false) => api.post>('/api/admin/fdisk-sync/trigger', { force }).then(r => r.data.data), deleteUserProfile: (userId: string) => api.delete>(`/api/admin/debug/user/${userId}/profile`).then(r => r.data), };