/** * Admin Promo Codes API endpoints */ import { apiClient } from '../client' import type { PromoCode, PromoCodeUsage, CreatePromoCodeRequest, UpdatePromoCodeRequest, BasePaginationResponse } from '@/types' export async function list( page: number = 1, pageSize: number = 20, filters?: { status?: string search?: string } ): Promise> { const { data } = await apiClient.get>('/admin/promo-codes', { params: { page, page_size: pageSize, ...filters } }) return data } export async function getById(id: number): Promise { const { data } = await apiClient.get(`/admin/promo-codes/${id}`) return data } export async function create(request: CreatePromoCodeRequest): Promise { const { data } = await apiClient.post('/admin/promo-codes', request) return data } export async function update(id: number, request: UpdatePromoCodeRequest): Promise { const { data } = await apiClient.put(`/admin/promo-codes/${id}`, request) return data } export async function deleteCode(id: number): Promise<{ message: string }> { const { data } = await apiClient.delete<{ message: string }>(`/admin/promo-codes/${id}`) return data } export async function getUsages( id: number, page: number = 1, pageSize: number = 20 ): Promise> { const { data } = await apiClient.get>( `/admin/promo-codes/${id}/usages`, { params: { page, page_size: pageSize } } ) return data } const promoAPI = { list, getById, create, update, delete: deleteCode, getUsages } export default promoAPI