@tabres/react 1.0.56 → 1.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- var E,A,R,_,T,I,N,D,O,C,S,L,P,U,M,V,n,e,H,Y,B,G,W,i,F,t;!function(E){E.SINGLE="SINGLE",E.MULTIPLE="MULTIPLE"}(E||(E={})),function(E){E.FIXED="FIXED",E.DISTANCE="DISTANCE"}(A||(A={})),function(E){E.MAX_DELIVERY_DISTANCE="maxDeliveryDistance",E.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",E.PICKUP_ORDER_ENABLED="pickupOrderEnabled",E.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",E.MIN_DELIVERY_AMOUNT="minDeliveryAmount",E.DELIVERY_FEE_AMOUNT="deliveryFeeAmount",E.DELIVERY_FEE_TYPE="deliveryFeeType",E.DELIVERY_FEE_TIERS="deliveryFeeTiers",E.SERVICE_CHARGE_ENABLED="serviceChargeEnabled",E.SERVICE_CHARGE_PERCENTAGE="serviceChargePercentage",E.ADD_TO_ORDER_ENABLED="addToOrderEnabled",E.GUEST_ORDER_ENABLED="guestOrderEnabled",E.PRIMARY_PAYMENT_METHODS="primaryPaymentMethods",E.SECONDARY_PAYMENT_METHODS="secondaryPaymentMethods"}(R||(R={})),function(E){E.PERCENTAGE="percentage",E.FIXED_AMOUNT="fixed"}(_||(_={})),function(E){E.ENTIRE_MENU="entire_menu",E.CLASS="class"}(T||(T={})),function(E){E.DELIVERY="delivery",E.TAKEAWAY="takeaway",E.DINE_IN="dine_in",E.ALL="ALL"}(I||(I={})),function(E){E.MAX_DELIVERY_DISTANCE="maxDeliveryDistance",E.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",E.PICKUP_ORDER_ENABLED="pickupOrderEnabled",E.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",E.MIN_DELIVERY_AMOUNT="minDeliveryAmount"}(N||(N={})),function(E){E.PHONE="PHONE",E.OTP="OTP",E.EMAIL="EMAIL"}(D||(D={})),function(E){E.HOME="HOME",E.WORK="WORK",E.TRAVEL="TRAVEL"}(O||(O={})),function(E){E.UPLOAD_VIDEO="UPLOAD_VIDEO"}(C||(C={})),function(E){E.ALPHA="ALPHA",E.BETA="BETA",E.ALL="ALL"}(S||(S={})),function(E){E.DINE_IN="DINE_IN",E.PICK_UP="PICK_UP",E.DELIVERY="DELIVERY"}(L||(L={})),function(E){E.DRAFT="DRAFT",E.PENDING="PENDING",E.CONFIRMED="CONFIRMED",E.PREPARING="PREPARING",E.READY="READY",E.OUT_FOR_DELIVERY="OUT_FOR_DELIVERY",E.DELIVERED="DELIVERED",E.COMPLETED="COMPLETED",E.CANCELLED="CANCELLED",E.FAILED="FAILED"}(P||(P={})),function(E){E.PENDING="PENDING",E.PREPARING="PREPARING",E.READY="READY",E.SERVED="SERVED"}(U||(U={})),function(E){E.CASH="CASH",E.CARD="CARD",E.BANK_TRANSFER="BANK_TRANSFER",E.MOBILE="MOBILE",E.QR="QR",E.VOUCHER="VOUCHER",E.COMP="COMP",E.MIXED="MIXED"}(M||(M={})),function(E){E.CART="CART",E.DETAILS="DETAILS",E.COMPLETED="COMPLETED"}(V||(V={})),function(E){E.GLUTEN="GLUTEN",E.CRUSTACEANS="CRUSTACEANS",E.EGGS="EGGS",E.FISH="FISH",E.PEANUTS="PEANUTS",E.SOY="SOY",E.MILK="MILK",E.TREE_NUTS="TREE_NUTS",E.CELERY="CELERY",E.MUSTARD="MUSTARD",E.SESAME="SESAME",E.SULPHITES="SULPHITES",E.LUPIN="LUPIN",E.MOLLUSCS="MOLLUSCS",E.BUCKWHEAT="BUCKWHEAT"}(n||(n={})),function(E){E.LIST="list",E.GRID="grid"}(e||(e={})),function(E){E.PIECE="PIECE",E.WEIGHT="WEIGHT",E.VOLUME="VOLUME"}(H||(H={})),function(E){E.APPETIZER="appetizer",E.MAIN_COURSE="mainCourse",E.CHEFS_SPECIAL="chefsSpecial",E.LIFETIME="lifeTime"}(Y||(Y={})),function(E){E.ACTIVE="ACTIVE",E.EXPIRED="EXPIRED",E.CANCELLED="CANCELLED"}(B||(B={})),function(E){E.SQUARE="SQUARE",E.CIRCLE="CIRCLE",E.RECTANGLE="RECTANGLE",E.RECTANGLE_VERTICAL="RECTANGLE_VERTICAL",E.SINGLE_AT_BAR="SINGLE_AT_BAR",E.OTHER="OTHER"}(G||(G={})),function(E){E.VACANT="VACANT",E.RESERVED="RESERVED",E.OCCUPIED="OCCUPIED",E.BLOCKED="BLOCKED",E.NEEDS_CLEANING="NEEDS_CLEANING",E.OUT_OF_SERVICE="OUT_OF_SERVICE",E.PENDING_CONFIRMATION="PENDING_CONFIRMATION",E.NO_SHOW="NO_SHOW"}(W||(W={})),function(E){E.MAIN_HALL="MAIN_HALL",E.PRIVATE_DINING="PRIVATE_DINING",E.VIP_ROOM="VIP_ROOM",E.BANQUET_HALL="BANQUET_HALL",E.BAR_AREA="BAR_AREA",E.LOUNGE="LOUNGE",E.OPEN_KITCHEN="OPEN_KITCHEN",E.BOOTH_SECTION="BOOTH_SECTION",E.MEZZANINE="MEZZANINE",E.WINE_CELLAR="WINE_CELLAR",E.TERRACE="TERRACE",E.PATIO="PATIO",E.GARDEN="GARDEN",E.COURTYARD="COURTYARD",E.ROOFTOP="ROOFTOP",E.BALCONY="BALCONY",E.SIDEWALK="SIDEWALK",E.POOLSIDE="POOLSIDE",E.SMOKING_AREA="SMOKING_AREA",E.NON_SMOKING="NON_SMOKING",E.FAMILY_SECTION="FAMILY_SECTION",E.KIDS_AREA="KIDS_AREA",E.WAITING_AREA="WAITING_AREA",E.DANCE_FLOOR="DANCE_FLOOR"}(i||(i={})),function(E){E.VIEW_BUSINESS="VIEW_BUSINESS",E.UPDATE_BUSINESS="UPDATE_BUSINESS",E.VIEW_BUSINESS_FINANCIALS="VIEW_BUSINESS_FINANCIALS",E.VIEW_ORDERS="VIEW_ORDERS",E.UPDATE_ORDER="UPDATE_ORDER",E.CREATE_ORDER="CREATE_ORDER",E.APPLY_DISCOUNT="APPLY_DISCOUNT",E.VIEW_QR_MENU="VIEW_QR_MENU",E.UPDATE_QR_MENU="UPDATE_QR_MENU",E.VIEW_MENU="VIEW_MENU",E.VIEW_MENU_ITEMS="VIEW_MENU_ITEMS",E.CREATE_MENU_ITEM="CREATE_MENU_ITEM",E.UPDATE_MENU_ITEM="UPDATE_MENU_ITEM",E.DELETE_MENU_ITEM="DELETE_MENU_ITEM",E.VIEW_CATEGORIES="VIEW_CATEGORIES",E.UPDATE_CATEGORY="UPDATE_CATEGORY",E.CREATE_CATEGORY="CREATE_CATEGORY",E.DELETE_CATEGORY="DELETE_CATEGORY",E.VIEW_ADDONS="VIEW_ADDONS",E.UPDATE_ADDON="UPDATE_ADDON",E.CREATE_ADDON="CREATE_ADDON",E.DELETE_ADDON="DELETE_ADDON",E.VIEW_TABLES="VIEW_TABLES",E.UPDATE_TABLE="UPDATE_TABLE",E.UPDATE_TABLE_STATUS="UPDATE_TABLE_STATUS",E.CREATE_TABLE="CREATE_TABLE",E.DELETE_TABLE="DELETE_TABLE",E.VIEW_BRANCHES="VIEW_BRANCHES",E.UPDATE_BRANCH="UPDATE_BRANCH",E.CREATE_BRANCH="CREATE_BRANCH",E.DELETE_BRANCH="DELETE_BRANCH",E.VIEW_EMPLOYEES="VIEW_EMPLOYEES",E.UPDATE_EMPLOYEE="UPDATE_EMPLOYEE",E.CREATE_EMPLOYEE="CREATE_EMPLOYEE",E.DELETE_EMPLOYEE="DELETE_EMPLOYEE",E.VIEW_ANALYTICS="VIEW_ANALYTICS",E.VIEW_SALES_REPORTS="VIEW_SALES_REPORTS",E.VIEW_SUBSCRIPTION="VIEW_SUBSCRIPTION",E.UPDATE_SUBSCRIPTION="UPDATE_SUBSCRIPTION",E.VIEW_QR_CODES="VIEW_QR_CODES",E.CREATE_QR_CODE="CREATE_QR_CODE",E.DELETE_QR_CODE="DELETE_QR_CODE",E.ALL="ALL",E.VIEW_INVENTORY="VIEW_INVENTORY",E.VIEW_PURCHASES="VIEW_PURCHASES",E.VIEW_PURCHASE_DETAIL="VIEW_PURCHASE_DETAIL",E.CREATE_PURCHASE="CREATE_PURCHASE",E.UPDATE_PURCHASE="UPDATE_PURCHASE",E.DELETE_PURCHASE="DELETE_PURCHASE",E.VIEW_INVENTORY_PRODUCTS="VIEW_INVENTORY_PRODUCTS",E.CREATE_INVENTORY_PRODUCT="CREATE_INVENTORY_PRODUCT",E.UPDATE_INVENTORY_PRODUCT="UPDATE_INVENTORY_PRODUCT",E.DELETE_INVENTORY_PRODUCT="DELETE_INVENTORY_PRODUCT",E.VIEW_BUSINESS_BALANCE="VIEW_BUSINESS_BALANCE",E.VIEW_BRANCH_BALANCE="VIEW_BRANCH_BALANCE",E.UPDATE_PRODUCT_INGREDIENTS="UPDATE_PRODUCT_INGREDIENTS",E.DELETE_PRODUCT_INGREDIENTS="DELETE_PRODUCT_INGREDIENTS",E.AI_ASSISTANT="AI_ASSISTANT",E.VIEW_PAYMENTS="VIEW_PAYMENTS",E.TAKE_PAYMENT="TAKE_PAYMENT",E.REFUND_PAYMENT="REFUND_PAYMENT",E.PAYMENT_COMP="COMP"}(F||(F={})),function(E){E.OWNER="OWNER",E.BRANCH_MANAGER="BRANCH_MANAGER",E.GENERAL_MANAGER="GENERAL_MANAGER",E.CHEF="CHEF",E.SOUS_CHEF="SOUS_CHEF",E.PASTRY_CHEF="PASTRY_CHEF",E.LINE_COOK="LINE_COOK",E.PREP_COOK="PREP_COOK",E.KITCHEN_ASSISTANT="KITCHEN_ASSISTANT",E.DISHWASHER="DISHWASHER",E.HEAD_WAITER="HEAD_WAITER",E.WAITER="WAITER",E.RUNNER="RUNNER",E.BARISTA="BARISTA",E.BARTENDER="BARTENDER",E.SOMMELIER="SOMMELIER",E.ACCOUNTANT="ACCOUNTANT",E.ROOM_SERVICE_STAFF="ROOM_SERVICE_STAFF",E.DELIVERY_DRIVER="DELIVERY_DRIVER",E.INVENTORY_MANAGER="INVENTORY_MANAGER",E.PURCHASING_MANAGER="PURCHASING_MANAGER",E.WAREHOUSE_STAFF="WAREHOUSE_STAFF",E.CASHIER="CASHIER"}(t||(t={}));export{n as Allergen,R as BranchSetting,I as BranchTaxFulfillment,T as BranchTaxScope,_ as BranchTaxType,N as BusinessSetting,O as CustomerAddressType,D as CustomerAuthStep,A as DeliveryFeeType,F as EmployeePermission,C as Feature,S as FeatureSegment,E as MenuAddonSelectType,U as OrderItemStatus,P as OrderStatus,V as OrderStep,L as OrderType,M as PaymentMethod,Y as PlanType,e as ProductView,H as SellUnitType,B as SubscriptionStatus,i as TableLocation,G as TableShape,W as TableStatus,t as UserRole};
1
+ var E,A,_,R,T,I,N,D,S,O,C,L,P,U,M,V,n,e,H,Y,B,W,G,i,F,t;!function(E){E.SINGLE="SINGLE",E.MULTIPLE="MULTIPLE"}(E||(E={})),function(E){E.FIXED="FIXED",E.DISTANCE="DISTANCE"}(A||(A={})),function(E){E.MAX_DELIVERY_DISTANCE="maxDeliveryDistance",E.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",E.PICKUP_ORDER_ENABLED="pickupOrderEnabled",E.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",E.MIN_DELIVERY_AMOUNT="minDeliveryAmount",E.DELIVERY_FEE_AMOUNT="deliveryFeeAmount",E.DELIVERY_FEE_TYPE="deliveryFeeType",E.DELIVERY_FEE_TIERS="deliveryFeeTiers",E.SERVICE_CHARGE_ENABLED="serviceChargeEnabled",E.SERVICE_CHARGE_PERCENTAGE="serviceChargePercentage",E.ADD_TO_ORDER_ENABLED="addToOrderEnabled",E.GUEST_ORDER_ENABLED="guestOrderEnabled",E.PRIMARY_PAYMENT_METHODS="primaryPaymentMethods",E.SECONDARY_PAYMENT_METHODS="secondaryPaymentMethods"}(_||(_={})),function(E){E.PERCENTAGE="percentage",E.FIXED_AMOUNT="fixed"}(R||(R={})),function(E){E.ENTIRE_MENU="entire_menu",E.CLASS="class"}(T||(T={})),function(E){E.DELIVERY="delivery",E.TAKEAWAY="takeaway",E.DINE_IN="dine_in",E.ALL="ALL"}(I||(I={})),function(E){E.MAX_DELIVERY_DISTANCE="maxDeliveryDistance",E.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",E.PICKUP_ORDER_ENABLED="pickupOrderEnabled",E.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",E.MIN_DELIVERY_AMOUNT="minDeliveryAmount"}(N||(N={})),function(E){E.PHONE="PHONE",E.OTP="OTP",E.EMAIL="EMAIL"}(D||(D={})),function(E){E.HOME="HOME",E.WORK="WORK",E.TRAVEL="TRAVEL"}(S||(S={})),function(E){E.UPLOAD_VIDEO="UPLOAD_VIDEO"}(O||(O={})),function(E){E.ALPHA="ALPHA",E.BETA="BETA",E.ALL="ALL"}(C||(C={})),function(E){E.DINE_IN="DINE_IN",E.PICK_UP="PICK_UP",E.DELIVERY="DELIVERY"}(L||(L={})),function(E){E.DRAFT="DRAFT",E.PENDING="PENDING",E.CONFIRMED="CONFIRMED",E.PREPARING="PREPARING",E.READY="READY",E.OUT_FOR_DELIVERY="OUT_FOR_DELIVERY",E.DELIVERED="DELIVERED",E.COMPLETED="COMPLETED",E.CANCELLED="CANCELLED",E.FAILED="FAILED"}(P||(P={})),function(E){E.PENDING="PENDING",E.PREPARING="PREPARING",E.READY="READY",E.SERVED="SERVED"}(U||(U={})),function(E){E.CASH="CASH",E.CARD="CARD",E.BANK_TRANSFER="BANK_TRANSFER",E.MOBILE="MOBILE",E.QR="QR",E.VOUCHER="VOUCHER",E.COMP="COMP",E.MIXED="MIXED"}(M||(M={})),function(E){E.CART="CART",E.DETAILS="DETAILS",E.COMPLETED="COMPLETED"}(V||(V={})),function(E){E.GLUTEN="GLUTEN",E.CRUSTACEANS="CRUSTACEANS",E.EGGS="EGGS",E.FISH="FISH",E.PEANUTS="PEANUTS",E.SOY="SOY",E.MILK="MILK",E.TREE_NUTS="TREE_NUTS",E.CELERY="CELERY",E.MUSTARD="MUSTARD",E.SESAME="SESAME",E.SULPHITES="SULPHITES",E.LUPIN="LUPIN",E.MOLLUSCS="MOLLUSCS",E.BUCKWHEAT="BUCKWHEAT"}(n||(n={})),function(E){E.LIST="list",E.GRID="grid"}(e||(e={})),function(E){E.PIECE="PIECE",E.WEIGHT="WEIGHT",E.VOLUME="VOLUME"}(H||(H={})),function(E){E.APPETIZER="appetizer",E.MAIN_COURSE="mainCourse",E.CHEFS_SPECIAL="chefsSpecial",E.LIFETIME="lifeTime"}(Y||(Y={})),function(E){E.ACTIVE="ACTIVE",E.EXPIRED="EXPIRED",E.CANCELLED="CANCELLED"}(B||(B={})),function(E){E.SQUARE="SQUARE",E.CIRCLE="CIRCLE",E.RECTANGLE="RECTANGLE",E.RECTANGLE_VERTICAL="RECTANGLE_VERTICAL",E.SINGLE_AT_BAR="SINGLE_AT_BAR",E.OTHER="OTHER"}(W||(W={})),function(E){E.VACANT="VACANT",E.RESERVED="RESERVED",E.OCCUPIED="OCCUPIED",E.BLOCKED="BLOCKED",E.NEEDS_CLEANING="NEEDS_CLEANING",E.OUT_OF_SERVICE="OUT_OF_SERVICE",E.PENDING_CONFIRMATION="PENDING_CONFIRMATION",E.NO_SHOW="NO_SHOW"}(G||(G={})),function(E){E.MAIN_HALL="MAIN_HALL",E.PRIVATE_DINING="PRIVATE_DINING",E.VIP_ROOM="VIP_ROOM",E.BANQUET_HALL="BANQUET_HALL",E.BAR_AREA="BAR_AREA",E.LOUNGE="LOUNGE",E.OPEN_KITCHEN="OPEN_KITCHEN",E.BOOTH_SECTION="BOOTH_SECTION",E.MEZZANINE="MEZZANINE",E.WINE_CELLAR="WINE_CELLAR",E.TERRACE="TERRACE",E.PATIO="PATIO",E.GARDEN="GARDEN",E.COURTYARD="COURTYARD",E.ROOFTOP="ROOFTOP",E.BALCONY="BALCONY",E.SIDEWALK="SIDEWALK",E.POOLSIDE="POOLSIDE",E.SMOKING_AREA="SMOKING_AREA",E.NON_SMOKING="NON_SMOKING",E.FAMILY_SECTION="FAMILY_SECTION",E.KIDS_AREA="KIDS_AREA",E.WAITING_AREA="WAITING_AREA",E.DANCE_FLOOR="DANCE_FLOOR"}(i||(i={})),function(E){E.VIEW_BUSINESS="VIEW_BUSINESS",E.UPDATE_BUSINESS="UPDATE_BUSINESS",E.VIEW_BUSINESS_FINANCIALS="VIEW_BUSINESS_FINANCIALS",E.VIEW_ORDERS="VIEW_ORDERS",E.UPDATE_ORDER="UPDATE_ORDER",E.CREATE_ORDER="CREATE_ORDER",E.UPDATE_ORDER_ITEM_STATUS="UPDATE_ORDER_ITEM_STATUS",E.APPLY_DISCOUNT="APPLY_DISCOUNT",E.SEND_RECEIPT="SEND_RECEIPT",E.VIEW_QR_MENU="VIEW_QR_MENU",E.UPDATE_QR_MENU="UPDATE_QR_MENU",E.VIEW_MENU="VIEW_MENU",E.VIEW_MENU_ITEMS="VIEW_MENU_ITEMS",E.CREATE_MENU_ITEM="CREATE_MENU_ITEM",E.UPDATE_MENU_ITEM="UPDATE_MENU_ITEM",E.DELETE_MENU_ITEM="DELETE_MENU_ITEM",E.VIEW_CATEGORIES="VIEW_CATEGORIES",E.UPDATE_CATEGORY="UPDATE_CATEGORY",E.CREATE_CATEGORY="CREATE_CATEGORY",E.DELETE_CATEGORY="DELETE_CATEGORY",E.VIEW_ADDONS="VIEW_ADDONS",E.UPDATE_ADDON="UPDATE_ADDON",E.CREATE_ADDON="CREATE_ADDON",E.DELETE_ADDON="DELETE_ADDON",E.VIEW_TABLES="VIEW_TABLES",E.UPDATE_TABLE="UPDATE_TABLE",E.UPDATE_TABLE_STATUS="UPDATE_TABLE_STATUS",E.CREATE_TABLE="CREATE_TABLE",E.DELETE_TABLE="DELETE_TABLE",E.VIEW_BRANCHES="VIEW_BRANCHES",E.UPDATE_BRANCH="UPDATE_BRANCH",E.CREATE_BRANCH="CREATE_BRANCH",E.DELETE_BRANCH="DELETE_BRANCH",E.VIEW_STATIONS="VIEW_STATIONS",E.UPDATE_STATION="UPDATE_STATION",E.CREATE_STATION="CREATE_STATION",E.DELETE_STATION="DELETE_STATION",E.VIEW_DEVICES="VIEW_DEVICES",E.ENROLL_DEVICE="ENROLL_DEVICE",E.REVOKE_DEVICE="REVOKE_DEVICE",E.VIEW_EMPLOYEES="VIEW_EMPLOYEES",E.UPDATE_EMPLOYEE="UPDATE_EMPLOYEE",E.CREATE_EMPLOYEE="CREATE_EMPLOYEE",E.DELETE_EMPLOYEE="DELETE_EMPLOYEE",E.VIEW_ANALYTICS="VIEW_ANALYTICS",E.VIEW_SALES_REPORTS="VIEW_SALES_REPORTS",E.VIEW_SUBSCRIPTION="VIEW_SUBSCRIPTION",E.UPDATE_SUBSCRIPTION="UPDATE_SUBSCRIPTION",E.VIEW_QR_CODES="VIEW_QR_CODES",E.CREATE_QR_CODE="CREATE_QR_CODE",E.DELETE_QR_CODE="DELETE_QR_CODE",E.ALL="ALL",E.VIEW_INVENTORY="VIEW_INVENTORY",E.VIEW_PURCHASES="VIEW_PURCHASES",E.VIEW_PURCHASE_DETAIL="VIEW_PURCHASE_DETAIL",E.CREATE_PURCHASE="CREATE_PURCHASE",E.UPDATE_PURCHASE="UPDATE_PURCHASE",E.DELETE_PURCHASE="DELETE_PURCHASE",E.VIEW_INVENTORY_PRODUCTS="VIEW_INVENTORY_PRODUCTS",E.CREATE_INVENTORY_PRODUCT="CREATE_INVENTORY_PRODUCT",E.UPDATE_INVENTORY_PRODUCT="UPDATE_INVENTORY_PRODUCT",E.DELETE_INVENTORY_PRODUCT="DELETE_INVENTORY_PRODUCT",E.VIEW_BUSINESS_BALANCE="VIEW_BUSINESS_BALANCE",E.VIEW_BRANCH_BALANCE="VIEW_BRANCH_BALANCE",E.UPDATE_PRODUCT_INGREDIENTS="UPDATE_PRODUCT_INGREDIENTS",E.DELETE_PRODUCT_INGREDIENTS="DELETE_PRODUCT_INGREDIENTS",E.AI_ASSISTANT="AI_ASSISTANT",E.VIEW_PAYMENTS="VIEW_PAYMENTS",E.TAKE_PAYMENT="TAKE_PAYMENT",E.REFUND_PAYMENT="REFUND_PAYMENT",E.PAYMENT_COMP="COMP"}(F||(F={})),function(E){E.OWNER="OWNER",E.SUPER_ADMIN="SUPER_ADMIN",E.BRANCH_MANAGER="BRANCH_MANAGER",E.GENERAL_MANAGER="GENERAL_MANAGER",E.BUSINESS_MANAGER="BUSINESS_MANAGER",E.CHEF="CHEF",E.SOUS_CHEF="SOUS_CHEF",E.PASTRY_CHEF="PASTRY_CHEF",E.LINE_COOK="LINE_COOK",E.PREP_COOK="PREP_COOK",E.KITCHEN_ASSISTANT="KITCHEN_ASSISTANT",E.DISHWASHER="DISHWASHER",E.HEAD_WAITER="HEAD_WAITER",E.WAITER="WAITER",E.RUNNER="RUNNER",E.BARISTA="BARISTA",E.BARTENDER="BARTENDER",E.SOMMELIER="SOMMELIER",E.ACCOUNTANT="ACCOUNTANT",E.ROOM_SERVICE_STAFF="ROOM_SERVICE_STAFF",E.DELIVERY_DRIVER="DELIVERY_DRIVER",E.INVENTORY_MANAGER="INVENTORY_MANAGER",E.PURCHASING_MANAGER="PURCHASING_MANAGER",E.WAREHOUSE_STAFF="WAREHOUSE_STAFF",E.CASHIER="CASHIER"}(t||(t={}));export{n as Allergen,_ as BranchSetting,I as BranchTaxFulfillment,T as BranchTaxScope,R as BranchTaxType,N as BusinessSetting,S as CustomerAddressType,D as CustomerAuthStep,A as DeliveryFeeType,F as EmployeePermission,O as Feature,C as FeatureSegment,E as MenuAddonSelectType,U as OrderItemStatus,P as OrderStatus,V as OrderStep,L as OrderType,M as PaymentMethod,Y as PlanType,e as ProductView,H as SellUnitType,B as SubscriptionStatus,i as TableLocation,W as TableShape,G as TableStatus,t as UserRole};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/modules/addon/models.ts","../../../src/modules/branch/models.ts","../../../src/modules/business/models.ts","../../../src/modules/customer/models.ts","../../../src/modules/feature/models.ts","../../../src/modules/order/models.ts","../../../src/modules/product/models.ts","../../../src/modules/subscription/models.ts","../../../src/modules/table/models.ts","../../../src/modules/user/models.ts"],"sourcesContent":["import { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum MenuAddonSelectType {\n\tSINGLE = \"SINGLE\",\n\tMULTIPLE = \"MULTIPLE\",\n}\n\nexport interface MenuAddonOption {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus the parent product's\n\t * `addToListingPrice` taxes. Equals `price` when no branch context is\n\t * supplied (e.g. addon detached from a branch tax setup).\n\t */\n\tlistingPrice: number;\n\ttitle: LocalizedText;\n\tremove?: boolean;\n}\n\nexport interface MenuAddon {\n\tid?: number;\n\tselectType: MenuAddonSelectType;\n\toptions: MenuAddonOption[];\n\tbusinessId?: number;\n\ttitle: LocalizedText;\n}\n","import { LocalizedText } from \"src/modules/localization/models\";\n\nexport type BranchWorkHour = {\n\topenAt: string;\n\tcloseAt: string;\n};\n\nexport type BranchWorkDay = {\n\tday: number;\n\thours: BranchWorkHour | null;\n};\n\nexport type BranchWorkDays = {\n\tdays: BranchWorkDay[];\n};\n\n/**\n * How a branch charges for delivery: one flat amount (`deliveryFeeAmount`) or a\n * fee picked from the branch's distance ranges (`deliveryFeeTiers`). Mirrors\n * the API's branch_settings.delivery_fee_type — extend both together. A branch\n * is FIXED until its owner opts into distance pricing.\n */\nexport enum DeliveryFeeType {\n\tFIXED = \"FIXED\",\n\tDISTANCE = \"DISTANCE\",\n}\n\n/**\n * One distance range of a branch's per-km delivery pricing, read as \"up to\n * `upToDistance` kilometres, charge `fee`\". Ranges carry no lower bound of\n * their own: the applicable one is the cheapest `upToDistance` that still\n * covers the delivery distance, so 5/10/20 km ranges describe 0-5, 5-10 and\n * 10-20 km. The API returns them sorted by `upToDistance` ascending.\n *\n * `upToDistance` is in KILOMETRES — unlike `BranchSettings.maxDeliveryDistance`,\n * which the API keeps in metres.\n */\nexport type DeliveryFeeTier = {\n\tupToDistance: number;\n\tfee: number;\n};\n\nexport interface BranchSettings {\n\tdeliveryOrderEnabled: boolean;\n\tpickupOrderEnabled: boolean;\n\tdineInOrderEnabled: boolean;\n\t/** In METRES, unlike the kilometres a DeliveryFeeTier is measured in. */\n\tmaxDeliveryDistance: number;\n\tminDeliveryAmount: number;\n\tdeliveryFeeAmount: number;\n\t/**\n\t * Absent on a payload cached before the branch gained distance pricing;\n\t * treated as FIXED, the same default the API stores.\n\t */\n\tdeliveryFeeType?: DeliveryFeeType;\n\tdeliveryFeeTiers?: DeliveryFeeTier[];\n\tserviceChargeEnabled: boolean;\n\tserviceChargePercentage: number;\n\taddToOrderEnabled: boolean;\n\tguestOrderEnabled: boolean;\n\tprimaryPaymentMethods?: string[] | null;\n\tsecondaryPaymentMethods?: string[] | null;\n}\n\nexport enum BranchSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n\tDELIVERY_FEE_AMOUNT = \"deliveryFeeAmount\",\n\tDELIVERY_FEE_TYPE = \"deliveryFeeType\",\n\tDELIVERY_FEE_TIERS = \"deliveryFeeTiers\",\n\tSERVICE_CHARGE_ENABLED = \"serviceChargeEnabled\",\n\tSERVICE_CHARGE_PERCENTAGE = \"serviceChargePercentage\",\n\tADD_TO_ORDER_ENABLED = \"addToOrderEnabled\",\n\tGUEST_ORDER_ENABLED = \"guestOrderEnabled\",\n\tPRIMARY_PAYMENT_METHODS = \"primaryPaymentMethods\",\n\tSECONDARY_PAYMENT_METHODS = \"secondaryPaymentMethods\",\n}\n\nexport interface Branch {\n\tid: number;\n\tname: string;\n\tbusinessId: number;\n\taddress: string;\n\tlongitude?: number;\n\tlatitude?: number;\n\tphone?: string;\n\twhatsApp?: string;\n\ttelegram?: string;\n\twifiPassword?: string;\n\tcreatedAt?: number;\n\tcoverPhoto?: string;\n\t// Trading currency (ISO-4217) of this branch. Currency lives on the branch,\n\t// not the business, so a franchise or foreign establishment can trade in a\n\t// different currency than the brand's default.\n\tcurrency?: string;\n\ttimezone?: string;\n\tbusinessDayStart?: string;\n\tsettings?: BranchSettings;\n\topeningHours?: BranchWorkDays;\n\tdeliveryHours?: BranchWorkDays;\n}\n\nexport type BranchServes = {\n\tisOpen: boolean;\n\tisDelivering: boolean;\n};\n\nexport enum BranchTaxType {\n\tPERCENTAGE = \"percentage\",\n\tFIXED_AMOUNT = \"fixed\",\n}\n\nexport enum BranchTaxScope {\n\tENTIRE_MENU = \"entire_menu\",\n\tCLASS = \"class\",\n}\n\nexport enum BranchTaxFulfillment {\n\tDELIVERY = \"delivery\",\n\tTAKEAWAY = \"takeaway\",\n\tDINE_IN = \"dine_in\",\n\tALL = \"ALL\",\n}\n\nexport type BranchTax = {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\ttaxClassId?: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: BranchTaxType;\n\tisActive: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tscope: BranchTaxScope;\n\taddToListingPrice: boolean;\n\tisDefault: boolean;\n\tcomputationOrder: number;\n\tappliesToFulfillment?: BranchTaxFulfillment;\n\ttaxClassCode?: string;\n};\n","import * as featureModels from \"../feature/models\";\nimport * as subscriptionModels from \"../subscription/models\";\n\nexport interface BusinessLanguage {\n\tid: number;\n\tcode: string;\n\tbusinessId: number;\n}\n\nexport enum BusinessSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n}\n\nexport interface Business {\n\tid: number;\n\tname: string;\n\tusername: string;\n\tavatar64?: string;\n\tavatar128?: string;\n\tavatar256?: string;\n\tcoverPhoto?: string;\n\tinstagram?: string;\n\tfacebook?: string;\n\ttiktok?: string;\n\tcreatedAt?: number;\n\tlanguages: BusinessLanguage[];\n\tsubscriptions?: subscriptionModels.Subscription[];\n\tsegment?: featureModels.FeatureSegment;\n}\n","export enum CustomerAuthStep {\n\tPHONE = \"PHONE\",\n\tOTP = \"OTP\",\n\tEMAIL = \"EMAIL\",\n}\n\nexport enum CustomerAddressType {\n\tHOME = \"HOME\",\n\tWORK = \"WORK\",\n\tTRAVEL = \"TRAVEL\",\n}\n\nexport interface CustomerAddress {\n\tid?: number;\n\taddressId?: number; // Update address temporary\n\tcountryCode: string;\n\tcityName: string;\n\tstreet: string;\n\thouseNumber: string;\n\tadditionalNumber?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n\tfloor?: number;\n\tlongitude?: number;\n\tlatitude?: number;\n\ttitle?: string;\n\ttype?: CustomerAddressType;\n}\n\nexport interface CustomerAuthForm {\n\totp: string;\n\temail: string;\n}\n\nexport interface CustomerAuthPhoneForm {\n\tcountryCode: string;\n\tphoneNumber: string;\n}\n\nexport interface AuthResponse {\n\taccessToken: string;\n\trefreshToken: string;\n}\n\nexport interface Customer {\n\tid?: number;\n\temail: string;\n\tphoneNumber: string;\n\tfullName: string;\n\tsmsVerified?: boolean;\n\temailVerified?: boolean;\n\taddress?: CustomerAddress;\n\taddresses?: CustomerAddress[];\n}\n\nexport type CustomerUpdatePayload = Partial<Customer>;\n","export enum Feature {\n\tUPLOAD_VIDEO = \"UPLOAD_VIDEO\",\n}\nexport enum FeatureSegment {\n\tALPHA = \"ALPHA\",\n\tBETA = \"BETA\",\n\tALL = \"ALL\",\n}\n","import * as customerModels from \"../customer/models\";\nimport * as productModels from \"../product/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum OrderType {\n\tDINE_IN = \"DINE_IN\",\n\tPICK_UP = \"PICK_UP\",\n\tDELIVERY = \"DELIVERY\",\n}\n\nexport enum OrderStatus {\n\tDRAFT = \"DRAFT\",\n\tPENDING = \"PENDING\",\n\tCONFIRMED = \"CONFIRMED\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tOUT_FOR_DELIVERY = \"OUT_FOR_DELIVERY\",\n\tDELIVERED = \"DELIVERED\",\n\tCOMPLETED = \"COMPLETED\",\n\tCANCELLED = \"CANCELLED\",\n\tFAILED = \"FAILED\",\n}\n\nexport enum OrderItemStatus {\n\tPENDING = \"PENDING\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tSERVED = \"SERVED\",\n}\n\nexport enum PaymentMethod {\n\tCASH = \"CASH\",\n\tCARD = \"CARD\",\n\tBANK_TRANSFER = \"BANK_TRANSFER\",\n\tMOBILE = \"MOBILE\",\n\tQR = \"QR\",\n\tVOUCHER = \"VOUCHER\",\n\tCOMP = \"COMP\",\n\tMIXED = \"MIXED\",\n}\n\n/**\n * The methods a customer can signal at checkout. COMP and MIXED are settlement\n * outcomes the venue records itself once money changes hands, so they are part\n * of the enum the API speaks but never an option in the public menu.\n */\nexport type CustomerPaymentMethod = Exclude<\n\tPaymentMethod,\n\tPaymentMethod.COMP | PaymentMethod.MIXED\n>;\n\nexport interface OrderAddonOption {\n\toptionId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderAddon {\n\tid?: number;\n\taddonId: number;\n\toptions: OrderAddonOption[];\n}\n\nexport interface SelectedAddons {\n\t[key: number]: number | number[];\n}\n\nexport interface OrderItemVariant {\n\tid?: number;\n\tvariantId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderItem {\n\tid?: number;\n\tproductId: number;\n\torderId?: number;\n\tquantity: number;\n\t/**\n\t * Gross unit price (listingPrice) at the moment the line was added. The\n\t * server recomputes authoritative totals on create/preview; this value is\n\t * what the cart UI displays.\n\t */\n\tprice?: number;\n\tvariant?: OrderItemVariant;\n\taddons: OrderAddon[];\n\tnote?: string;\n\tstatus?: OrderItemStatus;\n\tisPaid?: boolean;\n\tsellUnitType: productModels.SellUnitType;\n}\n\nexport interface Order {\n\tid?: number;\n\tbusinessId?: number;\n\tbranchId?: number;\n\tworkingDayId?: number;\n\ttableId?: number;\n\temployeeId?: number;\n\torderType: OrderType;\n\titems: OrderItem[];\n\tstatus?: OrderStatus;\n\tpreferredPaymentMethod?: PaymentMethod;\n\t/**\n\t * Customer's optional voluntary gratuity as a NUMERIC money string in the\n\t * branch currency (e.g. \"5.00\"). Honoured only on the customer and guest\n\t * create paths — POS ignores it. It is an unfinalized intent: the server\n\t * stores it but never adds it to the order total nor taxes it, so the\n\t * tip-inclusive total shown at checkout is computed client-side. Absent (or\n\t * zero) means no tip.\n\t */\n\tpreferredTipAmount?: string;\n\tnote?: string;\n\tcreatedAt?: number;\n\tupdatedAt?: number;\n\tcustomer?: customerModels.Customer;\n\tcurrency?: string;\n\ttrackingId?: string;\n}\n\nexport interface OrderItems {\n\t[key: string]: OrderItem;\n}\n\nexport enum OrderStep {\n\tCART = \"CART\",\n\tDETAILS = \"DETAILS\",\n\tCOMPLETED = \"COMPLETED\",\n}\n\nexport interface OrderPayload extends Order {\n\tcustomerAddressId: number;\n\tcustomerId: number;\n\tlanguage?: string;\n}\n\n/**\n * Contact + delivery snapshot an unregistered (\"guest\") visitor enters at\n * checkout. Mirrors the backend GuestContact: every field is optional, and an\n * address is only meaningful for DELIVERY orders. latitude/longitude are kept\n * as numbers here for the UI (they come from the address autocomplete); they're\n * serialized to strings in the wire payload — see GuestContactRequest.\n */\nexport interface GuestContact {\n\tfullName?: string;\n\tphoneNumber?: string;\n\temail?: string;\n\tstreet?: string;\n\thouseNumber?: string;\n\tadditionalNumber?: string;\n\tfloor?: number;\n\tlatitude?: number;\n\tlongitude?: number;\n\tcityName?: string;\n\tcountryCode?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n}\n\n/**\n * Wire shape of the contact sent to POST /order/public. Matches the backend\n * GuestContact, where latitude/longitude are strings.\n */\nexport interface GuestContactRequest\n\textends Omit<GuestContact, \"latitude\" | \"longitude\"> {\n\tlatitude?: string;\n\tlongitude?: string;\n}\n\n/**\n * Payload for the public, non-authenticated create path (POST /order/public).\n * Unlike OrderPayload it carries no customerId/customerAddressId — an\n * unregistered visitor has no account or stored address book; the delivery\n * address (when given) travels inside the contact snapshot.\n */\nexport interface GuestOrderPayload extends Order {\n\tlanguage?: string;\n\tcontact?: GuestContactRequest;\n}\n\nexport interface CalculatePreviewItemRequest {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tvariant?: { variantId: number };\n\taddons?: Array<{\n\t\taddonId: number;\n\t\toptions: Array<{ optionId: number }>;\n\t}>;\n}\n\nexport interface CalculatePreviewRequest {\n\tbusinessId?: number;\n\tbranchId: number;\n\torderType: OrderType;\n\titems: CalculatePreviewItemRequest[];\n\t/**\n\t * Where the delivery is heading. They matter only for a DELIVERY order on a\n\t * branch that prices delivery by distance; without them such a cart previews\n\t * the branch's flat fee, and the real fee is resolved from the order's\n\t * address at create time.\n\t */\n\tlatitude?: number;\n\tlongitude?: number;\n}\n\nexport interface CalculatePreviewTax {\n\tbranchTaxId: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: \"percentage\" | \"fixed\";\n\taddToListingPrice: boolean;\n\tamount: number;\n}\n\nexport interface CalculatePreviewLine {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tprice: number;\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface CalculatePreviewResponse {\n\ttotalPriceWithoutTax: number;\n\ttotalPriceWithTax: number;\n\ttotalPriceWithTaxAndFees: number;\n\ttotalTax: number;\n\tdeliveryFee: number;\n\tserviceFee: number;\n\titems: CalculatePreviewLine[];\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface OrderPreviewState {\n\tdata: CalculatePreviewResponse | null;\n\tisLoading: boolean;\n\terror: string | null;\n}\n","import { MenuAddon } from \"../addon/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport interface LocalizedContent {\n\tname: string;\n\tdescription: string;\n}\n\nexport interface ProductVariant {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied.\n\t */\n\tlistingPrice: number;\n\t/** Title keyed by language code, e.g. { en: \"Large\", az: \"Böyük\" }. */\n\ttitle: LocalizedText;\n\tproductId?: number;\n\tremove?: boolean;\n}\n\nexport interface Product {\n\tid: number;\n\tcategoryId: number;\n\t/** Net price (tax-exclusive). Nullable when the product has no own price (variant-only). */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied,\n\t * and is null when `price` itself is null.\n\t */\n\tlistingPrice?: number | null;\n\tvolume?: string; // 100qr/250ml/1kq\n\timage160?: string;\n\timage580?: string;\n\timage1024?: string;\n\ttranslations: Record<string, LocalizedContent>;\n\tvariants: ProductVariant[];\n\taddons: MenuAddon[];\n\tavailable?: boolean;\n\tvisible?: boolean;\n\tposition?: number;\n\tvideoUrl?: string;\n\tsellUnitType?: SellUnitType;\n\ttaxClassId?: number | null;\n\t/**\n\t * The bare allergen codes the business declared, `[]` when none — the shape\n\t * a product is authored and saved in. Rendering reads `allergenDetails`\n\t * instead, since that carries the same codes plus their wording.\n\t */\n\tallergens?: AllergenCode[];\n\t/**\n\t * The declared allergens as the menu renders them: each code paired with its\n\t * label in every language the business publishes. The API owns the catalog\n\t * and translates it, so a code it adds is legible here without a release of\n\t * this package, and the list is taken as given — order included.\n\t */\n\tallergenDetails?: AllergenDetail[];\n}\n\n/**\n * One declared allergen: the standardized code plus its label per language\n * code. Labels arrive as a map rather than a single localized string because\n * the public menu is served from one language-agnostic cached payload — the\n * guest switches language locally and the row has to relabel without a\n * refetch. Mirrors `domains/product/types/allergen_detail.go`.\n */\nexport interface AllergenDetail {\n\tcode: AllergenCode;\n\t/** Label keyed by language code, e.g. `{ en: \"Gluten\", az: \"Qlüten\" }`. */\n\ttranslations: LocalizedText;\n}\n\n/**\n * An allergen code as it comes off the wire. Deliberately open: the API owns\n * the catalog, so it may send a code this package has never heard of, and that\n * code still has to reach the guest — a declared allergen going missing is the\n * one failure mode this feature cannot have. `Allergen` names the codes we\n * have a glyph for; everything else falls back to a generic mark (see\n * `AllergenIcons`). Wording never depends on this list.\n */\nexport type AllergenCode = Allergen | (string & Record<never, never>);\n\n/**\n * The 14 major food allergens of EU Regulation 1169/2011 (Annex II) plus\n * buckwheat — mirrors `domains/product/constants/allergens.go` on the API,\n * which is the server of record for the catalog. This is the subset with a\n * glyph of its own; it is not a limit on what the API may send, and it exists\n * in this package only because an icon cannot travel over the wire.\n */\nexport enum Allergen {\n\tGLUTEN = \"GLUTEN\",\n\tCRUSTACEANS = \"CRUSTACEANS\",\n\tEGGS = \"EGGS\",\n\tFISH = \"FISH\",\n\tPEANUTS = \"PEANUTS\",\n\tSOY = \"SOY\",\n\tMILK = \"MILK\",\n\tTREE_NUTS = \"TREE_NUTS\",\n\tCELERY = \"CELERY\",\n\tMUSTARD = \"MUSTARD\",\n\tSESAME = \"SESAME\",\n\tSULPHITES = \"SULPHITES\",\n\tLUPIN = \"LUPIN\",\n\tMOLLUSCS = \"MOLLUSCS\",\n\tBUCKWHEAT = \"BUCKWHEAT\",\n}\n\nexport enum ProductView {\n\tLIST = \"list\",\n\tGRID = \"grid\",\n}\n\nexport interface DashboardProduct extends Omit<Product, \"addons\"> {\n\taddons: number[];\n}\n\nexport enum SellUnitType {\n\tPIECE = \"PIECE\",\n\tWEIGHT = \"WEIGHT\",\n\tVOLUME = \"VOLUME\",\n}\n","export enum PlanType {\n\tAPPETIZER = \"appetizer\",\n\tMAIN_COURSE = \"mainCourse\",\n\tCHEFS_SPECIAL = \"chefsSpecial\",\n\tLIFETIME = \"lifeTime\",\n}\n\nexport interface PricingPlan {\n\ttitle: string;\n\tprice: {\n\t\tmonthly: number;\n\t\tannually: number;\n\t};\n\tdiscountedPrice?: number;\n\tribbonText?: string;\n}\n\nexport interface PricingPlans {\n\t[key: string]: PricingPlan;\n}\n\nexport type PricingInterval = \"monthly\" | \"annually\";\n\nexport enum SubscriptionStatus {\n\tACTIVE = \"ACTIVE\",\n\tEXPIRED = \"EXPIRED\",\n\tCANCELLED = \"CANCELLED\",\n}\n\nexport type BillingInterval = \"MONTH\" | \"YEAR\";\n\nexport interface Subscription {\n\tid: number;\n\tbillingInterval: BillingInterval;\n\tbillingIntervalCount: number;\n\tstartDate: string;\n\tendDate: string;\n\tinterval: PricingInterval;\n\tstatus: SubscriptionStatus;\n\tbusiness_id?: number;\n\tplanName: string;\n}\n","export enum TableShape {\n\tSQUARE = \"SQUARE\",\n\tCIRCLE = \"CIRCLE\",\n\tRECTANGLE = \"RECTANGLE\",\n\tRECTANGLE_VERTICAL = \"RECTANGLE_VERTICAL\",\n\tSINGLE_AT_BAR = \"SINGLE_AT_BAR\",\n\tOTHER = \"OTHER\",\n}\n\nexport enum TableStatus {\n\tVACANT = \"VACANT\", // Free and available\n\tRESERVED = \"RESERVED\", // Booked but not yet seated\n\tOCCUPIED = \"OCCUPIED\", // Currently in use\n\tBLOCKED = \"BLOCKED\", // Temporarily blocked/unavailable\n\tNEEDS_CLEANING = \"NEEDS_CLEANING\", // Dirty, awaiting cleanup\n\tOUT_OF_SERVICE = \"OUT_OF_SERVICE\", // Permanently unavailable repair/maintenance\n\tPENDING_CONFIRMATION = \"PENDING_CONFIRMATION\", // Reservation not yet confirmed\n\tNO_SHOW = \"NO_SHOW\", // Reserved but guest didn’t arrive\n}\n\nexport enum TableLocation {\n\t// Indoor\n\tMAIN_HALL = \"MAIN_HALL\",\n\tPRIVATE_DINING = \"PRIVATE_DINING\",\n\tVIP_ROOM = \"VIP_ROOM\",\n\tBANQUET_HALL = \"BANQUET_HALL\",\n\tBAR_AREA = \"BAR_AREA\",\n\tLOUNGE = \"LOUNGE\",\n\tOPEN_KITCHEN = \"OPEN_KITCHEN\",\n\tBOOTH_SECTION = \"BOOTH_SECTION\",\n\tMEZZANINE = \"MEZZANINE\",\n\tWINE_CELLAR = \"WINE_CELLAR\",\n\n\t// Outdoor\n\tTERRACE = \"TERRACE\",\n\tPATIO = \"PATIO\",\n\tGARDEN = \"GARDEN\",\n\tCOURTYARD = \"COURTYARD\",\n\tROOFTOP = \"ROOFTOP\",\n\tBALCONY = \"BALCONY\",\n\tSIDEWALK = \"SIDEWALK\",\n\tPOOLSIDE = \"POOLSIDE\",\n\n\t// Special Sections\n\tSMOKING_AREA = \"SMOKING_AREA\",\n\tNON_SMOKING = \"NON_SMOKING\",\n\tFAMILY_SECTION = \"FAMILY_SECTION\",\n\tKIDS_AREA = \"KIDS_AREA\",\n\tWAITING_AREA = \"WAITING_AREA\",\n\tDANCE_FLOOR = \"DANCE_FLOOR\",\n}\n\nexport interface Table {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\tname: string;\n\tseatCount: number;\n\tshape: TableShape;\n\tlocation: TableLocation;\n\tstatus: TableStatus;\n}\n\nexport interface TableState {\n\ttables: Table[];\n}\n\nexport type TableForm = Omit<Table, \"id\" | \"businessId\" | \"branchId\"> & {\n\tbranchId: string | number;\n};\n\nexport type TableUpdate = Partial<Omit<Table, \"id\" | \"businessId\">>;\n\nexport type TableFilter = Partial<Pick<Table, \"branchId\" | \"shape\" | \"location\" | \"status\">>;\n\nexport type TableFilterParams = { field: keyof TableFilter; value: TableFilter[keyof TableFilter] };\n","export enum EmployeePermission {\n\tVIEW_BUSINESS = \"VIEW_BUSINESS\",\n\tUPDATE_BUSINESS = \"UPDATE_BUSINESS\",\n\tVIEW_BUSINESS_FINANCIALS = \"VIEW_BUSINESS_FINANCIALS\",\n\tVIEW_ORDERS = \"VIEW_ORDERS\",\n\tUPDATE_ORDER = \"UPDATE_ORDER\",\n\tCREATE_ORDER = \"CREATE_ORDER\",\n\tAPPLY_DISCOUNT = \"APPLY_DISCOUNT\",\n\tVIEW_QR_MENU = \"VIEW_QR_MENU\",\n\tUPDATE_QR_MENU = \"UPDATE_QR_MENU\",\n\tVIEW_MENU = \"VIEW_MENU\",\n\tVIEW_MENU_ITEMS = \"VIEW_MENU_ITEMS\",\n\tCREATE_MENU_ITEM = \"CREATE_MENU_ITEM\",\n\tUPDATE_MENU_ITEM = \"UPDATE_MENU_ITEM\",\n\tDELETE_MENU_ITEM = \"DELETE_MENU_ITEM\",\n\tVIEW_CATEGORIES = \"VIEW_CATEGORIES\",\n\tUPDATE_CATEGORY = \"UPDATE_CATEGORY\",\n\tCREATE_CATEGORY = \"CREATE_CATEGORY\",\n\tDELETE_CATEGORY = \"DELETE_CATEGORY\",\n\tVIEW_ADDONS = \"VIEW_ADDONS\",\n\tUPDATE_ADDON = \"UPDATE_ADDON\",\n\tCREATE_ADDON = \"CREATE_ADDON\",\n\tDELETE_ADDON = \"DELETE_ADDON\",\n\tVIEW_TABLES = \"VIEW_TABLES\",\n\tUPDATE_TABLE = \"UPDATE_TABLE\",\n\tUPDATE_TABLE_STATUS = \"UPDATE_TABLE_STATUS\",\n\tCREATE_TABLE = \"CREATE_TABLE\",\n\tDELETE_TABLE = \"DELETE_TABLE\",\n\tVIEW_BRANCHES = \"VIEW_BRANCHES\",\n\tUPDATE_BRANCH = \"UPDATE_BRANCH\",\n\tCREATE_BRANCH = \"CREATE_BRANCH\",\n\tDELETE_BRANCH = \"DELETE_BRANCH\",\n\tVIEW_EMPLOYEES = \"VIEW_EMPLOYEES\",\n\tUPDATE_EMPLOYEE = \"UPDATE_EMPLOYEE\",\n\tCREATE_EMPLOYEE = \"CREATE_EMPLOYEE\",\n\tDELETE_EMPLOYEE = \"DELETE_EMPLOYEE\",\n\tVIEW_ANALYTICS = \"VIEW_ANALYTICS\",\n\tVIEW_SALES_REPORTS = \"VIEW_SALES_REPORTS\",\n\tVIEW_SUBSCRIPTION = \"VIEW_SUBSCRIPTION\",\n\tUPDATE_SUBSCRIPTION = \"UPDATE_SUBSCRIPTION\",\n\tVIEW_QR_CODES = \"VIEW_QR_CODES\",\n\tCREATE_QR_CODE = \"CREATE_QR_CODE\",\n\tDELETE_QR_CODE = \"DELETE_QR_CODE\",\n\tALL = \"ALL\",\n\t// Inventory\n\tVIEW_INVENTORY = \"VIEW_INVENTORY\",\n\tVIEW_PURCHASES = \"VIEW_PURCHASES\",\n\tVIEW_PURCHASE_DETAIL = \"VIEW_PURCHASE_DETAIL\",\n\tCREATE_PURCHASE = \"CREATE_PURCHASE\",\n\tUPDATE_PURCHASE = \"UPDATE_PURCHASE\",\n\tDELETE_PURCHASE = \"DELETE_PURCHASE\",\n\tVIEW_INVENTORY_PRODUCTS = \"VIEW_INVENTORY_PRODUCTS\",\n\tCREATE_INVENTORY_PRODUCT = \"CREATE_INVENTORY_PRODUCT\",\n\tUPDATE_INVENTORY_PRODUCT = \"UPDATE_INVENTORY_PRODUCT\",\n\tDELETE_INVENTORY_PRODUCT = \"DELETE_INVENTORY_PRODUCT\",\n\tVIEW_BUSINESS_BALANCE = \"VIEW_BUSINESS_BALANCE\",\n\tVIEW_BRANCH_BALANCE = \"VIEW_BRANCH_BALANCE\",\n\tUPDATE_PRODUCT_INGREDIENTS = \"UPDATE_PRODUCT_INGREDIENTS\",\n\tDELETE_PRODUCT_INGREDIENTS = \"DELETE_PRODUCT_INGREDIENTS\",\n\tAI_ASSISTANT = \"AI_ASSISTANT\",\n\tVIEW_PAYMENTS = \"VIEW_PAYMENTS\",\n\tTAKE_PAYMENT = \"TAKE_PAYMENT\",\n\tREFUND_PAYMENT = \"REFUND_PAYMENT\",\n\tPAYMENT_COMP = \"COMP\",\n}\n\nexport enum UserRole {\n\tOWNER = \"OWNER\",\n\tBRANCH_MANAGER = \"BRANCH_MANAGER\",\n\tGENERAL_MANAGER = \"GENERAL_MANAGER\",\n\tCHEF = \"CHEF\",\n\tSOUS_CHEF = \"SOUS_CHEF\",\n\tPASTRY_CHEF = \"PASTRY_CHEF\",\n\tLINE_COOK = \"LINE_COOK\",\n\tPREP_COOK = \"PREP_COOK\",\n\tKITCHEN_ASSISTANT = \"KITCHEN_ASSISTANT\",\n\tDISHWASHER = \"DISHWASHER\",\n\tHEAD_WAITER = \"HEAD_WAITER\",\n\tWAITER = \"WAITER\",\n\tRUNNER = \"RUNNER\",\n\tBARISTA = \"BARISTA\",\n\tBARTENDER = \"BARTENDER\",\n\tSOMMELIER = \"SOMMELIER\",\n\tACCOUNTANT = \"ACCOUNTANT\",\n\tROOM_SERVICE_STAFF = \"ROOM_SERVICE_STAFF\",\n\tDELIVERY_DRIVER = \"DELIVERY_DRIVER\",\n\tINVENTORY_MANAGER = \"INVENTORY_MANAGER\",\n\tPURCHASING_MANAGER = \"PURCHASING_MANAGER\",\n\tWAREHOUSE_STAFF = \"WAREHOUSE_STAFF\",\n\tCASHIER = \"CASHIER\"\n}\n\nexport interface User {\n\tid?: number;\n\temail: string;\n\tfullName: string;\n\trole?: UserRole;\n\tavatar64?: string | null;\n\tavatar128?: string | null;\n\tavatar256?: string | null;\n\tbusinessId?: number;\n\tbranchId?: number | null;\n\tcreatedAt: string;\n\temailVerified?: boolean;\n\tpermissions?: EmployeePermission[];\n}\n"],"names":["MenuAddonSelectType","DeliveryFeeType","BranchSetting","BranchTaxType","BranchTaxScope","BranchTaxFulfillment","BusinessSetting","CustomerAuthStep","CustomerAddressType","Feature","FeatureSegment","OrderType","OrderStatus","OrderItemStatus","PaymentMethod","OrderStep","Allergen","ProductView","SellUnitType","PlanType","SubscriptionStatus","TableShape","TableStatus","TableLocation","EmployeePermission","UserRole"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/modules/addon/models.ts","../../../src/modules/branch/models.ts","../../../src/modules/business/models.ts","../../../src/modules/customer/models.ts","../../../src/modules/feature/models.ts","../../../src/modules/order/models.ts","../../../src/modules/product/models.ts","../../../src/modules/subscription/models.ts","../../../src/modules/table/models.ts","../../../src/modules/user/models.ts"],"sourcesContent":["import { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum MenuAddonSelectType {\n\tSINGLE = \"SINGLE\",\n\tMULTIPLE = \"MULTIPLE\",\n}\n\nexport interface MenuAddonOption {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus the parent product's\n\t * `addToListingPrice` taxes. Equals `price` when no branch context is\n\t * supplied (e.g. addon detached from a branch tax setup).\n\t */\n\tlistingPrice: number;\n\ttitle: LocalizedText;\n\tremove?: boolean;\n}\n\nexport interface MenuAddon {\n\tid?: number;\n\tselectType: MenuAddonSelectType;\n\toptions: MenuAddonOption[];\n\tbusinessId?: number;\n\ttitle: LocalizedText;\n}\n","import { LocalizedText } from \"src/modules/localization/models\";\n\nexport type BranchWorkHour = {\n\topenAt: string;\n\tcloseAt: string;\n};\n\nexport type BranchWorkDay = {\n\tday: number;\n\thours: BranchWorkHour | null;\n};\n\nexport type BranchWorkDays = {\n\tdays: BranchWorkDay[];\n};\n\n/**\n * How a branch charges for delivery: one flat amount (`deliveryFeeAmount`) or a\n * fee picked from the branch's distance ranges (`deliveryFeeTiers`). Mirrors\n * the API's branch_settings.delivery_fee_type — extend both together. A branch\n * is FIXED until its owner opts into distance pricing.\n */\nexport enum DeliveryFeeType {\n\tFIXED = \"FIXED\",\n\tDISTANCE = \"DISTANCE\",\n}\n\n/**\n * One distance range of a branch's per-km delivery pricing, read as \"up to\n * `upToDistance` kilometres, charge `fee`\". Ranges carry no lower bound of\n * their own: the applicable one is the cheapest `upToDistance` that still\n * covers the delivery distance, so 5/10/20 km ranges describe 0-5, 5-10 and\n * 10-20 km. The API returns them sorted by `upToDistance` ascending.\n *\n * `upToDistance` is in KILOMETRES — unlike `BranchSettings.maxDeliveryDistance`,\n * which the API keeps in metres.\n */\nexport type DeliveryFeeTier = {\n\tupToDistance: number;\n\tfee: number;\n};\n\nexport interface BranchSettings {\n\tdeliveryOrderEnabled: boolean;\n\tpickupOrderEnabled: boolean;\n\tdineInOrderEnabled: boolean;\n\t/** In METRES, unlike the kilometres a DeliveryFeeTier is measured in. */\n\tmaxDeliveryDistance: number;\n\tminDeliveryAmount: number;\n\tdeliveryFeeAmount: number;\n\t/**\n\t * Absent on a payload cached before the branch gained distance pricing;\n\t * treated as FIXED, the same default the API stores.\n\t */\n\tdeliveryFeeType?: DeliveryFeeType;\n\tdeliveryFeeTiers?: DeliveryFeeTier[];\n\tserviceChargeEnabled: boolean;\n\tserviceChargePercentage: number;\n\taddToOrderEnabled: boolean;\n\tguestOrderEnabled: boolean;\n\tprimaryPaymentMethods?: string[] | null;\n\tsecondaryPaymentMethods?: string[] | null;\n}\n\nexport enum BranchSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n\tDELIVERY_FEE_AMOUNT = \"deliveryFeeAmount\",\n\tDELIVERY_FEE_TYPE = \"deliveryFeeType\",\n\tDELIVERY_FEE_TIERS = \"deliveryFeeTiers\",\n\tSERVICE_CHARGE_ENABLED = \"serviceChargeEnabled\",\n\tSERVICE_CHARGE_PERCENTAGE = \"serviceChargePercentage\",\n\tADD_TO_ORDER_ENABLED = \"addToOrderEnabled\",\n\tGUEST_ORDER_ENABLED = \"guestOrderEnabled\",\n\tPRIMARY_PAYMENT_METHODS = \"primaryPaymentMethods\",\n\tSECONDARY_PAYMENT_METHODS = \"secondaryPaymentMethods\",\n}\n\nexport interface Branch {\n\tid: number;\n\tname: string;\n\tbusinessId: number;\n\taddress: string;\n\tlongitude?: number;\n\tlatitude?: number;\n\tphone?: string;\n\twhatsApp?: string;\n\ttelegram?: string;\n\twifiPassword?: string;\n\tcreatedAt?: number;\n\tcoverPhoto?: string;\n\t// Trading currency (ISO-4217) of this branch. Currency lives on the branch,\n\t// not the business, so a franchise or foreign establishment can trade in a\n\t// different currency than the brand's default.\n\tcurrency?: string;\n\ttimezone?: string;\n\tbusinessDayStart?: string;\n\tsettings?: BranchSettings;\n\topeningHours?: BranchWorkDays;\n\tdeliveryHours?: BranchWorkDays;\n}\n\nexport type BranchServes = {\n\tisOpen: boolean;\n\tisDelivering: boolean;\n};\n\nexport enum BranchTaxType {\n\tPERCENTAGE = \"percentage\",\n\tFIXED_AMOUNT = \"fixed\",\n}\n\nexport enum BranchTaxScope {\n\tENTIRE_MENU = \"entire_menu\",\n\tCLASS = \"class\",\n}\n\nexport enum BranchTaxFulfillment {\n\tDELIVERY = \"delivery\",\n\tTAKEAWAY = \"takeaway\",\n\tDINE_IN = \"dine_in\",\n\tALL = \"ALL\",\n}\n\nexport type BranchTax = {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\ttaxClassId?: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: BranchTaxType;\n\tisActive: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tscope: BranchTaxScope;\n\taddToListingPrice: boolean;\n\tisDefault: boolean;\n\tcomputationOrder: number;\n\tappliesToFulfillment?: BranchTaxFulfillment;\n\ttaxClassCode?: string;\n};\n","import * as featureModels from \"../feature/models\";\nimport * as subscriptionModels from \"../subscription/models\";\n\nexport interface BusinessLanguage {\n\tid: number;\n\tcode: string;\n\tbusinessId: number;\n}\n\nexport enum BusinessSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n}\n\nexport interface Business {\n\tid: number;\n\tname: string;\n\tusername: string;\n\tavatar64?: string;\n\tavatar128?: string;\n\tavatar256?: string;\n\tcoverPhoto?: string;\n\tinstagram?: string;\n\tfacebook?: string;\n\ttiktok?: string;\n\tcreatedAt?: number;\n\tlanguages: BusinessLanguage[];\n\tsubscriptions?: subscriptionModels.Subscription[];\n\tsegment?: featureModels.FeatureSegment;\n}\n","export enum CustomerAuthStep {\n\tPHONE = \"PHONE\",\n\tOTP = \"OTP\",\n\tEMAIL = \"EMAIL\",\n}\n\nexport enum CustomerAddressType {\n\tHOME = \"HOME\",\n\tWORK = \"WORK\",\n\tTRAVEL = \"TRAVEL\",\n}\n\nexport interface CustomerAddress {\n\tid?: number;\n\taddressId?: number; // Update address temporary\n\tcountryCode: string;\n\tcityName: string;\n\tstreet: string;\n\thouseNumber: string;\n\tadditionalNumber?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n\tfloor?: number;\n\tlongitude?: number;\n\tlatitude?: number;\n\ttitle?: string;\n\ttype?: CustomerAddressType;\n}\n\nexport interface CustomerAuthForm {\n\totp: string;\n\temail: string;\n}\n\nexport interface CustomerAuthPhoneForm {\n\tcountryCode: string;\n\tphoneNumber: string;\n}\n\nexport interface AuthResponse {\n\taccessToken: string;\n\trefreshToken: string;\n}\n\nexport interface Customer {\n\tid?: number;\n\temail: string;\n\tphoneNumber: string;\n\tfullName: string;\n\tsmsVerified?: boolean;\n\temailVerified?: boolean;\n\taddress?: CustomerAddress;\n\taddresses?: CustomerAddress[];\n}\n\nexport type CustomerUpdatePayload = Partial<Customer>;\n","export enum Feature {\n\tUPLOAD_VIDEO = \"UPLOAD_VIDEO\",\n}\nexport enum FeatureSegment {\n\tALPHA = \"ALPHA\",\n\tBETA = \"BETA\",\n\tALL = \"ALL\",\n}\n","import * as customerModels from \"../customer/models\";\nimport * as productModels from \"../product/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum OrderType {\n\tDINE_IN = \"DINE_IN\",\n\tPICK_UP = \"PICK_UP\",\n\tDELIVERY = \"DELIVERY\",\n}\n\nexport enum OrderStatus {\n\tDRAFT = \"DRAFT\",\n\tPENDING = \"PENDING\",\n\tCONFIRMED = \"CONFIRMED\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tOUT_FOR_DELIVERY = \"OUT_FOR_DELIVERY\",\n\tDELIVERED = \"DELIVERED\",\n\tCOMPLETED = \"COMPLETED\",\n\tCANCELLED = \"CANCELLED\",\n\tFAILED = \"FAILED\",\n}\n\nexport enum OrderItemStatus {\n\tPENDING = \"PENDING\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tSERVED = \"SERVED\",\n}\n\nexport enum PaymentMethod {\n\tCASH = \"CASH\",\n\tCARD = \"CARD\",\n\tBANK_TRANSFER = \"BANK_TRANSFER\",\n\tMOBILE = \"MOBILE\",\n\tQR = \"QR\",\n\tVOUCHER = \"VOUCHER\",\n\tCOMP = \"COMP\",\n\tMIXED = \"MIXED\",\n}\n\n/**\n * The methods a customer can signal at checkout. COMP and MIXED are settlement\n * outcomes the venue records itself once money changes hands, so they are part\n * of the enum the API speaks but never an option in the public menu.\n */\nexport type CustomerPaymentMethod = Exclude<\n\tPaymentMethod,\n\tPaymentMethod.COMP | PaymentMethod.MIXED\n>;\n\nexport interface OrderAddonOption {\n\toptionId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderAddon {\n\tid?: number;\n\taddonId: number;\n\toptions: OrderAddonOption[];\n}\n\nexport interface SelectedAddons {\n\t[key: number]: number | number[];\n}\n\nexport interface OrderItemVariant {\n\tid?: number;\n\tvariantId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderItem {\n\tid?: number;\n\tproductId: number;\n\torderId?: number;\n\tquantity: number;\n\t/**\n\t * Gross unit price (listingPrice) at the moment the line was added. The\n\t * server recomputes authoritative totals on create/preview; this value is\n\t * what the cart UI displays.\n\t */\n\tprice?: number;\n\tvariant?: OrderItemVariant;\n\taddons: OrderAddon[];\n\tnote?: string;\n\tstatus?: OrderItemStatus;\n\tisPaid?: boolean;\n\tsellUnitType: productModels.SellUnitType;\n}\n\nexport interface Order {\n\tid?: number;\n\tbusinessId?: number;\n\tbranchId?: number;\n\tworkingDayId?: number;\n\ttableId?: number;\n\temployeeId?: number;\n\torderType: OrderType;\n\titems: OrderItem[];\n\tstatus?: OrderStatus;\n\tpreferredPaymentMethod?: PaymentMethod;\n\t/**\n\t * Customer's optional voluntary gratuity as a NUMERIC money string in the\n\t * branch currency (e.g. \"5.00\"). Honoured only on the customer and guest\n\t * create paths — POS ignores it. It is an unfinalized intent: the server\n\t * stores it but never adds it to the order total nor taxes it, so the\n\t * tip-inclusive total shown at checkout is computed client-side. Absent (or\n\t * zero) means no tip.\n\t */\n\tpreferredTipAmount?: string;\n\tnote?: string;\n\tcreatedAt?: number;\n\tupdatedAt?: number;\n\tcustomer?: customerModels.Customer;\n\tcurrency?: string;\n\ttrackingId?: string;\n}\n\nexport interface OrderItems {\n\t[key: string]: OrderItem;\n}\n\nexport enum OrderStep {\n\tCART = \"CART\",\n\tDETAILS = \"DETAILS\",\n\tCOMPLETED = \"COMPLETED\",\n}\n\nexport interface OrderPayload extends Order {\n\tcustomerAddressId: number;\n\tcustomerId: number;\n\tlanguage?: string;\n}\n\n/**\n * Contact + delivery snapshot an unregistered (\"guest\") visitor enters at\n * checkout. Mirrors the backend GuestContact: every field is optional, and an\n * address is only meaningful for DELIVERY orders. latitude/longitude are kept\n * as numbers here for the UI (they come from the address autocomplete); they're\n * serialized to strings in the wire payload — see GuestContactRequest.\n */\nexport interface GuestContact {\n\tfullName?: string;\n\tphoneNumber?: string;\n\temail?: string;\n\tstreet?: string;\n\thouseNumber?: string;\n\tadditionalNumber?: string;\n\tfloor?: number;\n\tlatitude?: number;\n\tlongitude?: number;\n\tcityName?: string;\n\tcountryCode?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n}\n\n/**\n * Wire shape of the contact sent to POST /order/public. Matches the backend\n * GuestContact, where latitude/longitude are strings.\n */\nexport interface GuestContactRequest\n\textends Omit<GuestContact, \"latitude\" | \"longitude\"> {\n\tlatitude?: string;\n\tlongitude?: string;\n}\n\n/**\n * Payload for the public, non-authenticated create path (POST /order/public).\n * Unlike OrderPayload it carries no customerId/customerAddressId — an\n * unregistered visitor has no account or stored address book; the delivery\n * address (when given) travels inside the contact snapshot.\n */\nexport interface GuestOrderPayload extends Order {\n\tlanguage?: string;\n\tcontact?: GuestContactRequest;\n}\n\nexport interface CalculatePreviewItemRequest {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tvariant?: { variantId: number };\n\taddons?: Array<{\n\t\taddonId: number;\n\t\toptions: Array<{ optionId: number }>;\n\t}>;\n}\n\nexport interface CalculatePreviewRequest {\n\tbusinessId?: number;\n\tbranchId: number;\n\torderType: OrderType;\n\titems: CalculatePreviewItemRequest[];\n\t/**\n\t * Where the delivery is heading. They matter only for a DELIVERY order on a\n\t * branch that prices delivery by distance; without them such a cart previews\n\t * the branch's flat fee, and the real fee is resolved from the order's\n\t * address at create time.\n\t */\n\tlatitude?: number;\n\tlongitude?: number;\n}\n\nexport interface CalculatePreviewTax {\n\tbranchTaxId: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: \"percentage\" | \"fixed\";\n\taddToListingPrice: boolean;\n\tamount: number;\n}\n\nexport interface CalculatePreviewLine {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tprice: number;\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface CalculatePreviewResponse {\n\ttotalPriceWithoutTax: number;\n\ttotalPriceWithTax: number;\n\ttotalPriceWithTaxAndFees: number;\n\ttotalTax: number;\n\tdeliveryFee: number;\n\tserviceFee: number;\n\titems: CalculatePreviewLine[];\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface OrderPreviewState {\n\tdata: CalculatePreviewResponse | null;\n\tisLoading: boolean;\n\terror: string | null;\n}\n","import { MenuAddon } from \"../addon/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport interface LocalizedContent {\n\tname: string;\n\tdescription: string;\n}\n\nexport interface ProductVariant {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied.\n\t */\n\tlistingPrice: number;\n\t/** Title keyed by language code, e.g. { en: \"Large\", az: \"Böyük\" }. */\n\ttitle: LocalizedText;\n\tproductId?: number;\n\tremove?: boolean;\n}\n\nexport interface Product {\n\tid: number;\n\tcategoryId: number;\n\t/** Net price (tax-exclusive). Nullable when the product has no own price (variant-only). */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied,\n\t * and is null when `price` itself is null.\n\t */\n\tlistingPrice?: number | null;\n\tvolume?: string; // 100qr/250ml/1kq\n\timage160?: string;\n\timage580?: string;\n\timage1024?: string;\n\ttranslations: Record<string, LocalizedContent>;\n\tvariants: ProductVariant[];\n\taddons: MenuAddon[];\n\tavailable?: boolean;\n\tvisible?: boolean;\n\tposition?: number;\n\tvideoUrl?: string;\n\tsellUnitType?: SellUnitType;\n\ttaxClassId?: number | null;\n\t/**\n\t * The bare allergen codes the business declared, `[]` when none — the shape\n\t * a product is authored and saved in. Rendering reads `allergenDetails`\n\t * instead, since that carries the same codes plus their wording.\n\t */\n\tallergens?: AllergenCode[];\n\t/**\n\t * The declared allergens as the menu renders them: each code paired with its\n\t * label in every language the business publishes. The API owns the catalog\n\t * and translates it, so a code it adds is legible here without a release of\n\t * this package, and the list is taken as given — order included.\n\t */\n\tallergenDetails?: AllergenDetail[];\n}\n\n/**\n * One declared allergen: the standardized code plus its label per language\n * code. Labels arrive as a map rather than a single localized string because\n * the public menu is served from one language-agnostic cached payload — the\n * guest switches language locally and the row has to relabel without a\n * refetch. Mirrors `domains/product/types/allergen_detail.go`.\n */\nexport interface AllergenDetail {\n\tcode: AllergenCode;\n\t/** Label keyed by language code, e.g. `{ en: \"Gluten\", az: \"Qlüten\" }`. */\n\ttranslations: LocalizedText;\n}\n\n/**\n * An allergen code as it comes off the wire. Deliberately open: the API owns\n * the catalog, so it may send a code this package has never heard of, and that\n * code still has to reach the guest — a declared allergen going missing is the\n * one failure mode this feature cannot have. `Allergen` names the codes we\n * have a glyph for; everything else falls back to a generic mark (see\n * `AllergenIcons`). Wording never depends on this list.\n */\nexport type AllergenCode = Allergen | (string & Record<never, never>);\n\n/**\n * The 14 major food allergens of EU Regulation 1169/2011 (Annex II) plus\n * buckwheat — mirrors `domains/product/constants/allergens.go` on the API,\n * which is the server of record for the catalog. This is the subset with a\n * glyph of its own; it is not a limit on what the API may send, and it exists\n * in this package only because an icon cannot travel over the wire.\n */\nexport enum Allergen {\n\tGLUTEN = \"GLUTEN\",\n\tCRUSTACEANS = \"CRUSTACEANS\",\n\tEGGS = \"EGGS\",\n\tFISH = \"FISH\",\n\tPEANUTS = \"PEANUTS\",\n\tSOY = \"SOY\",\n\tMILK = \"MILK\",\n\tTREE_NUTS = \"TREE_NUTS\",\n\tCELERY = \"CELERY\",\n\tMUSTARD = \"MUSTARD\",\n\tSESAME = \"SESAME\",\n\tSULPHITES = \"SULPHITES\",\n\tLUPIN = \"LUPIN\",\n\tMOLLUSCS = \"MOLLUSCS\",\n\tBUCKWHEAT = \"BUCKWHEAT\",\n}\n\nexport enum ProductView {\n\tLIST = \"list\",\n\tGRID = \"grid\",\n}\n\nexport interface DashboardProduct extends Omit<Product, \"addons\"> {\n\taddons: number[];\n}\n\nexport enum SellUnitType {\n\tPIECE = \"PIECE\",\n\tWEIGHT = \"WEIGHT\",\n\tVOLUME = \"VOLUME\",\n}\n","export enum PlanType {\n\tAPPETIZER = \"appetizer\",\n\tMAIN_COURSE = \"mainCourse\",\n\tCHEFS_SPECIAL = \"chefsSpecial\",\n\tLIFETIME = \"lifeTime\",\n}\n\nexport interface PricingPlan {\n\ttitle: string;\n\tprice: {\n\t\tmonthly: number;\n\t\tannually: number;\n\t};\n\tdiscountedPrice?: number;\n\tribbonText?: string;\n}\n\nexport interface PricingPlans {\n\t[key: string]: PricingPlan;\n}\n\nexport type PricingInterval = \"monthly\" | \"annually\";\n\nexport enum SubscriptionStatus {\n\tACTIVE = \"ACTIVE\",\n\tEXPIRED = \"EXPIRED\",\n\tCANCELLED = \"CANCELLED\",\n}\n\nexport type BillingInterval = \"MONTH\" | \"YEAR\";\n\nexport interface Subscription {\n\tid: number;\n\tbillingInterval: BillingInterval;\n\tbillingIntervalCount: number;\n\tstartDate: string;\n\tendDate: string;\n\tinterval: PricingInterval;\n\tstatus: SubscriptionStatus;\n\tbusiness_id?: number;\n\tplanName: string;\n}\n","export enum TableShape {\n\tSQUARE = \"SQUARE\",\n\tCIRCLE = \"CIRCLE\",\n\tRECTANGLE = \"RECTANGLE\",\n\tRECTANGLE_VERTICAL = \"RECTANGLE_VERTICAL\",\n\tSINGLE_AT_BAR = \"SINGLE_AT_BAR\",\n\tOTHER = \"OTHER\",\n}\n\nexport enum TableStatus {\n\tVACANT = \"VACANT\", // Free and available\n\tRESERVED = \"RESERVED\", // Booked but not yet seated\n\tOCCUPIED = \"OCCUPIED\", // Currently in use\n\tBLOCKED = \"BLOCKED\", // Temporarily blocked/unavailable\n\tNEEDS_CLEANING = \"NEEDS_CLEANING\", // Dirty, awaiting cleanup\n\tOUT_OF_SERVICE = \"OUT_OF_SERVICE\", // Permanently unavailable repair/maintenance\n\tPENDING_CONFIRMATION = \"PENDING_CONFIRMATION\", // Reservation not yet confirmed\n\tNO_SHOW = \"NO_SHOW\", // Reserved but guest didn’t arrive\n}\n\nexport enum TableLocation {\n\t// Indoor\n\tMAIN_HALL = \"MAIN_HALL\",\n\tPRIVATE_DINING = \"PRIVATE_DINING\",\n\tVIP_ROOM = \"VIP_ROOM\",\n\tBANQUET_HALL = \"BANQUET_HALL\",\n\tBAR_AREA = \"BAR_AREA\",\n\tLOUNGE = \"LOUNGE\",\n\tOPEN_KITCHEN = \"OPEN_KITCHEN\",\n\tBOOTH_SECTION = \"BOOTH_SECTION\",\n\tMEZZANINE = \"MEZZANINE\",\n\tWINE_CELLAR = \"WINE_CELLAR\",\n\n\t// Outdoor\n\tTERRACE = \"TERRACE\",\n\tPATIO = \"PATIO\",\n\tGARDEN = \"GARDEN\",\n\tCOURTYARD = \"COURTYARD\",\n\tROOFTOP = \"ROOFTOP\",\n\tBALCONY = \"BALCONY\",\n\tSIDEWALK = \"SIDEWALK\",\n\tPOOLSIDE = \"POOLSIDE\",\n\n\t// Special Sections\n\tSMOKING_AREA = \"SMOKING_AREA\",\n\tNON_SMOKING = \"NON_SMOKING\",\n\tFAMILY_SECTION = \"FAMILY_SECTION\",\n\tKIDS_AREA = \"KIDS_AREA\",\n\tWAITING_AREA = \"WAITING_AREA\",\n\tDANCE_FLOOR = \"DANCE_FLOOR\",\n}\n\nexport interface Table {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\tname: string;\n\tseatCount: number;\n\tshape: TableShape;\n\tlocation: TableLocation;\n\tstatus: TableStatus;\n}\n\nexport interface TableState {\n\ttables: Table[];\n}\n\nexport type TableForm = Omit<Table, \"id\" | \"businessId\" | \"branchId\"> & {\n\tbranchId: string | number;\n};\n\nexport type TableUpdate = Partial<Omit<Table, \"id\" | \"businessId\">>;\n\nexport type TableFilter = Partial<Pick<Table, \"branchId\" | \"shape\" | \"location\" | \"status\">>;\n\nexport type TableFilterParams = { field: keyof TableFilter; value: TableFilter[keyof TableFilter] };\n","export enum EmployeePermission {\n\tVIEW_BUSINESS = \"VIEW_BUSINESS\",\n\tUPDATE_BUSINESS = \"UPDATE_BUSINESS\",\n\tVIEW_BUSINESS_FINANCIALS = \"VIEW_BUSINESS_FINANCIALS\",\n\tVIEW_ORDERS = \"VIEW_ORDERS\",\n\tUPDATE_ORDER = \"UPDATE_ORDER\",\n\tCREATE_ORDER = \"CREATE_ORDER\",\n\t/**\n\t * The KDS's only verb: advancing a line PENDING -> PREPARING -> READY -> SERVED.\n\t * Deliberately separate from UPDATE_ORDER, which also carries close-the-bill,\n\t * void-a-line, add-items and change-table. Kitchen and runner roles hold this\n\t * INSTEAD of UPDATE_ORDER; floor and management roles hold both.\n\t */\n\tUPDATE_ORDER_ITEM_STATUS = \"UPDATE_ORDER_ITEM_STATUS\",\n\tAPPLY_DISCOUNT = \"APPLY_DISCOUNT\",\n\t/** Sending a paid order's receipt PDF to a customer over email/WhatsApp. */\n\tSEND_RECEIPT = \"SEND_RECEIPT\",\n\tVIEW_QR_MENU = \"VIEW_QR_MENU\",\n\tUPDATE_QR_MENU = \"UPDATE_QR_MENU\",\n\tVIEW_MENU = \"VIEW_MENU\",\n\tVIEW_MENU_ITEMS = \"VIEW_MENU_ITEMS\",\n\tCREATE_MENU_ITEM = \"CREATE_MENU_ITEM\",\n\tUPDATE_MENU_ITEM = \"UPDATE_MENU_ITEM\",\n\tDELETE_MENU_ITEM = \"DELETE_MENU_ITEM\",\n\tVIEW_CATEGORIES = \"VIEW_CATEGORIES\",\n\tUPDATE_CATEGORY = \"UPDATE_CATEGORY\",\n\tCREATE_CATEGORY = \"CREATE_CATEGORY\",\n\tDELETE_CATEGORY = \"DELETE_CATEGORY\",\n\tVIEW_ADDONS = \"VIEW_ADDONS\",\n\tUPDATE_ADDON = \"UPDATE_ADDON\",\n\tCREATE_ADDON = \"CREATE_ADDON\",\n\tDELETE_ADDON = \"DELETE_ADDON\",\n\tVIEW_TABLES = \"VIEW_TABLES\",\n\tUPDATE_TABLE = \"UPDATE_TABLE\",\n\tUPDATE_TABLE_STATUS = \"UPDATE_TABLE_STATUS\",\n\tCREATE_TABLE = \"CREATE_TABLE\",\n\tDELETE_TABLE = \"DELETE_TABLE\",\n\tVIEW_BRANCHES = \"VIEW_BRANCHES\",\n\tUPDATE_BRANCH = \"UPDATE_BRANCH\",\n\tCREATE_BRANCH = \"CREATE_BRANCH\",\n\tDELETE_BRANCH = \"DELETE_BRANCH\",\n\t// Kitchen stations\n\tVIEW_STATIONS = \"VIEW_STATIONS\",\n\tUPDATE_STATION = \"UPDATE_STATION\",\n\tCREATE_STATION = \"CREATE_STATION\",\n\tDELETE_STATION = \"DELETE_STATION\",\n\t// Terminal trust layer: enrolling hands a screen a long-lived credential of\n\t// its own, and revoking is the only way to take it back. Management only.\n\tVIEW_DEVICES = \"VIEW_DEVICES\",\n\tENROLL_DEVICE = \"ENROLL_DEVICE\",\n\tREVOKE_DEVICE = \"REVOKE_DEVICE\",\n\tVIEW_EMPLOYEES = \"VIEW_EMPLOYEES\",\n\tUPDATE_EMPLOYEE = \"UPDATE_EMPLOYEE\",\n\tCREATE_EMPLOYEE = \"CREATE_EMPLOYEE\",\n\tDELETE_EMPLOYEE = \"DELETE_EMPLOYEE\",\n\tVIEW_ANALYTICS = \"VIEW_ANALYTICS\",\n\tVIEW_SALES_REPORTS = \"VIEW_SALES_REPORTS\",\n\t// Client-only gates: the Go API defines no counterpart for these, so they\n\t// gate UI affordances rather than backend endpoints.\n\tVIEW_SUBSCRIPTION = \"VIEW_SUBSCRIPTION\",\n\tUPDATE_SUBSCRIPTION = \"UPDATE_SUBSCRIPTION\",\n\tVIEW_QR_CODES = \"VIEW_QR_CODES\",\n\tCREATE_QR_CODE = \"CREATE_QR_CODE\",\n\tDELETE_QR_CODE = \"DELETE_QR_CODE\",\n\tALL = \"ALL\",\n\t// Inventory\n\tVIEW_INVENTORY = \"VIEW_INVENTORY\",\n\tVIEW_PURCHASES = \"VIEW_PURCHASES\",\n\tVIEW_PURCHASE_DETAIL = \"VIEW_PURCHASE_DETAIL\",\n\tCREATE_PURCHASE = \"CREATE_PURCHASE\",\n\tUPDATE_PURCHASE = \"UPDATE_PURCHASE\",\n\tDELETE_PURCHASE = \"DELETE_PURCHASE\",\n\tVIEW_INVENTORY_PRODUCTS = \"VIEW_INVENTORY_PRODUCTS\",\n\tCREATE_INVENTORY_PRODUCT = \"CREATE_INVENTORY_PRODUCT\",\n\tUPDATE_INVENTORY_PRODUCT = \"UPDATE_INVENTORY_PRODUCT\",\n\tDELETE_INVENTORY_PRODUCT = \"DELETE_INVENTORY_PRODUCT\",\n\tVIEW_BUSINESS_BALANCE = \"VIEW_BUSINESS_BALANCE\",\n\tVIEW_BRANCH_BALANCE = \"VIEW_BRANCH_BALANCE\",\n\tUPDATE_PRODUCT_INGREDIENTS = \"UPDATE_PRODUCT_INGREDIENTS\",\n\tDELETE_PRODUCT_INGREDIENTS = \"DELETE_PRODUCT_INGREDIENTS\",\n\tAI_ASSISTANT = \"AI_ASSISTANT\",\n\tVIEW_PAYMENTS = \"VIEW_PAYMENTS\",\n\tTAKE_PAYMENT = \"TAKE_PAYMENT\",\n\tREFUND_PAYMENT = \"REFUND_PAYMENT\",\n\tPAYMENT_COMP = \"COMP\",\n}\n\nexport enum UserRole {\n\tOWNER = \"OWNER\",\n\tSUPER_ADMIN = \"SUPER_ADMIN\",\n\tBRANCH_MANAGER = \"BRANCH_MANAGER\",\n\tGENERAL_MANAGER = \"GENERAL_MANAGER\",\n\tBUSINESS_MANAGER = \"BUSINESS_MANAGER\",\n\tCHEF = \"CHEF\",\n\tSOUS_CHEF = \"SOUS_CHEF\",\n\tPASTRY_CHEF = \"PASTRY_CHEF\",\n\tLINE_COOK = \"LINE_COOK\",\n\tPREP_COOK = \"PREP_COOK\",\n\tKITCHEN_ASSISTANT = \"KITCHEN_ASSISTANT\",\n\tDISHWASHER = \"DISHWASHER\",\n\tHEAD_WAITER = \"HEAD_WAITER\",\n\tWAITER = \"WAITER\",\n\tRUNNER = \"RUNNER\",\n\tBARISTA = \"BARISTA\",\n\tBARTENDER = \"BARTENDER\",\n\tSOMMELIER = \"SOMMELIER\",\n\tACCOUNTANT = \"ACCOUNTANT\",\n\tROOM_SERVICE_STAFF = \"ROOM_SERVICE_STAFF\",\n\tDELIVERY_DRIVER = \"DELIVERY_DRIVER\",\n\tINVENTORY_MANAGER = \"INVENTORY_MANAGER\",\n\tPURCHASING_MANAGER = \"PURCHASING_MANAGER\",\n\tWAREHOUSE_STAFF = \"WAREHOUSE_STAFF\",\n\tCASHIER = \"CASHIER\",\n}\n\nexport interface User {\n\tid?: number;\n\temail: string;\n\tfullName: string;\n\trole?: UserRole;\n\tavatar64?: string | null;\n\tavatar128?: string | null;\n\tavatar256?: string | null;\n\tbusinessId?: number;\n\tbranchId?: number | null;\n\tcreatedAt: string;\n\temailVerified?: boolean;\n\tpermissions?: EmployeePermission[];\n}\n"],"names":["MenuAddonSelectType","DeliveryFeeType","BranchSetting","BranchTaxType","BranchTaxScope","BranchTaxFulfillment","BusinessSetting","CustomerAuthStep","CustomerAddressType","Feature","FeatureSegment","OrderType","OrderStatus","OrderItemStatus","PaymentMethod","OrderStep","Allergen","ProductView","SellUnitType","PlanType","SubscriptionStatus","TableShape","TableStatus","TableLocation","EmployeePermission","UserRole"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var E,A,T,e,R,_,I,N,S,D,O,C,L,r,t,P,U,o,s,p,M,V,i,a,x;exports.MenuAddonSelectType=void 0,(E=exports.MenuAddonSelectType||(exports.MenuAddonSelectType={})).SINGLE="SINGLE",E.MULTIPLE="MULTIPLE",exports.DeliveryFeeType=void 0,(A=exports.DeliveryFeeType||(exports.DeliveryFeeType={})).FIXED="FIXED",A.DISTANCE="DISTANCE",exports.BranchSetting=void 0,(T=exports.BranchSetting||(exports.BranchSetting={})).MAX_DELIVERY_DISTANCE="maxDeliveryDistance",T.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",T.PICKUP_ORDER_ENABLED="pickupOrderEnabled",T.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",T.MIN_DELIVERY_AMOUNT="minDeliveryAmount",T.DELIVERY_FEE_AMOUNT="deliveryFeeAmount",T.DELIVERY_FEE_TYPE="deliveryFeeType",T.DELIVERY_FEE_TIERS="deliveryFeeTiers",T.SERVICE_CHARGE_ENABLED="serviceChargeEnabled",T.SERVICE_CHARGE_PERCENTAGE="serviceChargePercentage",T.ADD_TO_ORDER_ENABLED="addToOrderEnabled",T.GUEST_ORDER_ENABLED="guestOrderEnabled",T.PRIMARY_PAYMENT_METHODS="primaryPaymentMethods",T.SECONDARY_PAYMENT_METHODS="secondaryPaymentMethods",exports.BranchTaxType=void 0,(e=exports.BranchTaxType||(exports.BranchTaxType={})).PERCENTAGE="percentage",e.FIXED_AMOUNT="fixed",exports.BranchTaxScope=void 0,(R=exports.BranchTaxScope||(exports.BranchTaxScope={})).ENTIRE_MENU="entire_menu",R.CLASS="class",exports.BranchTaxFulfillment=void 0,(_=exports.BranchTaxFulfillment||(exports.BranchTaxFulfillment={})).DELIVERY="delivery",_.TAKEAWAY="takeaway",_.DINE_IN="dine_in",_.ALL="ALL",exports.BusinessSetting=void 0,(I=exports.BusinessSetting||(exports.BusinessSetting={})).MAX_DELIVERY_DISTANCE="maxDeliveryDistance",I.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",I.PICKUP_ORDER_ENABLED="pickupOrderEnabled",I.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",I.MIN_DELIVERY_AMOUNT="minDeliveryAmount",exports.CustomerAuthStep=void 0,(N=exports.CustomerAuthStep||(exports.CustomerAuthStep={})).PHONE="PHONE",N.OTP="OTP",N.EMAIL="EMAIL",exports.CustomerAddressType=void 0,(S=exports.CustomerAddressType||(exports.CustomerAddressType={})).HOME="HOME",S.WORK="WORK",S.TRAVEL="TRAVEL",exports.Feature=void 0,(exports.Feature||(exports.Feature={})).UPLOAD_VIDEO="UPLOAD_VIDEO",exports.FeatureSegment=void 0,(D=exports.FeatureSegment||(exports.FeatureSegment={})).ALPHA="ALPHA",D.BETA="BETA",D.ALL="ALL",exports.OrderType=void 0,(O=exports.OrderType||(exports.OrderType={})).DINE_IN="DINE_IN",O.PICK_UP="PICK_UP",O.DELIVERY="DELIVERY",exports.OrderStatus=void 0,(C=exports.OrderStatus||(exports.OrderStatus={})).DRAFT="DRAFT",C.PENDING="PENDING",C.CONFIRMED="CONFIRMED",C.PREPARING="PREPARING",C.READY="READY",C.OUT_FOR_DELIVERY="OUT_FOR_DELIVERY",C.DELIVERED="DELIVERED",C.COMPLETED="COMPLETED",C.CANCELLED="CANCELLED",C.FAILED="FAILED",exports.OrderItemStatus=void 0,(L=exports.OrderItemStatus||(exports.OrderItemStatus={})).PENDING="PENDING",L.PREPARING="PREPARING",L.READY="READY",L.SERVED="SERVED",exports.PaymentMethod=void 0,(r=exports.PaymentMethod||(exports.PaymentMethod={})).CASH="CASH",r.CARD="CARD",r.BANK_TRANSFER="BANK_TRANSFER",r.MOBILE="MOBILE",r.QR="QR",r.VOUCHER="VOUCHER",r.COMP="COMP",r.MIXED="MIXED",exports.OrderStep=void 0,(t=exports.OrderStep||(exports.OrderStep={})).CART="CART",t.DETAILS="DETAILS",t.COMPLETED="COMPLETED",exports.Allergen=void 0,(P=exports.Allergen||(exports.Allergen={})).GLUTEN="GLUTEN",P.CRUSTACEANS="CRUSTACEANS",P.EGGS="EGGS",P.FISH="FISH",P.PEANUTS="PEANUTS",P.SOY="SOY",P.MILK="MILK",P.TREE_NUTS="TREE_NUTS",P.CELERY="CELERY",P.MUSTARD="MUSTARD",P.SESAME="SESAME",P.SULPHITES="SULPHITES",P.LUPIN="LUPIN",P.MOLLUSCS="MOLLUSCS",P.BUCKWHEAT="BUCKWHEAT",exports.ProductView=void 0,(U=exports.ProductView||(exports.ProductView={})).LIST="list",U.GRID="grid",exports.SellUnitType=void 0,(o=exports.SellUnitType||(exports.SellUnitType={})).PIECE="PIECE",o.WEIGHT="WEIGHT",o.VOLUME="VOLUME",exports.PlanType=void 0,(s=exports.PlanType||(exports.PlanType={})).APPETIZER="appetizer",s.MAIN_COURSE="mainCourse",s.CHEFS_SPECIAL="chefsSpecial",s.LIFETIME="lifeTime",exports.SubscriptionStatus=void 0,(p=exports.SubscriptionStatus||(exports.SubscriptionStatus={})).ACTIVE="ACTIVE",p.EXPIRED="EXPIRED",p.CANCELLED="CANCELLED",exports.TableShape=void 0,(M=exports.TableShape||(exports.TableShape={})).SQUARE="SQUARE",M.CIRCLE="CIRCLE",M.RECTANGLE="RECTANGLE",M.RECTANGLE_VERTICAL="RECTANGLE_VERTICAL",M.SINGLE_AT_BAR="SINGLE_AT_BAR",M.OTHER="OTHER",exports.TableStatus=void 0,(V=exports.TableStatus||(exports.TableStatus={})).VACANT="VACANT",V.RESERVED="RESERVED",V.OCCUPIED="OCCUPIED",V.BLOCKED="BLOCKED",V.NEEDS_CLEANING="NEEDS_CLEANING",V.OUT_OF_SERVICE="OUT_OF_SERVICE",V.PENDING_CONFIRMATION="PENDING_CONFIRMATION",V.NO_SHOW="NO_SHOW",exports.TableLocation=void 0,(i=exports.TableLocation||(exports.TableLocation={})).MAIN_HALL="MAIN_HALL",i.PRIVATE_DINING="PRIVATE_DINING",i.VIP_ROOM="VIP_ROOM",i.BANQUET_HALL="BANQUET_HALL",i.BAR_AREA="BAR_AREA",i.LOUNGE="LOUNGE",i.OPEN_KITCHEN="OPEN_KITCHEN",i.BOOTH_SECTION="BOOTH_SECTION",i.MEZZANINE="MEZZANINE",i.WINE_CELLAR="WINE_CELLAR",i.TERRACE="TERRACE",i.PATIO="PATIO",i.GARDEN="GARDEN",i.COURTYARD="COURTYARD",i.ROOFTOP="ROOFTOP",i.BALCONY="BALCONY",i.SIDEWALK="SIDEWALK",i.POOLSIDE="POOLSIDE",i.SMOKING_AREA="SMOKING_AREA",i.NON_SMOKING="NON_SMOKING",i.FAMILY_SECTION="FAMILY_SECTION",i.KIDS_AREA="KIDS_AREA",i.WAITING_AREA="WAITING_AREA",i.DANCE_FLOOR="DANCE_FLOOR",exports.EmployeePermission=void 0,(a=exports.EmployeePermission||(exports.EmployeePermission={})).VIEW_BUSINESS="VIEW_BUSINESS",a.UPDATE_BUSINESS="UPDATE_BUSINESS",a.VIEW_BUSINESS_FINANCIALS="VIEW_BUSINESS_FINANCIALS",a.VIEW_ORDERS="VIEW_ORDERS",a.UPDATE_ORDER="UPDATE_ORDER",a.CREATE_ORDER="CREATE_ORDER",a.APPLY_DISCOUNT="APPLY_DISCOUNT",a.VIEW_QR_MENU="VIEW_QR_MENU",a.UPDATE_QR_MENU="UPDATE_QR_MENU",a.VIEW_MENU="VIEW_MENU",a.VIEW_MENU_ITEMS="VIEW_MENU_ITEMS",a.CREATE_MENU_ITEM="CREATE_MENU_ITEM",a.UPDATE_MENU_ITEM="UPDATE_MENU_ITEM",a.DELETE_MENU_ITEM="DELETE_MENU_ITEM",a.VIEW_CATEGORIES="VIEW_CATEGORIES",a.UPDATE_CATEGORY="UPDATE_CATEGORY",a.CREATE_CATEGORY="CREATE_CATEGORY",a.DELETE_CATEGORY="DELETE_CATEGORY",a.VIEW_ADDONS="VIEW_ADDONS",a.UPDATE_ADDON="UPDATE_ADDON",a.CREATE_ADDON="CREATE_ADDON",a.DELETE_ADDON="DELETE_ADDON",a.VIEW_TABLES="VIEW_TABLES",a.UPDATE_TABLE="UPDATE_TABLE",a.UPDATE_TABLE_STATUS="UPDATE_TABLE_STATUS",a.CREATE_TABLE="CREATE_TABLE",a.DELETE_TABLE="DELETE_TABLE",a.VIEW_BRANCHES="VIEW_BRANCHES",a.UPDATE_BRANCH="UPDATE_BRANCH",a.CREATE_BRANCH="CREATE_BRANCH",a.DELETE_BRANCH="DELETE_BRANCH",a.VIEW_EMPLOYEES="VIEW_EMPLOYEES",a.UPDATE_EMPLOYEE="UPDATE_EMPLOYEE",a.CREATE_EMPLOYEE="CREATE_EMPLOYEE",a.DELETE_EMPLOYEE="DELETE_EMPLOYEE",a.VIEW_ANALYTICS="VIEW_ANALYTICS",a.VIEW_SALES_REPORTS="VIEW_SALES_REPORTS",a.VIEW_SUBSCRIPTION="VIEW_SUBSCRIPTION",a.UPDATE_SUBSCRIPTION="UPDATE_SUBSCRIPTION",a.VIEW_QR_CODES="VIEW_QR_CODES",a.CREATE_QR_CODE="CREATE_QR_CODE",a.DELETE_QR_CODE="DELETE_QR_CODE",a.ALL="ALL",a.VIEW_INVENTORY="VIEW_INVENTORY",a.VIEW_PURCHASES="VIEW_PURCHASES",a.VIEW_PURCHASE_DETAIL="VIEW_PURCHASE_DETAIL",a.CREATE_PURCHASE="CREATE_PURCHASE",a.UPDATE_PURCHASE="UPDATE_PURCHASE",a.DELETE_PURCHASE="DELETE_PURCHASE",a.VIEW_INVENTORY_PRODUCTS="VIEW_INVENTORY_PRODUCTS",a.CREATE_INVENTORY_PRODUCT="CREATE_INVENTORY_PRODUCT",a.UPDATE_INVENTORY_PRODUCT="UPDATE_INVENTORY_PRODUCT",a.DELETE_INVENTORY_PRODUCT="DELETE_INVENTORY_PRODUCT",a.VIEW_BUSINESS_BALANCE="VIEW_BUSINESS_BALANCE",a.VIEW_BRANCH_BALANCE="VIEW_BRANCH_BALANCE",a.UPDATE_PRODUCT_INGREDIENTS="UPDATE_PRODUCT_INGREDIENTS",a.DELETE_PRODUCT_INGREDIENTS="DELETE_PRODUCT_INGREDIENTS",a.AI_ASSISTANT="AI_ASSISTANT",a.VIEW_PAYMENTS="VIEW_PAYMENTS",a.TAKE_PAYMENT="TAKE_PAYMENT",a.REFUND_PAYMENT="REFUND_PAYMENT",a.PAYMENT_COMP="COMP",exports.UserRole=void 0,(x=exports.UserRole||(exports.UserRole={})).OWNER="OWNER",x.BRANCH_MANAGER="BRANCH_MANAGER",x.GENERAL_MANAGER="GENERAL_MANAGER",x.CHEF="CHEF",x.SOUS_CHEF="SOUS_CHEF",x.PASTRY_CHEF="PASTRY_CHEF",x.LINE_COOK="LINE_COOK",x.PREP_COOK="PREP_COOK",x.KITCHEN_ASSISTANT="KITCHEN_ASSISTANT",x.DISHWASHER="DISHWASHER",x.HEAD_WAITER="HEAD_WAITER",x.WAITER="WAITER",x.RUNNER="RUNNER",x.BARISTA="BARISTA",x.BARTENDER="BARTENDER",x.SOMMELIER="SOMMELIER",x.ACCOUNTANT="ACCOUNTANT",x.ROOM_SERVICE_STAFF="ROOM_SERVICE_STAFF",x.DELIVERY_DRIVER="DELIVERY_DRIVER",x.INVENTORY_MANAGER="INVENTORY_MANAGER",x.PURCHASING_MANAGER="PURCHASING_MANAGER",x.WAREHOUSE_STAFF="WAREHOUSE_STAFF",x.CASHIER="CASHIER";
1
+ "use strict";var E,A,T,R,_,I,e,N,S,D,O,C,L,r,t,P,U,o,s,p,M,V,i,a,x;exports.MenuAddonSelectType=void 0,(E=exports.MenuAddonSelectType||(exports.MenuAddonSelectType={})).SINGLE="SINGLE",E.MULTIPLE="MULTIPLE",exports.DeliveryFeeType=void 0,(A=exports.DeliveryFeeType||(exports.DeliveryFeeType={})).FIXED="FIXED",A.DISTANCE="DISTANCE",exports.BranchSetting=void 0,(T=exports.BranchSetting||(exports.BranchSetting={})).MAX_DELIVERY_DISTANCE="maxDeliveryDistance",T.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",T.PICKUP_ORDER_ENABLED="pickupOrderEnabled",T.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",T.MIN_DELIVERY_AMOUNT="minDeliveryAmount",T.DELIVERY_FEE_AMOUNT="deliveryFeeAmount",T.DELIVERY_FEE_TYPE="deliveryFeeType",T.DELIVERY_FEE_TIERS="deliveryFeeTiers",T.SERVICE_CHARGE_ENABLED="serviceChargeEnabled",T.SERVICE_CHARGE_PERCENTAGE="serviceChargePercentage",T.ADD_TO_ORDER_ENABLED="addToOrderEnabled",T.GUEST_ORDER_ENABLED="guestOrderEnabled",T.PRIMARY_PAYMENT_METHODS="primaryPaymentMethods",T.SECONDARY_PAYMENT_METHODS="secondaryPaymentMethods",exports.BranchTaxType=void 0,(R=exports.BranchTaxType||(exports.BranchTaxType={})).PERCENTAGE="percentage",R.FIXED_AMOUNT="fixed",exports.BranchTaxScope=void 0,(_=exports.BranchTaxScope||(exports.BranchTaxScope={})).ENTIRE_MENU="entire_menu",_.CLASS="class",exports.BranchTaxFulfillment=void 0,(I=exports.BranchTaxFulfillment||(exports.BranchTaxFulfillment={})).DELIVERY="delivery",I.TAKEAWAY="takeaway",I.DINE_IN="dine_in",I.ALL="ALL",exports.BusinessSetting=void 0,(e=exports.BusinessSetting||(exports.BusinessSetting={})).MAX_DELIVERY_DISTANCE="maxDeliveryDistance",e.DELIVERY_ORDER_ENABLED="deliveryOrderEnabled",e.PICKUP_ORDER_ENABLED="pickupOrderEnabled",e.DINE_IN_ORDER_ENABLED="dineInOrderEnabled",e.MIN_DELIVERY_AMOUNT="minDeliveryAmount",exports.CustomerAuthStep=void 0,(N=exports.CustomerAuthStep||(exports.CustomerAuthStep={})).PHONE="PHONE",N.OTP="OTP",N.EMAIL="EMAIL",exports.CustomerAddressType=void 0,(S=exports.CustomerAddressType||(exports.CustomerAddressType={})).HOME="HOME",S.WORK="WORK",S.TRAVEL="TRAVEL",exports.Feature=void 0,(exports.Feature||(exports.Feature={})).UPLOAD_VIDEO="UPLOAD_VIDEO",exports.FeatureSegment=void 0,(D=exports.FeatureSegment||(exports.FeatureSegment={})).ALPHA="ALPHA",D.BETA="BETA",D.ALL="ALL",exports.OrderType=void 0,(O=exports.OrderType||(exports.OrderType={})).DINE_IN="DINE_IN",O.PICK_UP="PICK_UP",O.DELIVERY="DELIVERY",exports.OrderStatus=void 0,(C=exports.OrderStatus||(exports.OrderStatus={})).DRAFT="DRAFT",C.PENDING="PENDING",C.CONFIRMED="CONFIRMED",C.PREPARING="PREPARING",C.READY="READY",C.OUT_FOR_DELIVERY="OUT_FOR_DELIVERY",C.DELIVERED="DELIVERED",C.COMPLETED="COMPLETED",C.CANCELLED="CANCELLED",C.FAILED="FAILED",exports.OrderItemStatus=void 0,(L=exports.OrderItemStatus||(exports.OrderItemStatus={})).PENDING="PENDING",L.PREPARING="PREPARING",L.READY="READY",L.SERVED="SERVED",exports.PaymentMethod=void 0,(r=exports.PaymentMethod||(exports.PaymentMethod={})).CASH="CASH",r.CARD="CARD",r.BANK_TRANSFER="BANK_TRANSFER",r.MOBILE="MOBILE",r.QR="QR",r.VOUCHER="VOUCHER",r.COMP="COMP",r.MIXED="MIXED",exports.OrderStep=void 0,(t=exports.OrderStep||(exports.OrderStep={})).CART="CART",t.DETAILS="DETAILS",t.COMPLETED="COMPLETED",exports.Allergen=void 0,(P=exports.Allergen||(exports.Allergen={})).GLUTEN="GLUTEN",P.CRUSTACEANS="CRUSTACEANS",P.EGGS="EGGS",P.FISH="FISH",P.PEANUTS="PEANUTS",P.SOY="SOY",P.MILK="MILK",P.TREE_NUTS="TREE_NUTS",P.CELERY="CELERY",P.MUSTARD="MUSTARD",P.SESAME="SESAME",P.SULPHITES="SULPHITES",P.LUPIN="LUPIN",P.MOLLUSCS="MOLLUSCS",P.BUCKWHEAT="BUCKWHEAT",exports.ProductView=void 0,(U=exports.ProductView||(exports.ProductView={})).LIST="list",U.GRID="grid",exports.SellUnitType=void 0,(o=exports.SellUnitType||(exports.SellUnitType={})).PIECE="PIECE",o.WEIGHT="WEIGHT",o.VOLUME="VOLUME",exports.PlanType=void 0,(s=exports.PlanType||(exports.PlanType={})).APPETIZER="appetizer",s.MAIN_COURSE="mainCourse",s.CHEFS_SPECIAL="chefsSpecial",s.LIFETIME="lifeTime",exports.SubscriptionStatus=void 0,(p=exports.SubscriptionStatus||(exports.SubscriptionStatus={})).ACTIVE="ACTIVE",p.EXPIRED="EXPIRED",p.CANCELLED="CANCELLED",exports.TableShape=void 0,(M=exports.TableShape||(exports.TableShape={})).SQUARE="SQUARE",M.CIRCLE="CIRCLE",M.RECTANGLE="RECTANGLE",M.RECTANGLE_VERTICAL="RECTANGLE_VERTICAL",M.SINGLE_AT_BAR="SINGLE_AT_BAR",M.OTHER="OTHER",exports.TableStatus=void 0,(V=exports.TableStatus||(exports.TableStatus={})).VACANT="VACANT",V.RESERVED="RESERVED",V.OCCUPIED="OCCUPIED",V.BLOCKED="BLOCKED",V.NEEDS_CLEANING="NEEDS_CLEANING",V.OUT_OF_SERVICE="OUT_OF_SERVICE",V.PENDING_CONFIRMATION="PENDING_CONFIRMATION",V.NO_SHOW="NO_SHOW",exports.TableLocation=void 0,(i=exports.TableLocation||(exports.TableLocation={})).MAIN_HALL="MAIN_HALL",i.PRIVATE_DINING="PRIVATE_DINING",i.VIP_ROOM="VIP_ROOM",i.BANQUET_HALL="BANQUET_HALL",i.BAR_AREA="BAR_AREA",i.LOUNGE="LOUNGE",i.OPEN_KITCHEN="OPEN_KITCHEN",i.BOOTH_SECTION="BOOTH_SECTION",i.MEZZANINE="MEZZANINE",i.WINE_CELLAR="WINE_CELLAR",i.TERRACE="TERRACE",i.PATIO="PATIO",i.GARDEN="GARDEN",i.COURTYARD="COURTYARD",i.ROOFTOP="ROOFTOP",i.BALCONY="BALCONY",i.SIDEWALK="SIDEWALK",i.POOLSIDE="POOLSIDE",i.SMOKING_AREA="SMOKING_AREA",i.NON_SMOKING="NON_SMOKING",i.FAMILY_SECTION="FAMILY_SECTION",i.KIDS_AREA="KIDS_AREA",i.WAITING_AREA="WAITING_AREA",i.DANCE_FLOOR="DANCE_FLOOR",exports.EmployeePermission=void 0,(a=exports.EmployeePermission||(exports.EmployeePermission={})).VIEW_BUSINESS="VIEW_BUSINESS",a.UPDATE_BUSINESS="UPDATE_BUSINESS",a.VIEW_BUSINESS_FINANCIALS="VIEW_BUSINESS_FINANCIALS",a.VIEW_ORDERS="VIEW_ORDERS",a.UPDATE_ORDER="UPDATE_ORDER",a.CREATE_ORDER="CREATE_ORDER",a.UPDATE_ORDER_ITEM_STATUS="UPDATE_ORDER_ITEM_STATUS",a.APPLY_DISCOUNT="APPLY_DISCOUNT",a.SEND_RECEIPT="SEND_RECEIPT",a.VIEW_QR_MENU="VIEW_QR_MENU",a.UPDATE_QR_MENU="UPDATE_QR_MENU",a.VIEW_MENU="VIEW_MENU",a.VIEW_MENU_ITEMS="VIEW_MENU_ITEMS",a.CREATE_MENU_ITEM="CREATE_MENU_ITEM",a.UPDATE_MENU_ITEM="UPDATE_MENU_ITEM",a.DELETE_MENU_ITEM="DELETE_MENU_ITEM",a.VIEW_CATEGORIES="VIEW_CATEGORIES",a.UPDATE_CATEGORY="UPDATE_CATEGORY",a.CREATE_CATEGORY="CREATE_CATEGORY",a.DELETE_CATEGORY="DELETE_CATEGORY",a.VIEW_ADDONS="VIEW_ADDONS",a.UPDATE_ADDON="UPDATE_ADDON",a.CREATE_ADDON="CREATE_ADDON",a.DELETE_ADDON="DELETE_ADDON",a.VIEW_TABLES="VIEW_TABLES",a.UPDATE_TABLE="UPDATE_TABLE",a.UPDATE_TABLE_STATUS="UPDATE_TABLE_STATUS",a.CREATE_TABLE="CREATE_TABLE",a.DELETE_TABLE="DELETE_TABLE",a.VIEW_BRANCHES="VIEW_BRANCHES",a.UPDATE_BRANCH="UPDATE_BRANCH",a.CREATE_BRANCH="CREATE_BRANCH",a.DELETE_BRANCH="DELETE_BRANCH",a.VIEW_STATIONS="VIEW_STATIONS",a.UPDATE_STATION="UPDATE_STATION",a.CREATE_STATION="CREATE_STATION",a.DELETE_STATION="DELETE_STATION",a.VIEW_DEVICES="VIEW_DEVICES",a.ENROLL_DEVICE="ENROLL_DEVICE",a.REVOKE_DEVICE="REVOKE_DEVICE",a.VIEW_EMPLOYEES="VIEW_EMPLOYEES",a.UPDATE_EMPLOYEE="UPDATE_EMPLOYEE",a.CREATE_EMPLOYEE="CREATE_EMPLOYEE",a.DELETE_EMPLOYEE="DELETE_EMPLOYEE",a.VIEW_ANALYTICS="VIEW_ANALYTICS",a.VIEW_SALES_REPORTS="VIEW_SALES_REPORTS",a.VIEW_SUBSCRIPTION="VIEW_SUBSCRIPTION",a.UPDATE_SUBSCRIPTION="UPDATE_SUBSCRIPTION",a.VIEW_QR_CODES="VIEW_QR_CODES",a.CREATE_QR_CODE="CREATE_QR_CODE",a.DELETE_QR_CODE="DELETE_QR_CODE",a.ALL="ALL",a.VIEW_INVENTORY="VIEW_INVENTORY",a.VIEW_PURCHASES="VIEW_PURCHASES",a.VIEW_PURCHASE_DETAIL="VIEW_PURCHASE_DETAIL",a.CREATE_PURCHASE="CREATE_PURCHASE",a.UPDATE_PURCHASE="UPDATE_PURCHASE",a.DELETE_PURCHASE="DELETE_PURCHASE",a.VIEW_INVENTORY_PRODUCTS="VIEW_INVENTORY_PRODUCTS",a.CREATE_INVENTORY_PRODUCT="CREATE_INVENTORY_PRODUCT",a.UPDATE_INVENTORY_PRODUCT="UPDATE_INVENTORY_PRODUCT",a.DELETE_INVENTORY_PRODUCT="DELETE_INVENTORY_PRODUCT",a.VIEW_BUSINESS_BALANCE="VIEW_BUSINESS_BALANCE",a.VIEW_BRANCH_BALANCE="VIEW_BRANCH_BALANCE",a.UPDATE_PRODUCT_INGREDIENTS="UPDATE_PRODUCT_INGREDIENTS",a.DELETE_PRODUCT_INGREDIENTS="DELETE_PRODUCT_INGREDIENTS",a.AI_ASSISTANT="AI_ASSISTANT",a.VIEW_PAYMENTS="VIEW_PAYMENTS",a.TAKE_PAYMENT="TAKE_PAYMENT",a.REFUND_PAYMENT="REFUND_PAYMENT",a.PAYMENT_COMP="COMP",exports.UserRole=void 0,(x=exports.UserRole||(exports.UserRole={})).OWNER="OWNER",x.SUPER_ADMIN="SUPER_ADMIN",x.BRANCH_MANAGER="BRANCH_MANAGER",x.GENERAL_MANAGER="GENERAL_MANAGER",x.BUSINESS_MANAGER="BUSINESS_MANAGER",x.CHEF="CHEF",x.SOUS_CHEF="SOUS_CHEF",x.PASTRY_CHEF="PASTRY_CHEF",x.LINE_COOK="LINE_COOK",x.PREP_COOK="PREP_COOK",x.KITCHEN_ASSISTANT="KITCHEN_ASSISTANT",x.DISHWASHER="DISHWASHER",x.HEAD_WAITER="HEAD_WAITER",x.WAITER="WAITER",x.RUNNER="RUNNER",x.BARISTA="BARISTA",x.BARTENDER="BARTENDER",x.SOMMELIER="SOMMELIER",x.ACCOUNTANT="ACCOUNTANT",x.ROOM_SERVICE_STAFF="ROOM_SERVICE_STAFF",x.DELIVERY_DRIVER="DELIVERY_DRIVER",x.INVENTORY_MANAGER="INVENTORY_MANAGER",x.PURCHASING_MANAGER="PURCHASING_MANAGER",x.WAREHOUSE_STAFF="WAREHOUSE_STAFF",x.CASHIER="CASHIER";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/modules/addon/models.ts","../../../src/modules/branch/models.ts","../../../src/modules/business/models.ts","../../../src/modules/customer/models.ts","../../../src/modules/feature/models.ts","../../../src/modules/order/models.ts","../../../src/modules/product/models.ts","../../../src/modules/subscription/models.ts","../../../src/modules/table/models.ts","../../../src/modules/user/models.ts"],"sourcesContent":["import { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum MenuAddonSelectType {\n\tSINGLE = \"SINGLE\",\n\tMULTIPLE = \"MULTIPLE\",\n}\n\nexport interface MenuAddonOption {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus the parent product's\n\t * `addToListingPrice` taxes. Equals `price` when no branch context is\n\t * supplied (e.g. addon detached from a branch tax setup).\n\t */\n\tlistingPrice: number;\n\ttitle: LocalizedText;\n\tremove?: boolean;\n}\n\nexport interface MenuAddon {\n\tid?: number;\n\tselectType: MenuAddonSelectType;\n\toptions: MenuAddonOption[];\n\tbusinessId?: number;\n\ttitle: LocalizedText;\n}\n","import { LocalizedText } from \"src/modules/localization/models\";\n\nexport type BranchWorkHour = {\n\topenAt: string;\n\tcloseAt: string;\n};\n\nexport type BranchWorkDay = {\n\tday: number;\n\thours: BranchWorkHour | null;\n};\n\nexport type BranchWorkDays = {\n\tdays: BranchWorkDay[];\n};\n\n/**\n * How a branch charges for delivery: one flat amount (`deliveryFeeAmount`) or a\n * fee picked from the branch's distance ranges (`deliveryFeeTiers`). Mirrors\n * the API's branch_settings.delivery_fee_type — extend both together. A branch\n * is FIXED until its owner opts into distance pricing.\n */\nexport enum DeliveryFeeType {\n\tFIXED = \"FIXED\",\n\tDISTANCE = \"DISTANCE\",\n}\n\n/**\n * One distance range of a branch's per-km delivery pricing, read as \"up to\n * `upToDistance` kilometres, charge `fee`\". Ranges carry no lower bound of\n * their own: the applicable one is the cheapest `upToDistance` that still\n * covers the delivery distance, so 5/10/20 km ranges describe 0-5, 5-10 and\n * 10-20 km. The API returns them sorted by `upToDistance` ascending.\n *\n * `upToDistance` is in KILOMETRES — unlike `BranchSettings.maxDeliveryDistance`,\n * which the API keeps in metres.\n */\nexport type DeliveryFeeTier = {\n\tupToDistance: number;\n\tfee: number;\n};\n\nexport interface BranchSettings {\n\tdeliveryOrderEnabled: boolean;\n\tpickupOrderEnabled: boolean;\n\tdineInOrderEnabled: boolean;\n\t/** In METRES, unlike the kilometres a DeliveryFeeTier is measured in. */\n\tmaxDeliveryDistance: number;\n\tminDeliveryAmount: number;\n\tdeliveryFeeAmount: number;\n\t/**\n\t * Absent on a payload cached before the branch gained distance pricing;\n\t * treated as FIXED, the same default the API stores.\n\t */\n\tdeliveryFeeType?: DeliveryFeeType;\n\tdeliveryFeeTiers?: DeliveryFeeTier[];\n\tserviceChargeEnabled: boolean;\n\tserviceChargePercentage: number;\n\taddToOrderEnabled: boolean;\n\tguestOrderEnabled: boolean;\n\tprimaryPaymentMethods?: string[] | null;\n\tsecondaryPaymentMethods?: string[] | null;\n}\n\nexport enum BranchSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n\tDELIVERY_FEE_AMOUNT = \"deliveryFeeAmount\",\n\tDELIVERY_FEE_TYPE = \"deliveryFeeType\",\n\tDELIVERY_FEE_TIERS = \"deliveryFeeTiers\",\n\tSERVICE_CHARGE_ENABLED = \"serviceChargeEnabled\",\n\tSERVICE_CHARGE_PERCENTAGE = \"serviceChargePercentage\",\n\tADD_TO_ORDER_ENABLED = \"addToOrderEnabled\",\n\tGUEST_ORDER_ENABLED = \"guestOrderEnabled\",\n\tPRIMARY_PAYMENT_METHODS = \"primaryPaymentMethods\",\n\tSECONDARY_PAYMENT_METHODS = \"secondaryPaymentMethods\",\n}\n\nexport interface Branch {\n\tid: number;\n\tname: string;\n\tbusinessId: number;\n\taddress: string;\n\tlongitude?: number;\n\tlatitude?: number;\n\tphone?: string;\n\twhatsApp?: string;\n\ttelegram?: string;\n\twifiPassword?: string;\n\tcreatedAt?: number;\n\tcoverPhoto?: string;\n\t// Trading currency (ISO-4217) of this branch. Currency lives on the branch,\n\t// not the business, so a franchise or foreign establishment can trade in a\n\t// different currency than the brand's default.\n\tcurrency?: string;\n\ttimezone?: string;\n\tbusinessDayStart?: string;\n\tsettings?: BranchSettings;\n\topeningHours?: BranchWorkDays;\n\tdeliveryHours?: BranchWorkDays;\n}\n\nexport type BranchServes = {\n\tisOpen: boolean;\n\tisDelivering: boolean;\n};\n\nexport enum BranchTaxType {\n\tPERCENTAGE = \"percentage\",\n\tFIXED_AMOUNT = \"fixed\",\n}\n\nexport enum BranchTaxScope {\n\tENTIRE_MENU = \"entire_menu\",\n\tCLASS = \"class\",\n}\n\nexport enum BranchTaxFulfillment {\n\tDELIVERY = \"delivery\",\n\tTAKEAWAY = \"takeaway\",\n\tDINE_IN = \"dine_in\",\n\tALL = \"ALL\",\n}\n\nexport type BranchTax = {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\ttaxClassId?: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: BranchTaxType;\n\tisActive: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tscope: BranchTaxScope;\n\taddToListingPrice: boolean;\n\tisDefault: boolean;\n\tcomputationOrder: number;\n\tappliesToFulfillment?: BranchTaxFulfillment;\n\ttaxClassCode?: string;\n};\n","import * as featureModels from \"../feature/models\";\nimport * as subscriptionModels from \"../subscription/models\";\n\nexport interface BusinessLanguage {\n\tid: number;\n\tcode: string;\n\tbusinessId: number;\n}\n\nexport enum BusinessSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n}\n\nexport interface Business {\n\tid: number;\n\tname: string;\n\tusername: string;\n\tavatar64?: string;\n\tavatar128?: string;\n\tavatar256?: string;\n\tcoverPhoto?: string;\n\tinstagram?: string;\n\tfacebook?: string;\n\ttiktok?: string;\n\tcreatedAt?: number;\n\tlanguages: BusinessLanguage[];\n\tsubscriptions?: subscriptionModels.Subscription[];\n\tsegment?: featureModels.FeatureSegment;\n}\n","export enum CustomerAuthStep {\n\tPHONE = \"PHONE\",\n\tOTP = \"OTP\",\n\tEMAIL = \"EMAIL\",\n}\n\nexport enum CustomerAddressType {\n\tHOME = \"HOME\",\n\tWORK = \"WORK\",\n\tTRAVEL = \"TRAVEL\",\n}\n\nexport interface CustomerAddress {\n\tid?: number;\n\taddressId?: number; // Update address temporary\n\tcountryCode: string;\n\tcityName: string;\n\tstreet: string;\n\thouseNumber: string;\n\tadditionalNumber?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n\tfloor?: number;\n\tlongitude?: number;\n\tlatitude?: number;\n\ttitle?: string;\n\ttype?: CustomerAddressType;\n}\n\nexport interface CustomerAuthForm {\n\totp: string;\n\temail: string;\n}\n\nexport interface CustomerAuthPhoneForm {\n\tcountryCode: string;\n\tphoneNumber: string;\n}\n\nexport interface AuthResponse {\n\taccessToken: string;\n\trefreshToken: string;\n}\n\nexport interface Customer {\n\tid?: number;\n\temail: string;\n\tphoneNumber: string;\n\tfullName: string;\n\tsmsVerified?: boolean;\n\temailVerified?: boolean;\n\taddress?: CustomerAddress;\n\taddresses?: CustomerAddress[];\n}\n\nexport type CustomerUpdatePayload = Partial<Customer>;\n","export enum Feature {\n\tUPLOAD_VIDEO = \"UPLOAD_VIDEO\",\n}\nexport enum FeatureSegment {\n\tALPHA = \"ALPHA\",\n\tBETA = \"BETA\",\n\tALL = \"ALL\",\n}\n","import * as customerModels from \"../customer/models\";\nimport * as productModels from \"../product/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum OrderType {\n\tDINE_IN = \"DINE_IN\",\n\tPICK_UP = \"PICK_UP\",\n\tDELIVERY = \"DELIVERY\",\n}\n\nexport enum OrderStatus {\n\tDRAFT = \"DRAFT\",\n\tPENDING = \"PENDING\",\n\tCONFIRMED = \"CONFIRMED\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tOUT_FOR_DELIVERY = \"OUT_FOR_DELIVERY\",\n\tDELIVERED = \"DELIVERED\",\n\tCOMPLETED = \"COMPLETED\",\n\tCANCELLED = \"CANCELLED\",\n\tFAILED = \"FAILED\",\n}\n\nexport enum OrderItemStatus {\n\tPENDING = \"PENDING\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tSERVED = \"SERVED\",\n}\n\nexport enum PaymentMethod {\n\tCASH = \"CASH\",\n\tCARD = \"CARD\",\n\tBANK_TRANSFER = \"BANK_TRANSFER\",\n\tMOBILE = \"MOBILE\",\n\tQR = \"QR\",\n\tVOUCHER = \"VOUCHER\",\n\tCOMP = \"COMP\",\n\tMIXED = \"MIXED\",\n}\n\n/**\n * The methods a customer can signal at checkout. COMP and MIXED are settlement\n * outcomes the venue records itself once money changes hands, so they are part\n * of the enum the API speaks but never an option in the public menu.\n */\nexport type CustomerPaymentMethod = Exclude<\n\tPaymentMethod,\n\tPaymentMethod.COMP | PaymentMethod.MIXED\n>;\n\nexport interface OrderAddonOption {\n\toptionId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderAddon {\n\tid?: number;\n\taddonId: number;\n\toptions: OrderAddonOption[];\n}\n\nexport interface SelectedAddons {\n\t[key: number]: number | number[];\n}\n\nexport interface OrderItemVariant {\n\tid?: number;\n\tvariantId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderItem {\n\tid?: number;\n\tproductId: number;\n\torderId?: number;\n\tquantity: number;\n\t/**\n\t * Gross unit price (listingPrice) at the moment the line was added. The\n\t * server recomputes authoritative totals on create/preview; this value is\n\t * what the cart UI displays.\n\t */\n\tprice?: number;\n\tvariant?: OrderItemVariant;\n\taddons: OrderAddon[];\n\tnote?: string;\n\tstatus?: OrderItemStatus;\n\tisPaid?: boolean;\n\tsellUnitType: productModels.SellUnitType;\n}\n\nexport interface Order {\n\tid?: number;\n\tbusinessId?: number;\n\tbranchId?: number;\n\tworkingDayId?: number;\n\ttableId?: number;\n\temployeeId?: number;\n\torderType: OrderType;\n\titems: OrderItem[];\n\tstatus?: OrderStatus;\n\tpreferredPaymentMethod?: PaymentMethod;\n\t/**\n\t * Customer's optional voluntary gratuity as a NUMERIC money string in the\n\t * branch currency (e.g. \"5.00\"). Honoured only on the customer and guest\n\t * create paths — POS ignores it. It is an unfinalized intent: the server\n\t * stores it but never adds it to the order total nor taxes it, so the\n\t * tip-inclusive total shown at checkout is computed client-side. Absent (or\n\t * zero) means no tip.\n\t */\n\tpreferredTipAmount?: string;\n\tnote?: string;\n\tcreatedAt?: number;\n\tupdatedAt?: number;\n\tcustomer?: customerModels.Customer;\n\tcurrency?: string;\n\ttrackingId?: string;\n}\n\nexport interface OrderItems {\n\t[key: string]: OrderItem;\n}\n\nexport enum OrderStep {\n\tCART = \"CART\",\n\tDETAILS = \"DETAILS\",\n\tCOMPLETED = \"COMPLETED\",\n}\n\nexport interface OrderPayload extends Order {\n\tcustomerAddressId: number;\n\tcustomerId: number;\n\tlanguage?: string;\n}\n\n/**\n * Contact + delivery snapshot an unregistered (\"guest\") visitor enters at\n * checkout. Mirrors the backend GuestContact: every field is optional, and an\n * address is only meaningful for DELIVERY orders. latitude/longitude are kept\n * as numbers here for the UI (they come from the address autocomplete); they're\n * serialized to strings in the wire payload — see GuestContactRequest.\n */\nexport interface GuestContact {\n\tfullName?: string;\n\tphoneNumber?: string;\n\temail?: string;\n\tstreet?: string;\n\thouseNumber?: string;\n\tadditionalNumber?: string;\n\tfloor?: number;\n\tlatitude?: number;\n\tlongitude?: number;\n\tcityName?: string;\n\tcountryCode?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n}\n\n/**\n * Wire shape of the contact sent to POST /order/public. Matches the backend\n * GuestContact, where latitude/longitude are strings.\n */\nexport interface GuestContactRequest\n\textends Omit<GuestContact, \"latitude\" | \"longitude\"> {\n\tlatitude?: string;\n\tlongitude?: string;\n}\n\n/**\n * Payload for the public, non-authenticated create path (POST /order/public).\n * Unlike OrderPayload it carries no customerId/customerAddressId — an\n * unregistered visitor has no account or stored address book; the delivery\n * address (when given) travels inside the contact snapshot.\n */\nexport interface GuestOrderPayload extends Order {\n\tlanguage?: string;\n\tcontact?: GuestContactRequest;\n}\n\nexport interface CalculatePreviewItemRequest {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tvariant?: { variantId: number };\n\taddons?: Array<{\n\t\taddonId: number;\n\t\toptions: Array<{ optionId: number }>;\n\t}>;\n}\n\nexport interface CalculatePreviewRequest {\n\tbusinessId?: number;\n\tbranchId: number;\n\torderType: OrderType;\n\titems: CalculatePreviewItemRequest[];\n\t/**\n\t * Where the delivery is heading. They matter only for a DELIVERY order on a\n\t * branch that prices delivery by distance; without them such a cart previews\n\t * the branch's flat fee, and the real fee is resolved from the order's\n\t * address at create time.\n\t */\n\tlatitude?: number;\n\tlongitude?: number;\n}\n\nexport interface CalculatePreviewTax {\n\tbranchTaxId: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: \"percentage\" | \"fixed\";\n\taddToListingPrice: boolean;\n\tamount: number;\n}\n\nexport interface CalculatePreviewLine {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tprice: number;\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface CalculatePreviewResponse {\n\ttotalPriceWithoutTax: number;\n\ttotalPriceWithTax: number;\n\ttotalPriceWithTaxAndFees: number;\n\ttotalTax: number;\n\tdeliveryFee: number;\n\tserviceFee: number;\n\titems: CalculatePreviewLine[];\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface OrderPreviewState {\n\tdata: CalculatePreviewResponse | null;\n\tisLoading: boolean;\n\terror: string | null;\n}\n","import { MenuAddon } from \"../addon/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport interface LocalizedContent {\n\tname: string;\n\tdescription: string;\n}\n\nexport interface ProductVariant {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied.\n\t */\n\tlistingPrice: number;\n\t/** Title keyed by language code, e.g. { en: \"Large\", az: \"Böyük\" }. */\n\ttitle: LocalizedText;\n\tproductId?: number;\n\tremove?: boolean;\n}\n\nexport interface Product {\n\tid: number;\n\tcategoryId: number;\n\t/** Net price (tax-exclusive). Nullable when the product has no own price (variant-only). */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied,\n\t * and is null when `price` itself is null.\n\t */\n\tlistingPrice?: number | null;\n\tvolume?: string; // 100qr/250ml/1kq\n\timage160?: string;\n\timage580?: string;\n\timage1024?: string;\n\ttranslations: Record<string, LocalizedContent>;\n\tvariants: ProductVariant[];\n\taddons: MenuAddon[];\n\tavailable?: boolean;\n\tvisible?: boolean;\n\tposition?: number;\n\tvideoUrl?: string;\n\tsellUnitType?: SellUnitType;\n\ttaxClassId?: number | null;\n\t/**\n\t * The bare allergen codes the business declared, `[]` when none — the shape\n\t * a product is authored and saved in. Rendering reads `allergenDetails`\n\t * instead, since that carries the same codes plus their wording.\n\t */\n\tallergens?: AllergenCode[];\n\t/**\n\t * The declared allergens as the menu renders them: each code paired with its\n\t * label in every language the business publishes. The API owns the catalog\n\t * and translates it, so a code it adds is legible here without a release of\n\t * this package, and the list is taken as given — order included.\n\t */\n\tallergenDetails?: AllergenDetail[];\n}\n\n/**\n * One declared allergen: the standardized code plus its label per language\n * code. Labels arrive as a map rather than a single localized string because\n * the public menu is served from one language-agnostic cached payload — the\n * guest switches language locally and the row has to relabel without a\n * refetch. Mirrors `domains/product/types/allergen_detail.go`.\n */\nexport interface AllergenDetail {\n\tcode: AllergenCode;\n\t/** Label keyed by language code, e.g. `{ en: \"Gluten\", az: \"Qlüten\" }`. */\n\ttranslations: LocalizedText;\n}\n\n/**\n * An allergen code as it comes off the wire. Deliberately open: the API owns\n * the catalog, so it may send a code this package has never heard of, and that\n * code still has to reach the guest — a declared allergen going missing is the\n * one failure mode this feature cannot have. `Allergen` names the codes we\n * have a glyph for; everything else falls back to a generic mark (see\n * `AllergenIcons`). Wording never depends on this list.\n */\nexport type AllergenCode = Allergen | (string & Record<never, never>);\n\n/**\n * The 14 major food allergens of EU Regulation 1169/2011 (Annex II) plus\n * buckwheat — mirrors `domains/product/constants/allergens.go` on the API,\n * which is the server of record for the catalog. This is the subset with a\n * glyph of its own; it is not a limit on what the API may send, and it exists\n * in this package only because an icon cannot travel over the wire.\n */\nexport enum Allergen {\n\tGLUTEN = \"GLUTEN\",\n\tCRUSTACEANS = \"CRUSTACEANS\",\n\tEGGS = \"EGGS\",\n\tFISH = \"FISH\",\n\tPEANUTS = \"PEANUTS\",\n\tSOY = \"SOY\",\n\tMILK = \"MILK\",\n\tTREE_NUTS = \"TREE_NUTS\",\n\tCELERY = \"CELERY\",\n\tMUSTARD = \"MUSTARD\",\n\tSESAME = \"SESAME\",\n\tSULPHITES = \"SULPHITES\",\n\tLUPIN = \"LUPIN\",\n\tMOLLUSCS = \"MOLLUSCS\",\n\tBUCKWHEAT = \"BUCKWHEAT\",\n}\n\nexport enum ProductView {\n\tLIST = \"list\",\n\tGRID = \"grid\",\n}\n\nexport interface DashboardProduct extends Omit<Product, \"addons\"> {\n\taddons: number[];\n}\n\nexport enum SellUnitType {\n\tPIECE = \"PIECE\",\n\tWEIGHT = \"WEIGHT\",\n\tVOLUME = \"VOLUME\",\n}\n","export enum PlanType {\n\tAPPETIZER = \"appetizer\",\n\tMAIN_COURSE = \"mainCourse\",\n\tCHEFS_SPECIAL = \"chefsSpecial\",\n\tLIFETIME = \"lifeTime\",\n}\n\nexport interface PricingPlan {\n\ttitle: string;\n\tprice: {\n\t\tmonthly: number;\n\t\tannually: number;\n\t};\n\tdiscountedPrice?: number;\n\tribbonText?: string;\n}\n\nexport interface PricingPlans {\n\t[key: string]: PricingPlan;\n}\n\nexport type PricingInterval = \"monthly\" | \"annually\";\n\nexport enum SubscriptionStatus {\n\tACTIVE = \"ACTIVE\",\n\tEXPIRED = \"EXPIRED\",\n\tCANCELLED = \"CANCELLED\",\n}\n\nexport type BillingInterval = \"MONTH\" | \"YEAR\";\n\nexport interface Subscription {\n\tid: number;\n\tbillingInterval: BillingInterval;\n\tbillingIntervalCount: number;\n\tstartDate: string;\n\tendDate: string;\n\tinterval: PricingInterval;\n\tstatus: SubscriptionStatus;\n\tbusiness_id?: number;\n\tplanName: string;\n}\n","export enum TableShape {\n\tSQUARE = \"SQUARE\",\n\tCIRCLE = \"CIRCLE\",\n\tRECTANGLE = \"RECTANGLE\",\n\tRECTANGLE_VERTICAL = \"RECTANGLE_VERTICAL\",\n\tSINGLE_AT_BAR = \"SINGLE_AT_BAR\",\n\tOTHER = \"OTHER\",\n}\n\nexport enum TableStatus {\n\tVACANT = \"VACANT\", // Free and available\n\tRESERVED = \"RESERVED\", // Booked but not yet seated\n\tOCCUPIED = \"OCCUPIED\", // Currently in use\n\tBLOCKED = \"BLOCKED\", // Temporarily blocked/unavailable\n\tNEEDS_CLEANING = \"NEEDS_CLEANING\", // Dirty, awaiting cleanup\n\tOUT_OF_SERVICE = \"OUT_OF_SERVICE\", // Permanently unavailable repair/maintenance\n\tPENDING_CONFIRMATION = \"PENDING_CONFIRMATION\", // Reservation not yet confirmed\n\tNO_SHOW = \"NO_SHOW\", // Reserved but guest didn’t arrive\n}\n\nexport enum TableLocation {\n\t// Indoor\n\tMAIN_HALL = \"MAIN_HALL\",\n\tPRIVATE_DINING = \"PRIVATE_DINING\",\n\tVIP_ROOM = \"VIP_ROOM\",\n\tBANQUET_HALL = \"BANQUET_HALL\",\n\tBAR_AREA = \"BAR_AREA\",\n\tLOUNGE = \"LOUNGE\",\n\tOPEN_KITCHEN = \"OPEN_KITCHEN\",\n\tBOOTH_SECTION = \"BOOTH_SECTION\",\n\tMEZZANINE = \"MEZZANINE\",\n\tWINE_CELLAR = \"WINE_CELLAR\",\n\n\t// Outdoor\n\tTERRACE = \"TERRACE\",\n\tPATIO = \"PATIO\",\n\tGARDEN = \"GARDEN\",\n\tCOURTYARD = \"COURTYARD\",\n\tROOFTOP = \"ROOFTOP\",\n\tBALCONY = \"BALCONY\",\n\tSIDEWALK = \"SIDEWALK\",\n\tPOOLSIDE = \"POOLSIDE\",\n\n\t// Special Sections\n\tSMOKING_AREA = \"SMOKING_AREA\",\n\tNON_SMOKING = \"NON_SMOKING\",\n\tFAMILY_SECTION = \"FAMILY_SECTION\",\n\tKIDS_AREA = \"KIDS_AREA\",\n\tWAITING_AREA = \"WAITING_AREA\",\n\tDANCE_FLOOR = \"DANCE_FLOOR\",\n}\n\nexport interface Table {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\tname: string;\n\tseatCount: number;\n\tshape: TableShape;\n\tlocation: TableLocation;\n\tstatus: TableStatus;\n}\n\nexport interface TableState {\n\ttables: Table[];\n}\n\nexport type TableForm = Omit<Table, \"id\" | \"businessId\" | \"branchId\"> & {\n\tbranchId: string | number;\n};\n\nexport type TableUpdate = Partial<Omit<Table, \"id\" | \"businessId\">>;\n\nexport type TableFilter = Partial<Pick<Table, \"branchId\" | \"shape\" | \"location\" | \"status\">>;\n\nexport type TableFilterParams = { field: keyof TableFilter; value: TableFilter[keyof TableFilter] };\n","export enum EmployeePermission {\n\tVIEW_BUSINESS = \"VIEW_BUSINESS\",\n\tUPDATE_BUSINESS = \"UPDATE_BUSINESS\",\n\tVIEW_BUSINESS_FINANCIALS = \"VIEW_BUSINESS_FINANCIALS\",\n\tVIEW_ORDERS = \"VIEW_ORDERS\",\n\tUPDATE_ORDER = \"UPDATE_ORDER\",\n\tCREATE_ORDER = \"CREATE_ORDER\",\n\tAPPLY_DISCOUNT = \"APPLY_DISCOUNT\",\n\tVIEW_QR_MENU = \"VIEW_QR_MENU\",\n\tUPDATE_QR_MENU = \"UPDATE_QR_MENU\",\n\tVIEW_MENU = \"VIEW_MENU\",\n\tVIEW_MENU_ITEMS = \"VIEW_MENU_ITEMS\",\n\tCREATE_MENU_ITEM = \"CREATE_MENU_ITEM\",\n\tUPDATE_MENU_ITEM = \"UPDATE_MENU_ITEM\",\n\tDELETE_MENU_ITEM = \"DELETE_MENU_ITEM\",\n\tVIEW_CATEGORIES = \"VIEW_CATEGORIES\",\n\tUPDATE_CATEGORY = \"UPDATE_CATEGORY\",\n\tCREATE_CATEGORY = \"CREATE_CATEGORY\",\n\tDELETE_CATEGORY = \"DELETE_CATEGORY\",\n\tVIEW_ADDONS = \"VIEW_ADDONS\",\n\tUPDATE_ADDON = \"UPDATE_ADDON\",\n\tCREATE_ADDON = \"CREATE_ADDON\",\n\tDELETE_ADDON = \"DELETE_ADDON\",\n\tVIEW_TABLES = \"VIEW_TABLES\",\n\tUPDATE_TABLE = \"UPDATE_TABLE\",\n\tUPDATE_TABLE_STATUS = \"UPDATE_TABLE_STATUS\",\n\tCREATE_TABLE = \"CREATE_TABLE\",\n\tDELETE_TABLE = \"DELETE_TABLE\",\n\tVIEW_BRANCHES = \"VIEW_BRANCHES\",\n\tUPDATE_BRANCH = \"UPDATE_BRANCH\",\n\tCREATE_BRANCH = \"CREATE_BRANCH\",\n\tDELETE_BRANCH = \"DELETE_BRANCH\",\n\tVIEW_EMPLOYEES = \"VIEW_EMPLOYEES\",\n\tUPDATE_EMPLOYEE = \"UPDATE_EMPLOYEE\",\n\tCREATE_EMPLOYEE = \"CREATE_EMPLOYEE\",\n\tDELETE_EMPLOYEE = \"DELETE_EMPLOYEE\",\n\tVIEW_ANALYTICS = \"VIEW_ANALYTICS\",\n\tVIEW_SALES_REPORTS = \"VIEW_SALES_REPORTS\",\n\tVIEW_SUBSCRIPTION = \"VIEW_SUBSCRIPTION\",\n\tUPDATE_SUBSCRIPTION = \"UPDATE_SUBSCRIPTION\",\n\tVIEW_QR_CODES = \"VIEW_QR_CODES\",\n\tCREATE_QR_CODE = \"CREATE_QR_CODE\",\n\tDELETE_QR_CODE = \"DELETE_QR_CODE\",\n\tALL = \"ALL\",\n\t// Inventory\n\tVIEW_INVENTORY = \"VIEW_INVENTORY\",\n\tVIEW_PURCHASES = \"VIEW_PURCHASES\",\n\tVIEW_PURCHASE_DETAIL = \"VIEW_PURCHASE_DETAIL\",\n\tCREATE_PURCHASE = \"CREATE_PURCHASE\",\n\tUPDATE_PURCHASE = \"UPDATE_PURCHASE\",\n\tDELETE_PURCHASE = \"DELETE_PURCHASE\",\n\tVIEW_INVENTORY_PRODUCTS = \"VIEW_INVENTORY_PRODUCTS\",\n\tCREATE_INVENTORY_PRODUCT = \"CREATE_INVENTORY_PRODUCT\",\n\tUPDATE_INVENTORY_PRODUCT = \"UPDATE_INVENTORY_PRODUCT\",\n\tDELETE_INVENTORY_PRODUCT = \"DELETE_INVENTORY_PRODUCT\",\n\tVIEW_BUSINESS_BALANCE = \"VIEW_BUSINESS_BALANCE\",\n\tVIEW_BRANCH_BALANCE = \"VIEW_BRANCH_BALANCE\",\n\tUPDATE_PRODUCT_INGREDIENTS = \"UPDATE_PRODUCT_INGREDIENTS\",\n\tDELETE_PRODUCT_INGREDIENTS = \"DELETE_PRODUCT_INGREDIENTS\",\n\tAI_ASSISTANT = \"AI_ASSISTANT\",\n\tVIEW_PAYMENTS = \"VIEW_PAYMENTS\",\n\tTAKE_PAYMENT = \"TAKE_PAYMENT\",\n\tREFUND_PAYMENT = \"REFUND_PAYMENT\",\n\tPAYMENT_COMP = \"COMP\",\n}\n\nexport enum UserRole {\n\tOWNER = \"OWNER\",\n\tBRANCH_MANAGER = \"BRANCH_MANAGER\",\n\tGENERAL_MANAGER = \"GENERAL_MANAGER\",\n\tCHEF = \"CHEF\",\n\tSOUS_CHEF = \"SOUS_CHEF\",\n\tPASTRY_CHEF = \"PASTRY_CHEF\",\n\tLINE_COOK = \"LINE_COOK\",\n\tPREP_COOK = \"PREP_COOK\",\n\tKITCHEN_ASSISTANT = \"KITCHEN_ASSISTANT\",\n\tDISHWASHER = \"DISHWASHER\",\n\tHEAD_WAITER = \"HEAD_WAITER\",\n\tWAITER = \"WAITER\",\n\tRUNNER = \"RUNNER\",\n\tBARISTA = \"BARISTA\",\n\tBARTENDER = \"BARTENDER\",\n\tSOMMELIER = \"SOMMELIER\",\n\tACCOUNTANT = \"ACCOUNTANT\",\n\tROOM_SERVICE_STAFF = \"ROOM_SERVICE_STAFF\",\n\tDELIVERY_DRIVER = \"DELIVERY_DRIVER\",\n\tINVENTORY_MANAGER = \"INVENTORY_MANAGER\",\n\tPURCHASING_MANAGER = \"PURCHASING_MANAGER\",\n\tWAREHOUSE_STAFF = \"WAREHOUSE_STAFF\",\n\tCASHIER = \"CASHIER\"\n}\n\nexport interface User {\n\tid?: number;\n\temail: string;\n\tfullName: string;\n\trole?: UserRole;\n\tavatar64?: string | null;\n\tavatar128?: string | null;\n\tavatar256?: string | null;\n\tbusinessId?: number;\n\tbranchId?: number | null;\n\tcreatedAt: string;\n\temailVerified?: boolean;\n\tpermissions?: EmployeePermission[];\n}\n"],"names":["MenuAddonSelectType","DeliveryFeeType","BranchSetting","BranchTaxType","BranchTaxScope","BranchTaxFulfillment","BusinessSetting","CustomerAuthStep","CustomerAddressType","FeatureSegment","OrderType","OrderStatus","OrderItemStatus","PaymentMethod","OrderStep","Allergen","ProductView","SellUnitType","PlanType","SubscriptionStatus","TableShape","TableStatus","TableLocation","EmployeePermission","UserRole","Feature"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/modules/addon/models.ts","../../../src/modules/branch/models.ts","../../../src/modules/business/models.ts","../../../src/modules/customer/models.ts","../../../src/modules/feature/models.ts","../../../src/modules/order/models.ts","../../../src/modules/product/models.ts","../../../src/modules/subscription/models.ts","../../../src/modules/table/models.ts","../../../src/modules/user/models.ts"],"sourcesContent":["import { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum MenuAddonSelectType {\n\tSINGLE = \"SINGLE\",\n\tMULTIPLE = \"MULTIPLE\",\n}\n\nexport interface MenuAddonOption {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus the parent product's\n\t * `addToListingPrice` taxes. Equals `price` when no branch context is\n\t * supplied (e.g. addon detached from a branch tax setup).\n\t */\n\tlistingPrice: number;\n\ttitle: LocalizedText;\n\tremove?: boolean;\n}\n\nexport interface MenuAddon {\n\tid?: number;\n\tselectType: MenuAddonSelectType;\n\toptions: MenuAddonOption[];\n\tbusinessId?: number;\n\ttitle: LocalizedText;\n}\n","import { LocalizedText } from \"src/modules/localization/models\";\n\nexport type BranchWorkHour = {\n\topenAt: string;\n\tcloseAt: string;\n};\n\nexport type BranchWorkDay = {\n\tday: number;\n\thours: BranchWorkHour | null;\n};\n\nexport type BranchWorkDays = {\n\tdays: BranchWorkDay[];\n};\n\n/**\n * How a branch charges for delivery: one flat amount (`deliveryFeeAmount`) or a\n * fee picked from the branch's distance ranges (`deliveryFeeTiers`). Mirrors\n * the API's branch_settings.delivery_fee_type — extend both together. A branch\n * is FIXED until its owner opts into distance pricing.\n */\nexport enum DeliveryFeeType {\n\tFIXED = \"FIXED\",\n\tDISTANCE = \"DISTANCE\",\n}\n\n/**\n * One distance range of a branch's per-km delivery pricing, read as \"up to\n * `upToDistance` kilometres, charge `fee`\". Ranges carry no lower bound of\n * their own: the applicable one is the cheapest `upToDistance` that still\n * covers the delivery distance, so 5/10/20 km ranges describe 0-5, 5-10 and\n * 10-20 km. The API returns them sorted by `upToDistance` ascending.\n *\n * `upToDistance` is in KILOMETRES — unlike `BranchSettings.maxDeliveryDistance`,\n * which the API keeps in metres.\n */\nexport type DeliveryFeeTier = {\n\tupToDistance: number;\n\tfee: number;\n};\n\nexport interface BranchSettings {\n\tdeliveryOrderEnabled: boolean;\n\tpickupOrderEnabled: boolean;\n\tdineInOrderEnabled: boolean;\n\t/** In METRES, unlike the kilometres a DeliveryFeeTier is measured in. */\n\tmaxDeliveryDistance: number;\n\tminDeliveryAmount: number;\n\tdeliveryFeeAmount: number;\n\t/**\n\t * Absent on a payload cached before the branch gained distance pricing;\n\t * treated as FIXED, the same default the API stores.\n\t */\n\tdeliveryFeeType?: DeliveryFeeType;\n\tdeliveryFeeTiers?: DeliveryFeeTier[];\n\tserviceChargeEnabled: boolean;\n\tserviceChargePercentage: number;\n\taddToOrderEnabled: boolean;\n\tguestOrderEnabled: boolean;\n\tprimaryPaymentMethods?: string[] | null;\n\tsecondaryPaymentMethods?: string[] | null;\n}\n\nexport enum BranchSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n\tDELIVERY_FEE_AMOUNT = \"deliveryFeeAmount\",\n\tDELIVERY_FEE_TYPE = \"deliveryFeeType\",\n\tDELIVERY_FEE_TIERS = \"deliveryFeeTiers\",\n\tSERVICE_CHARGE_ENABLED = \"serviceChargeEnabled\",\n\tSERVICE_CHARGE_PERCENTAGE = \"serviceChargePercentage\",\n\tADD_TO_ORDER_ENABLED = \"addToOrderEnabled\",\n\tGUEST_ORDER_ENABLED = \"guestOrderEnabled\",\n\tPRIMARY_PAYMENT_METHODS = \"primaryPaymentMethods\",\n\tSECONDARY_PAYMENT_METHODS = \"secondaryPaymentMethods\",\n}\n\nexport interface Branch {\n\tid: number;\n\tname: string;\n\tbusinessId: number;\n\taddress: string;\n\tlongitude?: number;\n\tlatitude?: number;\n\tphone?: string;\n\twhatsApp?: string;\n\ttelegram?: string;\n\twifiPassword?: string;\n\tcreatedAt?: number;\n\tcoverPhoto?: string;\n\t// Trading currency (ISO-4217) of this branch. Currency lives on the branch,\n\t// not the business, so a franchise or foreign establishment can trade in a\n\t// different currency than the brand's default.\n\tcurrency?: string;\n\ttimezone?: string;\n\tbusinessDayStart?: string;\n\tsettings?: BranchSettings;\n\topeningHours?: BranchWorkDays;\n\tdeliveryHours?: BranchWorkDays;\n}\n\nexport type BranchServes = {\n\tisOpen: boolean;\n\tisDelivering: boolean;\n};\n\nexport enum BranchTaxType {\n\tPERCENTAGE = \"percentage\",\n\tFIXED_AMOUNT = \"fixed\",\n}\n\nexport enum BranchTaxScope {\n\tENTIRE_MENU = \"entire_menu\",\n\tCLASS = \"class\",\n}\n\nexport enum BranchTaxFulfillment {\n\tDELIVERY = \"delivery\",\n\tTAKEAWAY = \"takeaway\",\n\tDINE_IN = \"dine_in\",\n\tALL = \"ALL\",\n}\n\nexport type BranchTax = {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\ttaxClassId?: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: BranchTaxType;\n\tisActive: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tscope: BranchTaxScope;\n\taddToListingPrice: boolean;\n\tisDefault: boolean;\n\tcomputationOrder: number;\n\tappliesToFulfillment?: BranchTaxFulfillment;\n\ttaxClassCode?: string;\n};\n","import * as featureModels from \"../feature/models\";\nimport * as subscriptionModels from \"../subscription/models\";\n\nexport interface BusinessLanguage {\n\tid: number;\n\tcode: string;\n\tbusinessId: number;\n}\n\nexport enum BusinessSetting {\n\tMAX_DELIVERY_DISTANCE = \"maxDeliveryDistance\",\n\tDELIVERY_ORDER_ENABLED = \"deliveryOrderEnabled\",\n\tPICKUP_ORDER_ENABLED = \"pickupOrderEnabled\",\n\tDINE_IN_ORDER_ENABLED = \"dineInOrderEnabled\",\n\tMIN_DELIVERY_AMOUNT = \"minDeliveryAmount\",\n}\n\nexport interface Business {\n\tid: number;\n\tname: string;\n\tusername: string;\n\tavatar64?: string;\n\tavatar128?: string;\n\tavatar256?: string;\n\tcoverPhoto?: string;\n\tinstagram?: string;\n\tfacebook?: string;\n\ttiktok?: string;\n\tcreatedAt?: number;\n\tlanguages: BusinessLanguage[];\n\tsubscriptions?: subscriptionModels.Subscription[];\n\tsegment?: featureModels.FeatureSegment;\n}\n","export enum CustomerAuthStep {\n\tPHONE = \"PHONE\",\n\tOTP = \"OTP\",\n\tEMAIL = \"EMAIL\",\n}\n\nexport enum CustomerAddressType {\n\tHOME = \"HOME\",\n\tWORK = \"WORK\",\n\tTRAVEL = \"TRAVEL\",\n}\n\nexport interface CustomerAddress {\n\tid?: number;\n\taddressId?: number; // Update address temporary\n\tcountryCode: string;\n\tcityName: string;\n\tstreet: string;\n\thouseNumber: string;\n\tadditionalNumber?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n\tfloor?: number;\n\tlongitude?: number;\n\tlatitude?: number;\n\ttitle?: string;\n\ttype?: CustomerAddressType;\n}\n\nexport interface CustomerAuthForm {\n\totp: string;\n\temail: string;\n}\n\nexport interface CustomerAuthPhoneForm {\n\tcountryCode: string;\n\tphoneNumber: string;\n}\n\nexport interface AuthResponse {\n\taccessToken: string;\n\trefreshToken: string;\n}\n\nexport interface Customer {\n\tid?: number;\n\temail: string;\n\tphoneNumber: string;\n\tfullName: string;\n\tsmsVerified?: boolean;\n\temailVerified?: boolean;\n\taddress?: CustomerAddress;\n\taddresses?: CustomerAddress[];\n}\n\nexport type CustomerUpdatePayload = Partial<Customer>;\n","export enum Feature {\n\tUPLOAD_VIDEO = \"UPLOAD_VIDEO\",\n}\nexport enum FeatureSegment {\n\tALPHA = \"ALPHA\",\n\tBETA = \"BETA\",\n\tALL = \"ALL\",\n}\n","import * as customerModels from \"../customer/models\";\nimport * as productModels from \"../product/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport enum OrderType {\n\tDINE_IN = \"DINE_IN\",\n\tPICK_UP = \"PICK_UP\",\n\tDELIVERY = \"DELIVERY\",\n}\n\nexport enum OrderStatus {\n\tDRAFT = \"DRAFT\",\n\tPENDING = \"PENDING\",\n\tCONFIRMED = \"CONFIRMED\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tOUT_FOR_DELIVERY = \"OUT_FOR_DELIVERY\",\n\tDELIVERED = \"DELIVERED\",\n\tCOMPLETED = \"COMPLETED\",\n\tCANCELLED = \"CANCELLED\",\n\tFAILED = \"FAILED\",\n}\n\nexport enum OrderItemStatus {\n\tPENDING = \"PENDING\",\n\tPREPARING = \"PREPARING\",\n\tREADY = \"READY\",\n\tSERVED = \"SERVED\",\n}\n\nexport enum PaymentMethod {\n\tCASH = \"CASH\",\n\tCARD = \"CARD\",\n\tBANK_TRANSFER = \"BANK_TRANSFER\",\n\tMOBILE = \"MOBILE\",\n\tQR = \"QR\",\n\tVOUCHER = \"VOUCHER\",\n\tCOMP = \"COMP\",\n\tMIXED = \"MIXED\",\n}\n\n/**\n * The methods a customer can signal at checkout. COMP and MIXED are settlement\n * outcomes the venue records itself once money changes hands, so they are part\n * of the enum the API speaks but never an option in the public menu.\n */\nexport type CustomerPaymentMethod = Exclude<\n\tPaymentMethod,\n\tPaymentMethod.COMP | PaymentMethod.MIXED\n>;\n\nexport interface OrderAddonOption {\n\toptionId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderAddon {\n\tid?: number;\n\taddonId: number;\n\toptions: OrderAddonOption[];\n}\n\nexport interface SelectedAddons {\n\t[key: number]: number | number[];\n}\n\nexport interface OrderItemVariant {\n\tid?: number;\n\tvariantId: number;\n\t/** Gross unit price (listingPrice from the menu listing). */\n\tprice: number;\n}\n\nexport interface OrderItem {\n\tid?: number;\n\tproductId: number;\n\torderId?: number;\n\tquantity: number;\n\t/**\n\t * Gross unit price (listingPrice) at the moment the line was added. The\n\t * server recomputes authoritative totals on create/preview; this value is\n\t * what the cart UI displays.\n\t */\n\tprice?: number;\n\tvariant?: OrderItemVariant;\n\taddons: OrderAddon[];\n\tnote?: string;\n\tstatus?: OrderItemStatus;\n\tisPaid?: boolean;\n\tsellUnitType: productModels.SellUnitType;\n}\n\nexport interface Order {\n\tid?: number;\n\tbusinessId?: number;\n\tbranchId?: number;\n\tworkingDayId?: number;\n\ttableId?: number;\n\temployeeId?: number;\n\torderType: OrderType;\n\titems: OrderItem[];\n\tstatus?: OrderStatus;\n\tpreferredPaymentMethod?: PaymentMethod;\n\t/**\n\t * Customer's optional voluntary gratuity as a NUMERIC money string in the\n\t * branch currency (e.g. \"5.00\"). Honoured only on the customer and guest\n\t * create paths — POS ignores it. It is an unfinalized intent: the server\n\t * stores it but never adds it to the order total nor taxes it, so the\n\t * tip-inclusive total shown at checkout is computed client-side. Absent (or\n\t * zero) means no tip.\n\t */\n\tpreferredTipAmount?: string;\n\tnote?: string;\n\tcreatedAt?: number;\n\tupdatedAt?: number;\n\tcustomer?: customerModels.Customer;\n\tcurrency?: string;\n\ttrackingId?: string;\n}\n\nexport interface OrderItems {\n\t[key: string]: OrderItem;\n}\n\nexport enum OrderStep {\n\tCART = \"CART\",\n\tDETAILS = \"DETAILS\",\n\tCOMPLETED = \"COMPLETED\",\n}\n\nexport interface OrderPayload extends Order {\n\tcustomerAddressId: number;\n\tcustomerId: number;\n\tlanguage?: string;\n}\n\n/**\n * Contact + delivery snapshot an unregistered (\"guest\") visitor enters at\n * checkout. Mirrors the backend GuestContact: every field is optional, and an\n * address is only meaningful for DELIVERY orders. latitude/longitude are kept\n * as numbers here for the UI (they come from the address autocomplete); they're\n * serialized to strings in the wire payload — see GuestContactRequest.\n */\nexport interface GuestContact {\n\tfullName?: string;\n\tphoneNumber?: string;\n\temail?: string;\n\tstreet?: string;\n\thouseNumber?: string;\n\tadditionalNumber?: string;\n\tfloor?: number;\n\tlatitude?: number;\n\tlongitude?: number;\n\tcityName?: string;\n\tcountryCode?: string;\n\tpostCode?: string;\n\tinstructions?: string;\n}\n\n/**\n * Wire shape of the contact sent to POST /order/public. Matches the backend\n * GuestContact, where latitude/longitude are strings.\n */\nexport interface GuestContactRequest\n\textends Omit<GuestContact, \"latitude\" | \"longitude\"> {\n\tlatitude?: string;\n\tlongitude?: string;\n}\n\n/**\n * Payload for the public, non-authenticated create path (POST /order/public).\n * Unlike OrderPayload it carries no customerId/customerAddressId — an\n * unregistered visitor has no account or stored address book; the delivery\n * address (when given) travels inside the contact snapshot.\n */\nexport interface GuestOrderPayload extends Order {\n\tlanguage?: string;\n\tcontact?: GuestContactRequest;\n}\n\nexport interface CalculatePreviewItemRequest {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tvariant?: { variantId: number };\n\taddons?: Array<{\n\t\taddonId: number;\n\t\toptions: Array<{ optionId: number }>;\n\t}>;\n}\n\nexport interface CalculatePreviewRequest {\n\tbusinessId?: number;\n\tbranchId: number;\n\torderType: OrderType;\n\titems: CalculatePreviewItemRequest[];\n\t/**\n\t * Where the delivery is heading. They matter only for a DELIVERY order on a\n\t * branch that prices delivery by distance; without them such a cart previews\n\t * the branch's flat fee, and the real fee is resolved from the order's\n\t * address at create time.\n\t */\n\tlatitude?: number;\n\tlongitude?: number;\n}\n\nexport interface CalculatePreviewTax {\n\tbranchTaxId: number;\n\tname: LocalizedText;\n\trate: number;\n\ttype: \"percentage\" | \"fixed\";\n\taddToListingPrice: boolean;\n\tamount: number;\n}\n\nexport interface CalculatePreviewLine {\n\torderItemsId: string;\n\tproductId: number;\n\tquantity: number;\n\tprice: number;\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface CalculatePreviewResponse {\n\ttotalPriceWithoutTax: number;\n\ttotalPriceWithTax: number;\n\ttotalPriceWithTaxAndFees: number;\n\ttotalTax: number;\n\tdeliveryFee: number;\n\tserviceFee: number;\n\titems: CalculatePreviewLine[];\n\ttaxes: CalculatePreviewTax[];\n}\n\nexport interface OrderPreviewState {\n\tdata: CalculatePreviewResponse | null;\n\tisLoading: boolean;\n\terror: string | null;\n}\n","import { MenuAddon } from \"../addon/models\";\nimport { LocalizedText } from \"src/modules/localization/models\";\n\nexport interface LocalizedContent {\n\tname: string;\n\tdescription: string;\n}\n\nexport interface ProductVariant {\n\tid?: number;\n\t/** Net price (tax-exclusive) — server-of-record value. */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied.\n\t */\n\tlistingPrice: number;\n\t/** Title keyed by language code, e.g. { en: \"Large\", az: \"Böyük\" }. */\n\ttitle: LocalizedText;\n\tproductId?: number;\n\tremove?: boolean;\n}\n\nexport interface Product {\n\tid: number;\n\tcategoryId: number;\n\t/** Net price (tax-exclusive). Nullable when the product has no own price (variant-only). */\n\tprice: number;\n\t/**\n\t * Gross price for menu display: net price plus any branch taxes flagged\n\t * `addToListingPrice`. Equals `price` when no branch context is supplied,\n\t * and is null when `price` itself is null.\n\t */\n\tlistingPrice?: number | null;\n\tvolume?: string; // 100qr/250ml/1kq\n\timage160?: string;\n\timage580?: string;\n\timage1024?: string;\n\ttranslations: Record<string, LocalizedContent>;\n\tvariants: ProductVariant[];\n\taddons: MenuAddon[];\n\tavailable?: boolean;\n\tvisible?: boolean;\n\tposition?: number;\n\tvideoUrl?: string;\n\tsellUnitType?: SellUnitType;\n\ttaxClassId?: number | null;\n\t/**\n\t * The bare allergen codes the business declared, `[]` when none — the shape\n\t * a product is authored and saved in. Rendering reads `allergenDetails`\n\t * instead, since that carries the same codes plus their wording.\n\t */\n\tallergens?: AllergenCode[];\n\t/**\n\t * The declared allergens as the menu renders them: each code paired with its\n\t * label in every language the business publishes. The API owns the catalog\n\t * and translates it, so a code it adds is legible here without a release of\n\t * this package, and the list is taken as given — order included.\n\t */\n\tallergenDetails?: AllergenDetail[];\n}\n\n/**\n * One declared allergen: the standardized code plus its label per language\n * code. Labels arrive as a map rather than a single localized string because\n * the public menu is served from one language-agnostic cached payload — the\n * guest switches language locally and the row has to relabel without a\n * refetch. Mirrors `domains/product/types/allergen_detail.go`.\n */\nexport interface AllergenDetail {\n\tcode: AllergenCode;\n\t/** Label keyed by language code, e.g. `{ en: \"Gluten\", az: \"Qlüten\" }`. */\n\ttranslations: LocalizedText;\n}\n\n/**\n * An allergen code as it comes off the wire. Deliberately open: the API owns\n * the catalog, so it may send a code this package has never heard of, and that\n * code still has to reach the guest — a declared allergen going missing is the\n * one failure mode this feature cannot have. `Allergen` names the codes we\n * have a glyph for; everything else falls back to a generic mark (see\n * `AllergenIcons`). Wording never depends on this list.\n */\nexport type AllergenCode = Allergen | (string & Record<never, never>);\n\n/**\n * The 14 major food allergens of EU Regulation 1169/2011 (Annex II) plus\n * buckwheat — mirrors `domains/product/constants/allergens.go` on the API,\n * which is the server of record for the catalog. This is the subset with a\n * glyph of its own; it is not a limit on what the API may send, and it exists\n * in this package only because an icon cannot travel over the wire.\n */\nexport enum Allergen {\n\tGLUTEN = \"GLUTEN\",\n\tCRUSTACEANS = \"CRUSTACEANS\",\n\tEGGS = \"EGGS\",\n\tFISH = \"FISH\",\n\tPEANUTS = \"PEANUTS\",\n\tSOY = \"SOY\",\n\tMILK = \"MILK\",\n\tTREE_NUTS = \"TREE_NUTS\",\n\tCELERY = \"CELERY\",\n\tMUSTARD = \"MUSTARD\",\n\tSESAME = \"SESAME\",\n\tSULPHITES = \"SULPHITES\",\n\tLUPIN = \"LUPIN\",\n\tMOLLUSCS = \"MOLLUSCS\",\n\tBUCKWHEAT = \"BUCKWHEAT\",\n}\n\nexport enum ProductView {\n\tLIST = \"list\",\n\tGRID = \"grid\",\n}\n\nexport interface DashboardProduct extends Omit<Product, \"addons\"> {\n\taddons: number[];\n}\n\nexport enum SellUnitType {\n\tPIECE = \"PIECE\",\n\tWEIGHT = \"WEIGHT\",\n\tVOLUME = \"VOLUME\",\n}\n","export enum PlanType {\n\tAPPETIZER = \"appetizer\",\n\tMAIN_COURSE = \"mainCourse\",\n\tCHEFS_SPECIAL = \"chefsSpecial\",\n\tLIFETIME = \"lifeTime\",\n}\n\nexport interface PricingPlan {\n\ttitle: string;\n\tprice: {\n\t\tmonthly: number;\n\t\tannually: number;\n\t};\n\tdiscountedPrice?: number;\n\tribbonText?: string;\n}\n\nexport interface PricingPlans {\n\t[key: string]: PricingPlan;\n}\n\nexport type PricingInterval = \"monthly\" | \"annually\";\n\nexport enum SubscriptionStatus {\n\tACTIVE = \"ACTIVE\",\n\tEXPIRED = \"EXPIRED\",\n\tCANCELLED = \"CANCELLED\",\n}\n\nexport type BillingInterval = \"MONTH\" | \"YEAR\";\n\nexport interface Subscription {\n\tid: number;\n\tbillingInterval: BillingInterval;\n\tbillingIntervalCount: number;\n\tstartDate: string;\n\tendDate: string;\n\tinterval: PricingInterval;\n\tstatus: SubscriptionStatus;\n\tbusiness_id?: number;\n\tplanName: string;\n}\n","export enum TableShape {\n\tSQUARE = \"SQUARE\",\n\tCIRCLE = \"CIRCLE\",\n\tRECTANGLE = \"RECTANGLE\",\n\tRECTANGLE_VERTICAL = \"RECTANGLE_VERTICAL\",\n\tSINGLE_AT_BAR = \"SINGLE_AT_BAR\",\n\tOTHER = \"OTHER\",\n}\n\nexport enum TableStatus {\n\tVACANT = \"VACANT\", // Free and available\n\tRESERVED = \"RESERVED\", // Booked but not yet seated\n\tOCCUPIED = \"OCCUPIED\", // Currently in use\n\tBLOCKED = \"BLOCKED\", // Temporarily blocked/unavailable\n\tNEEDS_CLEANING = \"NEEDS_CLEANING\", // Dirty, awaiting cleanup\n\tOUT_OF_SERVICE = \"OUT_OF_SERVICE\", // Permanently unavailable repair/maintenance\n\tPENDING_CONFIRMATION = \"PENDING_CONFIRMATION\", // Reservation not yet confirmed\n\tNO_SHOW = \"NO_SHOW\", // Reserved but guest didn’t arrive\n}\n\nexport enum TableLocation {\n\t// Indoor\n\tMAIN_HALL = \"MAIN_HALL\",\n\tPRIVATE_DINING = \"PRIVATE_DINING\",\n\tVIP_ROOM = \"VIP_ROOM\",\n\tBANQUET_HALL = \"BANQUET_HALL\",\n\tBAR_AREA = \"BAR_AREA\",\n\tLOUNGE = \"LOUNGE\",\n\tOPEN_KITCHEN = \"OPEN_KITCHEN\",\n\tBOOTH_SECTION = \"BOOTH_SECTION\",\n\tMEZZANINE = \"MEZZANINE\",\n\tWINE_CELLAR = \"WINE_CELLAR\",\n\n\t// Outdoor\n\tTERRACE = \"TERRACE\",\n\tPATIO = \"PATIO\",\n\tGARDEN = \"GARDEN\",\n\tCOURTYARD = \"COURTYARD\",\n\tROOFTOP = \"ROOFTOP\",\n\tBALCONY = \"BALCONY\",\n\tSIDEWALK = \"SIDEWALK\",\n\tPOOLSIDE = \"POOLSIDE\",\n\n\t// Special Sections\n\tSMOKING_AREA = \"SMOKING_AREA\",\n\tNON_SMOKING = \"NON_SMOKING\",\n\tFAMILY_SECTION = \"FAMILY_SECTION\",\n\tKIDS_AREA = \"KIDS_AREA\",\n\tWAITING_AREA = \"WAITING_AREA\",\n\tDANCE_FLOOR = \"DANCE_FLOOR\",\n}\n\nexport interface Table {\n\tid: number;\n\tbusinessId: number;\n\tbranchId: number;\n\tname: string;\n\tseatCount: number;\n\tshape: TableShape;\n\tlocation: TableLocation;\n\tstatus: TableStatus;\n}\n\nexport interface TableState {\n\ttables: Table[];\n}\n\nexport type TableForm = Omit<Table, \"id\" | \"businessId\" | \"branchId\"> & {\n\tbranchId: string | number;\n};\n\nexport type TableUpdate = Partial<Omit<Table, \"id\" | \"businessId\">>;\n\nexport type TableFilter = Partial<Pick<Table, \"branchId\" | \"shape\" | \"location\" | \"status\">>;\n\nexport type TableFilterParams = { field: keyof TableFilter; value: TableFilter[keyof TableFilter] };\n","export enum EmployeePermission {\n\tVIEW_BUSINESS = \"VIEW_BUSINESS\",\n\tUPDATE_BUSINESS = \"UPDATE_BUSINESS\",\n\tVIEW_BUSINESS_FINANCIALS = \"VIEW_BUSINESS_FINANCIALS\",\n\tVIEW_ORDERS = \"VIEW_ORDERS\",\n\tUPDATE_ORDER = \"UPDATE_ORDER\",\n\tCREATE_ORDER = \"CREATE_ORDER\",\n\t/**\n\t * The KDS's only verb: advancing a line PENDING -> PREPARING -> READY -> SERVED.\n\t * Deliberately separate from UPDATE_ORDER, which also carries close-the-bill,\n\t * void-a-line, add-items and change-table. Kitchen and runner roles hold this\n\t * INSTEAD of UPDATE_ORDER; floor and management roles hold both.\n\t */\n\tUPDATE_ORDER_ITEM_STATUS = \"UPDATE_ORDER_ITEM_STATUS\",\n\tAPPLY_DISCOUNT = \"APPLY_DISCOUNT\",\n\t/** Sending a paid order's receipt PDF to a customer over email/WhatsApp. */\n\tSEND_RECEIPT = \"SEND_RECEIPT\",\n\tVIEW_QR_MENU = \"VIEW_QR_MENU\",\n\tUPDATE_QR_MENU = \"UPDATE_QR_MENU\",\n\tVIEW_MENU = \"VIEW_MENU\",\n\tVIEW_MENU_ITEMS = \"VIEW_MENU_ITEMS\",\n\tCREATE_MENU_ITEM = \"CREATE_MENU_ITEM\",\n\tUPDATE_MENU_ITEM = \"UPDATE_MENU_ITEM\",\n\tDELETE_MENU_ITEM = \"DELETE_MENU_ITEM\",\n\tVIEW_CATEGORIES = \"VIEW_CATEGORIES\",\n\tUPDATE_CATEGORY = \"UPDATE_CATEGORY\",\n\tCREATE_CATEGORY = \"CREATE_CATEGORY\",\n\tDELETE_CATEGORY = \"DELETE_CATEGORY\",\n\tVIEW_ADDONS = \"VIEW_ADDONS\",\n\tUPDATE_ADDON = \"UPDATE_ADDON\",\n\tCREATE_ADDON = \"CREATE_ADDON\",\n\tDELETE_ADDON = \"DELETE_ADDON\",\n\tVIEW_TABLES = \"VIEW_TABLES\",\n\tUPDATE_TABLE = \"UPDATE_TABLE\",\n\tUPDATE_TABLE_STATUS = \"UPDATE_TABLE_STATUS\",\n\tCREATE_TABLE = \"CREATE_TABLE\",\n\tDELETE_TABLE = \"DELETE_TABLE\",\n\tVIEW_BRANCHES = \"VIEW_BRANCHES\",\n\tUPDATE_BRANCH = \"UPDATE_BRANCH\",\n\tCREATE_BRANCH = \"CREATE_BRANCH\",\n\tDELETE_BRANCH = \"DELETE_BRANCH\",\n\t// Kitchen stations\n\tVIEW_STATIONS = \"VIEW_STATIONS\",\n\tUPDATE_STATION = \"UPDATE_STATION\",\n\tCREATE_STATION = \"CREATE_STATION\",\n\tDELETE_STATION = \"DELETE_STATION\",\n\t// Terminal trust layer: enrolling hands a screen a long-lived credential of\n\t// its own, and revoking is the only way to take it back. Management only.\n\tVIEW_DEVICES = \"VIEW_DEVICES\",\n\tENROLL_DEVICE = \"ENROLL_DEVICE\",\n\tREVOKE_DEVICE = \"REVOKE_DEVICE\",\n\tVIEW_EMPLOYEES = \"VIEW_EMPLOYEES\",\n\tUPDATE_EMPLOYEE = \"UPDATE_EMPLOYEE\",\n\tCREATE_EMPLOYEE = \"CREATE_EMPLOYEE\",\n\tDELETE_EMPLOYEE = \"DELETE_EMPLOYEE\",\n\tVIEW_ANALYTICS = \"VIEW_ANALYTICS\",\n\tVIEW_SALES_REPORTS = \"VIEW_SALES_REPORTS\",\n\t// Client-only gates: the Go API defines no counterpart for these, so they\n\t// gate UI affordances rather than backend endpoints.\n\tVIEW_SUBSCRIPTION = \"VIEW_SUBSCRIPTION\",\n\tUPDATE_SUBSCRIPTION = \"UPDATE_SUBSCRIPTION\",\n\tVIEW_QR_CODES = \"VIEW_QR_CODES\",\n\tCREATE_QR_CODE = \"CREATE_QR_CODE\",\n\tDELETE_QR_CODE = \"DELETE_QR_CODE\",\n\tALL = \"ALL\",\n\t// Inventory\n\tVIEW_INVENTORY = \"VIEW_INVENTORY\",\n\tVIEW_PURCHASES = \"VIEW_PURCHASES\",\n\tVIEW_PURCHASE_DETAIL = \"VIEW_PURCHASE_DETAIL\",\n\tCREATE_PURCHASE = \"CREATE_PURCHASE\",\n\tUPDATE_PURCHASE = \"UPDATE_PURCHASE\",\n\tDELETE_PURCHASE = \"DELETE_PURCHASE\",\n\tVIEW_INVENTORY_PRODUCTS = \"VIEW_INVENTORY_PRODUCTS\",\n\tCREATE_INVENTORY_PRODUCT = \"CREATE_INVENTORY_PRODUCT\",\n\tUPDATE_INVENTORY_PRODUCT = \"UPDATE_INVENTORY_PRODUCT\",\n\tDELETE_INVENTORY_PRODUCT = \"DELETE_INVENTORY_PRODUCT\",\n\tVIEW_BUSINESS_BALANCE = \"VIEW_BUSINESS_BALANCE\",\n\tVIEW_BRANCH_BALANCE = \"VIEW_BRANCH_BALANCE\",\n\tUPDATE_PRODUCT_INGREDIENTS = \"UPDATE_PRODUCT_INGREDIENTS\",\n\tDELETE_PRODUCT_INGREDIENTS = \"DELETE_PRODUCT_INGREDIENTS\",\n\tAI_ASSISTANT = \"AI_ASSISTANT\",\n\tVIEW_PAYMENTS = \"VIEW_PAYMENTS\",\n\tTAKE_PAYMENT = \"TAKE_PAYMENT\",\n\tREFUND_PAYMENT = \"REFUND_PAYMENT\",\n\tPAYMENT_COMP = \"COMP\",\n}\n\nexport enum UserRole {\n\tOWNER = \"OWNER\",\n\tSUPER_ADMIN = \"SUPER_ADMIN\",\n\tBRANCH_MANAGER = \"BRANCH_MANAGER\",\n\tGENERAL_MANAGER = \"GENERAL_MANAGER\",\n\tBUSINESS_MANAGER = \"BUSINESS_MANAGER\",\n\tCHEF = \"CHEF\",\n\tSOUS_CHEF = \"SOUS_CHEF\",\n\tPASTRY_CHEF = \"PASTRY_CHEF\",\n\tLINE_COOK = \"LINE_COOK\",\n\tPREP_COOK = \"PREP_COOK\",\n\tKITCHEN_ASSISTANT = \"KITCHEN_ASSISTANT\",\n\tDISHWASHER = \"DISHWASHER\",\n\tHEAD_WAITER = \"HEAD_WAITER\",\n\tWAITER = \"WAITER\",\n\tRUNNER = \"RUNNER\",\n\tBARISTA = \"BARISTA\",\n\tBARTENDER = \"BARTENDER\",\n\tSOMMELIER = \"SOMMELIER\",\n\tACCOUNTANT = \"ACCOUNTANT\",\n\tROOM_SERVICE_STAFF = \"ROOM_SERVICE_STAFF\",\n\tDELIVERY_DRIVER = \"DELIVERY_DRIVER\",\n\tINVENTORY_MANAGER = \"INVENTORY_MANAGER\",\n\tPURCHASING_MANAGER = \"PURCHASING_MANAGER\",\n\tWAREHOUSE_STAFF = \"WAREHOUSE_STAFF\",\n\tCASHIER = \"CASHIER\",\n}\n\nexport interface User {\n\tid?: number;\n\temail: string;\n\tfullName: string;\n\trole?: UserRole;\n\tavatar64?: string | null;\n\tavatar128?: string | null;\n\tavatar256?: string | null;\n\tbusinessId?: number;\n\tbranchId?: number | null;\n\tcreatedAt: string;\n\temailVerified?: boolean;\n\tpermissions?: EmployeePermission[];\n}\n"],"names":["MenuAddonSelectType","DeliveryFeeType","BranchSetting","BranchTaxType","BranchTaxScope","BranchTaxFulfillment","BusinessSetting","CustomerAuthStep","CustomerAddressType","FeatureSegment","OrderType","OrderStatus","OrderItemStatus","PaymentMethod","OrderStep","Allergen","ProductView","SellUnitType","PlanType","SubscriptionStatus","TableShape","TableStatus","TableLocation","EmployeePermission","UserRole","Feature"],"mappings":"aAEA,IAAYA,ECoBAC,EA0CAC,EA8CAC,EAKAC,EAKAC,EC/GAC,ECTAC,EAMAC,ECHAC,ECCAC,EAMAC,EAaAC,EAOAC,EA+FAC,ECjCAC,EAkBAC,EASAC,ECvHAC,EAuBAC,ECvBAC,EASAC,EAWAC,ECpBAC,EAuFAC,ETrFAxB,QAAAA,yBAAAA,GAAAA,EAAAA,QAAAA,sBAAAA,4BAAmB,CAAA,IAC9B,OAAA,SACAA,EAAA,SAAA,WCkBWC,QAAAA,qBAAAA,GAAAA,EAAAA,QAAAA,kBAAAA,wBAAe,CAAA,IAC1B,MAAA,QACAA,EAAA,SAAA,WAwCWC,QAAAA,mBAAAA,GAAAA,EAAAA,QAAAA,gBAAAA,sBAAa,CAAA,IACxB,sBAAA,sBACAA,EAAA,uBAAA,uBACAA,EAAA,qBAAA,qBACAA,EAAA,sBAAA,qBACAA,EAAA,oBAAA,oBACAA,EAAA,oBAAA,oBACAA,EAAA,kBAAA,kBACAA,EAAA,mBAAA,mBACAA,EAAA,uBAAA,uBACAA,EAAA,0BAAA,0BACAA,EAAA,qBAAA,oBACAA,EAAA,oBAAA,oBACAA,EAAA,wBAAA,wBACAA,EAAA,0BAAA,0BAgCWC,QAAAA,mBAAAA,GAAAA,EAAAA,QAAAA,gBAAAA,sBAAa,CAAA,IACxB,WAAA,aACAA,EAAA,aAAA,QAGWC,QAAAA,oBAAAA,GAAAA,EAAAA,QAAAA,iBAAAA,uBAAc,CAAA,IACzB,YAAA,cACAA,EAAA,MAAA,QAGWC,QAAAA,0BAAAA,GAAAA,EAAAA,QAAAA,uBAAAA,6BAAoB,CAAA,IAC/B,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UACAA,EAAA,IAAA,MCnHWC,QAAAA,qBAAAA,GAAAA,EAAAA,QAAAA,kBAAAA,wBAAe,CAAA,IAC1B,sBAAA,sBACAA,EAAA,uBAAA,uBACAA,EAAA,qBAAA,qBACAA,EAAA,sBAAA,qBACAA,EAAA,oBAAA,oBCdWC,QAAAA,sBAAAA,GAAAA,EAAAA,QAAAA,mBAAAA,yBAAgB,CAAA,IAC3B,MAAA,QACAA,EAAA,IAAA,MACAA,EAAA,MAAA,QAGWC,QAAAA,yBAAAA,GAAAA,EAAAA,QAAAA,sBAAAA,4BAAmB,CAAA,IAC9B,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,OAAA,SCTWiB,QAAAA,aAAAA,GAAAA,QAAAA,UAAAA,gBAAO,CAAA,IAClB,aAAA,eAEWhB,QAAAA,oBAAAA,GAAAA,EAAAA,QAAAA,iBAAAA,uBAAc,CAAA,IACzB,MAAA,QACAA,EAAA,KAAA,OACAA,EAAA,IAAA,MCFWC,QAAAA,eAAAA,GAAAA,EAAAA,QAAAA,YAAAA,kBAAS,CAAA,IACpB,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WAGWC,QAAAA,iBAAAA,GAAAA,EAAAA,QAAAA,cAAAA,oBAAW,CAAA,IACtB,MAAA,QACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,MAAA,QACAA,EAAA,iBAAA,mBACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SAGWC,QAAAA,qBAAAA,GAAAA,EAAAA,QAAAA,kBAAAA,wBAAe,CAAA,IAC1B,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,MAAA,QACAA,EAAA,OAAA,SAGWC,QAAAA,mBAAAA,GAAAA,EAAAA,QAAAA,gBAAAA,sBAAa,CAAA,IACxB,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,cAAA,gBACAA,EAAA,OAAA,SACAA,EAAA,GAAA,KACAA,EAAA,QAAA,UACAA,EAAA,KAAA,OACAA,EAAA,MAAA,QAuFWC,QAAAA,eAAAA,GAAAA,EAAAA,QAAAA,YAAAA,kBAAS,CAAA,IACpB,KAAA,OACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YCpCWC,QAAAA,cAAAA,GAAAA,EAAAA,QAAAA,WAAAA,iBAAQ,CAAA,IACnB,OAAA,SACAA,EAAA,YAAA,cACAA,EAAA,KAAA,OACAA,EAAA,KAAA,OACAA,EAAA,QAAA,UACAA,EAAA,IAAA,MACAA,EAAA,KAAA,OACAA,EAAA,UAAA,YACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,MAAA,QACAA,EAAA,SAAA,WACAA,EAAA,UAAA,YAGWC,QAAAA,iBAAAA,GAAAA,EAAAA,QAAAA,cAAAA,oBAAW,CAAA,IACtB,KAAA,OACAA,EAAA,KAAA,OAOWC,QAAAA,kBAAAA,GAAAA,EAAAA,QAAAA,eAAAA,qBAAY,CAAA,IACvB,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SC1HWC,QAAAA,cAAAA,GAAAA,EAAAA,QAAAA,WAAAA,iBAAQ,CAAA,IACnB,UAAA,YACAA,EAAA,YAAA,aACAA,EAAA,cAAA,eACAA,EAAA,SAAA,WAmBWC,QAAAA,wBAAAA,GAAAA,EAAAA,QAAAA,qBAAAA,2BAAkB,CAAA,IAC7B,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YC1BWC,QAAAA,gBAAAA,GAAAA,EAAAA,QAAAA,aAAAA,mBAAU,CAAA,IACrB,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,mBAAA,qBACAA,EAAA,cAAA,gBACAA,EAAA,MAAA,QAGWC,QAAAA,iBAAAA,GAAAA,EAAAA,QAAAA,cAAAA,oBAAW,CAAA,IACtB,OAAA,SACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WACAA,EAAA,QAAA,UACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBACAA,EAAA,qBAAA,uBACAA,EAAA,QAAA,UAGWC,QAAAA,mBAAAA,GAAAA,EAAAA,QAAAA,gBAAAA,sBAAa,CAAA,IAExB,UAAA,YACAA,EAAA,eAAA,iBACAA,EAAA,SAAA,WACAA,EAAA,aAAA,eACAA,EAAA,SAAA,WACAA,EAAA,OAAA,SACAA,EAAA,aAAA,eACAA,EAAA,cAAA,gBACAA,EAAA,UAAA,YACAA,EAAA,YAAA,cAGAA,EAAA,QAAA,UACAA,EAAA,MAAA,QACAA,EAAA,OAAA,SACAA,EAAA,UAAA,YACAA,EAAA,QAAA,UACAA,EAAA,QAAA,UACAA,EAAA,SAAA,WACAA,EAAA,SAAA,WAGAA,EAAA,aAAA,eACAA,EAAA,YAAA,cACAA,EAAA,eAAA,iBACAA,EAAA,UAAA,YACAA,EAAA,aAAA,eACAA,EAAA,YAAA,cCjDWC,QAAAA,wBAAAA,GAAAA,EAAAA,QAAAA,qBAAAA,2BAAkB,CAAA,IAC7B,cAAA,gBACAA,EAAA,gBAAA,kBACAA,EAAA,yBAAA,2BACAA,EAAA,YAAA,cACAA,EAAA,aAAA,eACAA,EAAA,aAAA,eAOAA,EAAA,yBAAA,2BACAA,EAAA,eAAA,iBAEAA,EAAA,aAAA,eACAA,EAAA,aAAA,eACAA,EAAA,eAAA,iBACAA,EAAA,UAAA,YACAA,EAAA,gBAAA,kBACAA,EAAA,iBAAA,mBACAA,EAAA,iBAAA,mBACAA,EAAA,iBAAA,mBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,YAAA,cACAA,EAAA,aAAA,eACAA,EAAA,aAAA,eACAA,EAAA,aAAA,eACAA,EAAA,YAAA,cACAA,EAAA,aAAA,eACAA,EAAA,oBAAA,sBACAA,EAAA,aAAA,eACAA,EAAA,aAAA,eACAA,EAAA,cAAA,gBACAA,EAAA,cAAA,gBACAA,EAAA,cAAA,gBACAA,EAAA,cAAA,gBAEAA,EAAA,cAAA,gBACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBAGAA,EAAA,aAAA,eACAA,EAAA,cAAA,gBACAA,EAAA,cAAA,gBACAA,EAAA,eAAA,iBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,eAAA,iBACAA,EAAA,mBAAA,qBAGAA,EAAA,kBAAA,oBACAA,EAAA,oBAAA,sBACAA,EAAA,cAAA,gBACAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBACAA,EAAA,IAAA,MAEAA,EAAA,eAAA,iBACAA,EAAA,eAAA,iBACAA,EAAA,qBAAA,uBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,gBAAA,kBACAA,EAAA,wBAAA,0BACAA,EAAA,yBAAA,2BACAA,EAAA,yBAAA,2BACAA,EAAA,yBAAA,2BACAA,EAAA,sBAAA,wBACAA,EAAA,oBAAA,sBACAA,EAAA,2BAAA,6BACAA,EAAA,2BAAA,6BACAA,EAAA,aAAA,eACAA,EAAA,cAAA,gBACAA,EAAA,aAAA,eACAA,EAAA,eAAA,iBACAA,EAAA,aAAA,OAGWC,QAAAA,cAAAA,GAAAA,EAAAA,QAAAA,WAAAA,iBAAQ,CAAA,IACnB,MAAA,QACAA,EAAA,YAAA,cACAA,EAAA,eAAA,iBACAA,EAAA,gBAAA,kBACAA,EAAA,iBAAA,mBACAA,EAAA,KAAA,OACAA,EAAA,UAAA,YACAA,EAAA,YAAA,cACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,kBAAA,oBACAA,EAAA,WAAA,aACAA,EAAA,YAAA,cACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,QAAA,UACAA,EAAA,UAAA,YACAA,EAAA,UAAA,YACAA,EAAA,WAAA,aACAA,EAAA,mBAAA,qBACAA,EAAA,gBAAA,kBACAA,EAAA,kBAAA,oBACAA,EAAA,mBAAA,qBACAA,EAAA,gBAAA,kBACAA,EAAA,QAAA"}
@@ -2,6 +2,12 @@ import { LocalizedText } from "src/modules/localization/models";
2
2
  export interface Category {
3
3
  id: number;
4
4
  businessId: number;
5
+ /**
6
+ * Parent category id, or null when the category sits at the top level. The
7
+ * tree is two levels deep at most: a parent holds subcategories, every other
8
+ * category holds products
9
+ */
10
+ parentId?: number | null;
5
11
  /**
6
12
  * Category name keyed by language code, e.g. { en: "Drinks", az: "İçkilər" }.
7
13
  * Mirrors the `name` JSONB column returned by the API
@@ -0,0 +1,24 @@
1
+ import { Category } from "./models";
2
+ export declare const getCategoryName: (category: Pick<Category, "name">, language: string) => string;
3
+ export declare const getCategoryNameById: (categoryId: number, categories: Category[], language: string) => string;
4
+ /**
5
+ * A child category is nested under a parent. The public menu keeps it out of the
6
+ * category strip and renders it inside its parent's product block instead.
7
+ */
8
+ export declare const getIsChildCategory: (category: Pick<Category, "parentId">) => boolean;
9
+ /**
10
+ * The category `category` nests under, or undefined when it stays top level.
11
+ *
12
+ * The tree is two levels deep at most, so a category only nests under a parent
13
+ * that exists in `categories`, is not the category itself and is not nested
14
+ * itself. A child that fails any of these keeps a place of its own rather than
15
+ * dropping out of the menu. Every caller that decides where a category sits
16
+ * goes through here, so the strip, the product blocks and deep links agree.
17
+ */
18
+ export declare const getParentCategory: <T extends Pick<Category, "id" | "parentId">>(category: T, categories: T[]) => T | undefined;
19
+ /**
20
+ * Resolves a category id to the one the category strip shows: a child answers
21
+ * with its parent, every other category with itself. Menus without
22
+ * subcategories always get the id back untouched.
23
+ */
24
+ export declare const getTopLevelCategoryId: (categoryId: number, categories: Category[]) => number;
@@ -7,6 +7,13 @@ import * as videoModels from "src/modules/video/models";
7
7
  import { LocalizedText } from "src/modules/localization/models";
8
8
  export interface CategoryProductMap extends categoryModels.Category {
9
9
  products: productModels.Product[];
10
+ /**
11
+ * Child categories nested under this one, each carrying its own products.
12
+ * `prepareCategoryAndProductMap` always sets it — empty unless the business
13
+ * groups its menu with parent categories. Optional so a map built by hand
14
+ * stays valid.
15
+ */
16
+ subcategories?: CategoryProductMap[];
10
17
  }
11
18
  export interface MenuDesign {
12
19
  id?: number;
@@ -1,4 +1,14 @@
1
1
  import * as categoryModels from "src/modules/category/models";
2
2
  import * as productModels from "src/modules/product/models";
3
3
  import { CategoryProductMap } from "./models";
4
+ /**
5
+ * Groups visible products under their categories and nests child categories
6
+ * under their parents, keeping the order the categories were given in.
7
+ *
8
+ * Every entry in the result is a top-level category, so the category strip
9
+ * gives each one a chip. Its `parentId` is cleared to say so, which also covers
10
+ * a child whose parent is missing and therefore stays top level. Categories
11
+ * with nothing to show — no visible products and no subcategory with any — are
12
+ * left out.
13
+ */
4
14
  export declare const prepareCategoryAndProductMap: (categories: categoryModels.Category[], products: productModels.Product[]) => CategoryProductMap[];
@@ -5,7 +5,16 @@ export declare enum EmployeePermission {
5
5
  VIEW_ORDERS = "VIEW_ORDERS",
6
6
  UPDATE_ORDER = "UPDATE_ORDER",
7
7
  CREATE_ORDER = "CREATE_ORDER",
8
+ /**
9
+ * The KDS's only verb: advancing a line PENDING -> PREPARING -> READY -> SERVED.
10
+ * Deliberately separate from UPDATE_ORDER, which also carries close-the-bill,
11
+ * void-a-line, add-items and change-table. Kitchen and runner roles hold this
12
+ * INSTEAD of UPDATE_ORDER; floor and management roles hold both.
13
+ */
14
+ UPDATE_ORDER_ITEM_STATUS = "UPDATE_ORDER_ITEM_STATUS",
8
15
  APPLY_DISCOUNT = "APPLY_DISCOUNT",
16
+ /** Sending a paid order's receipt PDF to a customer over email/WhatsApp. */
17
+ SEND_RECEIPT = "SEND_RECEIPT",
9
18
  VIEW_QR_MENU = "VIEW_QR_MENU",
10
19
  UPDATE_QR_MENU = "UPDATE_QR_MENU",
11
20
  VIEW_MENU = "VIEW_MENU",
@@ -30,6 +39,13 @@ export declare enum EmployeePermission {
30
39
  UPDATE_BRANCH = "UPDATE_BRANCH",
31
40
  CREATE_BRANCH = "CREATE_BRANCH",
32
41
  DELETE_BRANCH = "DELETE_BRANCH",
42
+ VIEW_STATIONS = "VIEW_STATIONS",
43
+ UPDATE_STATION = "UPDATE_STATION",
44
+ CREATE_STATION = "CREATE_STATION",
45
+ DELETE_STATION = "DELETE_STATION",
46
+ VIEW_DEVICES = "VIEW_DEVICES",
47
+ ENROLL_DEVICE = "ENROLL_DEVICE",
48
+ REVOKE_DEVICE = "REVOKE_DEVICE",
33
49
  VIEW_EMPLOYEES = "VIEW_EMPLOYEES",
34
50
  UPDATE_EMPLOYEE = "UPDATE_EMPLOYEE",
35
51
  CREATE_EMPLOYEE = "CREATE_EMPLOYEE",
@@ -64,8 +80,10 @@ export declare enum EmployeePermission {
64
80
  }
65
81
  export declare enum UserRole {
66
82
  OWNER = "OWNER",
83
+ SUPER_ADMIN = "SUPER_ADMIN",
67
84
  BRANCH_MANAGER = "BRANCH_MANAGER",
68
85
  GENERAL_MANAGER = "GENERAL_MANAGER",
86
+ BUSINESS_MANAGER = "BUSINESS_MANAGER",
69
87
  CHEF = "CHEF",
70
88
  SOUS_CHEF = "SOUS_CHEF",
71
89
  PASTRY_CHEF = "PASTRY_CHEF",
@@ -2,6 +2,12 @@ import { LocalizedText } from "src/modules/localization/models";
2
2
  export interface Category {
3
3
  id: number;
4
4
  businessId: number;
5
+ /**
6
+ * Parent category id, or null when the category sits at the top level. The
7
+ * tree is two levels deep at most: a parent holds subcategories, every other
8
+ * category holds products
9
+ */
10
+ parentId?: number | null;
5
11
  /**
6
12
  * Category name keyed by language code, e.g. { en: "Drinks", az: "İçkilər" }.
7
13
  * Mirrors the `name` JSONB column returned by the API
@@ -1,3 +1,24 @@
1
1
  import { Category } from "./models";
2
2
  export declare const getCategoryName: (category: Pick<Category, "name">, language: string) => string;
3
3
  export declare const getCategoryNameById: (categoryId: number, categories: Category[], language: string) => string;
4
+ /**
5
+ * A child category is nested under a parent. The public menu keeps it out of the
6
+ * category strip and renders it inside its parent's product block instead.
7
+ */
8
+ export declare const getIsChildCategory: (category: Pick<Category, "parentId">) => boolean;
9
+ /**
10
+ * The category `category` nests under, or undefined when it stays top level.
11
+ *
12
+ * The tree is two levels deep at most, so a category only nests under a parent
13
+ * that exists in `categories`, is not the category itself and is not nested
14
+ * itself. A child that fails any of these keeps a place of its own rather than
15
+ * dropping out of the menu. Every caller that decides where a category sits
16
+ * goes through here, so the strip, the product blocks and deep links agree.
17
+ */
18
+ export declare const getParentCategory: <T extends Pick<Category, "id" | "parentId">>(category: T, categories: T[]) => T | undefined;
19
+ /**
20
+ * Resolves a category id to the one the category strip shows: a child answers
21
+ * with its parent, every other category with itself. Menus without
22
+ * subcategories always get the id back untouched.
23
+ */
24
+ export declare const getTopLevelCategoryId: (categoryId: number, categories: Category[]) => number;
@@ -7,6 +7,13 @@ import * as videoModels from "src/modules/video/models";
7
7
  import { LocalizedText } from "src/modules/localization/models";
8
8
  export interface CategoryProductMap extends categoryModels.Category {
9
9
  products: productModels.Product[];
10
+ /**
11
+ * Child categories nested under this one, each carrying its own products.
12
+ * `prepareCategoryAndProductMap` always sets it — empty unless the business
13
+ * groups its menu with parent categories. Optional so a map built by hand
14
+ * stays valid.
15
+ */
16
+ subcategories?: CategoryProductMap[];
10
17
  }
11
18
  export interface MenuDesign {
12
19
  id?: number;