Kaizen
Browse modulesRulesrules/sharedSchemas and constants

Variable: BuiltInConditionConfig

const BuiltInConditionConfig: ZodUnion<readonly [ZodDiscriminatedUnion<[ZodObject<{
  condition_type: ZodLiteral<"FIELD_COMPARISON">;
  field: ZodString;
  operator: ZodLiteral<"eq">;
  value: ZodUnion<readonly [ZodString, ZodNumber, ZodBoolean]>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"FIELD_COMPARISON">;
  field: ZodString;
  operator: ZodLiteral<"neq">;
  value: ZodUnion<readonly [ZodString, ZodNumber, ZodBoolean]>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"FIELD_COMPARISON">;
  field: ZodString;
  operator: ZodLiteral<"gt">;
  value: ZodNumber;
}, $strip>], "operator">, ZodObject<{
  condition_type: ZodLiteral<"DATE_WINDOW">;
  end: ZodString;
  field: ZodString;
  start: ZodString;
}, $strip>, ZodUnion<readonly [ZodObject<{
  condition_type: ZodLiteral<"AGE_CHECK">;
  evaluation_date_field: ZodOptional<ZodString>;
  field: ZodString;
  max_age: ZodOptional<ZodNumber>;
  min_age: ZodNumber;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"AGE_CHECK">;
  evaluation_date_field: ZodOptional<ZodString>;
  field: ZodString;
  max_age: ZodNumber;
  min_age: ZodOptional<ZodNumber>;
}, $strip>]>, ZodObject<{
  condition_type: ZodLiteral<"DATE_INCLUDES">;
  days: ZodArray<ZodNumber>;
  end_field: ZodString;
  start_field: ZodString;
}, $strip>, ZodObject<{
  codes: ZodArray<ZodString>;
  condition_type: ZodLiteral<"DISCOUNT_CODE">;
  field: ZodOptional<ZodString>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"DURATION_CHECK">;
  end_field: ZodString;
  max: ZodOptional<ZodNumber>;
  min: ZodOptional<ZodNumber>;
  start_field: ZodString;
  unit: ZodOptional<ZodString>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"GROUP_SIZE">;
  field: ZodString;
  max: ZodOptional<ZodNumber>;
  min: ZodOptional<ZodNumber>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"PRICE_THRESHOLD">;
  operator: ZodUnion<readonly [ZodEnum<{
     gt: "gt";
     gte: "gte";
     lt: "lt";
     lte: "lte";
   }>, ZodEnum<{
     eq: "eq";
     neq: "neq";
  }>]>;
  price_field: ZodString;
  value: ZodNumber;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"TIME_OF_DAY">;
  end: ZodString;
  field: ZodString;
  start: ZodString;
  zone: ZodOptional<ZodString>;
}, $strip>, ZodUnion<readonly [ZodObject<{
  condition_type: ZodLiteral<"RELATIVE_DATE_CHECK">;
  evaluation_date_field: ZodOptional<ZodString>;
  field: ZodString;
  max: ZodOptional<ZodNumber>;
  min: ZodNumber;
  unit: ZodOptional<ZodEnum<{
     days: "days";
     hours: "hours";
  }>>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"RELATIVE_DATE_CHECK">;
  evaluation_date_field: ZodOptional<ZodString>;
  field: ZodString;
  max: ZodNumber;
  min: ZodOptional<ZodNumber>;
  unit: ZodOptional<ZodEnum<{
     days: "days";
     hours: "hours";
  }>>;
}, $strip>]>, ZodObject<{
  adults_min_age: ZodNumber;
  condition_type: ZodLiteral<"HOUSEHOLD">;
  dob_field: ZodOptional<ZodString>;
  id_field: ZodOptional<ZodString>;
  members_field: ZodOptional<ZodString>;
  num_adults_max: ZodOptional<ZodNumber>;
  num_adults_min: ZodOptional<ZodNumber>;
  num_youth_max: ZodOptional<ZodNumber>;
  num_youth_min: ZodOptional<ZodNumber>;
  youth_max_age: ZodNumber;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"HOLIDAY">;
  field: ZodString;
  holidays: ZodArray<ZodEnum<{
     CHRISTMAS_DAY: "CHRISTMAS_DAY";
     COLUMBUS_DAY: "COLUMBUS_DAY";
     INDEPENDENCE_DAY: "INDEPENDENCE_DAY";
     JUNETEENTH: "JUNETEENTH";
     LABOR_DAY: "LABOR_DAY";
     MEMORIAL_DAY: "MEMORIAL_DAY";
     MLK_DAY: "MLK_DAY";
     NEW_YEARS_DAY: "NEW_YEARS_DAY";
     PRESIDENTS_DAY: "PRESIDENTS_DAY";
     THANKSGIVING: "THANKSGIVING";
     VETERANS_DAY: "VETERANS_DAY";
  }>>;
  include_observed: ZodOptional<ZodBoolean>;
  zone: ZodOptional<ZodString>;
}, $strip>, ZodObject<{
  condition_type: ZodLiteral<"PRICING_SCHEDULE">;
  date_range: ZodOptional<ZodObject<{
     end: ZodISODate;
     exclude: ZodOptional<ZodBoolean>;
     start: ZodISODate;
  }, $strip>>;
  day_of_week: ZodOptional<ZodObject<{
     days: ZodArray<ZodNumber>;
     exclude: ZodOptional<ZodBoolean>;
  }, $strip>>;
  duration: ZodOptional<ZodObject<{
     max: ZodOptional<ZodNumber>;
     max_exclusive: ZodOptional<ZodBoolean>;
     min: ZodOptional<ZodNumber>;
     min_exclusive: ZodOptional<ZodBoolean>;
     unit: ZodOptional<ZodEnum<{
        days: "days";
        hours: "hours";
        minutes: "minutes";
     }>>;
  }, $strip>>;
  end_field: ZodString;
  holidays: ZodOptional<ZodObject<{
     exclude: ZodOptional<ZodBoolean>;
     include_observed: ZodOptional<ZodBoolean>;
     names: ZodArray<ZodEnum<{
        CHRISTMAS_DAY: "CHRISTMAS_DAY";
        COLUMBUS_DAY: "COLUMBUS_DAY";
        INDEPENDENCE_DAY: "INDEPENDENCE_DAY";
        JUNETEENTH: "JUNETEENTH";
        LABOR_DAY: "LABOR_DAY";
        MEMORIAL_DAY: "MEMORIAL_DAY";
        MLK_DAY: "MLK_DAY";
        NEW_YEARS_DAY: "NEW_YEARS_DAY";
        PRESIDENTS_DAY: "PRESIDENTS_DAY";
        THANKSGIVING: "THANKSGIVING";
        VETERANS_DAY: "VETERANS_DAY";
     }>>;
  }, $strip>>;
  offered_until: ZodOptional<ZodISODate>;
  start_field: ZodString;
  time_range: ZodOptional<ZodObject<{
     end_min: ZodNumber;
     exclude: ZodOptional<ZodBoolean>;
     start_min: ZodNumber;
  }, $strip>>;
  zone: ZodOptional<ZodString>;
}, $strip>]>;

Defined in: shared/rules/types/conditions.ts:821

Discriminated union of all built-in condition configs. The discriminator is condition_type; each variant's config schema embeds its own literal.

Uses z.union at the outer layer (not z.discriminatedUnion) because FieldComparisonConfig is itself a discriminated union on operator, and nesting discriminated unions in Zod v4 is fragile. The TypeScript inferred type is still discriminated on condition_type, so ts-pattern can exhaustively match on it.