/** Service for coupon-related API calls */ import { apiClient } from './apiClient' import type { Coupon } from '@/types' export interface CouponFilters { category?: string is_active?: boolean active_only?: boolean } export const couponsService = { /** Get all coupons with optional filters */ async getAllCoupons(filters?: CouponFilters): Promise { const response = await apiClient.get('/api/coupons', { params: filters, }) return response.data }, /** Get a single coupon by ID */ async getCouponById(id: string): Promise { const response = await apiClient.get(`/api/coupons/${id}`) return response.data }, /** Create a new coupon */ async createCoupon(coupon: Omit): Promise { const response = await apiClient.post('/api/coupons', coupon) return response.data }, /** Update an existing coupon */ async updateCoupon(id: string, coupon: Partial): Promise { const response = await apiClient.patch(`/api/coupons/${id}`, coupon) return response.data }, /** Delete a coupon */ async deleteCoupon(id: string): Promise { await apiClient.delete(`/api/coupons/${id}`) }, /** Claim a coupon */ async claimCoupon(id: string): Promise { const response = await apiClient.post(`/api/coupons/${id}/claim`) return response.data }, /** Get current user's claimed coupons */ async getMyCoupons(): Promise { const response = await apiClient.get('/api/coupons/my-coupons') return response.data }, /** Validate a coupon by code (merchants/drivers only) */ async validateCoupon(code: string): Promise { const response = await apiClient.post(`/api/coupons/validate/${code}`) return response.data } }