import { RelationUpdateType, RuntimeAction, SubmitType, SubmitValue } from '@oinone/kunlun-engine';
import { ActionType, ViewActionTarget, ViewMode, ViewType } from '@oinone/kunlun-meta';
import { Matched, Router } from '@oinone/kunlun-router';
import { CallChaining, Constructor } from '@oinone/kunlun-shared';
import { SPIOptions, SPISingleSelector, SPITokenFactory } from '@oinone/kunlun-spi';
import { ActiveRecordsWidgetProps, InnerWidgetType } from '@oinone/kunlun-vue-widget';
import { PopupScene } from '../../typing';
import { BaseRuntimePropertiesWidget } from '../common';
/**
 * Action组件注册可选项
 */
export interface BaseActionOptions extends SPIOptions {
    /**
     * 指定动作类型
     */
    actionType?: ActionType | ActionType[];
    /**
     * 指定跳转动作路由类型
     */
    target?: ViewActionTarget | string | string[];
    /**
     * 指定动作名称
     */
    name?: string | string[];
    /**
     * 指定模型
     */
    model?: string[] | string;
    /**
     * 指定视图类型
     */
    viewType?: ViewType | ViewType[];
    /**
     * 指定视图名称
     */
    viewName?: string | string[];
    /**
     * 指定组件名称或别称
     */
    widget?: string[] | string;
}
export interface BaseActionWidgetProps<Action extends RuntimeAction = RuntimeAction> extends ActiveRecordsWidgetProps {
    viewType?: ViewType;
    action?: Action;
}
export declare class BaseActionWidget<Action extends RuntimeAction = RuntimeAction, Props extends BaseActionWidgetProps<Action> = BaseActionWidgetProps<Action>> extends BaseRuntimePropertiesWidget<Props> {
    protected $$innerWidgetType: InnerWidgetType;
    static Token: SPITokenFactory<BaseActionOptions>;
    static Selector: SPISingleSelector<BaseActionOptions, Constructor<BaseActionWidget>>;
    protected $matched: Matched | undefined;
    protected $router: Router | undefined;
    protected viewType: ViewType | undefined;
    protected parentViewMode: ViewMode | undefined;
    protected get viewMode(): ViewMode | undefined;
    protected submitType: SubmitType | undefined;
    protected relationUpdateType: RelationUpdateType | undefined;
    private runtimeAction;
    get action(): Action;
    protected get isAsync(): boolean;
    protected popupScene: PopupScene | string | undefined;
    protected get isDialog(): boolean;
    protected get isDrawer(): boolean;
    protected get isInnerPopup(): boolean;
    /**
     * 数据提交
     * @protected
     */
    protected submitCallChaining: CallChaining<SubmitValue> | undefined;
    /**
     * 数据校验
     * @protected
     */
    protected validatorCallChaining: CallChaining<boolean> | undefined;
    /**
     * 刷新时
     * @protected
     */
    protected refreshCallChaining: CallChaining<boolean> | undefined;
    initialize(props: Props): this;
    load<R>(fn: (...args: any[]) => R, ...args: any[]): Promise<R>;
    protected $$beforeMount(): void;
}
