import { type RuntimeSchemaObservedTarget, type RuntimeSchemaScope, type RuntimeSchemaSnapshot } from '@duckcodeailabs/dql-agent'; import type { ConnectionConfig, QueryExecutor } from '@duckcodeailabs/dql-connectors'; export type ConnectionMetadataScopeMode = 'dbt_relations' | 'selected_scopes' | 'dbt_plus_selected'; export interface ConnectionMetadataScopeV1 { version: 1; connectionId: string; driver: string; mode: ConnectionMetadataScopeMode; /** Effective union used for status and provenance. */ scopes: RuntimeSchemaScope[]; /** User-selected scopes, kept distinct so dbt_plus_selected stays exact for dbt relations. */ selectedScopes: RuntimeSchemaScope[]; /** Exact fully-qualified dbt relations used by the recommended default mode. */ relations: string[]; dbtFingerprint?: string; scopeFingerprint: string; } export interface ConnectionMetadataScopeInput { mode?: ConnectionMetadataScopeMode; scopes?: Array<{ catalogOrDatabase?: string; schemas?: string[]; }>; relations?: string[]; dbtFingerprint?: string; } export interface WarehouseMetadataSyncResult { scope: ConnectionMetadataScopeV1; snapshot: RuntimeSchemaSnapshot; } export interface WarehouseMetadataStatus { state: 'missing' | 'ready' | 'stale'; scopeFingerprint?: string; generationId?: string; capturedAt?: string; relationCount: number; columnCount: number; queryCount?: number; durationMs?: number; truncated?: boolean; source?: string; scopes: RuntimeSchemaScope[]; observedTarget?: RuntimeSchemaObservedTarget; } export interface WarehouseMetadataDiscoveredSchema { name: string; inDbtProject: boolean; dbtRelationCount: number; } export interface WarehouseMetadataDiscoveredScope { catalogOrDatabase: string; schemas: WarehouseMetadataDiscoveredSchema[]; } export interface WarehouseMetadataDiscoveryResult { version: 1; connectionId: string; driver: string; discoveredAt: string; supported: boolean; scopes: WarehouseMetadataDiscoveredScope[]; dbtScopes: RuntimeSchemaScope[]; queryCount: number; truncated: boolean; message: string; } export declare function normalizeConnectionMetadataScope(connectionId: string, connection: ConnectionConfig, input: ConnectionMetadataScopeInput | undefined, defaults?: { relations?: string[]; dbtFingerprint?: string; }): ConnectionMetadataScopeV1; export declare function syncWarehouseMetadata(input: { projectRoot: string; executor: QueryExecutor; connection: ConnectionConfig; scope: ConnectionMetadataScopeV1; }): Promise; /** * Explicit setup-time discovery of database/catalog and schema names visible to * the configured connection. This is never called by Ask and never persists or * broadens a metadata scope. The user must still select and apply additional * non-dbt schemas before DQL indexes their tables and columns. */ export declare function discoverWarehouseMetadataScopes(input: { connectionId: string; executor: QueryExecutor; connection: ConnectionConfig; dbtRelations?: string[]; }): Promise; export declare function warehouseMetadataStatus(projectRoot: string, expectedScopeFingerprint?: string, connectionId?: string): WarehouseMetadataStatus; export declare function buildWarehouseMetadataQueries(connection: ConnectionConfig, scope: ConnectionMetadataScopeV1): Array<{ catalogOrDatabase: string; sql: string; }>; //# sourceMappingURL=warehouse-metadata.d.ts.map