/** * SIM Domain - Schemas */ import { z } from "zod"; export const simStatusSchema = z.enum(["active", "suspended", "cancelled", "pending"]); export const simTypeSchema = z.enum(["standard", "nano", "micro", "esim"]); export const simDetailsSchema = z.object({ account: z.string(), status: simStatusSchema, planCode: z.string(), planName: z.string(), simType: simTypeSchema, iccid: z.string(), eid: z.string(), msisdn: z.string(), imsi: z.string(), remainingQuotaMb: z.number(), remainingQuotaKb: z.number(), voiceMailEnabled: z.boolean(), callWaitingEnabled: z.boolean(), internationalRoamingEnabled: z.boolean(), networkType: z.string(), activatedAt: z.string().optional(), expiresAt: z.string().optional(), }); export const recentDayUsageSchema = z.object({ date: z.string(), usageKb: z.number(), usageMb: z.number(), }); export const simUsageSchema = z.object({ account: z.string(), todayUsageMb: z.number(), todayUsageKb: z.number(), monthlyUsageMb: z.number().optional(), monthlyUsageKb: z.number().optional(), recentDaysUsage: z.array(recentDayUsageSchema), isBlacklisted: z.boolean(), lastUpdated: z.string().optional(), }); export const simTopUpHistoryEntrySchema = z.object({ quotaKb: z.number(), quotaMb: z.number(), addedDate: z.string(), expiryDate: z.string(), campaignCode: z.string(), }); export const simTopUpHistorySchema = z.object({ account: z.string(), totalAdditions: z.number(), additionCount: z.number(), history: z.array(simTopUpHistoryEntrySchema), });