/**
 * AiFieldDriver —— AI 字段驱动
 *
 * 迁移自：
 * - add-field-button.tsx 中 handleAiConfigSave
 * - use-field-creation.tsx 中 AI 分支
 * - columnHeaderMenuUtils.ts 中 handleEditAiColumn / AI 删除分支
 *
 * 设计要点：
 * 1. 每种 AI 子类型（ai-generate / format-convert / ...）及 Agent 子类型
 *    共用此 driver 类，通过构造函数 options 区分元信息和图标。
 * 2. persistMeta 调用 AiColumnService 远程保存，属于异步持久化。
 * 3. materializeData 根据 saveMode 决定是否立即提交批量 AI 任务。
 * 4. remove 需先远程删除 AI 列，再清理本地 dataModel（columnDefinitions、viewConfigs 等）。
 * 5. updateMeta 在编辑场景下同时更新远程、columnDefinitions 和旧分桶 aiConfig。
 */
import type { FieldDriver, FieldMeta, FieldUiContribution, FieldRecord, FieldContext, FieldCategory } from '../types';
import type { AiFieldConfig, SaveMode } from '../../components/toolbar/components/add-field/types';
/** 构造 AiFieldDriver 所需的外部配置，由 createDefaultDrivers 提供 */
export interface AiFieldDriverOptions {
    type: string;
    label: string;
    category: FieldCategory;
    icon: string;
    iconType: 'ai' | 'agent';
    iconColor: string;
    order: number;
}
/**
 * AI 字段创建/编辑时的完整配置。
 * 继承 AiFieldConfig（prompt 模板、模型等），额外增加 saveMode 控制是否立即执行任务。
 */
export interface AiFieldCreateConfig extends AiFieldConfig {
    saveMode?: SaveMode;
}
export declare class AiFieldDriver implements FieldDriver<AiFieldCreateConfig> {
    private options;
    constructor(options: AiFieldDriverOptions);
    getMeta(): FieldMeta;
    getUiContribution(): FieldUiContribution;
    createDefaultConfig(): AiFieldCreateConfig;
    validateConfig(config: AiFieldCreateConfig): {
        valid: boolean;
        error?: string;
    };
    /**
     * 远程持久化 AI 字段元数据。
     * 调用 AiColumnService.saveAiColumn 写入服务端，再通过 addAiColumnToView 关联到视图。
     */
    persistMeta(config: AiFieldCreateConfig, ctx: FieldContext): Promise<FieldRecord>;
    /**
     * 构建列定义并通过 dataModel.addColumn 注册。
     * 同时将 aiConfig 双写到旧分桶，保持向后兼容。
     */
    buildColumnDef(record: FieldRecord, ctx: FieldContext): any;
    /** 将新列挂载到当前视图：追加到 columnOrder，并为每行 rawData 填充空值 */
    attachToView(record: FieldRecord, ctx: FieldContext): void;
    /**
     * 物化 AI 字段数据：根据 saveMode 决定是否立即为目标行提交批量 AI 任务。
     * 'config-only' 模式下不执行任务（仅保存配置），其余模式提取 prompt 变量后批量提交。
     * 提交前会在每行对应单元格写入 AI_GENERATING_MARKER 以显示 loading 状态。
     */
    materializeData(record: FieldRecord, config: AiFieldCreateConfig, ctx: FieldContext): Promise<void>;
    /**
     * 删除 AI 列：先调用远程接口 removeAiColumn，再清理本地 dataModel。
     * 本地清理包括：columnDefinitions、customField 分桶、各视图的 columnOrder / hiddenColumns / filter / sort / group / colorFill。
     */
    remove(columnId: string, ctx: FieldContext): Promise<void>;
    /**
     * 编辑场景下更新 AI 字段元数据。
     * 同步更新三处：远程服务端 → columnDefinitions（列标题 + aiConfig）→ 旧分桶 customFieldAiConfig。
     * 最后调用 updateRemoteViews 同步视图配置到服务端。
     */
    updateMeta(columnId: string, config: AiFieldCreateConfig, ctx: FieldContext): Promise<FieldRecord>;
    /** 从旧 aiConfig 分桶恢复 FieldRecord，用于编辑面板回填已有配置 */
    hydrate(columnId: string, ctx: FieldContext): FieldRecord | undefined;
    /** 从 dataModel 中彻底清理该字段的所有痕迹（列定义、分桶、各视图配置） */
    private removeFieldFromDataModel;
}
