/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
import type { PropertyMetaFactory } from '@nocobase/flow-engine';
import { FormInstance } from 'antd';
import React from 'react';
import { BlockGridModel } from '../../base/BlockGridModel';
import { CollectionBlockModel } from '../../base/CollectionBlockModel';
import { FormActionModel } from './FormActionModel';
import { FormGridModel } from './FormGridModel';
import { FormValueRuntime } from './value-runtime';
type DefaultCollectionBlockModelStructure = {
    parent?: BlockGridModel;
    subModels?: {
        grid: FormGridModel;
        actions?: FormActionModel[];
    };
};
type CustomFormBlockModelClassesEnum = {};
export declare class FormBlockModel<T extends DefaultCollectionBlockModelStructure = DefaultCollectionBlockModelStructure> extends CollectionBlockModel<T> {
    formValueRuntime?: FormValueRuntime;
    private userModifiedTopLevelFields;
    get form(): FormInstance<any>;
    _defaultCustomModelClasses: {
        FormActionGroupModel: string;
        FormItemModel: string;
        FormAssociationFieldGroupModel: string;
    };
    customModelClasses: CustomFormBlockModelClassesEnum;
    private syncRuntimeAssignRules;
    renderConfigureActions(): React.JSX.Element;
    setFieldsValue(values: any): void;
    setFieldValue(fieldName: any, value: any): void;
    /**
     * @internal
     *
     * 仅用于编辑表单刷新保护：只记录「用户交互」触发的改动（来自 antd Form.onValuesChange）。
     * 程序化 setFieldValue/setFieldsValue 不会触发 onValuesChange（见 linkageRules 的手动 emit），因此不会污染该集合。
     */
    markUserModifiedFields(changedValues: any): void;
    /**
     * @internal
     */
    getUserModifiedFields(): Set<string>;
    /**
     * @internal
     */
    resetUserModifiedFields(): void;
    /**
     * @internal
     */
    resetRuntimeUserEditedState(): void;
    onDispatchEventStart(eventName: string, options?: any, inputArgs?: Record<string, any>): Promise<void>;
    getStepParams(flowKey: string, stepKey: string): any | undefined;
    getStepParams(flowKey: string): Record<string, any> | undefined;
    getStepParams(): Record<string, any>;
    setStepParams(flowKey: string, stepKey: string, params: any): void;
    setStepParams(flowKey: string, stepParams: Record<string, any>): void;
    setStepParams(allParams: Record<string, any>): void;
    saveStepParams(): Promise<any>;
    protected createFormValuesMetaFactory(): PropertyMetaFactory;
    useHooksBeforeRender(): void;
    onInit(options: any): void;
    protected onMount(): void;
    onUnmount(): void;
    getCurrentRecord(): {};
    renderComponent(): void;
}
export declare function FormComponent({ model, children, layoutProps, initialValues, ...rest }: {
    model: any;
    children: React.ReactNode;
    layoutProps?: any;
    initialValues?: any;
    onFinish?: (values: any) => void;
    [key: string]: any;
}): React.JSX.Element;
type FormBlockContentProps = {
    model: FormBlockModel;
    gridModel: FormGridModel;
    layoutProps?: any;
    onFinish?: (values: any) => void;
    grid: React.ReactNode;
    actions?: React.ReactNode;
    footer?: React.ReactNode;
    heightMode?: string;
    height?: number;
};
export declare const FormBlockContent: ({ model, gridModel, layoutProps, onFinish, grid, actions, footer, heightMode, height, }: FormBlockContentProps) => React.JSX.Element;
/**
 * 兼容旧版本
 * @deprecated use FormBlockModel instead
 */
export declare class FormModel extends FormBlockModel {
}
export {};
