import type { CityName } from "../../municipal/utils/types"; import type { SubjectItem, TicketStatsDateScope } from "../../municipal/tickets/tickets.types"; import type { CallsHourlyBucket, CallsRoutingAggregation, CallsStatsFilter, CallsSummaryAggregation, CallsTrendBucket, ResolvedTimeBucket } from "./calls.statistics.types"; export declare const rangeDurationDays: (startStr: string, endStr: string) => number; /** * Number of distinct calendar months the [startStr, endStr] range spans, inclusive. * Counts month boundaries rather than 30-day periods: e.g. Jan 31 -> Feb 1 returns 2. */ export declare const rangeDurationMonths: (startStr: string, endStr: string) => number; /** * Chooses how the client calls-over-time bar chart groups each column: * one bar per day, week, or calendar month. Short ranges stay daily; longer * ones switch to weekly or monthly so the chart does not show hundreds of bars. */ export declare const resolveTimeBucketFromRange: (startStr: string, endStr: string) => ResolvedTimeBucket; export declare const aggregateCallsSummary: (filter: CallsStatsFilter) => Promise; export declare const aggregateCallsTrend: (filter: CallsStatsFilter, bucket: ResolvedTimeBucket) => Promise; export declare const aggregateCallsHourlyByRange: (filter: CallsStatsFilter) => Promise; export declare const aggregateCallsRouting: (filter: CallsStatsFilter) => Promise; export declare const findFilteredCallSids: (filter: CallsStatsFilter) => Promise; /** * "Subjects" panel: ticket count per subject, for calls passing the filters. * Calls and tickets are in separate DBs, so we join in code — filtered call IDs * from calls, subjects from tickets. Returns the full list sorted most-common * first; callers slice if they want a top-N. */ export declare const findSubjectsByCityAndDateRange: (cityName: CityName, filter: CallsStatsFilter, dateScope: TicketStatsDateScope) => Promise; //# sourceMappingURL=calls.statistics.getters.d.ts.map