@tallyui/pos 3.5.3 → 3.7.0

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.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { Money, TaxRounding, StoreSettings, TallyConnector, SyncContext, StoreSettingsChoice, StoreSettingsChoices, ProductTraits, ProductCategory, TraitContext, OrderCreateLine, PaymentMethodKind, CommandServerRefs, CommandWarning, CommandError, ServerCapabilities, OrderCreateEnvelope, RegisterCommandType, RegisterCommandResult, VariantSummary, CommandResult, AnyCommandEnvelope, CommandEnvelope, OrderCreatePayload, RegisterCommandEnvelope } from '@tallyui/core';
3
+ import { Money, TaxRounding, StoreSettings, TallyConnector, SyncContext, StoreSettingsChoice, StoreSettingsChoices, ProductTraits, ProductCategory, TraitContext, OrderCreateLine, PaymentMethodKind, CommandServerRefs, CommandWarning, CommandError, ServerCapabilities, OrderCreateEnvelope, RegisterCommandType, RegisterCommandResult, RegisterSessionTransitionPayload, VariantSummary, CommandResult, AnyCommandEnvelope, CommandEnvelope, OrderCreatePayload, RegisterCommandEnvelope } from '@tallyui/core';
4
4
  export { getProductStock, withStockOverlay } from '@tallyui/core';
5
5
  export { countFresh, readFresh, watchFresh } from '@tallyui/core/rxdb';
6
6
  import * as rxdb from 'rxdb';
@@ -534,6 +534,28 @@ declare function useParkedSales(drafts: RxCollection | undefined): {
534
534
  discard: (id: string) => Promise<void>;
535
535
  };
536
536
 
537
+ /** WCPOS receipt data schema version these blocks follow (wiki: fiscal groundwork, receipt identity and QR §2). */
538
+ declare const RECEIPT_SCHEMA_VERSION = "1.4.0";
539
+ /** 1.4 `software`: which software produced the receipt. */
540
+ interface ReceiptSoftware {
541
+ name: string;
542
+ plugin_version: string;
543
+ app_version: string;
544
+ app_build: string;
545
+ platform: string;
546
+ }
547
+ /** 1.4 `register`: `{ id: '', name: '' }` when there is none. */
548
+ interface ReceiptRegister {
549
+ id: string;
550
+ name: string;
551
+ }
552
+ /** 1.4 `fiscal` identity fields a till can know. Sale time, zone and counter come with the per-register sale counter (#475). */
553
+ interface ReceiptFiscal {
554
+ document_type: 'sale' | 'refund' | 'void' | 'cancellation' | 'closure' | 'x_report';
555
+ is_reprint: boolean;
556
+ reprint_count: number;
557
+ qr_payload: string;
558
+ }
537
559
  interface ReceiptLineItem {
538
560
  name: string;
539
561
  sku: string;
@@ -549,6 +571,10 @@ interface ReceiptLineItem {
549
571
  }[];
550
572
  }
551
573
  interface ReceiptData {
574
+ schemaVersion: string;
575
+ software: ReceiptSoftware;
576
+ register: ReceiptRegister;
577
+ fiscal: ReceiptFiscal;
552
578
  header: {
553
579
  storeName: string;
554
580
  storeAddress?: string;
@@ -602,6 +628,9 @@ interface ReceiptConfig {
602
628
  storeAddress?: string;
603
629
  cashier?: string;
604
630
  register?: string;
631
+ registerName?: string;
632
+ software?: Partial<ReceiptSoftware>;
633
+ fiscal?: Partial<ReceiptFiscal>;
605
634
  taxLabels?: Record<number, string>;
606
635
  }
607
636
 
@@ -882,27 +911,10 @@ declare class PosOrderOpenClosedError extends Error {
882
911
  constructor(databaseName: string);
883
912
  }
884
913
  /**
885
- * Adds `pos_orders` to `db` and resolves once no order of an older version is left to migrate. The one
886
- * sanctioned way to open it (ADR-032 amendment 2). On DM4 it rejects after the migration has
887
- * stopped and closes the collection, so the app can surface the error and open again; it never
888
- * deletes an order.
889
- *
890
- * RxDB 17.5.0 trusts the status its last migration stored: a leftover `ERROR` rejects
891
- * `migratePromise` at once while the migration keeps running (a close then interrupts it), and a
892
- * `DONE` left before a rollback resolves it before the older version's new orders have moved. So the
893
- * collection is added without `autoMigrate` and the migration is started and awaited directly: RxDB
894
- * 17.5's `startMigration()` ignores a leftover status (only `migratePromise()` trusts a leftover
895
- * `DONE`), which lets a rolled-back or interrupted run migrate again and recovers its orders. The
896
- * status is reset first so its record describes the new run, and a failed run's checkpoint is
897
- * removed (RxDB bug 1); never an order or its storage.
898
- *
899
- * A close waits for the open, up to `POS_ORDER_MIGRATION_CLOSE_WAIT_MS`, and cancels a running
900
- * migration (RxDB 17.5). Called once the database's close has begun, when the close cancels its
901
- * migration, or when the close stops waiting, it rejects with `PosOrderOpenClosedError`
902
- * (`code: 'POS_ORDER_OPEN_CLOSED'`) before any further write: reopen and call it again. Any other
903
- * rejection (DM4, a storage error) is a real failure.
904
- *
905
- * `closeWaitMs` is for tests only; the first open on a database sets it for that database's close.
914
+ * Adds `pos_orders` to `db` and resolves once no order of an older version is left to migrate.
915
+ * On DM4 it rejects after the migration has stopped and closes the collection. It rejects with
916
+ * `PosOrderOpenClosedError` when the database is closing. `closeWaitMs` is for tests only.
917
+ * See `openMigratedCollection` for the migration and close mechanism.
906
918
  */
907
919
  declare function addPosOrderCollection(db: RxDatabase, closeWaitMs?: number): Promise<RxCollection<PosOrder>>;
908
920
 
@@ -921,6 +933,7 @@ declare function getDeviceId(storage: {
921
933
  * session closed (`lateSessionId`) or with local warnings (whatever the sync status), or pending with a `commandId` in
922
934
  * `stuckCommandIds` (the outbox's `OutboxState.stuck`: the store keeps failing it), newest first.
923
935
  * A warning code this till version doesn't know is not shown here (`knownWarnings`). Never changes `orders`.
936
+ * `register_session_unknown` is not shown, because the store counts the order once its session arrives (ADR-078).
924
937
  */
925
938
  declare function needsAttention(orders: PosOrder[], options?: {
926
939
  stuckCommandIds?: readonly string[];
@@ -1042,7 +1055,7 @@ declare const denominations: Record<string, number[]>;
1042
1055
  /**
1043
1056
  * The register's local collections (ADR-032): sessions, cash movements and closures. Port
1044
1057
  * provenance (ADR-032 amendment 1): WCPOS `next` `3b5331b5c`, where they are at versions 1, 0
1045
- * and 1; each starts at version 0 here.
1058
+ * and 1; sessions are at version 1 here (ADR-078), movements and closures at version 0.
1046
1059
  *
1047
1060
  * All three are local only, like `pos_orders`: the app creates them and never replicates them
1048
1061
  * (a replicated collection must never take local writes, #53). WCPOS's outbox fields
@@ -1061,7 +1074,10 @@ interface RegisterSession {
1061
1074
  register_id: string;
1062
1075
  /** The app's neutral store key (see `bindRegister`). */
1063
1076
  store_key?: string | null;
1064
- status: 'open' | 'counting' | 'closed';
1077
+ /** Stored status is an open string so a later local state costs no migration (ADR-078 decision 9); the union names today's states. */
1078
+ status: 'open' | 'counting' | 'closed' | 'conflict' | 'superseded';
1079
+ /** The store session this local id was resumed as (ADR-078 decision 2), never the session that superseded it; null until a resume. */
1080
+ server_session_id?: string | null;
1065
1081
  /** The store's day the session opened, `yyyy-MM-dd`. */
1066
1082
  business_day?: string;
1067
1083
  opened_at_gmt: string;
@@ -1132,16 +1148,31 @@ interface Closure {
1132
1148
  }
1133
1149
  declare const registerSessionSchema: RxJsonSchema<RegisterSession>;
1134
1150
  /**
1135
- * Create `register_sessions` with this: the register document (`register-document.ts`) is a
1136
- * local document on this collection, since a Tally database has no database-level ones.
1151
+ * @deprecated Use `addRegisterSessionCollection` to open register_sessions.
1152
+ * Kept so old callers compile but fail at start instead of migrating on RxDB's own path.
1137
1153
  */
1138
- declare function registerSessionCollection(): {
1139
- readonly schema: RxJsonSchema<RegisterSession>;
1140
- readonly localDocuments: true;
1141
- };
1154
+ declare function registerSessionCollection(): never;
1142
1155
  declare const cashMovementSchema: RxJsonSchema<CashMovement>;
1143
1156
  declare const closureSchema: RxJsonSchema<Closure>;
1144
1157
 
1158
+ /** `addRegisterSessionCollection`'s logger: attach a sink to see dropped status writes during close. */
1159
+ declare const registerSessionsLogger: Logger;
1160
+ /** How long a close waits for the open; see `openMigratedCollection` for the cancellation mechanism. */
1161
+ declare const REGISTER_SESSION_MIGRATION_CLOSE_WAIT_MS = 10000;
1162
+ /** The database is closing; no session is lost. Reopen the database and call the opener again. */
1163
+ declare class RegisterSessionOpenClosedError extends Error {
1164
+ readonly databaseName: string;
1165
+ readonly code = "REGISTER_SESSION_OPEN_CLOSED";
1166
+ constructor(databaseName: string);
1167
+ }
1168
+ /**
1169
+ * Adds `register_sessions` and resolves once no older session is left to migrate; the register
1170
+ * document, a local document, is kept. On DM4 it rejects after migration stops and closes the collection.
1171
+ * A closing database rejects with `RegisterSessionOpenClosedError`; `closeWaitMs` is for tests only.
1172
+ * See `openMigratedCollection` for the migration and close mechanism.
1173
+ */
1174
+ declare function addRegisterSessionCollection(db: RxDatabase, closeWaitMs?: number): Promise<RxCollection<RegisterSession>>;
1175
+
1145
1176
  type RegisterHost = RxLocalDocumentMutation<any>;
1146
1177
  type RegisterCounters = {
1147
1178
  last_closure_number: number;
@@ -1225,6 +1256,11 @@ declare class RegisterSessionRequiredError extends Error {
1225
1256
  declare class RegisterSessionClosedError extends Error {
1226
1257
  constructor();
1227
1258
  }
1259
+ /** A stored session status outside the known set (written by a later build); its message can be shown to a cashier as it is. */
1260
+ declare class RegisterNeedsUpgradeError extends Error {
1261
+ readonly code = "REGISTER_NEEDS_UPGRADE";
1262
+ constructor();
1263
+ }
1228
1264
  /** ADR-068 6a: movement amounts must be safe integers, positive for paid_in/paid_out and zero for no_sale. */
1229
1265
  declare class RegisterMovementAmountError extends Error {
1230
1266
  constructor(type: 'paid_in' | 'paid_out' | 'no_sale', amountMinor: number);
@@ -1245,6 +1281,8 @@ declare class RegisterMovementStrandedError extends Error {
1245
1281
  session_id: string;
1246
1282
  });
1247
1283
  }
1284
+ /** Whether this build knows the stored session status. */
1285
+ declare function isKnownSessionStatus(status: string): boolean;
1248
1286
  declare const openSessionSelector: {
1249
1287
  readonly status: "open";
1250
1288
  };
@@ -1806,6 +1844,7 @@ type BuiltCommand = Pick<RegisterCommand, 'key' | 'type' | 'payload'> & {
1806
1844
  };
1807
1845
  declare function sessionOpenCommand(s: RegisterSession): BuiltCommand;
1808
1846
  declare function sessionTransitionCommand(s: RegisterSession & {
1847
+ status: RegisterSessionTransitionPayload['status'];
1809
1848
  status_at: string;
1810
1849
  }): BuiltCommand;
1811
1850
  declare function movementCommand(m: CashMovement): BuiltCommand;
@@ -1840,7 +1879,7 @@ declare class RegisterApprovalRequiredError extends Error {
1840
1879
  constructor();
1841
1880
  }
1842
1881
  interface UseRegisterSessionOptions {
1843
- /** `register_sessions`, created with `registerSessionCollection()`; `null` while it opens. */
1882
+ /** `register_sessions`, created with `addRegisterSessionCollection`; `null` while it opens. */
1844
1883
  sessions: RegisterSessionCollection | null;
1845
1884
  /** `cash_movements`; `null` while it opens. */
1846
1885
  movements: CashMovementCollection | null;
@@ -1881,6 +1920,8 @@ interface UseRegisterSessionOptions {
1881
1920
  }
1882
1921
  declare function useRegisterSession(options: UseRegisterSessionOptions): {
1883
1922
  session: RegisterSession | null;
1923
+ /** Any unknown session status in the current snapshot means the register needs upgrade. */
1924
+ needsUpgrade: boolean;
1884
1925
  movements: CashMovement[];
1885
1926
  expected: Record<string, number>;
1886
1927
  salesCount: number;
@@ -1909,6 +1950,7 @@ declare function useRegisterSession(options: UseRegisterSessionOptions): {
1909
1950
  * Refuses with `RegisterSessionAlreadyOpenError` while the register has a live session or
1910
1951
  * another open is running (in any hook instance), and with `RegisterCloseIncompleteError`
1911
1952
  * while an earlier close hasn't finished: a new session would lock the till behind it.
1953
+ * An unknown stored status refuses with `RegisterNeedsUpgradeError`.
1912
1954
  */
1913
1955
  openSession: (input: {
1914
1956
  expectedFloatMinor: number | null;
@@ -2496,4 +2538,43 @@ declare function planLegs(plan: TenderPlan, rowsSinceFrom: {
2496
2538
  };
2497
2539
  };
2498
2540
 
2499
- export { type Actor, type AddLineInput, type AppliedDiscount, type BackendNotFound, type BasketLine, CartError, type CashMovement, type CashMovementCollection, type CatalogueEntry, type CatalogueGridColumns, type CatalogueView, type CatalogueViewAction, type CatalogueViewState, type ChargeInput, type ChargeLine, type Closure, type ClosureCollection, type ClosureContext, type ClosureScope, type CommandTransport, type Correction, CurrencyProvider, type CurrencyProviderProps, type CustomerSummary, DEFAULT_CATALOGUE_VIEW_STATE, DISCOUNTS_UNSUPPORTED, type Discount, type DisplayLine, type DisplayTotals, type FeeLine, type FinalizeOptions, type HttpTransportOptions, type LedgerRow, type LineItem, type LineTaxLine, type LogEntry, type LogLevel, type LogSink, type Logger, MAX_TENDER_MINOR, MICROS_PER_MINOR, type Movement$1 as Movement, type MovementType, type Order, type OrderBuilder, type OrderBuilderOptions, OrderContentMismatchError, type OrderManager, type OrderManagerOptions, type OrderOutbox, type OrderOutboxOptions, type OrderTaxTotals, type OrderTransportContext, type OutboxState, PRODUCT_SORT_FIELDS, type ParkedOrderSummary, type Payment, type PaymentMethod, type PaymentTransport, type PlanLeg, type PosOrder, type PosOrderLine, type PosOrderLocalWarning, PosOrderOpenClosedError, type PosOrderPayment, type PosOrderServerFailures, type PosOrderSyncStatus, type ProductSort, type ProductSortValue, type RateTaxLine, type ReceiptConfig, type ReceiptData, type ReceiptLineItem, type RecordedFigures, RegisterApprovalRequiredError, type RegisterBucket, RegisterCloseIncompleteError, type RegisterCommand, type RegisterCommandCollection, type RegisterCounters, type RegisterDocument, type RegisterFact, type RegisterHost, RegisterIdInvalidError, RegisterMovementAmountError, RegisterMovementReasonError, RegisterMovementStrandedError, type RegisterOutbox, type RegisterOutboxOptions, type RegisterSession, RegisterSessionAlreadyOpenError, RegisterSessionClosedError, type RegisterSessionCollection, RegisterSessionRequiredError, type RegisterStore, RegisterTenderInProgressError, type Repository, type ResolveStoreSettingsOptions, SALE_SAVING, type SaleStage, type SentOrder, type ShippingLine, type SplitTab, type StoreSettingsResolution, type StoreSettingsState, TAX_ROUNDING_MIXED_NOTE, type TaxContext, type TaxLineInput, TaxProvider, type TaxProviderProps, type TaxRateMap, type TenderAction, type TenderKey, type TenderLineId, type TenderPlan, type TenderState, type TenderView, type TransportOutcome, UnsupportedOrderVersionError, type UseOrderOutboxOptions, type UseOrderOutboxResult, type UseRegisterOutboxOptions, type UseRegisterOutboxResult, type UseRegisterSessionOptions, activePlan, addEntryToCart, addPosOrderCollection, advancePerpetual, allocateOrderDiscount, appliedMinor, backToSelling, bindRegister, buildClosureDocument, buildReceiptData, buildXReportDocument, callbackSink, cashMovementSchema, catalogueEntries, catalogueViewReducer, changeMinor, clampClosureScope, closeNeedsApproval, closeSession, closureCommand, closureSchema, computeOrderTax, consoleSink, countVariance, createBackendNotFound, createHttpCommandTransport, createLogger, createOrderBuilder, createOrderManager, createOrderOutbox, createRegisterOutbox, createRepository, denominationTotal, denominations, deriveExpected, deriveSettled, ensureRegister, evenSplitShareMinor, exportCsv, finalizeOrder, findEntryByCode, formatClosureDate, getBoundRegisterId, getDeviceId, inCategory, initTenderState, initialTenderState, isServerDecimal, labelKeys, listCategories, minorToDecimal, mintClosureNumber, mintUuid, movementCommand, movementFieldError, needsAttention, nextSaleCounter, normalizeAmount, normalizeCatalogueViewState, observeRegister$, openSession, openSessionSelector, orderDraftSchema, outboxLogger, overThreshold, parkedOrderSummaries$, parseMinor, planLegs, posOrderCollection, posOrderSchema, posOrdersLogger, productCategories, productSortValue, quickTenderedAmounts, ratePpmFromPercent, readBoundRegister, readRegister, reconcileRegisterCommands, recordMovement, recordRegisterFact, registerCommandCollection, registerCommandSchema, registerCommandsLogger, registerFactsLogger, registerSessionCollection, registerSessionSchema, requireOpenSession, resolveGridColumns, resolveStoreSettings, restoreOrderDraft, roundMicrosToMinor, saleLogger, sameSale, searchProducts, selectClosureRows, sessionOpenCommand, sessionTransitionCommand, sortProducts, stampSession, startCounting, stockOverlay$, stockOverlayAsOf$, taxFiguresForBasket, taxLinesByRate, taxLogger, taxMicros, taxProviderProps, tenderReducer, toOrderCreateEnvelope, unbindRegister, useCurrencyCode, useCurrencyFormatter, useOrderOutbox, useParkedSales, useRegisterOutbox, useRegisterSession, useSale, useStoreSettings, useTax, uuidv7, validAmount, varianceText, variantPriceLabel, voidMovement, withPricingContext, writeClosure, writeOrderDraft };
2541
+ /**
2542
+ * One record per voided tender leg: its v2 ledger row plus the provenance a v2 `void`
2543
+ * fiscal record carries (TallyUI#479). Write-once: insert only, never update or delete;
2544
+ * a replay of a known `paymentId` is a no-op for the caller to handle.
2545
+ * Local only, never replicated. No device-side number or checksum:
2546
+ * v2 numbers records on the server.
2547
+ */
2548
+
2549
+ interface TenderVoid {
2550
+ /** The voided leg's client-minted id (the `clientPaymentId` order.create would send). Primary key, write-once. */
2551
+ paymentId: string;
2552
+ /** The sale's id (`PosOrder.saleId`). */
2553
+ saleId: string;
2554
+ type: 'void';
2555
+ method: PaymentMethodKind;
2556
+ amountMinor: number;
2557
+ /** Cash only: what the customer handed over. */
2558
+ tenderedMinor?: number;
2559
+ /** An external terminal's reference. */
2560
+ reference?: string;
2561
+ /** ISO 4217 code. */
2562
+ currency: string;
2563
+ /** `removed`: the cashier removed this one leg. `cancelled`: the cashier backed out of tendering. */
2564
+ reason: 'removed' | 'cancelled';
2565
+ /** Device clock at the void, ISO 8601. */
2566
+ deviceTime: string;
2567
+ /** The device's IANA time zone. */
2568
+ deviceTz: string;
2569
+ /** The bound register's id, `''` when no register is bound. */
2570
+ registerId: string;
2571
+ sessionId?: string;
2572
+ /** The cashier, as the backend's user id string. */
2573
+ cashierRef: string;
2574
+ }
2575
+ declare const tenderVoidSchema: RxJsonSchema<TenderVoid>;
2576
+ declare function tenderVoidCollection(): {
2577
+ readonly schema: RxJsonSchema<TenderVoid>;
2578
+ };
2579
+
2580
+ export { type Actor, type AddLineInput, type AppliedDiscount, type BackendNotFound, type BasketLine, CartError, type CashMovement, type CashMovementCollection, type CatalogueEntry, type CatalogueGridColumns, type CatalogueView, type CatalogueViewAction, type CatalogueViewState, type ChargeInput, type ChargeLine, type Closure, type ClosureCollection, type ClosureContext, type ClosureScope, type CommandTransport, type Correction, CurrencyProvider, type CurrencyProviderProps, type CustomerSummary, DEFAULT_CATALOGUE_VIEW_STATE, DISCOUNTS_UNSUPPORTED, type Discount, type DisplayLine, type DisplayTotals, type FeeLine, type FinalizeOptions, type HttpTransportOptions, type LedgerRow, type LineItem, type LineTaxLine, type LogEntry, type LogLevel, type LogSink, type Logger, MAX_TENDER_MINOR, MICROS_PER_MINOR, type Movement$1 as Movement, type MovementType, type Order, type OrderBuilder, type OrderBuilderOptions, OrderContentMismatchError, type OrderManager, type OrderManagerOptions, type OrderOutbox, type OrderOutboxOptions, type OrderTaxTotals, type OrderTransportContext, type OutboxState, PRODUCT_SORT_FIELDS, type ParkedOrderSummary, type Payment, type PaymentMethod, type PaymentTransport, type PlanLeg, type PosOrder, type PosOrderLine, type PosOrderLocalWarning, PosOrderOpenClosedError, type PosOrderPayment, type PosOrderServerFailures, type PosOrderSyncStatus, type ProductSort, type ProductSortValue, RECEIPT_SCHEMA_VERSION, REGISTER_SESSION_MIGRATION_CLOSE_WAIT_MS, type RateTaxLine, type ReceiptConfig, type ReceiptData, type ReceiptFiscal, type ReceiptLineItem, type ReceiptRegister, type ReceiptSoftware, type RecordedFigures, RegisterApprovalRequiredError, type RegisterBucket, RegisterCloseIncompleteError, type RegisterCommand, type RegisterCommandCollection, type RegisterCounters, type RegisterDocument, type RegisterFact, type RegisterHost, RegisterIdInvalidError, RegisterMovementAmountError, RegisterMovementReasonError, RegisterMovementStrandedError, RegisterNeedsUpgradeError, type RegisterOutbox, type RegisterOutboxOptions, type RegisterSession, RegisterSessionAlreadyOpenError, RegisterSessionClosedError, type RegisterSessionCollection, RegisterSessionOpenClosedError, RegisterSessionRequiredError, type RegisterStore, RegisterTenderInProgressError, type Repository, type ResolveStoreSettingsOptions, SALE_SAVING, type SaleStage, type SentOrder, type ShippingLine, type SplitTab, type StoreSettingsResolution, type StoreSettingsState, TAX_ROUNDING_MIXED_NOTE, type TaxContext, type TaxLineInput, TaxProvider, type TaxProviderProps, type TaxRateMap, type TenderAction, type TenderKey, type TenderLineId, type TenderPlan, type TenderState, type TenderView, type TenderVoid, type TransportOutcome, UnsupportedOrderVersionError, type UseOrderOutboxOptions, type UseOrderOutboxResult, type UseRegisterOutboxOptions, type UseRegisterOutboxResult, type UseRegisterSessionOptions, activePlan, addEntryToCart, addPosOrderCollection, addRegisterSessionCollection, advancePerpetual, allocateOrderDiscount, appliedMinor, backToSelling, bindRegister, buildClosureDocument, buildReceiptData, buildXReportDocument, callbackSink, cashMovementSchema, catalogueEntries, catalogueViewReducer, changeMinor, clampClosureScope, closeNeedsApproval, closeSession, closureCommand, closureSchema, computeOrderTax, consoleSink, countVariance, createBackendNotFound, createHttpCommandTransport, createLogger, createOrderBuilder, createOrderManager, createOrderOutbox, createRegisterOutbox, createRepository, denominationTotal, denominations, deriveExpected, deriveSettled, ensureRegister, evenSplitShareMinor, exportCsv, finalizeOrder, findEntryByCode, formatClosureDate, getBoundRegisterId, getDeviceId, inCategory, initTenderState, initialTenderState, isKnownSessionStatus, isServerDecimal, labelKeys, listCategories, minorToDecimal, mintClosureNumber, mintUuid, movementCommand, movementFieldError, needsAttention, nextSaleCounter, normalizeAmount, normalizeCatalogueViewState, observeRegister$, openSession, openSessionSelector, orderDraftSchema, outboxLogger, overThreshold, parkedOrderSummaries$, parseMinor, planLegs, posOrderCollection, posOrderSchema, posOrdersLogger, productCategories, productSortValue, quickTenderedAmounts, ratePpmFromPercent, readBoundRegister, readRegister, reconcileRegisterCommands, recordMovement, recordRegisterFact, registerCommandCollection, registerCommandSchema, registerCommandsLogger, registerFactsLogger, registerSessionCollection, registerSessionSchema, registerSessionsLogger, requireOpenSession, resolveGridColumns, resolveStoreSettings, restoreOrderDraft, roundMicrosToMinor, saleLogger, sameSale, searchProducts, selectClosureRows, sessionOpenCommand, sessionTransitionCommand, sortProducts, stampSession, startCounting, stockOverlay$, stockOverlayAsOf$, taxFiguresForBasket, taxLinesByRate, taxLogger, taxMicros, taxProviderProps, tenderReducer, tenderVoidCollection, tenderVoidSchema, toOrderCreateEnvelope, unbindRegister, useCurrencyCode, useCurrencyFormatter, useOrderOutbox, useParkedSales, useRegisterOutbox, useRegisterSession, useSale, useStoreSettings, useTax, uuidv7, validAmount, varianceText, variantPriceLabel, voidMovement, withPricingContext, writeClosure, writeOrderDraft };