/** * Materialized views projection. * * Consumes Manifest IR (entities + read models) + projection config and emits * PostgreSQL `CREATE MATERIALIZED VIEW` DDL as one or more `ProjectionArtifact`s. * * The projection supports three refresh strategies: * - 'on-demand' → emits REFRESH MATERIALIZED VIEW statements for manual calls * - 'scheduled' → emits a pg_cron job that calls REFRESH on a schedule * - 'trigger-based' → emits a trigger function that calls REFRESH on row changes * * Boundary rules (following Prisma/Drizzle/Kysely projection conventions): * - Relational interpretation starts HERE. No relational concept (view name, * column name, refresh strategy, index definitions) lives in Manifest core * grammar or IR — all of it arrives via projection options. * - The projection carries NO knowledge of any specific application, * database instance, tenant layout, or domain meaning of any field. * - `external: true` entities are skipped. * - Unknown expression kinds produce error diagnostics. No silent fallback. */ import type { IR } from '../../ir'; import type { ProjectionRequest, ProjectionResult, ProjectionTarget } from '../interface'; export declare class MaterializedViewsProjection implements ProjectionTarget { readonly name = "materialized-views"; readonly description: string; readonly surfaces: readonly ["materialized-views.ddl"]; readonly descriptorMeta: import("..").ProjectionDescriptorMeta; generate(ir: IR, request: ProjectionRequest): ProjectionResult; } //# sourceMappingURL=generator.d.ts.map