import { z } from 'zod'; import { SubscriptionSchema } from '../../models'; export namespace BuySubscriptionCommand { export const RequestParamSchema = SubscriptionSchema.pick({ uuid: true, }); export const RequestSchema = z.object({ promocode: z.string().optional(), }); export type Request = z.infer; export const RequestFastSchema = z.object({ email: z.string().email(), marketingConsent: z.boolean(), partnerId: z.string().uuid().optional(), promocode: z.string().optional(), }); export type RequestFast = z.infer; export type RequestParam = z.infer; const IReceiptOrderSchema = z.object({ items: z.array( z.object({ label: z.string(), price: z.number(), quantity: z.number(), amount: z.number(), vat: z.number(), }), ), email: z.string(), isBso: z.boolean(), amounts: z.object({ electronic: z.number(), }), }); export const ResponseSchema = z.object({ publicId: z.string(), amount: z.number(), currency: z.string(), accountId: z.string(), description: z.string(), invoiceId: z.string(), email: z.string(), skin: z.string(), autoClose: z.number(), data: z.object({ CloudPayments: z.object({ CustomerReceipt: IReceiptOrderSchema, recurrent: z.object({ period: z.number(), interval: z.string(), amount: z.number(), customerReceipt: IReceiptOrderSchema, }), }), }), }); export type Response = z.infer; export const ResponseFastSchema = z.object({ data: ResponseSchema, restoreToken: z.string(), userUUID: z.string(), }); export type ResponseFast = z.infer; }