import { ActiveRecord, RelationUpdateType, SubmitRelationValue, SubmitType, SubmitValue } from '@oinone/kunlun-engine';
import { ViewMode, ViewType } from '@oinone/kunlun-meta';
import { CallChaining, ReturnPromise } from '@oinone/kunlun-shared';
import { ComputeTrigger, ValidateTrigger, WidgetTrigger } from '@oinone/kunlun-vue-ui-common';
import { ActiveRecordsWidgetProps, WidgetSubjection } from '@oinone/kunlun-vue-widget';
import { ValidatorInfo } from '../../typing';
import { BaseDataWidget } from '../common';
import { FormValidateResult } from '../types';
export declare type BaseFormItemWidgetProps = ActiveRecordsWidgetProps;
export declare class BaseFormItemWidget<Value = unknown, Props extends BaseFormItemWidgetProps = BaseFormItemWidgetProps> extends BaseDataWidget<Props> {
    protected viewType: ViewType | undefined;
    protected parentViewMode: ViewMode | undefined;
    protected get viewMode(): ViewMode | undefined;
    protected parentSubmitType: SubmitType | undefined;
    protected currentSubmitType: SubmitType | undefined;
    protected get submitType(): SubmitType;
    protected parentRelationUpdateType: RelationUpdateType | undefined;
    protected currentRelationUpdateType: RelationUpdateType | undefined;
    protected get relationUpdateType(): RelationUpdateType;
    protected reloadFormData$: WidgetSubjection<boolean>;
    initialize(props: Props): this;
    /**
     * 当前表单数据
     * @protected
     */
    protected get formData(): ActiveRecord;
    protected submitCallChaining: CallChaining<SubmitValue> | undefined;
    protected validatorCallChaining: CallChaining<boolean> | undefined;
    get value(): Value | null | undefined;
    getValue(): Value | null | undefined;
    setValue(value: Value | null | undefined): void;
    protected compute(): Value | null | undefined;
    get layout(): string | undefined;
    get label(): string | undefined;
    get labelInvisible(): boolean;
    get help(): any;
    get hint(): string | undefined;
    get required(): boolean;
    get readonly(): boolean;
    get disabled(): boolean;
    get requiredTips(): string | undefined;
    defaultValidateTrigger: ValidateTrigger[];
    get validateTrigger(): ValidateTrigger[];
    protected validation: ValidatorInfo | undefined;
    get validatorInfo(): ValidatorInfo | undefined;
    protected blurValue: string | null | undefined;
    setBlurValue(val: unknown): void;
    computeBlurValue(val: unknown): string | null | undefined;
    protected get clearFields(): string[];
    /**
     * 值变更
     * @param val 新值
     */
    change(val: Value | null | undefined): void;
    protected updateValue(val: Value | null | undefined): void;
    protected afterChange(): void;
    /**
     * 聚焦
     */
    focus(): void;
    /**
     * 失焦
     */
    blur(): void;
    protected afterBlur(): void;
    protected defaultConstructDataTrigger(): WidgetTrigger[];
    protected defaultClearFieldsTrigger(): WidgetTrigger[];
    protected get constructDataTrigger(): WidgetTrigger[];
    protected get clearFieldsTrigger(): WidgetTrigger[];
    afterTriggerExecute(trigger: WidgetTrigger): Promise<void>;
    protected blurValueChange(): boolean;
    constructDataBack(): Promise<boolean>;
    protected generatorConstructMirrorSubmitData(): ActiveRecord;
    protected clearFieldsCallback(): boolean;
    protected englishOnlyRegex: RegExp;
    protected quotationOnlyRegex: RegExp;
    protected executeLabelExpression<T>(label: string): string | undefined;
    protected executeExpression<T>(expression: string, errorValue?: T): T | string | undefined;
    executeCompute?(trigger: ComputeTrigger): any;
    /**
     * 数据提交的方法，例如：m2o字段user(假设其关系字段为userId)的值{id: 1, name: 'xxx'},但是实际后端数据只需要其中的id，所以用m2o对应的关系字段userId提交数据就可以了
     * @param submitValue
     */
    submit(submitValue: SubmitValue): ReturnPromise<Record<string, unknown> | SubmitRelationValue | undefined>;
    protected formValidateCallChaining: CallChaining<FormValidateResult[] | undefined> | undefined;
    protected get isSkipValidator(): boolean;
    validator(): Promise<ValidatorInfo>;
    /**
     * @description 表达式校验
     *
     * @param {string} expression 表达式
     * @param {string} msg 校验失败的消息提示
     *
     */
    protected validatorByExpression(expression: string, msg: string): ValidatorInfo | undefined;
    protected validatorSuccess(message?: string): ValidatorInfo;
    protected validatorSkip(message?: string): ValidatorInfo;
    protected validatorError(message?: string): ValidatorInfo;
    protected validatorWarning(message?: string): ValidatorInfo;
    protected validatorValidating(message?: string): ValidatorInfo;
    executeValidator(): Promise<ValidatorInfo>;
    protected invisibleProcess(invisible: boolean | string): boolean | undefined;
    protected childrenInvisibleProcess(): boolean;
    protected $$mounted(): void;
    protected $$unmounted(): void;
}
