type ScreenSize = "desktop" | "tablet" | "mobile"; type Orientation = "portrait" | "landscape"; type EqualityOperator = "is" | "is not"; type ArrayOperator = "in" | "not in"; type IntroOfferCondition = { type: "intro_offer"; }; type MultipleIntroOffersCondition = { type: "multiple_intro_offers"; }; type SelectedCondition = { type: "selected"; }; type HoverCondition = { type: "hover"; }; type ScreenSizeCondition = { type: "screen_size"; operator: ArrayOperator; sizes: ScreenSize[]; }; type OrientationCondition = { type: "orientation"; operator: ArrayOperator; orientations: Orientation[]; }; type IntroductoryOfferCondition = { type: "introductory_offer"; operator: EqualityOperator; value: boolean; }; type SelectedPackageCondition = { type: "selected_package"; operator: ArrayOperator; packages: string[]; }; type PromoOfferCondition = { type: "promo_offer"; }; type OverrideCondition = IntroOfferCondition | MultipleIntroOffersCondition | SelectedCondition | HoverCondition | ScreenSizeCondition | OrientationCondition | IntroductoryOfferCondition | SelectedPackageCondition | PromoOfferCondition; /** * The reserved properties of an override that should not be included in the override properties */ type ReservedProperty = "id" | "type" | "overrides" | "stack" | "components" | "items" | "pages" | "tabs"; type OverrideProperties = Partial>; type Override = { conditions: OverrideCondition[]; properties: OverrideProperties; }; export type Overrides = Override[]; export {};