import { QueryDto } from '@escapenavigator/types/dist/shared/query.dto'; import { ApiMethodDeclaration } from '..'; type ParamsData = QueryDto; /** * Поле, по которому бэк построил период агрегации: `created` — дата * создания брони, `date` — дата проведения игры. Выбирается по фильтрам * пользователя (`resolveFastStatPeriodField` в `OrderService`), UI * обязан подписывать виджет именно этим полем. */ export type FastStatPeriodField = 'created' | 'date'; /** * Период, за который посчитан (или не посчитан) виджет. * `periodFrom`/`periodTo` — календарные даты `yyyy-MM-dd` в таймзоне * профиля, не таймстемпы: границы суток разворачивает бэк, а UI просто * печатает их как есть. */ type FastStatPeriod = { periodField: FastStatPeriodField; periodFrom: string; periodTo: string; }; /** * Ответ — размеченное объединение по `periodTooWide`. * * Окно шире `maxDays` бэк не агрегирует вообще: цифры за последний месяц * широкого диапазона выглядели бы как статистика по всей выборке из * таблицы. Поэтому в этой ветке чисел нет физически — UI обязан показать * вместо них просьбу сузить период, а не нули. * * В обычной ветке значения уже приведены к number (`fastStat` в * `OrderService` конвертит `getRawOne()`-строки), а `periodDefaulted` * говорит, что границы пользователь не выбирал и подпись может остаться * коротким «за последние N дней». Поле `addonsTotal` убрано: UI его не * показывает и подзапрос-агрегат по `order-upsellings` мог * материализоваться полностью на жирных профилях — см. * `packages/api/docs/optimization/08-order-fast-stat.md`. */ type ResponseData = FastStatPeriod & ({ periodTooWide: true; maxDays: number; } | { periodTooWide: false; periodDefaulted: boolean; total: number; happendAmountTotal: number; happend: number; /** * Брони с игрой ещё впереди (та же выборка, `utcDate` в * будущем). Нужны для окна, целиком лежащего в будущем: там * `happend` честно равен нулю, и без этой пары карточка * «Состоялось» показывала «0 (0 ₽)» на десятке живых броней. */ upcoming: number; upcomingAmountTotal: number; cancelled: number; }); export declare const fastStat: ApiMethodDeclaration; export {};