import { OpenFlareBaseService } from './base.service'; import type { ZoneDomainItem, ZoneDomainMutationPayload, ZoneItem, ZoneMutationPayload, ZoneOverview, ZoneStats, ZoneStatsRange, } from './types'; export const zoneQueryKey = ['openflare', 'zones'] as const; export class ZoneService extends OpenFlareBaseService { protected static override readonly basePath = '/api/v1/d/zones'; static list(): Promise { return this.get('/'); } static getOverview(id: number): Promise { return this.get(`/${id}/overview`); } static getStats( id: number, range: ZoneStatsRange = '24h', ): Promise { return this.get(`/${id}/stats`, { range }); } static create(payload: ZoneMutationPayload): Promise { return this.post('/', payload); } static update(id: number, payload: ZoneMutationPayload): Promise { return this.post(`/${id}/update`, payload); } static deleteById(id: number): Promise { return this.post(`/${id}/delete`); } } export class ZoneDomainService extends OpenFlareBaseService { protected static override readonly basePath = '/api/v1/d/zones'; static create( zoneId: number, payload: ZoneDomainMutationPayload, ): Promise { return this.post(`/${zoneId}/domains`, payload); } static update( zoneId: number, id: number, payload: ZoneDomainMutationPayload, ): Promise { return this.post( `/${zoneId}/domains/${id}/update`, payload, ); } static deleteById(zoneId: number, id: number): Promise { return this.post(`/${zoneId}/domains/${id}/delete`); } }