import { z } from 'zod'; import { ProductSchema } from '../../models'; export namespace BuyProductCommand { export const RequestParamSchema = ProductSchema.pick({ uuid: true, }); export const RequestSchema = z.object({ promocode: z.string().optional(), }); export type RequestParam = z.infer; export type Request = 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 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 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, }), }), }); export type Response = z.infer; export const ResponseFastSchema = z.object({ data: ResponseSchema, restoreToken: z.string(), userUUID: z.string(), }); export type ResponseFast = z.infer; }