import type { IndexProjectionDefinition, ProjectionDefinition } from './model-types.js'; export declare function isIndexProjection(projection: ProjectionDefinition): projection is IndexProjectionDefinition; /** * Render an index expression list the way ClickHouse itself echoes it back: * a single element is bare (`INDEX b`), several are a tuple (`INDEX (a, b)`). * * Both halves matter. ClickHouse rewrites `INDEX (b)` to `INDEX b`, so without * this a pulled schema would drift against the live table forever; and it * rejects `INDEX a, b` outright, so multiple elements must be parenthesized. * * Must be idempotent: it runs at canonicalize time and again at render time, * and a canonical form that keeps changing makes every `generate` re-emit a * drop + rebuild of the projection. */ export declare function normalizeProjectionIndex(index: string): string; export declare function canonicalizeProjection(projection: ProjectionDefinition): ProjectionDefinition; export declare function renderProjectionBody(projection: ProjectionDefinition): string; //# sourceMappingURL=projection.d.ts.map