import { apiClient } from '@/shared/api/client' import type { ApiResponse } from '@/shared/types/types' import type { Announcement, PaginatedResult } from './announcements' export interface CreateAnnouncementRequest { title: string content: string category: 'notice' | 'tutorial' | 'rule' | 'faq' priority?: number is_pinned?: boolean is_important?: boolean } export interface UpdateAnnouncementRequest { title?: string content?: string category?: 'notice' | 'tutorial' | 'rule' | 'faq' priority?: number is_pinned?: boolean is_important?: boolean } export async function fetchAdminAnnouncements(params: { status?: string category?: string page?: number page_size?: number }): Promise> { const { data } = await apiClient.get>>('/admin/announcements', { params }) return data.data } export async function fetchAdminAnnouncementDetail(id: number): Promise { const { data } = await apiClient.get>(`/admin/announcements/${id}`) return data.data } export async function createAnnouncement(req: CreateAnnouncementRequest): Promise { const { data } = await apiClient.post>('/admin/announcements', req) return data.data } export async function updateAnnouncement(id: number, req: UpdateAnnouncementRequest): Promise { const { data } = await apiClient.put>(`/admin/announcements/${id}`, req) return data.data } export async function publishAnnouncement(id: number): Promise { await apiClient.post(`/admin/announcements/${id}/publish`) } export async function archiveAnnouncement(id: number): Promise { await apiClient.post(`/admin/announcements/${id}/archive`) } export async function deleteAnnouncement(id: number): Promise { await apiClient.delete(`/admin/announcements/${id}`) }