import { BuilderStateWire, Dimension, GscSearchType, Metric } from "./types.mjs"; type QueryArchetype = 'site-daily-timeseries' | 'entity-daily-timeseries' | 'entity-daily-sparkline' | 'top-n-breakdown' | 'single-row-lookup' | 'multi-series-stacked-daily' | 'two-dimension-detail' | 'arbitrary-sql' | 'aux-cloud-only'; type ArchetypeExecutionClass = 'r2-sql' | 'r2-sql-resolved' | 'duckdb' | 'cloud-only'; declare const ARCHETYPE_EXECUTION_CLASS: Record; interface DateRange { start: string; end: string; } interface ArchetypeFacet { column: Dimension; op: 'eq' | 'regex' | 'notRegex'; value: string; } interface ArchetypeQueryBase { archetype: QueryArchetype; siteId: string; searchType: GscSearchType; range: DateRange; compareRange?: DateRange; facets?: readonly ArchetypeFacet[]; } interface SiteDailyTimeseriesQuery extends ArchetypeQueryBase { archetype: 'site-daily-timeseries'; metrics: readonly Metric[]; } interface EntityDailyTimeseriesQuery extends ArchetypeQueryBase { archetype: 'entity-daily-timeseries'; entity: { dimension: Extract; value: string; }; metrics: readonly Metric[]; } interface EntityDailySparklineQuery extends ArchetypeQueryBase { archetype: 'entity-daily-sparkline'; dimension: Extract; entities: readonly string[]; metric: Metric; } interface TopNBreakdownQuery extends ArchetypeQueryBase { archetype: 'top-n-breakdown'; dimension: Dimension; metrics: readonly Metric[]; orderBy: { metric: Metric; dir: 'asc' | 'desc'; }; limit: number; offset?: number; includeTotal?: boolean; movers?: 'improving' | 'declining' | 'new' | 'lost'; } interface SingleRowLookupQuery extends ArchetypeQueryBase { archetype: 'single-row-lookup'; match: Partial>; metrics: readonly Metric[]; } interface MultiSeriesStackedDailyQuery extends ArchetypeQueryBase { archetype: 'multi-series-stacked-daily'; seriesDimension: Dimension; metric: Metric; } interface TwoDimensionDetailQuery extends ArchetypeQueryBase { archetype: 'two-dimension-detail'; metrics: readonly Metric[]; filter?: { page?: string; query?: string; }; orderBy?: { metric: Metric; dir: 'asc' | 'desc'; }; limit?: number; } interface ArbitrarySqlQuery extends ArchetypeQueryBase { archetype: 'arbitrary-sql'; sql: string; params?: readonly unknown[]; } interface AuxCloudOnlyQuery { archetype: 'aux-cloud-only'; siteId: string; dataset: 'canonicals' | 'sitemaps' | 'indexing'; params?: Record; } type ArchetypeQuery = SiteDailyTimeseriesQuery | EntityDailyTimeseriesQuery | EntityDailySparklineQuery | TopNBreakdownQuery | SingleRowLookupQuery | MultiSeriesStackedDailyQuery | TwoDimensionDetailQuery | ArbitrarySqlQuery | AuxCloudOnlyQuery; /** Date window accepted by the portable archetype constructors. */ interface WireDateRange { start: string; end: string; } /** Portable constructors for the canonical hosted/browser archetype wire shapes. */ declare function siteDailyTimeseries(siteId: string, range: WireDateRange, options?: { searchType?: GscSearchType; compareRange?: WireDateRange; metrics?: readonly Metric[]; }): SiteDailyTimeseriesQuery; declare function entityDailyTimeseries(siteId: string, range: WireDateRange, entity: EntityDailyTimeseriesQuery['entity'], options?: { searchType?: GscSearchType; compareRange?: WireDateRange; metrics?: readonly Metric[]; }): EntityDailyTimeseriesQuery; declare function entityDailySparkline(siteId: string, range: WireDateRange, dimension: EntityDailySparklineQuery['dimension'], entities: readonly string[], options?: { searchType?: GscSearchType; metric?: Metric; }): EntityDailySparklineQuery; interface TopNBreakdownOptions { searchType?: GscSearchType; compareRange?: WireDateRange; metrics?: readonly Metric[]; orderBy?: TopNBreakdownQuery['orderBy']; limit?: number; offset?: number; facets?: readonly ArchetypeFacet[]; includeTotal?: boolean; movers?: NonNullable; } declare function topNBreakdown(siteId: string, range: WireDateRange, dimension: Dimension, options?: TopNBreakdownOptions): TopNBreakdownQuery; declare function singleRowLookup(siteId: string, range: WireDateRange, match: SingleRowLookupQuery['match'], options?: { searchType?: GscSearchType; compareRange?: WireDateRange; metrics?: readonly Metric[]; }): SingleRowLookupQuery; declare function multiSeriesStackedDaily(siteId: string, range: WireDateRange, seriesDimension: Dimension, options?: { searchType?: GscSearchType; compareRange?: WireDateRange; metric?: Metric; }): MultiSeriesStackedDailyQuery; interface TwoDimensionDetailOptions { searchType?: GscSearchType; compareRange?: WireDateRange; metrics?: readonly Metric[]; filter?: TwoDimensionDetailQuery['filter']; orderBy?: TwoDimensionDetailQuery['orderBy']; limit?: number; facets?: readonly ArchetypeFacet[]; } declare function twoDimensionDetail(siteId: string, range: WireDateRange, options?: TwoDimensionDetailOptions): TwoDimensionDetailQuery; declare function arbitrarySql(siteId: string, range: WireDateRange, sql: string, options?: { searchType?: GscSearchType; params?: readonly unknown[]; cacheable?: boolean; }): ArbitrarySqlQuery & { cacheable?: true; }; type ArchetypeResultRow = Record; type ArchetypeResultSource = 'browser' | 'server-r2-sql' | 'server-duckdb' | 'cloud'; interface ArchetypeResult { archetype: QueryArchetype; rows: R[]; source: ArchetypeResultSource; meta?: { rowCount: number; queryMs: number; totalRows?: number; compareRows?: R[]; truncated?: boolean; }; } interface ResolvedArchetypeQuery { query: ArchetypeQuery; builder?: BuilderStateWire; executionClass: ArchetypeExecutionClass; } export { ARCHETYPE_EXECUTION_CLASS, ArbitrarySqlQuery, ArchetypeExecutionClass, ArchetypeFacet, ArchetypeQuery, ArchetypeQueryBase, ArchetypeResult, ArchetypeResultRow, ArchetypeResultSource, AuxCloudOnlyQuery, DateRange, EntityDailySparklineQuery, EntityDailyTimeseriesQuery, MultiSeriesStackedDailyQuery, QueryArchetype, ResolvedArchetypeQuery, SingleRowLookupQuery, SiteDailyTimeseriesQuery, TopNBreakdownOptions, TopNBreakdownQuery, TwoDimensionDetailOptions, TwoDimensionDetailQuery, WireDateRange, arbitrarySql, entityDailySparkline, entityDailyTimeseries, multiSeriesStackedDaily, singleRowLookup, siteDailyTimeseries, topNBreakdown, twoDimensionDetail };