import { GscAggregationType, GscDataState, GscSearchAnalyticsRequest, GscSearchType } from "../contracts.mjs"; import { BuilderState, Column, Dimension, Filter, Metric, MetricColumn } from "./types.mjs"; type SelectableColumn = Column | MetricColumn; type OrderableColumn = MetricColumn | Column<'date'>; type ExtractDimensions = { [K in keyof T]: T[K] extends Column ? D : never; }[number] extends (infer U) ? Exclude[] : never; interface GSCQueryBuilder { select: { (...dims: T): GSCQueryBuilder; (...cols: T): GSCQueryBuilder & Dimension[], C>; }; where: >(filter: F) => GSCQueryBuilder; prefilter: >(filter: F) => GSCQueryBuilder; orderBy: (col: OrderableColumn, dir: 'asc' | 'desc') => GSCQueryBuilder; limit: (n: number) => GSCQueryBuilder; offset: (n: number) => GSCQueryBuilder; dataState: (state: GscDataState) => GSCQueryBuilder; aggregationType: (type: GscAggregationType) => GSCQueryBuilder; /** GSC search corpus (`type` on the wire). Equivalent to filtering by `searchType`. */ type: (t: GscSearchType) => GSCQueryBuilder; toBody: () => GscSearchAnalyticsRequest; getState: () => BuilderState; } declare const gsc: GSCQueryBuilder<[], object>; export { GSCQueryBuilder, OrderableColumn, SelectableColumn, gsc };