import { ServiceType } from "./tariff"; export interface CartSummary { mbs: number; points: number; days: number; } export interface Promocode { id: number; name: string; endless: boolean; from: string; dueTo: string; privileges: Array; } export interface Privileges { good: ServiceType, discount: number; } export interface Discount { id: number; name: string; endless: boolean; from: string; dueTo: string; privileges: Array; active: boolean; basketMore: number; incomeMore: number; toTime: number; toCapacity: number; } // New types from snippet export namespace Cart { type ServiceType = | "templategen" | "squiz" | "dwarfener"; type PrivilegeType = | "unlim" | "gencount" | "activequiz" | "abcount" | "extended"; export interface Privilege { serviceKey: ServiceType; name: PrivilegeType; privilegeId: string; description: string; type: "day" | "count"; price: number; } export type Discount = { _id: string; name: string; description: string; /** * Этап применения скидки */ layer: number; } & ({ conditionType: "purchasesAmount"; condition: { purchasesAmount: number; }; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; } | { conditionType: "cartPurchasesAmount"; condition: { cartPurchasesAmount: number; }; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; } | { conditionType: "privilege"; condition: { privilege: { id: string; /** * Скидка применяется, если значение больше или равно этому значению */ value: number; }; }; target: { products: Array<{ productId: string; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; }>; }; } | { conditionType: "service"; condition: { service: { id: ServiceType; /** * Скидка применяется, если значение больше или равно этому значению */ value: number; }; }; target: { service: ServiceType; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; }; } | { conditionType: "userType"; condition: { userType: string; }; target: { IsAllProducts: boolean; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; }; overwhelm: boolean; } | { conditionType: "user"; condition: { coupon: string; user: string; }; target: { products: Array<{ productId: string; /** * Множитель, на который умножается сумма при применении скидки */ factor: number; }>; }; overwhelm: boolean; }); export type DiscountConditionType = Discount["conditionType"]; }