import { AnalysisParams } from "../analysis-types.mjs"; type WindowPreset = 'last-7d' | 'last-28d' | 'last-30d' | 'last-90d' | 'last-180d' | 'last-365d' | 'mtd' | 'ytd' | 'custom'; type ComparisonMode = 'none' | 'prev-period' | 'yoy'; interface ResolveWindowOptions { preset: WindowPreset; comparison?: ComparisonMode; anchor?: string; start?: string; end?: string; } interface ResolvedWindow { start: string; end: string; days: number; comparison?: { start: string; end: string; }; } interface AnalysisPeriod { startDate: string; endDate: string; } interface ComparisonPeriod { current: AnalysisPeriod; previous: AnalysisPeriod; } declare function defaultEndDate(): string; declare function periodOf(params: AnalysisParams): AnalysisPeriod; declare function comparisonOf(params: AnalysisParams): ComparisonPeriod; declare function resolveWindow(opts: ResolveWindowOptions): ResolvedWindow; interface PadTimeseriesOptions { /** ISO date (YYYY-MM-DD), inclusive lower bound. */ startDate: string; /** ISO date (YYYY-MM-DD), inclusive upper bound. */ endDate: string; /** * Row to insert for missing dates. Defaults to `{ clicks: 0, impressions: 0, ctr: 0, position: 0 }`. * The `date` field is set automatically. */ fill?: Omit; /** Row-field that carries the ISO date. Defaults to `date`. */ dateKey?: string; } type DateRowShape = Record & { date?: unknown; }; /** * Pad rows so every calendar day in `[startDate, endDate]` appears at least * once. Existing dates keep all their rows (grouped timeseries safe). */ declare function padTimeseries(rows: readonly T[], options: PadTimeseriesOptions): T[]; export { AnalysisPeriod, ComparisonMode, ComparisonPeriod, PadTimeseriesOptions, ResolveWindowOptions, ResolvedWindow, WindowPreset, comparisonOf, defaultEndDate, padTimeseries, periodOf, resolveWindow };