@final-commerce/common 2.4.1-staging2.1 → 2.5.0-staging.1

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.
@@ -156,6 +156,27 @@ interface OrderLineItemModifier {
156
156
  total: number;
157
157
  totalTax?: number;
158
158
  taxes?: OrderTax[];
159
+ componentIndex?: number;
160
+ }
161
+ interface OrderLineItemComponent {
162
+ productId: string;
163
+ variantId: string;
164
+ name: string;
165
+ attributes?: string;
166
+ sku?: string;
167
+ productExternalId?: string;
168
+ variantExternalId?: string;
169
+ partName?: string;
170
+ quantity: number;
171
+ price: number;
172
+ unitId?: string;
173
+ unitAbbreviation?: string;
174
+ unitRatioToBase?: number;
175
+ stockQuantity?: number;
176
+ stockVariantId?: string;
177
+ taxTableId?: string;
178
+ totalTax?: number;
179
+ taxes?: OrderTax[];
159
180
  }
160
181
  interface OrderLineItem {
161
182
  id?: string;
@@ -180,6 +201,7 @@ interface OrderLineItem {
180
201
  discount?: OrderLineItemDiscount;
181
202
  fee?: OrderLineItemFee;
182
203
  modifiers?: OrderLineItemModifier[];
204
+ components?: OrderLineItemComponent[];
183
205
  lineNetWithFees?: number;
184
206
  metadata?: Metadata[];
185
207
  stock?: number;
@@ -458,7 +480,9 @@ declare enum NonRevenueItemType {
458
480
 
459
481
  declare enum ProductType {
460
482
  SIMPLE = "simple",
461
- VARIABLE = "variable"
483
+ VARIABLE = "variable",
484
+ BOOKING = "booking",
485
+ COMPOSITE = "composite"
462
486
  }
463
487
  declare enum ProductStatus {
464
488
  ACTIVE = "active",
@@ -472,11 +496,40 @@ declare enum PaymentProcessor {
472
496
  EXTERNAL = "external"
473
497
  }
474
498
 
499
+ declare enum BookingType {
500
+ RENTAL = "rental",
501
+ APPOINTMENT = "appointment",
502
+ OVERNIGHT = "overnight",
503
+ GROUP = "group"
504
+ }
505
+ declare enum BookingRatePeriod {
506
+ SLOT = "slot",
507
+ DAY = "day",
508
+ NIGHT = "night",
509
+ WEEK = "week",
510
+ MONTH = "month"
511
+ }
512
+ declare enum BookingResourceKind {
513
+ ASSET = "asset",
514
+ ROOM = "room",
515
+ PROPERTY = "property",
516
+ SPACE = "space",
517
+ STAFF = "staff",
518
+ TABLE = "table"
519
+ }
520
+ declare enum ReservationStatus {
521
+ HELD = "held",
522
+ CONFIRMED = "confirmed",
523
+ CANCELLED = "cancelled",
524
+ EXPIRED = "expired"
525
+ }
526
+
475
527
  interface RefundLineItem {
476
528
  taxes?: OrderTax[];
477
529
  discount?: RefundDiscount;
478
530
  fee?: OrderLineItemFee;
479
531
  modifiers?: OrderLineItemModifier[];
532
+ components?: OrderLineItemComponent[];
480
533
  lineNetWithFees?: number;
481
534
  quantity?: number;
482
535
  stockQuantity?: number;
@@ -510,6 +563,7 @@ interface RefundPayment {
510
563
  processor?: string;
511
564
  saleId?: string;
512
565
  tendered?: number;
566
+ tip?: OrderTip | null;
513
567
  }
514
568
 
515
569
  interface RefundTip {
@@ -578,6 +632,33 @@ interface TransactionPaymentData {
578
632
  chargeId?: string;
579
633
  }
580
634
 
635
+ interface OrderReservation {
636
+ internalId: string;
637
+ bookingId?: string;
638
+ productId: string;
639
+ variantId?: string | null;
640
+ resourceId: string;
641
+ name: string;
642
+ resourceName?: string;
643
+ price: number;
644
+ quantity?: number;
645
+ fulfilledQuantity?: number;
646
+ returnedQuantity?: number;
647
+ taxes?: OrderTax[];
648
+ discount?: OrderLineItemDiscount;
649
+ fee?: OrderLineItemFee;
650
+ totalTax?: number;
651
+ total: number;
652
+ taxTableId?: string;
653
+ startAt: string;
654
+ endAt: string;
655
+ bufferEndAt: string;
656
+ lineItemInternalId?: string;
657
+ componentIndex?: number;
658
+ override?: boolean;
659
+ overriddenBy?: string | null;
660
+ }
661
+
581
662
  interface Attribute extends BaseEntity {
582
663
  optionName: string;
583
664
  sortingOrder: number;
@@ -793,6 +874,7 @@ interface Order extends BaseEntity {
793
874
  lineItems: Partial<OrderLineItem>[];
794
875
  customSales?: OrderCustomSale[];
795
876
  nonRevenueItems?: NonRevenueItem$1[];
877
+ reservations?: OrderReservation[];
796
878
  refund?: OrderRefund[];
797
879
  minorUnits?: number;
798
880
  }
@@ -841,6 +923,7 @@ interface Product extends BaseEntity {
841
923
  maxPrice?: number;
842
924
  supplier?: string;
843
925
  taxTable?: string | null;
926
+ defaultVariantId?: string;
844
927
  categories?: string[];
845
928
  outlets?: string[];
846
929
  currency?: CurrencyCode;
@@ -1129,6 +1212,22 @@ interface Variant extends BaseEntity {
1129
1212
  stockVariantId?: string;
1130
1213
  }
1131
1214
 
1215
+ interface Tax {
1216
+ id: string;
1217
+ name: string;
1218
+ percentage: number;
1219
+ amount: number;
1220
+ taxableAmount?: number;
1221
+ taxTableName: string;
1222
+ taxTableId: string;
1223
+ compounding?: boolean;
1224
+ priority?: number;
1225
+ }
1226
+ interface Tip {
1227
+ amount: number;
1228
+ percentage: number;
1229
+ }
1230
+
1132
1231
  interface Address {
1133
1232
  firstName: string;
1134
1233
  lastName: string;
@@ -1190,6 +1289,7 @@ interface ActiveOutlet {
1190
1289
  taxId: string;
1191
1290
  postCode?: string;
1192
1291
  name?: string;
1292
+ timeZone?: string;
1193
1293
  stripe?: {
1194
1294
  locationId: string;
1195
1295
  };
@@ -1320,22 +1420,6 @@ interface PosDataItem {
1320
1420
  };
1321
1421
  }
1322
1422
 
1323
- interface Tax {
1324
- id: string;
1325
- name: string;
1326
- percentage: number;
1327
- amount: number;
1328
- taxableAmount?: number;
1329
- taxTableName: string;
1330
- taxTableId: string;
1331
- compounding?: boolean;
1332
- priority?: number;
1333
- }
1334
- interface Tip {
1335
- amount: number;
1336
- percentage: number;
1337
- }
1338
-
1339
1423
  interface DiscountDetail {
1340
1424
  percentage: number;
1341
1425
  amount: number;
@@ -1370,6 +1454,7 @@ interface LineItem {
1370
1454
  discount: DiscountLineItem;
1371
1455
  fee: FeeLineItem;
1372
1456
  modifiers?: OrderLineItemModifier[];
1457
+ components?: OrderLineItemComponent[];
1373
1458
  totalTax: number;
1374
1459
  total: number;
1375
1460
  lineNetWithFees: number;
@@ -1482,10 +1567,12 @@ interface RefundedLineItem {
1482
1567
  images?: string[];
1483
1568
  fee: FeeLineItem;
1484
1569
  modifiers?: OrderLineItemModifier[];
1570
+ components?: OrderLineItemComponent[];
1485
1571
  }
1486
1572
  interface RefundItem {
1487
1573
  lineItems: RefundedLineItem[];
1488
1574
  customSales: RefundedCustomSale[];
1575
+ reservations?: OrderReservation[];
1489
1576
  cartFees: CartFeeItem[];
1490
1577
  tips: RefundedTipPayment[];
1491
1578
  refundedBy: string;
@@ -1498,6 +1585,9 @@ interface RefundItem {
1498
1585
  minorUnits?: number;
1499
1586
  }
1500
1587
 
1588
+ type ActiveOrderReservation = Omit<OrderReservation, 'taxes'> & {
1589
+ taxes?: Tax[];
1590
+ };
1501
1591
  type ActiveOrder = Enrich<Order, {
1502
1592
  _id: string;
1503
1593
  id?: string;
@@ -1521,6 +1611,7 @@ type ActiveOrder = Enrich<Order, {
1521
1611
  shipping: Address | null;
1522
1612
  lineItems: LineItem[];
1523
1613
  customSales: CustomSale[];
1614
+ reservations?: ActiveOrderReservation[];
1524
1615
  nonRevenueItems?: NonRevenueItem[];
1525
1616
  refund?: RefundItem[];
1526
1617
  signature?: string | null;
@@ -1571,6 +1662,145 @@ interface CartLineModifier {
1571
1662
  unitPrice: number;
1572
1663
  quantity: number;
1573
1664
  taxTableId?: string;
1665
+ componentIndex?: number;
1666
+ }
1667
+
1668
+ interface MeasurementUnit {
1669
+ unitId: string;
1670
+ companyId: string | null;
1671
+ familyId: string;
1672
+ name: string;
1673
+ abbreviation: string;
1674
+ ratioToBase: number;
1675
+ precision: number;
1676
+ systemKey?: string;
1677
+ sellable?: false;
1678
+ }
1679
+
1680
+ interface Inventory {
1681
+ warehouse: string;
1682
+ outletId: string;
1683
+ stock?: number | null;
1684
+ }
1685
+ interface ProductVariant {
1686
+ sku: string;
1687
+ price: number;
1688
+ salePrice: number;
1689
+ isOnSale: boolean;
1690
+ barcode?: string;
1691
+ costPrice?: number;
1692
+ manageStock: boolean;
1693
+ externalId: string;
1694
+ inventory?: Inventory[];
1695
+ allowBackorder?: boolean;
1696
+ images?: string[];
1697
+ attributes: {
1698
+ name: string;
1699
+ value?: string;
1700
+ }[];
1701
+ metadata?: {
1702
+ key: string;
1703
+ value: string;
1704
+ }[];
1705
+ _id: string;
1706
+ isDeleted?: boolean;
1707
+ currency?: CurrencyCode;
1708
+ minorUnits?: number;
1709
+ unitId?: string;
1710
+ unit?: MeasurementUnit;
1711
+ stockVariantId?: string;
1712
+ }
1713
+ interface FullProduct {
1714
+ _id: string;
1715
+ companyId?: string;
1716
+ externalId: string;
1717
+ taxTable: string;
1718
+ name: string;
1719
+ description?: string;
1720
+ shortDescription?: string;
1721
+ images?: string[];
1722
+ categories: {
1723
+ name: string;
1724
+ externalId: string;
1725
+ }[];
1726
+ attributes: {
1727
+ name: string;
1728
+ values: string[];
1729
+ }[];
1730
+ tags?: string[];
1731
+ supplier?: string;
1732
+ sku?: string;
1733
+ productType: ProductType;
1734
+ bookingRulesId?: string;
1735
+ composite?: Composite | null;
1736
+ variants: ProductVariant[];
1737
+ defaultVariantId?: string;
1738
+ modifiers?: ResolvedModifier[];
1739
+ minPrice?: number;
1740
+ maxPrice?: number;
1741
+ price?: number;
1742
+ status?: string;
1743
+ isDeleted?: boolean;
1744
+ currency?: CurrencyCode;
1745
+ minorUnits?: number;
1746
+ createdAt?: string;
1747
+ updatedAt?: string;
1748
+ }
1749
+ type ActiveFullProduct = FullProduct;
1750
+
1751
+ type CompositeItemUnavailable = 'deleted' | 'inactive' | 'hidden' | 'empty' | 'out_of_stock' | 'by_date' | 'fully_booked';
1752
+ interface CompositeChoice {
1753
+ productId: string;
1754
+ variantId: string;
1755
+ name: string;
1756
+ attributes: ProductVariant['attributes'];
1757
+ modifiers?: ResolvedModifier[];
1758
+ stockLeft?: number;
1759
+ unit?: MeasurementUnit;
1760
+ }
1761
+ interface CompositeItem {
1762
+ _id: string;
1763
+ variantId: string | null;
1764
+ categoryId: string | null;
1765
+ name: string;
1766
+ extraCharge: number;
1767
+ quantity: number;
1768
+ cost: number;
1769
+ unavailable: CompositeItemUnavailable | null;
1770
+ choices: CompositeChoice[];
1771
+ }
1772
+ interface CompositePart {
1773
+ _id: string;
1774
+ name: string | null;
1775
+ required: boolean;
1776
+ min: number;
1777
+ max: number;
1778
+ items: CompositeItem[];
1779
+ defaultPick: Pick<CompositePick, 'itemId' | 'variantId'> | null;
1780
+ }
1781
+ interface Composite {
1782
+ available: boolean;
1783
+ basePrice: number | null;
1784
+ fromPrice: number | null;
1785
+ parts: CompositePart[];
1786
+ }
1787
+ interface CompositePick {
1788
+ itemId: string;
1789
+ variantId: string;
1790
+ quantity?: number;
1791
+ modifiers?: ModifierSelection[];
1792
+ }
1793
+ interface CartLineComponent {
1794
+ partName?: string;
1795
+ productId: string;
1796
+ variantId: string;
1797
+ name: string;
1798
+ attributes?: ProductVariant['attributes'];
1799
+ quantity: number;
1800
+ unitPrice: number;
1801
+ taxTableId?: string;
1802
+ unit?: MeasurementUnit;
1803
+ stockVariantId?: string;
1574
1804
  }
1575
1805
 
1576
1806
  interface Discount {
@@ -1587,18 +1817,6 @@ interface CustomFee {
1587
1817
  taxRateId?: string;
1588
1818
  }
1589
1819
 
1590
- interface MeasurementUnit {
1591
- unitId: string;
1592
- companyId: string | null;
1593
- familyId: string;
1594
- name: string;
1595
- abbreviation: string;
1596
- ratioToBase: number;
1597
- precision: number;
1598
- systemKey?: string;
1599
- sellable?: false;
1600
- }
1601
-
1602
1820
  interface ActiveProduct {
1603
1821
  id: string;
1604
1822
  internalId: string;
@@ -1622,6 +1840,7 @@ interface ActiveProduct {
1622
1840
  fees?: CustomFee[];
1623
1841
  modifierSelections?: ModifierSelection[];
1624
1842
  modifiers?: CartLineModifier[];
1843
+ components?: CartLineComponent[];
1625
1844
  currency?: CurrencyCode;
1626
1845
  minorUnits?: number;
1627
1846
  isUnlimited?: boolean;
@@ -1633,6 +1852,13 @@ interface ActiveProduct {
1633
1852
  productType?: ProductType;
1634
1853
  }
1635
1854
 
1855
+ interface CartReservation extends OrderReservation {
1856
+ bookingId: string;
1857
+ expiresAt?: string;
1858
+ discounts?: Discount[];
1859
+ fees?: CustomFee[];
1860
+ }
1861
+
1636
1862
  interface ActiveCustomSales {
1637
1863
  id: string;
1638
1864
  name: string;
@@ -1657,11 +1883,13 @@ interface ActiveCart {
1657
1883
  taxes?: Tax[];
1658
1884
  total: number;
1659
1885
  subtotal: number;
1886
+ itemCount?: number;
1660
1887
  discount?: Discount;
1661
1888
  customFee?: CustomFee[];
1662
1889
  products: ActiveProduct[];
1663
1890
  customSales?: ActiveCustomSales[];
1664
1891
  nonRevenueItems?: NonRevenueItem[];
1892
+ reservations?: CartReservation[];
1665
1893
  remainingBalance?: number;
1666
1894
  amountToBeCharged: number;
1667
1895
  customer?: Partial<ActiveCustomer | null> | null;
@@ -1689,73 +1917,64 @@ interface ActiveCompany {
1689
1917
  settings?: unknown;
1690
1918
  }
1691
1919
 
1692
- interface Inventory {
1693
- warehouse: string;
1694
- outletId: string;
1695
- stock?: number | null;
1696
- }
1697
- interface ProductVariant {
1698
- sku: string;
1699
- price: number;
1700
- salePrice: number;
1701
- isOnSale: boolean;
1702
- barcode?: string;
1703
- costPrice?: number;
1704
- manageStock: boolean;
1705
- externalId: string;
1706
- inventory?: Inventory[];
1707
- allowBackorder?: boolean;
1708
- images?: string[];
1709
- attributes: {
1710
- name: string;
1711
- value?: string;
1712
- }[];
1713
- metadata?: {
1714
- key: string;
1715
- value: string;
1716
- }[];
1717
- _id: string;
1718
- isDeleted?: boolean;
1719
- currency?: CurrencyCode;
1720
- minorUnits?: number;
1721
- unitId?: string;
1722
- unit?: MeasurementUnit;
1723
- stockVariantId?: string;
1724
- }
1725
- interface FullProduct {
1726
- _id: string;
1727
- companyId?: string;
1728
- externalId: string;
1729
- taxTable: string;
1920
+ interface BookingSlotResource {
1921
+ resourceId: string;
1730
1922
  name: string;
1731
- description?: string;
1732
- shortDescription?: string;
1733
- images?: string[];
1734
- categories: {
1735
- name: string;
1736
- externalId: string;
1737
- }[];
1738
- attributes: {
1739
- name: string;
1740
- values: string[];
1741
- }[];
1742
- tags?: string[];
1743
- supplier?: string;
1744
- sku?: string;
1745
- productType: ProductType;
1746
- variants: ProductVariant[];
1747
- modifiers?: ResolvedModifier[];
1748
- minPrice?: number;
1749
- maxPrice?: number;
1750
- price?: number;
1751
- status?: string;
1752
- isDeleted?: boolean;
1753
- currency?: CurrencyCode;
1754
- minorUnits?: number;
1755
- createdAt?: string;
1756
- updatedAt?: string;
1923
+ capacity: number;
1924
+ booked: number;
1925
+ free: number;
1926
+ }
1927
+ interface BookingSlot {
1928
+ startAt: string;
1929
+ endAt: string;
1930
+ bufferEndAt: string;
1931
+ canStart: boolean;
1932
+ capacity: number;
1933
+ booked: number;
1934
+ free: number;
1935
+ resources: BookingSlotResource[];
1936
+ dayKey?: string;
1937
+ }
1938
+ interface BookingAvailability {
1939
+ productId: string;
1940
+ bookingRulesId: string;
1941
+ bookingType: BookingType;
1942
+ ratePeriod: BookingRatePeriod;
1943
+ minimumToRun?: number;
1944
+ minStay?: number;
1945
+ maxStay?: number;
1946
+ bookableUntil?: string;
1947
+ beyondWindow?: boolean;
1948
+ slots: BookingSlot[];
1949
+ timeZone?: string | null;
1950
+ days?: string[];
1951
+ }
1952
+ interface BookingResource {
1953
+ id: string;
1954
+ name: string;
1955
+ kind: BookingResourceKind;
1956
+ tag?: string;
1957
+ image?: string;
1958
+ }
1959
+ interface Booking {
1960
+ id: string;
1961
+ productId: string;
1962
+ resourceId: string;
1963
+ variantId?: string;
1964
+ startAt: string;
1965
+ endAt: string;
1966
+ bufferEndAt: string;
1967
+ status: ReservationStatus;
1968
+ expiresAt?: string;
1969
+ orderId?: string;
1970
+ customerId?: string;
1971
+ productName?: string;
1972
+ resourceName?: string;
1973
+ customerName?: string;
1974
+ outletId?: string;
1975
+ outletName?: string;
1976
+ timeZone?: string;
1757
1977
  }
1758
- type ActiveFullProduct = FullProduct;
1759
1978
 
1760
1979
  interface ActiveSession {
1761
1980
  id: string;
@@ -1921,6 +2140,7 @@ interface ProdModifierBreakdown {
1921
2140
  tax: number;
1922
2141
  taxTableId?: string;
1923
2142
  taxes?: OrderTax[];
2143
+ componentIndex?: number;
1924
2144
  }
1925
2145
  interface ProductTaxDetails {
1926
2146
  tax: number;
@@ -2275,4 +2495,4 @@ interface PubsubEventMessage {
2275
2495
  }
2276
2496
  type ServiceChannelMessage = PosBrainReadyMessage | HostHelloMessage | ServiceInitMessage | BootstrapMessage | TokenRefreshMessage | SelectionMessage | HostShutdownMessage | ReaderCapabilitiesMessage | RuntimeReadyMessage | HostNavigateMessage | SyncProgressMessage | DeviceOpRequestMessage | DeviceOpResponseMessage | PubsubTopicsRequestMessage | PubsubTopicsListMessage | PubsubSubscribeMessage | PubsubEventMessage;
2277
2497
 
2278
- export { type ActiveCart, type ActiveCartProduct, type ActiveCompany, type ActiveCustomSales, type ActiveCustomer, type ActiveEntityChanges, ActiveEntityType, type ActiveFullProduct, type ActiveOrder, type ActiveOutlet, type ActivePark, type ActiveProduct, type ActiveRefundOrder, type ActiveSession, type ActiveSplitPayment, type ActiveStation, type ActiveTaxDetails, type ActiveTimer, type ActiveUpdatedOrder, type ActiveUser, type ActiveUserRole, type Address, type Attribute, type AttributeEmbedded, type AttributeOption, type BaseDocument, type BaseEntity, type BaseTile, type BootstrapMessage, type CalculatedTaxDetails, type CartDiscountItem, type CartFeeItem, type CartFeeTaxEntry, type CartFeesDetails, type CartLineModifier, type CashPaymentSettings, type CashRoundingIncrement, type Category, type CompanyExtension, type CompanySettingsEavValue, type CompanySettingsEavValueType, type CustomExtension, type CustomFee, type CustomSale, type CustomSaleDetails, type CustomTable, type CustomTableField, type CustomTableMetadata, type CustomTableRow, type CustomTableValue, type Customer, type CustomerNote, type DeviceEnvAttribute, type DeviceEnvCategory, type DeviceEnvValue, type DeviceOpName, type DeviceOpRequestMessage, type DeviceOpResponseMessage, type Discount, type DiscountDetail, type DiscountLineItem, type Enrich, EnvironmentDataKeys, EnvironmentDataSubKeys, type FeeDetail, type FeeLineItem, type Flow, type FlowSettings, type FlowSettingsKey, type FlowWebApp, type FlowWebAppVersion, type FullProduct, type HostHelloMessage, type HostNavigateMessage, type HostNavigateTarget, type HostShutdownMessage, type Inventory, type LineItem, type Metadata, type MetadataItem, type ModifierChoiceSelection, type ModifierSelection, type ModifierSelectionType, type NonRevenueItem, type Note, type Order, type OrderCartDiscount, type OrderCartFee, type OrderCustomSale, type OrderCustomSaleDiscount, type OrderCustomSaleFee, type OrderLineItem, type OrderLineItemDiscount, type OrderLineItemFee, type OrderLineItemModifier, type OrderNote, type OrderPaymentMethod, type OrderPosData, type OrderRefund, type OrderRefundSummary, type OrderStateActor, type OrderStateActorType, type OrderStateConfig, type OrderStateEvent, type OrderStateEventTrigger, type OrderStateHistoryEntry, type OrderStateOperation, type OrderStatePair, type OrderSummary, type OrderSummaryPayments, type OrderTax, type OrderTip, type Outlet, type PaymentMethod, type PaymentResponse, type PaymentSetting, PaymentStatus, type PosBrainReadyMessage, type PosDataItem, type PriceModifierDetail, type PrinterDetails, ProcessorType, type ProdDiscountBreakdown, type ProdFeeBreakdown, type ProdModifierBreakdown, type Product, type ProductTaxDetails, type ProductVariant, type PubsubEventMessage, type PubsubSubscribeMessage, type PubsubTopicsListMessage, type PubsubTopicsRequestMessage, type Reader, type ReaderAvailability, type ReaderCapabilities, type ReaderCapabilitiesMessage, type Refund, type RefundCartDiscount, type RefundDiscount, type RefundItem, type RefundItemDiscount, type RefundLineItem, type RefundPayment, type RefundProcessingStatus, type RefundSummary, type RefundTip, type RefundedCustomSale, type RefundedLineItem, type RefundedTipPayment, type ResolvedModifier, type ResolvedModifierChoice, type Role, type RolePermission, type RuntimeReadyMessage, type SelectionContext, type SelectionFlowContext, type SelectionMessage, type SelectionRoleContext, type ServiceChannelMessage, type ServiceChannelMessageType, type ServiceInitMessage, type Session, type SessionClosingAmounts, type SmartGridSetting, type SmartGridSettings, type SmartGridSettingsData, type Station, type StripeAccount, type Summary, type SummaryPayments, type SyncProgressMessage, type Tax, type TaxRate, type TaxRateValue, type TaxTable, type TaxTableActive, type TaxTableRate, type TileGrid, type TimeClockEntry, type TimeClockEntryStatus, type Tip, type TipData, type TipPayment, type TipsDetails, type TokenRefreshMessage, type TopicDefinitionWire, type TopicEventWire, type Transaction, type TransactionPaymentData, type User, type UserType, type Variant, type VariantInventory };
2498
+ export { type ActiveCart, type ActiveCartProduct, type ActiveCompany, type ActiveCustomSales, type ActiveCustomer, type ActiveEntityChanges, ActiveEntityType, type ActiveFullProduct, type ActiveOrder, type ActiveOrderReservation, type ActiveOutlet, type ActivePark, type ActiveProduct, type ActiveRefundOrder, type ActiveSession, type ActiveSplitPayment, type ActiveStation, type ActiveTaxDetails, type ActiveTimer, type ActiveUpdatedOrder, type ActiveUser, type ActiveUserRole, type Address, type Attribute, type AttributeEmbedded, type AttributeOption, type BaseDocument, type BaseEntity, type BaseTile, type Booking, type BookingAvailability, type BookingResource, type BookingSlot, type BookingSlotResource, type BootstrapMessage, type CalculatedTaxDetails, type CartDiscountItem, type CartFeeItem, type CartFeeTaxEntry, type CartFeesDetails, type CartLineComponent, type CartLineModifier, type CartReservation, type CashPaymentSettings, type CashRoundingIncrement, type Category, type CompanyExtension, type CompanySettingsEavValue, type CompanySettingsEavValueType, type Composite, type CompositeChoice, type CompositeItem, type CompositeItemUnavailable, type CompositePart, type CompositePick, type CustomExtension, type CustomFee, type CustomSale, type CustomSaleDetails, type CustomTable, type CustomTableField, type CustomTableMetadata, type CustomTableRow, type CustomTableValue, type Customer, type CustomerNote, type DeviceEnvAttribute, type DeviceEnvCategory, type DeviceEnvValue, type DeviceOpName, type DeviceOpRequestMessage, type DeviceOpResponseMessage, type Discount, type DiscountDetail, type DiscountLineItem, type Enrich, EnvironmentDataKeys, EnvironmentDataSubKeys, type FeeDetail, type FeeLineItem, type Flow, type FlowSettings, type FlowSettingsKey, type FlowWebApp, type FlowWebAppVersion, type FullProduct, type HostHelloMessage, type HostNavigateMessage, type HostNavigateTarget, type HostShutdownMessage, type Inventory, type LineItem, type Metadata, type MetadataItem, type ModifierChoiceSelection, type ModifierSelection, type ModifierSelectionType, type NonRevenueItem, type Note, type Order, type OrderCartDiscount, type OrderCartFee, type OrderCustomSale, type OrderCustomSaleDiscount, type OrderCustomSaleFee, type OrderLineItem, type OrderLineItemComponent, type OrderLineItemDiscount, type OrderLineItemFee, type OrderLineItemModifier, type OrderNote, type OrderPaymentMethod, type OrderPosData, type OrderRefund, type OrderRefundSummary, type OrderReservation, type OrderStateActor, type OrderStateActorType, type OrderStateConfig, type OrderStateEvent, type OrderStateEventTrigger, type OrderStateHistoryEntry, type OrderStateOperation, type OrderStatePair, type OrderSummary, type OrderSummaryPayments, type OrderTax, type OrderTip, type Outlet, type PaymentMethod, type PaymentResponse, type PaymentSetting, PaymentStatus, type PosBrainReadyMessage, type PosDataItem, type PriceModifierDetail, type PrinterDetails, ProcessorType, type ProdDiscountBreakdown, type ProdFeeBreakdown, type ProdModifierBreakdown, type Product, type ProductTaxDetails, type ProductVariant, type PubsubEventMessage, type PubsubSubscribeMessage, type PubsubTopicsListMessage, type PubsubTopicsRequestMessage, type Reader, type ReaderAvailability, type ReaderCapabilities, type ReaderCapabilitiesMessage, type Refund, type RefundCartDiscount, type RefundDiscount, type RefundItem, type RefundItemDiscount, type RefundLineItem, type RefundPayment, type RefundProcessingStatus, type RefundSummary, type RefundTip, type RefundedCustomSale, type RefundedLineItem, type RefundedTipPayment, type ResolvedModifier, type ResolvedModifierChoice, type Role, type RolePermission, type RuntimeReadyMessage, type SelectionContext, type SelectionFlowContext, type SelectionMessage, type SelectionRoleContext, type ServiceChannelMessage, type ServiceChannelMessageType, type ServiceInitMessage, type Session, type SessionClosingAmounts, type SmartGridSetting, type SmartGridSettings, type SmartGridSettingsData, type Station, type StripeAccount, type Summary, type SummaryPayments, type SyncProgressMessage, type Tax, type TaxRate, type TaxRateValue, type TaxTable, type TaxTableActive, type TaxTableRate, type TileGrid, type TimeClockEntry, type TimeClockEntryStatus, type Tip, type TipData, type TipPayment, type TipsDetails, type TokenRefreshMessage, type TopicDefinitionWire, type TopicEventWire, type Transaction, type TransactionPaymentData, type User, type UserType, type Variant, type VariantInventory };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../pos-types/index.ts","../../pos-types/active/PaymentStatus.ts","../../pos-types/active/ProcessorType.ts","../../pos-types/active/pos-runtime.ts"],"sourcesContent":["// @final-commerce/common/pos-types\n//\n// Public POS contract types for Final Commerce terminals — consumed by render\n// and command-frame. These mirror the public (wire) subset of data-layer's\n// Mongoose schemas (option D: manually mirrored, no data-layer dependency),\n// public-scrubbed: `_id`→`id`, `__v`/`_class`/`isDeleted` omitted, ObjectId\n// refs stringified, dates as ISO 8601 strings, secrets dropped.\n//\n// Shared primitives (CurrencyCode and the other enums, the order-state-machine\n// engine types) live elsewhere in this package — import them from\n// `@final-commerce/common` directly.\n\n// Type-level helpers (e.g. `Enrich` — builds Active* types from wire bases).\nexport type { Enrich } from './util';\n\n// Public bases for entities (BaseDocument = no companyId; BaseEntity adds it).\nexport type { BaseDocument, BaseEntity } from './base';\n\n// Embedded sub-document shapes.\nexport * from './embedded';\n\n// Entity shapes (wire).\nexport * from './entities';\n\n// Enriched (Render in-memory) `Active*` layer.\nexport * from './active';\n\n// Seam contract — the frozen station-home (HOST) ↔ pos-brain (runtime)\n// interface: selection-context snapshot + ServiceChannel message union.\nexport * from './seam';\n","export enum PaymentStatus {\n FAILED = 'failed',\n SUCCESS = 'success',\n CANCELED = 'canceled',\n IN_PROGRESS = 'inProgress',\n}\n","// Payment processor / tender type for a POS payment. Shared by Render and\n// command-frame; the string values are the wire contract used by orders.\nexport enum ProcessorType {\n FINAL_PAY = 'Terminal',\n TAP_TO_PAY = 'TapToPay',\n MOTO = 'Moto',\n CLOUD = 'Cloud',\n /**\n * @deprecated No payment path stamps this. Bluetooth-reader sales stamp `FINAL_PAY`\n * ('Terminal') as their processor; station-home reuses this member only for the\n * unrelated reader-connectionType UI field, not for an order/payment record.\n */\n BLUETOOTH = 'Bluetooth',\n CASH = 'Cash',\n CUSTOM_PAY = 'CustomPay',\n VENDARA = 'Vendara',\n /** Extension-controlled payment (e.g. gift card redeem); order uses paymentType `redeem`. */\n REDEEM = 'Redeem',\n /** Extension-controlled integration (e.g. Stripe-like); order uses paymentType `integration`. */\n INTEGRATION = 'Integration',\n /**\n * Written by hub-api's payment-link settle as the payment method's processor label — the\n * channel (like Moto/Terminal/Cloud), not the PSP brand (that lives in `paymentData.processor`).\n * Card-not-present for receipt purposes.\n */\n PAYMENT_LINK = 'PaymentLink',\n}\n","// Render in-memory POS runtime support types (tax engine, tips, cash, active-entity discriminator, environment data, flow) — the PaymentStatus-dependent active types (ActiveSplitPayment/RefundProcessingStatus/ActiveRefundOrder) remain in Render until PaymentStatus moves.\n\nimport type { CartFeeTaxEntry } from './CartFee';\nimport type { OrderTax } from '../embedded/OrderTax';\n\ninterface TaxesDetails {\n [id: string]: {\n amount: number;\n percentage: number;\n name: string;\n taxTableName: string;\n taxTableId: string;\n compounding?: boolean;\n priority?: number;\n };\n}\n\nexport interface ProdDiscountBreakdown {\n amount: number;\n percentage: number;\n label?: string;\n}\n\nexport interface ProdFeeBreakdown {\n amount: number;\n percentage: number;\n label?: string;\n tax: number;\n taxTableId?: string;\n taxRateId?: string;\n applyTaxes: boolean;\n}\n\n/**\n * One modifier row after the tax engine ran (FT-0010): the cart row extended by the\n * line quantity, plus the tax computed on it. buildOrderFromCart copies these onto\n * OrderLineItem.modifiers[] as { …row, total: amount, totalTax: tax }.\n */\nexport interface ProdModifierBreakdown {\n modifierId: string;\n modifierName: string;\n choiceId: string;\n choiceName: string;\n /** Display label from the cart row — \"{modifierName} - {choiceName}\". Not persisted on the order row. */\n label?: string;\n unitPrice: number;\n quantity: number;\n /** unitPrice × quantity × line.quantity, in minor units. */\n amount: number;\n tax: number;\n /** Engine INPUT (from the cart row): which table taxes this row. Not persisted on the order row. */\n taxTableId?: string;\n /** Engine OUTPUT: per-rate breakdown of `tax` — becomes OrderLineItemModifier.taxes. */\n taxes?: OrderTax[];\n}\n\nexport interface ProductTaxDetails {\n tax: number;\n prodDiscount: number;\n /** Line-level item discount in minor units (originalLineTotal − lineDisplayBase); drift-free, matches the value written to orders/refunds. */\n prodDiscountTotal: number;\n cartDiscount: number;\n prodDiscountPercentage: number;\n cartDiscountPercentage: number;\n taxes: TaxesDetails;\n fee?: number;\n feeTax?: number;\n feePercentage?: number;\n feeLabel?: string;\n cartFee?: number;\n cartFeeTax?: number;\n cartFeePercentage?: number;\n cartFeeLabel?: string;\n feeTaxTableId?: string;\n cartFeeTaxTableId?: string;\n prodDiscountLabel?: string;\n /** Staging: line total including fee for discount allocation */\n lineDisplayWithFee?: number;\n cartDiscountAllocated?: number;\n lineAfterCartDiscount?: number;\n computedLineTotal?: number;\n computedLineTax?: number;\n feeDisplay?: number;\n prodDiscounts?: ProdDiscountBreakdown[];\n fees?: ProdFeeBreakdown[];\n /** Staging: (price × qty) − sum(itemDiscounts) + sum(itemFees) + sum(modifiers) */\n lineNetWithFees?: number;\n /** Σ modifier rows extended by the line quantity — fee-level money, joins the line after the product discount. */\n modifierDisplay?: number;\n /** Tax computed on the modifier rows (product's tax table unless a row names its own). Inside computedLineTax. */\n modifierTax?: number;\n modifiers?: ProdModifierBreakdown[];\n}\n\nexport interface CustomSaleDetails {\n tax: number;\n cartDiscount: number;\n cartDiscountPercentage: number;\n taxes: TaxesDetails;\n cartFee?: number;\n cartFeeTax?: number;\n cartFeePercentage?: number;\n cartFeeLabel?: string;\n cartFeeTaxTableId?: string;\n applyTaxes?: boolean;\n /** Staging: for discount allocation and order total */\n lineDisplayWithFee?: number;\n cartDiscountAllocated?: number;\n lineAfterCartDiscount?: number;\n computedLineTotal?: number;\n computedLineTax?: number;\n}\n\nexport interface CartFeesDetails {\n name: string;\n amount: number;\n percentage: number;\n feeTax: number;\n taxTableId: string;\n taxName: string;\n /** Per-rate breakdown (gst, hst, etc.) so order/refund summary can show correct amounts per rate. */\n taxes?: CartFeeTaxEntry[];\n}\n\nexport interface CalculatedTaxDetails {\n tax: number;\n total: number;\n subtotal: number;\n orderSubtotal: number;\n totalDiscount: number;\n /** Staging: cart discount amount and subtotal after discount */\n discountAmount?: number;\n subtotalAfterDiscount?: number;\n products: { [id: string]: ProductTaxDetails };\n customSales: { [id: string]: CustomSaleDetails };\n totalTaxes: TaxesDetails;\n cartFees: CartFeesDetails[];\n}\n\nexport interface TipData {\n value: number;\n label?: string;\n isPercent: boolean;\n}\n\nexport interface TipsDetails {\n total: number;\n tips: TipData[];\n currency?: string;\n noTipLabel?: string;\n customTipLabel?: string;\n selectedTip?: TipData;\n cashChange?: number;\n enabled?: boolean;\n}\n\nexport type CashRoundingIncrement = '' | '0.05' | '0.10' | '0.25' | '0.50' | '1.00';\n\nexport interface CashPaymentSettings {\n cashRounding: CashRoundingIncrement;\n}\n\nexport enum ActiveEntityType {\n TAX = 'tax',\n CART = 'cart',\n USER = 'user',\n ORDER = 'order',\n PRODUCT = 'product',\n FULL_PRODUCT = 'fullProduct',\n CUSTOMER = 'customer',\n OUTLET = 'outlet',\n CHANGES = 'changes',\n SPLIT_PAYMENT = 'splitPayment',\n CALCULATED_TAX = 'calculatedTaxDetails',\n TIPS_DETAILS = 'tipsDetails',\n CASH_PAYMENT_SETTINGS = 'cashPaymentSettings',\n REFUND_DETAILS = 'refundDetails',\n COMPANY = 'company',\n IS_AUTHENTICATED = 'isAuthenticated',\n TIMER = 'timer',\n UPDATED_ORDER_ACTIONS = 'updatedOrderActions', //FOR ORDER UPDATE VIA ACTION\n BUILD = 'activeBuild',\n BUILD_UPDATE_INFO = 'buildUpdateInfo',\n GLOBAL_BLOCKS = 'globalBlocks',\n ACTIVE_STATION = 'activeStation',\n SMART_GRID = 'smartGrid',\n CUSTOM_SALE = 'customSale',\n ACTIVE_FLOW = 'activeFlow',\n ACTIVE_FLOW_VERSION_URL = 'activeFlowVersionUrl',\n}\n\nexport enum EnvironmentDataKeys {\n NETWORK_INFO = 'Network Info',\n DISPLAY = 'Display',\n APP_INFO = 'App Info',\n LOCATION = 'Location',\n DEVICE_INFO = 'Device Info',\n SYSTEM_HEALTH = 'System Health',\n DEVELOPER = 'Developer',\n PERIPHERAL_DEVICES = 'Peripheral Devices',\n}\n\nexport enum EnvironmentDataSubKeys {\n DEVICE_STATUS = 'Device Status',\n LAST_ONLINE_TIME = 'Last Online Time',\n NETWORK_TYPE = 'Network Type',\n SIGNAL_STRENGTH = 'Signal Strength',\n NETWORK_NAME = 'Network name',\n IP_ADDRESS = 'IP Address',\n\n SCREEN_RESOLUTION = 'Screen Resolution',\n PIXEL_RATIO = 'Pixel Ratio',\n ORIENTATION = 'Orientation',\n\n APP_VERSION = 'App Version',\n BUILD_NUMBER = 'Build Number',\n BUNDLE_ID = 'Bundle ID',\n INSTALLED = 'Installed',\n LAST_UPDATED = 'Last Updated',\n\n LOCATION_ACCESS = 'Location Access',\n CURRENT_LOCATION = 'Current Location',\n\n MODEL = 'Model',\n SYSTEM_VERSION = 'System Version',\n FIRMWARE_VERSION = 'Firmware Version',\n SERIAL_NUMBER = 'Serial Number',\n IMEI_NUMBER = 'IMEI Number',\n MAC_ADDRESS = 'MAC Address',\n ACTIVATION_TIME = 'Activation Time',\n TIME_ZONE = 'Time Zone',\n DEVICE_LANGUAGE = 'Device Language',\n\n TOTAL_RAM = 'Total RAM',\n BATTERY_LEVEL = 'Battery Level',\n BATTERY_STATUS = 'Battery Status',\n LOW_POWER_MODE = 'Low Power Mode',\n AVERAGE_CPU_USAGE = 'Average CPU Usage',\n CPU_SPEED = 'CPU Speed',\n AVAILABLE_STORAGE = 'Available Storage',\n TOTAL_STORAGE = 'Total Storage',\n UPTIME = 'Uptime',\n\n FLUTTER_VERSION = 'Flutter Version',\n DART_VERSION = 'Dart Version',\n ENVIRONMENT = 'Environment',\n\n CONNECTED_PRINTER = 'Connected Printer',\n}\n\nexport interface ActiveTimer {\n initialTimer: string;\n currentTimer: string;\n}\n\nexport interface ActiveUpdatedOrder {\n customerNote?: string;\n status?: string;\n}\n\nexport interface TaxTableActive {\n name: string;\n country: string;\n postcode: string;\n rate: number;\n priority: number;\n compounding: boolean;\n id: string;\n taxTableName: string;\n taxTableId: string;\n}\n\nexport interface ActiveTaxDetails {\n taxIncl?: boolean;\n tables: { [name: string]: TaxTableActive[] };\n}\n\nexport interface ActiveEntityChanges {\n productInCart: string[] | null; //array of ids of product in cart\n numberOfProductsInCart: number;\n cartValue: number;\n user: string | null;\n customer: string | null;\n order: string | null;\n role: string | null;\n product: string | null;\n}\n\nexport interface Flow {\n _id: string;\n /**\n * Stable ObjectId hub-api keys FlowSettings / PaymentSettings under.\n * Set for AI flows resolved Miami-direct (station-home adapts the service\n * projection onto this shape); absent on regular flows, where `_id` is the\n * settings key. Settings lookups should key by `hubId ?? _id`.\n */\n hubId?: string;\n companyId: string;\n title: string;\n description: string;\n template: string;\n createdBy: string;\n flowData: Record<string, any>;\n isDeleted: boolean;\n createdAt: string;\n updatedAt: string;\n previewImage: string;\n currentVersion: string;\n webAppId: string;\n}\n"],"mappings":"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","names":["PaymentStatus","ProcessorType","ActiveEntityType","EnvironmentDataKeys","EnvironmentDataSubKeys"]}
1
+ {"version":3,"sources":["../../pos-types/index.ts","../../pos-types/active/PaymentStatus.ts","../../pos-types/active/ProcessorType.ts","../../pos-types/active/pos-runtime.ts"],"sourcesContent":["// @final-commerce/common/pos-types\n//\n// Public POS contract types for Final Commerce terminals — consumed by render\n// and command-frame. These mirror the public (wire) subset of data-layer's\n// Mongoose schemas (option D: manually mirrored, no data-layer dependency),\n// public-scrubbed: `_id`→`id`, `__v`/`_class`/`isDeleted` omitted, ObjectId\n// refs stringified, dates as ISO 8601 strings, secrets dropped.\n//\n// Shared primitives (CurrencyCode and the other enums, the order-state-machine\n// engine types) live elsewhere in this package — import them from\n// `@final-commerce/common` directly.\n\n// Type-level helpers (e.g. `Enrich` — builds Active* types from wire bases).\nexport type { Enrich } from './util';\n\n// Public bases for entities (BaseDocument = no companyId; BaseEntity adds it).\nexport type { BaseDocument, BaseEntity } from './base';\n\n// Embedded sub-document shapes.\nexport * from './embedded';\n\n// Entity shapes (wire).\nexport * from './entities';\n\n// Enriched (Render in-memory) `Active*` layer.\nexport * from './active';\n\n// Seam contract — the frozen station-home (HOST) ↔ pos-brain (runtime)\n// interface: selection-context snapshot + ServiceChannel message union.\nexport * from './seam';\n","export enum PaymentStatus {\n FAILED = 'failed',\n SUCCESS = 'success',\n CANCELED = 'canceled',\n IN_PROGRESS = 'inProgress',\n}\n","// Payment processor / tender type for a POS payment. Shared by Render and\n// command-frame; the string values are the wire contract used by orders.\nexport enum ProcessorType {\n FINAL_PAY = 'Terminal',\n TAP_TO_PAY = 'TapToPay',\n MOTO = 'Moto',\n CLOUD = 'Cloud',\n /**\n * @deprecated No payment path stamps this. Bluetooth-reader sales stamp `FINAL_PAY`\n * ('Terminal') as their processor; station-home reuses this member only for the\n * unrelated reader-connectionType UI field, not for an order/payment record.\n */\n BLUETOOTH = 'Bluetooth',\n CASH = 'Cash',\n CUSTOM_PAY = 'CustomPay',\n VENDARA = 'Vendara',\n /** Extension-controlled payment (e.g. gift card redeem); order uses paymentType `redeem`. */\n REDEEM = 'Redeem',\n /** Extension-controlled integration (e.g. Stripe-like); order uses paymentType `integration`. */\n INTEGRATION = 'Integration',\n /**\n * Written by hub-api's payment-link settle as the payment method's processor label — the\n * channel (like Moto/Terminal/Cloud), not the PSP brand (that lives in `paymentData.processor`).\n * Card-not-present for receipt purposes.\n */\n PAYMENT_LINK = 'PaymentLink',\n}\n","// Render in-memory POS runtime support types (tax engine, tips, cash, active-entity discriminator, environment data, flow) — the PaymentStatus-dependent active types (ActiveSplitPayment/RefundProcessingStatus/ActiveRefundOrder) remain in Render until PaymentStatus moves.\n\nimport type { CartFeeTaxEntry } from './CartFee';\nimport type { OrderTax } from '../embedded/OrderTax';\n\ninterface TaxesDetails {\n [id: string]: {\n amount: number;\n percentage: number;\n name: string;\n taxTableName: string;\n taxTableId: string;\n compounding?: boolean;\n priority?: number;\n };\n}\n\nexport interface ProdDiscountBreakdown {\n amount: number;\n percentage: number;\n label?: string;\n}\n\nexport interface ProdFeeBreakdown {\n amount: number;\n percentage: number;\n label?: string;\n tax: number;\n taxTableId?: string;\n taxRateId?: string;\n applyTaxes: boolean;\n}\n\n/**\n * One modifier row after the tax engine ran (FT-0010): the cart row extended by the\n * line quantity, plus the tax computed on it. buildOrderFromCart copies these onto\n * OrderLineItem.modifiers[] as { …row, total: amount, totalTax: tax }.\n */\nexport interface ProdModifierBreakdown {\n modifierId: string;\n modifierName: string;\n choiceId: string;\n choiceName: string;\n /** Display label from the cart row — \"{modifierName} - {choiceName}\". Not persisted on the order row. */\n label?: string;\n unitPrice: number;\n quantity: number;\n /** unitPrice × quantity × line.quantity, in minor units. */\n amount: number;\n tax: number;\n /** Engine INPUT (from the cart row): which table taxes this row. Not persisted on the order row. */\n taxTableId?: string;\n /** Engine OUTPUT: per-rate breakdown of `tax` — becomes OrderLineItemModifier.taxes. */\n taxes?: OrderTax[];\n /** From the cart row: the composite component it applies to, so rows arrive split per component (B28). */\n componentIndex?: number;\n}\n\nexport interface ProductTaxDetails {\n tax: number;\n prodDiscount: number;\n /** Line-level item discount in minor units (originalLineTotal − lineDisplayBase); drift-free, matches the value written to orders/refunds. */\n prodDiscountTotal: number;\n cartDiscount: number;\n prodDiscountPercentage: number;\n cartDiscountPercentage: number;\n taxes: TaxesDetails;\n fee?: number;\n feeTax?: number;\n feePercentage?: number;\n feeLabel?: string;\n cartFee?: number;\n cartFeeTax?: number;\n cartFeePercentage?: number;\n cartFeeLabel?: string;\n feeTaxTableId?: string;\n cartFeeTaxTableId?: string;\n prodDiscountLabel?: string;\n /** Staging: line total including fee for discount allocation */\n lineDisplayWithFee?: number;\n cartDiscountAllocated?: number;\n lineAfterCartDiscount?: number;\n computedLineTotal?: number;\n computedLineTax?: number;\n feeDisplay?: number;\n prodDiscounts?: ProdDiscountBreakdown[];\n fees?: ProdFeeBreakdown[];\n /** Staging: (price × qty) − sum(itemDiscounts) + sum(itemFees) + sum(modifiers) */\n lineNetWithFees?: number;\n /** Σ modifier rows extended by the line quantity — fee-level money, joins the line after the product discount. */\n modifierDisplay?: number;\n /** Tax computed on the modifier rows (product's tax table unless a row names its own). Inside computedLineTax. */\n modifierTax?: number;\n modifiers?: ProdModifierBreakdown[];\n}\n\nexport interface CustomSaleDetails {\n tax: number;\n cartDiscount: number;\n cartDiscountPercentage: number;\n taxes: TaxesDetails;\n cartFee?: number;\n cartFeeTax?: number;\n cartFeePercentage?: number;\n cartFeeLabel?: string;\n cartFeeTaxTableId?: string;\n applyTaxes?: boolean;\n /** Staging: for discount allocation and order total */\n lineDisplayWithFee?: number;\n cartDiscountAllocated?: number;\n lineAfterCartDiscount?: number;\n computedLineTotal?: number;\n computedLineTax?: number;\n}\n\nexport interface CartFeesDetails {\n name: string;\n amount: number;\n percentage: number;\n feeTax: number;\n taxTableId: string;\n taxName: string;\n /** Per-rate breakdown (gst, hst, etc.) so order/refund summary can show correct amounts per rate. */\n taxes?: CartFeeTaxEntry[];\n}\n\nexport interface CalculatedTaxDetails {\n tax: number;\n total: number;\n subtotal: number;\n orderSubtotal: number;\n totalDiscount: number;\n /** Staging: cart discount amount and subtotal after discount */\n discountAmount?: number;\n subtotalAfterDiscount?: number;\n products: { [id: string]: ProductTaxDetails };\n customSales: { [id: string]: CustomSaleDetails };\n totalTaxes: TaxesDetails;\n cartFees: CartFeesDetails[];\n}\n\nexport interface TipData {\n value: number;\n label?: string;\n isPercent: boolean;\n}\n\nexport interface TipsDetails {\n total: number;\n tips: TipData[];\n currency?: string;\n noTipLabel?: string;\n customTipLabel?: string;\n selectedTip?: TipData;\n cashChange?: number;\n enabled?: boolean;\n}\n\nexport type CashRoundingIncrement = '' | '0.05' | '0.10' | '0.25' | '0.50' | '1.00';\n\nexport interface CashPaymentSettings {\n cashRounding: CashRoundingIncrement;\n}\n\nexport enum ActiveEntityType {\n TAX = 'tax',\n CART = 'cart',\n USER = 'user',\n ORDER = 'order',\n PRODUCT = 'product',\n FULL_PRODUCT = 'fullProduct',\n CUSTOMER = 'customer',\n OUTLET = 'outlet',\n CHANGES = 'changes',\n SPLIT_PAYMENT = 'splitPayment',\n CALCULATED_TAX = 'calculatedTaxDetails',\n TIPS_DETAILS = 'tipsDetails',\n CASH_PAYMENT_SETTINGS = 'cashPaymentSettings',\n REFUND_DETAILS = 'refundDetails',\n COMPANY = 'company',\n IS_AUTHENTICATED = 'isAuthenticated',\n TIMER = 'timer',\n UPDATED_ORDER_ACTIONS = 'updatedOrderActions', //FOR ORDER UPDATE VIA ACTION\n BUILD = 'activeBuild',\n BUILD_UPDATE_INFO = 'buildUpdateInfo',\n GLOBAL_BLOCKS = 'globalBlocks',\n ACTIVE_STATION = 'activeStation',\n SMART_GRID = 'smartGrid',\n CUSTOM_SALE = 'customSale',\n ACTIVE_FLOW = 'activeFlow',\n ACTIVE_FLOW_VERSION_URL = 'activeFlowVersionUrl',\n}\n\nexport enum EnvironmentDataKeys {\n NETWORK_INFO = 'Network Info',\n DISPLAY = 'Display',\n APP_INFO = 'App Info',\n LOCATION = 'Location',\n DEVICE_INFO = 'Device Info',\n SYSTEM_HEALTH = 'System Health',\n DEVELOPER = 'Developer',\n PERIPHERAL_DEVICES = 'Peripheral Devices',\n}\n\nexport enum EnvironmentDataSubKeys {\n DEVICE_STATUS = 'Device Status',\n LAST_ONLINE_TIME = 'Last Online Time',\n NETWORK_TYPE = 'Network Type',\n SIGNAL_STRENGTH = 'Signal Strength',\n NETWORK_NAME = 'Network name',\n IP_ADDRESS = 'IP Address',\n\n SCREEN_RESOLUTION = 'Screen Resolution',\n PIXEL_RATIO = 'Pixel Ratio',\n ORIENTATION = 'Orientation',\n\n APP_VERSION = 'App Version',\n BUILD_NUMBER = 'Build Number',\n BUNDLE_ID = 'Bundle ID',\n INSTALLED = 'Installed',\n LAST_UPDATED = 'Last Updated',\n\n LOCATION_ACCESS = 'Location Access',\n CURRENT_LOCATION = 'Current Location',\n\n MODEL = 'Model',\n SYSTEM_VERSION = 'System Version',\n FIRMWARE_VERSION = 'Firmware Version',\n SERIAL_NUMBER = 'Serial Number',\n IMEI_NUMBER = 'IMEI Number',\n MAC_ADDRESS = 'MAC Address',\n ACTIVATION_TIME = 'Activation Time',\n TIME_ZONE = 'Time Zone',\n DEVICE_LANGUAGE = 'Device Language',\n\n TOTAL_RAM = 'Total RAM',\n BATTERY_LEVEL = 'Battery Level',\n BATTERY_STATUS = 'Battery Status',\n LOW_POWER_MODE = 'Low Power Mode',\n AVERAGE_CPU_USAGE = 'Average CPU Usage',\n CPU_SPEED = 'CPU Speed',\n AVAILABLE_STORAGE = 'Available Storage',\n TOTAL_STORAGE = 'Total Storage',\n UPTIME = 'Uptime',\n\n FLUTTER_VERSION = 'Flutter Version',\n DART_VERSION = 'Dart Version',\n ENVIRONMENT = 'Environment',\n\n CONNECTED_PRINTER = 'Connected Printer',\n}\n\nexport interface ActiveTimer {\n initialTimer: string;\n currentTimer: string;\n}\n\nexport interface ActiveUpdatedOrder {\n customerNote?: string;\n status?: string;\n}\n\nexport interface TaxTableActive {\n name: string;\n country: string;\n postcode: string;\n rate: number;\n priority: number;\n compounding: boolean;\n id: string;\n taxTableName: string;\n taxTableId: string;\n}\n\nexport interface ActiveTaxDetails {\n taxIncl?: boolean;\n tables: { [name: string]: TaxTableActive[] };\n}\n\nexport interface ActiveEntityChanges {\n productInCart: string[] | null; //array of ids of product in cart\n numberOfProductsInCart: number;\n cartValue: number;\n user: string | null;\n customer: string | null;\n order: string | null;\n role: string | null;\n product: string | null;\n}\n\nexport interface Flow {\n _id: string;\n /**\n * Stable ObjectId hub-api keys FlowSettings / PaymentSettings under.\n * Set for AI flows resolved Miami-direct (station-home adapts the service\n * projection onto this shape); absent on regular flows, where `_id` is the\n * settings key. Settings lookups should key by `hubId ?? _id`.\n */\n hubId?: string;\n companyId: string;\n title: string;\n description: string;\n template: string;\n createdBy: string;\n flowData: Record<string, any>;\n isDeleted: boolean;\n createdAt: string;\n updatedAt: string;\n previewImage: string;\n currentVersion: string;\n webAppId: string;\n}\n"],"mappings":"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","names":["PaymentStatus","ProcessorType","ActiveEntityType","EnvironmentDataKeys","EnvironmentDataSubKeys"]}