Files
cfw-autumn/shared/api/billing/common/billingPreviewResponse.ts
2026-02-03 16:55:24 +00:00

46 lines
1.1 KiB
TypeScript

import { LineItemDiscountSchema } from "@models/billingModels/lineItem/lineItem.js";
import { z } from "zod/v4";
export const PreviewLineItemSchema = z.object({
title: z.string(),
description: z.string(),
amount: z.number(),
discounts: z.array(LineItemDiscountSchema).default([]),
is_base: z.boolean().optional(),
total_quantity: z.number(),
paid_quantity: z.number(),
plan_id: z.string(),
deferred_for_trial: z.boolean().optional(),
effective_period: z
.object({
start: z.number(),
end: z.number(),
})
.optional(),
});
export type PreviewLineItem = z.infer<typeof PreviewLineItemSchema>;
export const BillingPreviewResponseSchema = z.object({
customer_id: z.string(),
line_items: z.array(PreviewLineItemSchema),
total: z.number(),
currency: z.string(),
period_start: z.number().optional(),
period_end: z.number().optional(),
next_cycle: z
.object({
starts_at: z.number(),
total: z.number(),
line_items: z.array(PreviewLineItemSchema),
})
.optional(),
});
export type BillingPreviewResponse = z.infer<
typeof BillingPreviewResponseSchema
>;