"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.simFeaturesRequestSchema = exports.simChangePlanRequestSchema = exports.simTopupRequestSchema = exports.simOrderActivationRequestSchema = exports.simOrderActivationAddonsSchema = exports.simOrderActivationMnpSchema = exports.simFeaturesUpdateRequestSchema = exports.simTopUpHistoryRequestSchema = exports.simCancelRequestSchema = exports.simPlanChangeRequestSchema = exports.simTopUpRequestSchema = exports.simTopUpHistorySchema = exports.simTopUpHistoryEntrySchema = exports.simUsageSchema = exports.recentDayUsageSchema = exports.simDetailsSchema = exports.simTypeSchema = exports.simStatusSchema = void 0; const zod_1 = require("zod"); exports.simStatusSchema = zod_1.z.enum(["active", "suspended", "cancelled", "pending"]); exports.simTypeSchema = zod_1.z.enum(["standard", "nano", "micro", "esim"]); exports.simDetailsSchema = zod_1.z.object({ account: zod_1.z.string(), status: exports.simStatusSchema, planCode: zod_1.z.string(), planName: zod_1.z.string(), simType: exports.simTypeSchema, iccid: zod_1.z.string(), eid: zod_1.z.string(), msisdn: zod_1.z.string(), imsi: zod_1.z.string(), remainingQuotaMb: zod_1.z.number(), remainingQuotaKb: zod_1.z.number(), voiceMailEnabled: zod_1.z.boolean(), callWaitingEnabled: zod_1.z.boolean(), internationalRoamingEnabled: zod_1.z.boolean(), networkType: zod_1.z.string(), activatedAt: zod_1.z.string().optional(), expiresAt: zod_1.z.string().optional(), }); exports.recentDayUsageSchema = zod_1.z.object({ date: zod_1.z.string(), usageKb: zod_1.z.number(), usageMb: zod_1.z.number(), }); exports.simUsageSchema = zod_1.z.object({ account: zod_1.z.string(), todayUsageMb: zod_1.z.number(), todayUsageKb: zod_1.z.number(), monthlyUsageMb: zod_1.z.number().optional(), monthlyUsageKb: zod_1.z.number().optional(), recentDaysUsage: zod_1.z.array(exports.recentDayUsageSchema), isBlacklisted: zod_1.z.boolean(), lastUpdated: zod_1.z.string().optional(), }); exports.simTopUpHistoryEntrySchema = zod_1.z.object({ quotaKb: zod_1.z.number(), quotaMb: zod_1.z.number(), addedDate: zod_1.z.string(), expiryDate: zod_1.z.string(), campaignCode: zod_1.z.string(), }); exports.simTopUpHistorySchema = zod_1.z.object({ account: zod_1.z.string(), totalAdditions: zod_1.z.number(), additionCount: zod_1.z.number(), history: zod_1.z.array(exports.simTopUpHistoryEntrySchema), }); exports.simTopUpRequestSchema = zod_1.z.object({ quotaMb: zod_1.z .number() .int() .min(100, "Quota must be at least 100MB") .max(51200, "Quota must be 50GB or less"), }); exports.simPlanChangeRequestSchema = zod_1.z.object({ newPlanCode: zod_1.z.string().min(1, "New plan code is required"), assignGlobalIp: zod_1.z.boolean().optional(), scheduledAt: zod_1.z .string() .regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format") .optional(), }); exports.simCancelRequestSchema = zod_1.z.object({ scheduledAt: zod_1.z .string() .regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format") .optional(), }); exports.simTopUpHistoryRequestSchema = zod_1.z.object({ fromDate: zod_1.z .string() .regex(/^\d{8}$/, "From date must be in YYYYMMDD format"), toDate: zod_1.z .string() .regex(/^\d{8}$/, "To date must be in YYYYMMDD format"), }); exports.simFeaturesUpdateRequestSchema = zod_1.z.object({ voiceMailEnabled: zod_1.z.boolean().optional(), callWaitingEnabled: zod_1.z.boolean().optional(), internationalRoamingEnabled: zod_1.z.boolean().optional(), networkType: zod_1.z.enum(["4G", "5G"]).optional(), }); exports.simOrderActivationMnpSchema = zod_1.z.object({ reserveNumber: zod_1.z.string().min(1, "Reserve number is required"), reserveExpireDate: zod_1.z.string().regex(/^\d{8}$/, "Reserve expire date must be in YYYYMMDD format"), account: zod_1.z.string().optional(), firstnameKanji: zod_1.z.string().optional(), lastnameKanji: zod_1.z.string().optional(), firstnameZenKana: zod_1.z.string().optional(), lastnameZenKana: zod_1.z.string().optional(), gender: zod_1.z.string().optional(), birthday: zod_1.z.string().regex(/^\d{8}$/, "Birthday must be in YYYYMMDD format").optional(), }); exports.simOrderActivationAddonsSchema = zod_1.z.object({ voiceMail: zod_1.z.boolean().optional(), callWaiting: zod_1.z.boolean().optional(), }); exports.simOrderActivationRequestSchema = zod_1.z.object({ planSku: zod_1.z.string().min(1, "Plan SKU is required"), simType: zod_1.z.enum(["eSIM", "Physical SIM"]), eid: zod_1.z.string().min(15, "EID must be at least 15 characters").optional(), activationType: zod_1.z.enum(["Immediate", "Scheduled"]), scheduledAt: zod_1.z.string().regex(/^\d{8}$/, "Scheduled date must be in YYYYMMDD format").optional(), addons: exports.simOrderActivationAddonsSchema.optional(), mnp: exports.simOrderActivationMnpSchema.optional(), msisdn: zod_1.z.string().min(1, "Phone number (msisdn) is required"), oneTimeAmountJpy: zod_1.z.number().nonnegative("One-time amount must be non-negative"), monthlyAmountJpy: zod_1.z.number().nonnegative("Monthly amount must be non-negative"), }).refine((data) => { if (data.simType === "eSIM" && (!data.eid || data.eid.length < 15)) { return false; } return true; }, { message: "EID is required for eSIM and must be at least 15 characters", path: ["eid"], }).refine((data) => { if (data.activationType === "Scheduled" && !data.scheduledAt) { return false; } return true; }, { message: "Scheduled date is required for Scheduled activation", path: ["scheduledAt"], }); exports.simTopupRequestSchema = exports.simTopUpRequestSchema; exports.simChangePlanRequestSchema = exports.simPlanChangeRequestSchema; exports.simFeaturesRequestSchema = exports.simFeaturesUpdateRequestSchema; //# sourceMappingURL=schema.js.map