import { Coupon, CouponBatchUpdateRequestType, CouponBatchUpdateResponseType, CouponByIdRequestType, CreateCouponRequestType, DeleteCouponRequestType, ListCouponsRequestParams, UpdateCouponRequestType, } from './types'; import { AxiosInstance } from 'axios'; export default class Coupons { private readonly client: AxiosInstance; constructor(client: AxiosInstance) { this.client = client; } async create(data: CreateCouponRequestType) { const response = await this.client.post('coupons', data); return response.data; } async getById(id: CouponByIdRequestType, params: ListCouponsRequestParams) { const response = await this.client.get(`coupons/${id}`, { params, }); return response.data; } async updateById({ id, data }: UpdateCouponRequestType) { const response = await this.client.put(`coupons/${id}`, data); return response.data; } async deleteById({ id, force }: DeleteCouponRequestType) { const response = await this.client.delete(`coupons/${id}`, { data: { force }, }); return response.data; } async list( params?: ListCouponsRequestParams ): Promise<{ data: Coupon[]; count: number; totalPages: number; }> { const response = await this.client.get('coupons', { params }); return { data: response.data, count: response.headers['x-wp-total'], totalPages: response.headers['x-wp-totalpages'], }; } async batch(data: CouponBatchUpdateRequestType) { const response = await this.client.post( 'coupons/batch', data ); return response.data; } }