import { RelationUpdateType, SubmitType, SubmitValue } from '@oinone/kunlun-engine';
import { LifeCycleTypes } from '@oinone/kunlun-event';
import { ViewMode } from '@oinone/kunlun-meta';
import { Router } from '@oinone/kunlun-router';
import { CallChaining } from '@oinone/kunlun-shared';
import { ActiveRecordsWidgetProps, WidgetSubjection } from '@oinone/kunlun-vue-widget';
import { BaseElementWidget } from '../token';
export interface BaseElementViewWidgetProps extends ActiveRecordsWidgetProps {
    viewMode?: ViewMode;
    submitType?: SubmitType;
    relationUpdateType?: RelationUpdateType;
    mountedCallChaining?: CallChaining;
    refreshCallChaining?: CallChaining;
}
export interface ElementViewDataSourceConfig extends Record<string, unknown> {
    /**
     * 手动指定是否当前视图组件为数据源提供者
     * 当手动指定后，将无法进行变更
     */
    provider?: boolean;
}
/**
 * Element视图组件（主要用于视图主要展示组件）
 */
export declare abstract class BaseElementViewWidget<Props extends BaseElementViewWidgetProps = BaseElementViewWidgetProps> extends BaseElementWidget<Props> {
    protected $router: Router;
    protected internalDataSourceProvider: boolean;
    protected reloadFormData$: WidgetSubjection<boolean>;
    /**
     * 是否是数据源提供者
     * 为true则数据源在当前组件自己查询接口获得数据
     * 为false则可能是父组件直接把数据源提供到当前组件，如O2M表格组件，数据可能是O2M表格字段组件从后端接口提前获取好的
     * @protected
     */
    protected get isDataSourceProvider(): boolean;
    protected set isDataSourceProvider(value: boolean);
    protected parentViewMode: ViewMode | undefined;
    protected currentViewMode: ViewMode | undefined;
    protected get viewMode(): ViewMode;
    getViewMode(): ViewMode;
    setViewMode(mode: ViewMode | undefined): void;
    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 dataSourceConfig: ElementViewDataSourceConfig | undefined;
    protected parentMountedCallChaining: CallChaining | undefined;
    protected currentMountedCallChaining: CallChaining | undefined;
    /**
     * 挂载时
     * @protected
     */
    protected get mountedCallChaining(): CallChaining<unknown> | undefined;
    protected parentRefreshCallChaining: CallChaining<boolean> | undefined;
    protected currentRefreshCallChaining: CallChaining | undefined;
    /**
     * 刷新时
     * @protected
     */
    protected get refreshCallChaining(): CallChaining<unknown> | CallChaining<boolean> | undefined;
    protected parentSubmitCallChaining: CallChaining<SubmitValue> | undefined;
    /**
     * 数据提交
     * @protected
     */
    protected get submitCallChaining(): CallChaining<SubmitValue> | undefined;
    protected parentValidatorCallChaining: CallChaining<boolean> | undefined;
    /**
     * 数据校验
     * @protected
     */
    protected get validatorCallChaining(): CallChaining<boolean> | undefined;
    protected internalFilter: string | undefined;
    protected setViewFilter: Function | undefined;
    /**
     * 自定义rsql表达式
     * @protected
     */
    protected get filter(): string | undefined;
    protected internalDomain: string | undefined;
    /**
     * 自定义rsql表达式
     * @protected
     */
    protected get domain(): string | undefined;
    protected refreshCondition(): void;
    protected refreshConditionContext(): Record<string, unknown> | undefined;
    initialize(props: Props): this;
    protected isExpandView(): boolean;
    protected abstract mountedProcess(): Promise<void>;
    protected abstract refreshProcess(): Promise<void>;
    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 $$executeRefreshCallChaining(args: unknown[] | undefined): Promise<void>;
    notify(type: LifeCycleTypes): void;
}
