import type { TemplateSourceInfo } from "../ir/ir.js"; import type { Column } from "./schema.js"; import type { SchemaProvider } from "./schema-provider.js"; import type { TemplateProvider } from "./template-provider.js"; /** The schema as a TemplateProvider when it is one (structural — the shipped base or a subclass). */ export declare function asProvider(schema: SchemaProvider): TemplateProvider | undefined; /** * Resolve a templated source's TYPED columns through the provider, or undefined for the * exemption (no call, no provider, no relation answer). A relation answer WITHOUT columns * (`columns: undefined` — the not-loaded sentinel) resolves through the physical-name * lookup; `columns: []` is a genuinely EMPTY relation. */ export declare function relationColumns(t: TemplateSourceInfo, schema: SchemaProvider, dialect?: string): Column[] | undefined; /** * TYPED columns of a table source, template-aware: a templated source resolves through * the provider first (real warehouse columns); no answer — or no provider — falls back * to the plain `columnsFor(name)` lookup (which for a templated source carries the * dbt-logical name, so a Schema declaring model names keeps answering as before). */ export declare function tableSourceColumns(name: string[], template: TemplateSourceInfo | undefined, schema: SchemaProvider, dialect?: string): Column[] | undefined;