import type { DataTableMatchingMode, DataTableMissingMode, DataTableSchemaConflictPolicy } from '../../n8n-packages.types';
import type { PackageDataTableRequirement } from '../../spec/requirements.schema';
import type { SerializedDataTable } from '../../spec/serialized/data-table.schema';
export interface WorkflowDataTableRequirement {
    workflowId: string;
    dataTableId: string;
}
export type DataTableResolutionFailureKind = 'missing' | 'id-conflict' | 'name-conflict' | 'schema-incompatible' | 'module-disabled' | 'permission-denied';
export type DataTableColumnTypeMismatch = {
    column: string;
    expectedType: string;
    actualType: string;
};
export type DataTableResolutionFailure = {
    kind: DataTableResolutionFailureKind;
    sourceId?: string;
    name?: string;
    existingProjectId?: string;
    missingColumns?: string[];
    typeMismatches?: DataTableColumnTypeMismatch[];
    extraColumns?: string[];
    usedByWorkflows: string[];
};
export declare function createFailure(requirement: PackageDataTableRequirement, kind: DataTableResolutionFailureKind, details?: Partial<Pick<DataTableResolutionFailure, 'existingProjectId' | 'missingColumns' | 'typeMismatches' | 'extraColumns'>>): DataTableResolutionFailure;
export interface DataTableImportRequest {
    requirements: PackageDataTableRequirement[] | undefined;
    packageDataTables: SerializedDataTable[];
    matchingMode: DataTableMatchingMode;
    missingMode: DataTableMissingMode;
    schemaConflictPolicy: DataTableSchemaConflictPolicy;
}
export interface DataTableImportPlan {
    creations: SerializedDataTable[];
    failures: DataTableResolutionFailure[];
    matchedCount: number;
}
