Variable: PricingScheduleConfig
const PricingScheduleConfig: 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:732
Composite condition backing a pricing-matrix "Schedule" (PLA-136). One
Conditions row = one whole Schedule. Precedent: HOUSEHOLD above is
already a multi-field composite condition, not a new idiom.
Evaluates against the line's start date/time only (start_field) — not
"any date in the span" the way DATE_INCLUDES does; deliberate
divergence, consistent with the uniform-schedule-line v1 scoping (see
condition-handlers.ts's pricingSchedule handler). duration is the
one dimension that reads both start_field and end_field, since it's
inherently about the span.
Validation (mirrors the overlap-detection algorithm's own constraints —
see schedule-overlap.ts):
day_of_week.daysmust be non-empty (.min(1)above) and must notexcludeall 7 days (matches nothing — a dead schedule).holidaysrequires a boundeddate_rangeon the same schedule.date_range.excludeis unsupported in v1 (seePricingScheduleDateRangeConfig's doc).- At least one of
day_of_week/time_range/date_range/duration/holidaysmust be present — a fully wildcard schedule would conflict with every other schedule under reject-on-write with no tiebreak.