import { ActiveRecord, RuntimeModelField } from '@oinone/kunlun-engine';
import { FieldEventName, LifeCycleTypes } from '@oinone/kunlun-event';
import { ViewMode, ViewType } from '@oinone/kunlun-meta';
import { ActiveEditorContext, RenderCellContext, RowContext } from '@oinone/kunlun-vue-ui';
import { ActiveRecordsWidgetProps, InnerWidgetType } from '@oinone/kunlun-vue-widget';
import { VNode } from 'vue';
import { UserTablePrefer } from '../../typing';
import { BaseTableQuickOperationColumnWidget } from './BaseTableQuickOperationColumnWidget';
export declare type HandlerEvent = (field: BaseTableFieldWidget) => void;
export interface BaseTableFieldWidgetProps<Field extends RuntimeModelField = RuntimeModelField> extends ActiveRecordsWidgetProps {
    viewType: ViewType;
    field: Field;
}
export declare class BaseTableFieldWidget<Value = unknown, Field extends RuntimeModelField = RuntimeModelField, Props extends BaseTableFieldWidgetProps<Field> = BaseTableFieldWidgetProps<Field>> extends BaseTableQuickOperationColumnWidget<Value, Props> {
    protected $$innerWidgetType: InnerWidgetType;
    protected viewType: ViewType | undefined;
    protected currentEditorContext: ActiveEditorContext | undefined;
    protected viewMode: ViewMode;
    protected runtimeField: Field | undefined;
    get field(): Field;
    initialize(props: Props): this;
    get columnType(): string;
    protected cellWidth: number | undefined;
    protected cellMinWidth: number | undefined;
    get minWidth(): any;
    get width(): string | number | undefined;
    get fixed(): string | boolean | undefined;
    protected expandOperationField: string | undefined;
    get isExpandOperationField(): boolean;
    protected getTableAutoWidth(): number | undefined;
    protected getTableForCellMinWidth(): number | undefined;
    protected computeDefaultMinWidth(): string | number | undefined;
    className(context: RenderCellContext): string | string[] | undefined;
    get sortable(): boolean;
    get relationSortFields(): string[] | undefined;
    get invisible(): boolean;
    protected get dslInvisible(): boolean;
    get required(): boolean;
    protected userPrefer?: UserTablePrefer;
    protected get userPreferInvisible(): boolean;
    protected invisibleContent(context: RowContext): boolean;
    get editable(): boolean;
    cellEditable(context: RowContext): boolean;
    compute(context: RowContext): Value | null | undefined;
    protected getCompute(data: ActiveRecord): boolean | string | undefined;
    protected editorConfirmText(context: RowContext): string | undefined;
    renderEditSlot(context: RowContext): VNode[] | string;
    isExpressionString(expression?: string): boolean;
    executeExpression<T>(activeRecord: ActiveRecord | undefined, expression: string, errorValue?: T): T | string | undefined;
    protected $$beforeCreated(): void;
    protected $$created(): void;
    protected $$beforeMount(): void;
    protected $$mounted(): void;
    protected $$beforeUpdate(): void;
    protected $$updated(): void;
    protected $$beforeUnmount(): void;
    protected $$unmounted(): void;
    protected fieldWidgetMounted: ((widget: BaseTableFieldWidget) => void) | undefined;
    protected fieldWidgetUnmounted: ((widget: BaseTableFieldWidget) => void) | undefined;
    private ownEventListeners;
    /**
     * 监听字段的事件
     * @param  event 事件名 / 事件对象
     * @param  handler? 回调函数
     *
     * @example
     *
     * 单个事件监听
     * fieldWidget.on('change', (fieldInstance) => {})
     * fieldWidget.on('blur', (fieldInstance) => {})
     *
     */
    on(event: {
        [key in FieldEventName]?: HandlerEvent;
    }): void;
    /**
     * 多个事件监听
     *
     * @example
     *
     * fieldWidget.on({
     *  change(fieldInstance) => {},
     *  blur(fieldInstance) => {},
     * })
     */
    on(event: FieldEventName, handler: HandlerEvent): void;
    protected notify(type: LifeCycleTypes): void;
    protected executeAction(context: RowContext): void;
    protected handleClick(context: RowContext, e: MouseEvent): void;
    protected wrapperToFieldAction(node: VNode[] | string, context: RowContext): string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>[];
    /**
     * @deprecated please using wrapperToFieldAction
     */
    protected wrapperToFiledAction(node: VNode[] | string, context: RowContext): string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
        [key: string]: any;
    }>[];
    renderDefaultSlot(context: RowContext): VNode[] | string;
}
