export type BlockStudioImportSourceKind = 'raw-sql-file' | 'raw-sql-folder' | 'tableau-workbook' | 'powerbi-project';
export type BlockStudioImportReviewStatus = 'draft' | 'review' | 'saved' | 'rejected';
export type BlockStudioImportInputMode = 'path' | 'paste' | 'upload';
export type BlockStudioImportSplitStrategy = 'semicolon-go' | 'metadata-comment' | 'manual';
export interface BlockStudioImportSource {
    path: string;
    content: string;
}
export interface BlockStudioImportLineage {
    sourceTables: string[];
    parameters: string[];
    warnings: string[];
    statementIndex: number;
    totalStatements: number;
}
export interface BlockStudioAiAssistance {
    action: string;
    summary: string;
    createdAt: string;
    status: 'suggested' | 'accepted' | 'rejected';
    provider?: string;
    patch?: Partial<Pick<BlockStudioImportCandidate, 'name' | 'domain' | 'description' | 'owner' | 'tags' | 'terms' | 'pattern' | 'grain' | 'entities' | 'outputs' | 'dimensions' | 'allowedFilters' | 'parameterPolicy' | 'filterBindings' | 'sourceSystems' | 'replacementFor' | 'reviewCadence' | 'sql' | 'dqlSource'>>;
}
export interface BlockStudioCertificationChecklist {
    metadata: boolean;
    validation: boolean;
    run: boolean;
    tests: boolean;
    chart: boolean;
    lineage: boolean;
    aiReviewed: boolean;
    blockers: string[];
    checkedAt?: string;
}
export interface DqlGenerationEvidence {
    kind: 'dql_block' | 'dql_term' | 'business_view' | 'domain' | 'semantic_metric' | 'semantic_model' | 'dbt_model' | 'warehouse_table' | 'datalex_contract' | 'datalex_entity' | 'datalex_domain' | 'datalex_term' | 'metadata' | 'lineage';
    name: string;
    description?: string;
    objectKey?: string;
    source?: string;
    reason?: string;
    confidence?: number;
}
export interface BlockDraftSaveState {
    status: 'pending' | 'saved' | 'error' | 'skipped';
    path?: string;
    savedAt?: string;
    error?: string;
    reason?: string;
}
export type DqlParameterPolicyKind = 'dynamic' | 'static' | 'business' | 'derived' | 'optional' | 'ambiguous_review_required';
export type DqlParameterValue = string | number | boolean | Array<string | number | boolean>;
export interface DqlParameterDecision {
    name: string;
    policy: DqlParameterPolicyKind;
    value: DqlParameterValue;
    valueType: 'string' | 'number' | 'boolean' | 'date' | 'year' | 'set';
    sourceExpression: string;
    reason: string;
    confidence: number;
}
export interface BlockFilterBinding {
    filter: string;
    binding: string;
}
export type BlockSimilarityMatchKind = 'exact_sql_match' | 'parameterized_duplicate' | 'business_duplicate' | 'near_variant' | 'source_variant' | 'new_logic';
export type DqlCandidateRecommendedAction = 'reuse_existing' | 'extend_existing' | 'create_replacement' | 'create_new' | 'review_required';
export interface BlockSimilarityMatch {
    kind: BlockSimilarityMatchKind;
    objectKey?: string;
    name: string;
    status?: string;
    source?: string;
    score: number;
    reason: string;
    recommendedAction: DqlCandidateRecommendedAction;
}
export interface BlockStudioImportCandidate {
    id: string;
    sourceKind: BlockStudioImportSourceKind;
    sourcePath: string;
    name: string;
    domain: string;
    description: string;
    owner: string;
    tags: string[];
    terms?: string[];
    pattern?: string;
    grain?: string;
    entities?: string[];
    outputs?: string[];
    dimensions?: string[];
    allowedFilters?: string[];
    parameterPolicy?: Array<{
        name: string;
        policy: string;
    }>;
    filterBindings?: BlockFilterBinding[];
    sourceSystems?: string[];
    replacementFor?: string[];
    reviewCadence?: string;
    parameterDecisions?: DqlParameterDecision[];
    similarityMatches?: BlockSimilarityMatch[];
    recommendedAction?: DqlCandidateRecommendedAction;
    sql: string;
    dqlSource: string;
    validation: unknown | null;
    preview: unknown | null;
    lineage: BlockStudioImportLineage;
    confidence: number;
    splitStrategy: BlockStudioImportSplitStrategy;
    warnings: string[];
    conversionNotes: string[];
    aiAssistance: BlockStudioAiAssistance[];
    certificationChecklist?: BlockStudioCertificationChecklist;
    reviewStatus: BlockStudioImportReviewStatus;
    savedPath?: string;
    generationMode?: 'ai' | 'deterministic';
    generationProvider?: string;
    llmContext?: string;
    evidence?: DqlGenerationEvidence[];
    draftSave?: BlockDraftSaveState;
}
export type DqlGenerationCandidate = BlockStudioImportCandidate & {
    generationMode: 'ai' | 'deterministic';
    generationProvider: string;
    llmContext: string;
    evidence: DqlGenerationEvidence[];
    draftSave: BlockDraftSaveState;
};
export interface BlockStudioImportManifest {
    id: string;
    sourceKind: BlockStudioImportSourceKind;
    inputPath: string;
    createdAt: string;
    updatedAt: string;
    inputMode: BlockStudioImportInputMode;
    sourceFiles: string[];
    defaults: {
        domain: string;
        owner: string;
        tags: string[];
    };
    candidateIds: string[];
}
export interface BlockStudioImportSession extends BlockStudioImportManifest {
    candidates: BlockStudioImportCandidate[];
}
export interface DqlGenerationSession extends Omit<BlockStudioImportSession, 'candidates'> {
    mode: 'ai-import';
    generation: {
        provider: string;
        aiEnabled: boolean;
        contextObjectCount: number;
        createdDrafts: number;
        warnings: string[];
    };
    candidates: DqlGenerationCandidate[];
}
export interface BlockStudioImportSessionSummary {
    id: string;
    sourceKind: BlockStudioImportSourceKind;
    inputMode: BlockStudioImportInputMode;
    inputPath: string;
    sourceFiles: string[];
    createdAt: string;
    updatedAt: string;
    defaults: BlockStudioImportManifest['defaults'];
    candidateCount: number;
    savedCount: number;
    rejectedCount: number;
    warningCount: number;
}
export interface CreateBlockStudioImportOptions {
    sourceKind?: BlockStudioImportSourceKind | 'raw-sql';
    inputPath?: string;
    inputMode?: BlockStudioImportInputMode;
    sources?: BlockStudioImportSource[];
    domain?: string;
    owner?: string;
    tags?: string[];
}
export declare function createBlockStudioImportSession(projectRoot: string, options: CreateBlockStudioImportOptions): BlockStudioImportSession;
export declare function loadBlockStudioImportSession(projectRoot: string, importId: string): BlockStudioImportSession;
export declare function listBlockStudioImportSessions(projectRoot: string): BlockStudioImportSessionSummary[];
export declare function deleteBlockStudioImportSession(projectRoot: string, importId: string): void;
export declare function clearBlockStudioImportSessions(projectRoot: string): number;
export declare function writeBlockStudioImportSession(projectRoot: string, session: BlockStudioImportSession): void;
export declare function writeBlockStudioImportCandidate(projectRoot: string, importId: string, candidate: BlockStudioImportCandidate): void;
export declare function readBlockStudioImportCandidate(projectRoot: string, importId: string, candidateId: string): BlockStudioImportCandidate;
export declare function updateBlockStudioImportCandidate(projectRoot: string, importId: string, candidateId: string, patch: Partial<Pick<BlockStudioImportCandidate, 'name' | 'domain' | 'description' | 'owner' | 'tags' | 'terms' | 'pattern' | 'grain' | 'entities' | 'outputs' | 'dimensions' | 'allowedFilters' | 'parameterPolicy' | 'filterBindings' | 'sourceSystems' | 'replacementFor' | 'reviewCadence' | 'parameterDecisions' | 'similarityMatches' | 'recommendedAction' | 'sql' | 'reviewStatus' | 'llmContext' | 'evidence' | 'draftSave' | 'generationMode' | 'generationProvider' | 'savedPath' | 'conversionNotes'>>): BlockStudioImportCandidate;
export declare function candidateToDqlSource(candidate: Pick<BlockStudioImportCandidate, 'name' | 'domain' | 'description' | 'owner' | 'tags' | 'terms' | 'pattern' | 'grain' | 'entities' | 'outputs' | 'dimensions' | 'allowedFilters' | 'parameterPolicy' | 'filterBindings' | 'parameterDecisions' | 'sourceSystems' | 'replacementFor' | 'reviewCadence' | 'sql' | 'llmContext'>): string;
export interface DqlSqlParameterizationResult {
    sql: string;
    parameterDecisions: DqlParameterDecision[];
    parameterPolicy: Array<{
        name: string;
        policy: string;
    }>;
    filterBindings: BlockFilterBinding[];
    allowedFilters: string[];
    warnings: string[];
}
export declare function parameterizeSqlForDqlImport(sql: string): DqlSqlParameterizationResult;
//# sourceMappingURL=block-studio-import.d.ts.map