import { type CubeDefinition, type HierarchyDefinition, type SemanticLayer, type SemanticLayerProviderConfig, type SemanticSourceMetadata, type SnowflakeQueryExecutor } from '@duckcodeailabs/dql-core'; export interface SemanticImportManifestObject { id: string; kind: 'cube' | 'metric' | 'measure' | 'dimension' | 'time_dimension' | 'entity' | 'hierarchy' | 'segment' | 'pre_aggregation' | 'semantic_model' | 'saved_query'; name: string; label: string; domain: string; cube?: string; reference?: string; filePath: string; source?: SemanticSourceMetadata; } export interface SemanticImportManifest { version: 1; mode: 'imported'; provider: 'dbt' | 'cubejs' | 'snowflake'; importedAt: string; source: { projectPath?: string; repoUrl?: string; branch?: string; subPath?: string; connection?: string; }; warnings: string[]; generatedFiles: string[]; objects: SemanticImportManifestObject[]; } export interface SemanticImportResult { manifest: SemanticImportManifest; counts: Record; } export interface SemanticImportPreview { provider: 'dbt' | 'cubejs' | 'snowflake'; counts: Record; domains: string[]; warnings: string[]; objects: Array<{ kind: SemanticImportManifestObject['kind']; name: string; label: string; domain: string; }>; } export interface SemanticSyncDiff { added: Array<{ kind: SemanticImportManifestObject['kind']; name: string; label: string; domain: string; }>; removed: Array<{ kind: SemanticImportManifestObject['kind']; name: string; label: string; domain: string; }>; changed: Array<{ kind: SemanticImportManifestObject['kind']; name: string; label: string; domain: string; }>; unchanged: number; } export interface SemanticTreeNode { id: string; label: string; kind: 'provider' | 'domain' | 'cube' | 'group' | SemanticImportManifestObject['kind']; count?: number; meta?: Record; children?: SemanticTreeNode[]; } export interface SemanticObjectDetail { id: string; kind: SemanticImportManifestObject['kind']; name: string; label: string; description: string; domain: string; cube?: string; table?: string; sql?: string; type?: string; /** Provider-neutral model-scoped identity persisted in DQL artifacts. */ reference?: string; /** Adapter-specific MetricFlow group-by spelling, diagnostic only. */ qualifiedName?: string; entityLink?: string; tags: string[]; owner: string | null; source: SemanticSourceMetadata | null; filePath: string | null; importedAt: string | null; joins?: CubeDefinition['joins']; levels?: HierarchyDefinition['levels']; measures?: string[]; dimensions?: string[]; timeDimension?: string; granularity?: string; refreshKey?: string; agg?: string; expr?: string; metricType?: string; typeParams?: Record; filter?: unknown; entities?: string[]; savedQueryMetrics?: string[]; exports?: Array>; } export declare function performSemanticImport(opts: { targetProjectRoot: string; provider: 'dbt' | 'cubejs' | 'snowflake'; sourceConfig: SemanticLayerProviderConfig; executeQuery?: SnowflakeQueryExecutor; }): Promise; export declare function syncSemanticImport(opts: { targetProjectRoot: string; executeQuery?: SnowflakeQueryExecutor; }): Promise; export declare function loadSemanticImportManifest(projectRoot: string): SemanticImportManifest | null; export declare function buildSemanticTree(layer: SemanticLayer, manifest: SemanticImportManifest | null): SemanticTreeNode; export declare function buildSemanticObjectDetail(layer: SemanticLayer, manifest: SemanticImportManifest | null, id: string): SemanticObjectDetail | null; /** * Preview a semantic import without writing any files. * Returns counts, domains, warnings, and object summaries. */ export declare function previewSemanticImport(opts: { targetProjectRoot: string; provider: 'dbt' | 'cubejs' | 'snowflake'; sourceConfig: SemanticLayerProviderConfig; executeQuery?: SnowflakeQueryExecutor; }): Promise; /** * Compute the diff between the current manifest and a fresh import, without applying changes. */ export declare function computeSyncDiff(opts: { targetProjectRoot: string; executeQuery?: SnowflakeQueryExecutor; }): Promise; //# sourceMappingURL=semantic-import.d.ts.map