"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.invoiceListQuerySchema = exports.invoiceQueryParamsSchema = exports.billingSummarySchema = exports.paymentInvoiceRequestSchema = exports.invoiceSsoLinkSchema = exports.invoiceListSchema = exports.invoicePaginationSchema = exports.invoiceSchema = exports.invoiceItemSchema = exports.invoiceStatusSchema = void 0; const zod_1 = require("zod"); exports.invoiceStatusSchema = zod_1.z.enum([ "Draft", "Pending", "Paid", "Unpaid", "Overdue", "Cancelled", "Refunded", "Collections", ]); exports.invoiceItemSchema = zod_1.z.object({ id: zod_1.z.number().int().positive("Invoice item id must be positive"), description: zod_1.z.string().min(1, "Description is required"), amount: zod_1.z.number(), quantity: zod_1.z.number().int().positive("Quantity must be positive").optional(), type: zod_1.z.string().min(1, "Item type is required"), serviceId: zod_1.z.number().int().positive().optional(), }); exports.invoiceSchema = zod_1.z.object({ id: zod_1.z.number().int().positive("Invoice id must be positive"), number: zod_1.z.string().min(1, "Invoice number is required"), status: exports.invoiceStatusSchema, currency: zod_1.z.string().min(1, "Currency is required"), currencySymbol: zod_1.z.string().min(1, "Currency symbol is required").optional(), total: zod_1.z.number(), subtotal: zod_1.z.number(), tax: zod_1.z.number(), issuedAt: zod_1.z.string().optional(), dueDate: zod_1.z.string().optional(), paidDate: zod_1.z.string().optional(), pdfUrl: zod_1.z.string().optional(), paymentUrl: zod_1.z.string().optional(), description: zod_1.z.string().optional(), items: zod_1.z.array(exports.invoiceItemSchema).optional(), daysOverdue: zod_1.z.number().int().nonnegative().optional(), }); exports.invoicePaginationSchema = zod_1.z.object({ page: zod_1.z.number().int().nonnegative(), totalPages: zod_1.z.number().int().nonnegative(), totalItems: zod_1.z.number().int().nonnegative(), nextCursor: zod_1.z.string().optional(), }); exports.invoiceListSchema = zod_1.z.object({ invoices: zod_1.z.array(exports.invoiceSchema), pagination: exports.invoicePaginationSchema, }); exports.invoiceSsoLinkSchema = zod_1.z.object({ url: zod_1.z.string().url(), expiresAt: zod_1.z.string(), }); exports.paymentInvoiceRequestSchema = zod_1.z.object({ invoiceId: zod_1.z.number().int().positive(), paymentMethodId: zod_1.z.number().int().positive().optional(), gatewayName: zod_1.z.string().optional(), amount: zod_1.z.number().positive().optional(), }); exports.billingSummarySchema = zod_1.z.object({ totalOutstanding: zod_1.z.number(), totalOverdue: zod_1.z.number(), totalPaid: zod_1.z.number(), currency: zod_1.z.string(), currencySymbol: zod_1.z.string().optional(), invoiceCount: zod_1.z.object({ total: zod_1.z.number().int().min(0), unpaid: zod_1.z.number().int().min(0), overdue: zod_1.z.number().int().min(0), paid: zod_1.z.number().int().min(0), }), }); exports.invoiceQueryParamsSchema = zod_1.z.object({ page: zod_1.z.coerce.number().int().positive().optional(), limit: zod_1.z.coerce.number().int().positive().max(100).optional(), status: exports.invoiceStatusSchema.optional(), dateFrom: zod_1.z.string().datetime().optional(), dateTo: zod_1.z.string().datetime().optional(), }); const invoiceListStatusSchema = zod_1.z.enum(["Paid", "Unpaid", "Cancelled", "Overdue", "Collections"]); exports.invoiceListQuerySchema = zod_1.z.object({ page: zod_1.z.coerce.number().int().positive().optional(), limit: zod_1.z.coerce.number().int().positive().max(100).optional(), status: invoiceListStatusSchema.optional(), }); //# sourceMappingURL=schema.js.map