import { OnDestroy } from '@angular/core';
import { Subject } from 'rxjs';
import { DataRequestConfig, SafeAny, EditorBaseField } from 'ngx-puzzle/core';
import { ControlsService } from 'ngx-puzzle/core/services/internal/controls.service';
import { NgxPuzzleDataBindingService } from 'ngx-puzzle/core/services/external/ngx-puzzle-data-binding.service';
import * as i0 from "@angular/core";
/**
 * 编辑器基类，提供通用的编辑器功能
 * @template TConfig 具体的配置对象类型
 * @template TSubType 子类型枚举
 * @template TField 字段类型，继承自 EditorBaseField
 */
export declare abstract class EditorBaseComponent<TConfig extends Record<string, SafeAny> = Record<string, SafeAny>, TSubType extends string = string, TSection extends EditorBaseField = EditorBaseField> implements OnDestroy {
    protected controlsService: ControlsService;
    protected dataBindingService: NgxPuzzleDataBindingService;
    componentId: import("@angular/core").InputSignal<string | undefined>;
    options: import("@angular/core").ModelSignal<TConfig | undefined>;
    subType: import("@angular/core").InputSignal<string | undefined>;
    requestOptions: import("@angular/core").InputSignal<DataRequestConfig>;
    readonly onChange: import("@angular/core").OutputEmitterRef<TConfig>;
    readonly requestOptionsChange: import("@angular/core").OutputEmitterRef<DataRequestConfig>;
    sections: TSection[];
    formData: Record<string, SafeAny>;
    visible: boolean;
    bufferIndex: number;
    protected destroy$: Subject<void>;
    constructor();
    /**
     * 设置 effect 监听
     */
    private setupEffects;
    /**
     * 抽象方法：设置字段配置 - 子类必须实现
     */
    protected abstract setFields(type?: TSubType): void;
    /**
     * 获取组件类型 - 子类需要实现
     */
    protected abstract getComponentType(): string;
    /**
     * 更新表单数据 - 子类可重写
     */
    protected updateFormData(config?: TConfig): void;
    /**
     * 配置更新后的钩子方法 - 子类可重写
     */
    protected afterConfigUpdate(config?: TConfig, requestOptions?: DataRequestConfig): void;
    /**
     * 表单字段变更处理 - 子类可重写
     */
    onFormFieldChange(key: string, value: SafeAny, parentKey?: string, index?: number): void;
    /**
     * 删除数组项 - 支持数据绑定同步
     */
    protected removeArrayItem(key: string, index: number): void;
    onDataBtnClick<T extends EditorBaseField>(field: T, i: number): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EditorBaseComponent<any, any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EditorBaseComponent<any, any, any>, "ng-component", never, { "componentId": { "alias": "componentId"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "subType": { "alias": "subType"; "required": false; "isSignal": true; }; "requestOptions": { "alias": "requestOptions"; "required": false; "isSignal": true; }; }, { "options": "optionsChange"; "onChange": "onChange"; "requestOptionsChange": "requestOptionsChange"; }, never, never, false, never>;
}
