import { z } from "zod";

const paymentGatewaySchema = z.object({
  paymentGatewayOption: z.string().min(1, "Please select a payment gateway option"),
  merchantId: z.string().min(1, "Merchant ID is required"),
  subMerchantId: z.string().min(1, "Sub-Merchant ID is required"),
  secretKey: z.string().min(1, "Secret Key is required"),
  setAsValue: z.string().min(1, "Please select a Set As value"),
});

export const paymentSchema = z.object({
  paymentGateways: z.array(paymentGatewaySchema).min(1, "At least one payment gateway is required"),
});

const earlySettlementSchema = z.object({
  isEarlySettlement: z.boolean(),
});

const settingSchema = z.object({
  transactionsPerDay: z.number().min(1, "At least one transaction per day is required"),
  numberTransactions: z.number().min(1, "At least one transaction is required"),
});

const configurationSchema = z.object({
  autoBlockFrauds: z.boolean(),
  enableVouchersOnConsumerFinance: z.boolean(),
});

export const settingConfigurationSchema = z.object({
  paymentGateways: z.array(paymentGatewaySchema).min(1, "At least one payment gateway is required"),
  setting: settingSchema,
  earlySettlement: earlySettlementSchema,
  configuration: configurationSchema
});

export type PaymentGetWayFormValues = z.infer<typeof paymentGatewaySchema>;
export type EarlySettlementSchemaFormValues = z.infer<typeof earlySettlementSchema>;
export type SettingSchemaFormValues = z.infer<typeof settingSchema>;
export type ConfigurationSchemaFormValues = z.infer<typeof configurationSchema>;
export type SettingConfigurationFormValues = z.infer<typeof settingConfigurationSchema>;
