import { z } from 'zod';

const ValuesSchema = z.object({
  lead: z.string().nullable(),
  opportunity: z.string().nullable(),
  quote: z.string().nullable(),
  recalcWithRevision: z.boolean(),
  product: z.string().nullable(),
  clientRisk: z.string().nullable(),
  clientType: z.string().nullable(),
  leaseObjectPrice: z.number(),
  supplierCurrency: z.string().nullable(),
  supplierDiscountRub: z.number(),
  supplierDiscountPerc: z.number(),
  leasingPeriod: z.number(),
  firstPaymentPerc: z.number(),
  firstPaymentRub: z.number(),
  lastPaymentPerc: z.number(),
  lastPaymentRub: z.number(),
  lastPaymentRule: z.number().nullable(),
  importProgram: z.string().nullable(),
  importProgramSum: z.number(),
  addEquipmentPrice: z.number(),
  redemptionPaymentSum: z.number(),
  balanceHolder: z.number().nullable(),
  graphType: z.number().nullable(),
  parmentsDecreasePercent: z.number(),
  seasonType: z.number().nullable(),
  highSeasonStart: z.number().nullable(),
  comissionPerc: z.number(),
  comissionRub: z.number(),
  saleBonus: z.number(),
  IRR_Perc: z.number(),
  leaseObjectType: z.string().nullable(),
  deliveryTime: z.number().nullable(),
  leaseObjectCount: z.number(),
  withTrailer: z.boolean(),
  leaseObjectUsed: z.boolean(),
  maxMass: z.number(),
  countSeats: z.number(),
  maxSpeed: z.number(),
  brand: z.string().nullable(),
  model: z.string().nullable(),
  configuration: z.string().nullable(),
  leaseObjectYear: z.number(),
  engineType: z.number().nullable(),
  leaseObjectCategory: z.number().nullable(),
  leaseObjectMotorPower: z.number(),
  engineVolume: z.number(),
  leaseObjectUseFor: z.number().nullable(),
  dealer: z.string().nullable(),
  dealerPerson: z.string().nullable(),
  dealerRewardCondition: z.string().nullable(),
  dealerRewardSumm: z.number(),
  dealerBroker: z.string().nullable(),
  dealerBrokerRewardCondition: z.string().nullable(),
  dealerBrokerRewardSumm: z.number(),
  indAgent: z.string().nullable(),
  indAgentRewardCondition: z.string().nullable(),
  indAgentRewardSumm: z.number(),
  calcDoubleAgent: z.string().nullable(),
  calcDoubleAgentRewardCondition: z.string().nullable(),
  calcDoubleAgentRewardSumm: z.number(),
  calcBroker: z.string().nullable(),
  calcBrokerRewardCondition: z.string().nullable(),
  calcBrokerRewardSum: z.number(),
  calcFinDepartment: z.string().nullable(),
  finDepartmentRewardCondtion: z.string().nullable(),
  finDepartmentRewardSumm: z.number(),
  GPSBrand: z.string().nullable(),
  GPSModel: z.string().nullable(),
  regionRegistration: z.string().nullable(),
  townRegistration: z.string().nullable(),
  infuranceOPF: z.number().nullable(),
  insKaskoType: z.number().nullable(),
  insDecentral: z.boolean(),
  insFranchise: z.number(),
  insUnlimitDrivers: z.boolean(),
  insAgeDrivers: z.number(),
  insExpDrivers: z.number(),
  INNForCalc: z.number(),
  lastPaymentRedemption: z.boolean(),
  priceWithDiscount: z.boolean(),
  fullPriceWithDiscount: z.boolean(),
  costIncrease: z.boolean(),
  insurance: z.boolean(),
  registrationQuote: z.boolean(),
  technicalCardQuote: z.boolean(),
  NSIB: z.boolean(),
  quoteName: z.string().nullable(),
  quoteContactGender: z.number().nullable(),
  quoteRedemptionGraph: z.boolean(),
  showFinGAP: z.boolean(),
  tarif: z.string().nullable(),
  creditRate: z.number(),
  rate: z.string().nullable(),
  requirementTelematic: z.number().nullable(),
  minPriceChange: z.number(),
  maxPriceChange: z.number(),
  importerRewardPerc: z.number(),
  importerRewardRub: z.number(),
  disableChecks: z.boolean(),
  registration: z.string().nullable(),
  insNSIB: z.string().nullable(),
  technicalCard: z.string().nullable(),
  telematic: z.string().nullable(),
  tracker: z.string().nullable(),
  mileage: z.number(),
  calcType: z.number().nullable(),
  totalPayments: z.number(),
  objectRegistration: z.number().nullable(),
  objectRegionRegistration: z.string().nullable(),
  vehicleTaxInYear: z.number(),
  vehicleTaxInLeasingPeriod: z.number(),
  objectCategoryTax: z.number().nullable(),
  objectTypeTax: z.number().nullable(),
  typePTS: z.number().nullable(),
  legalClientRegion: z.string().nullable(),
  legalClientTown: z.string().nullable(),
  subsidy: z.string().nullable(),
  fuelCard: z.string().nullable(),
  leaseObjectPriceWthtVAT: z.number(),
  VATInLeaseObjectPrice: z.number(),
  engineHours: z.number(),
  bonusCoefficient: z.number(),

  /** Link Values */
  kpUrl: z.string().nullable(),
  leadUrl: z.string().nullable(),
  opportunityUrl: z.string().nullable(),
  quoteUrl: z.string().nullable(),

  /** Readonly Values */
  leaseObjectRiskName: z.string().nullable(),
  insKaskoPriceLeasePeriod: z.number(),
  irrInfo: z.string().nullable(),
  registrationDescription: z.string().nullable(),
  depreciationGroup: z.string().nullable(),
  subsidySum: z.number(),
  plPriceRub: z.number(),
  discountRub: z.number(),
});

export default ValuesSchema;
