import { z } from "zod"; export declare const OFFER_STATUSES: readonly ["draft", "scheduled", "active", "paused", "expired", "archived"]; export type OfferStatus = (typeof OFFER_STATUSES)[number]; export declare const OFFER_DISCOUNT_TYPES: readonly ["percentage", "fixed_amount"]; export type OfferDiscountType = (typeof OFFER_DISCOUNT_TYPES)[number]; export declare const OFFER_CHANNELS: readonly ["website", "admin", "api", "marketplace"]; export type OfferChannel = (typeof OFFER_CHANNELS)[number]; export declare const OFFER_CUSTOMER_SEGMENTS: readonly ["new", "returning", "vip", "loyalty_gold", "loyalty_silver", "loyalty_bronze"]; export type OfferCustomerSegment = (typeof OFFER_CUSTOMER_SEGMENTS)[number]; /** * Condition: Booking window (days before departure) * Used for early bird / last minute deals */ export declare const bookingWindowConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"booking_window">; minDaysBefore: z.ZodOptional; maxDaysBefore: z.ZodOptional; }, z.core.$strip>; export type BookingWindowCondition = z.infer; /** * Condition: Minimum travelers * Used for group booking discounts */ export declare const minPaxConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"min_pax">; minPassengers: z.ZodNumber; }, z.core.$strip>; export type MinPaxCondition = z.infer; /** * Condition: Booking date range * Offer applies when booking is made within date range */ export declare const bookingDateConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"booking_date">; from: z.ZodOptional; to: z.ZodOptional; }, z.core.$strip>; export type BookingDateCondition = z.infer; /** * Condition: Customer segments * Offer applies to specific customer types */ export declare const customerSegmentConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"customer_segment">; segments: z.ZodArray; }, z.core.$strip>; export type CustomerSegmentCondition = z.infer; /** * Condition: Booking channels * Offer applies on specific booking channels */ export declare const channelConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"channel">; channels: z.ZodArray>; }, z.core.$strip>; export type ChannelCondition = z.infer; /** * Condition: First-time customer * Offer only for new customers */ export declare const firstTimeCustomerConditionSchema: z.ZodObject<{ type: z.ZodLiteral<"first_time_customer">; enabled: z.ZodBoolean; }, z.core.$strip>; export type FirstTimeCustomerCondition = z.infer; /** * Union of all condition types */ export declare const offerConditionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ type: z.ZodLiteral<"booking_window">; minDaysBefore: z.ZodOptional; maxDaysBefore: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"min_pax">; minPassengers: z.ZodNumber; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"booking_date">; from: z.ZodOptional; to: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"customer_segment">; segments: z.ZodArray; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"channel">; channels: z.ZodArray>; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"first_time_customer">; enabled: z.ZodBoolean; }, z.core.$strip>], "type">; export type OfferCondition = z.infer; /** * Full conditions object (array of conditions - all must match) */ export declare const offerConditionsSchema: z.ZodObject<{ conditions: z.ZodDefault; minDaysBefore: z.ZodOptional; maxDaysBefore: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"min_pax">; minPassengers: z.ZodNumber; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"booking_date">; from: z.ZodOptional; to: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"customer_segment">; segments: z.ZodArray; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"channel">; channels: z.ZodArray>; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"first_time_customer">; enabled: z.ZodBoolean; }, z.core.$strip>], "type">>>>; }, z.core.$strip>; export type OfferConditions = z.infer; export declare const offerStatusSchema: z.ZodEnum<{ active: "active"; draft: "draft"; archived: "archived"; scheduled: "scheduled"; paused: "paused"; expired: "expired"; }>; export type OfferStatusSchema = z.infer; export declare const offerDiscountTypeSchema: z.ZodEnum<{ percentage: "percentage"; fixed_amount: "fixed_amount"; }>; export type OfferDiscountTypeSchema = z.infer; export declare const offerChannelSchema: z.ZodEnum<{ admin: "admin"; website: "website"; marketplace: "marketplace"; api: "api"; }>; export type OfferChannelSchema = z.infer; export declare const offerCustomerSegmentSchema: z.ZodEnum<{ returning: "returning"; new: "new"; vip: "vip"; loyalty_gold: "loyalty_gold"; loyalty_silver: "loyalty_silver"; loyalty_bronze: "loyalty_bronze"; }>; export type OfferCustomerSegmentSchema = z.infer; /** * Core offer fields schema - shared validation for common offer columns. * Used by both db-main and db-marketplace. */ export declare const offerCoreFieldsSchema: z.ZodObject<{ name: z.ZodString; description: z.ZodOptional>; badge: z.ZodOptional>; discountType: z.ZodEnum<{ percentage: "percentage"; fixed_amount: "fixed_amount"; }>; discountValue: z.ZodString; currency: z.ZodOptional>; applicableProductIds: z.ZodOptional>>; applicableDepartureIds: z.ZodOptional>>; validFrom: z.ZodOptional>; validTo: z.ZodOptional>; conditions: z.ZodDefault; minDaysBefore: z.ZodOptional; maxDaysBefore: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"min_pax">; minPassengers: z.ZodNumber; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"booking_date">; from: z.ZodOptional; to: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"customer_segment">; segments: z.ZodArray; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"channel">; channels: z.ZodArray>; }, z.core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"first_time_customer">; enabled: z.ZodBoolean; }, z.core.$strip>], "type">>>>; }, z.core.$strip>>>; stackable: z.ZodDefault; stackingGroup: z.ZodOptional>; priority: z.ZodDefault; isActive: z.ZodDefault; displayPriority: z.ZodDefault; }, z.core.$strip>; export type OfferCoreFields = z.infer; /** * Timestamp fields for offers */ export declare const offerTimestampsSchema: z.ZodObject<{ createdAt: z.ZodDate; updatedAt: z.ZodDate; }, z.core.$strip>; export type OfferTimestamps = z.infer; //# sourceMappingURL=offers.d.ts.map