import { IBoardInfo, IBrick, IBrickDataGlobal, IBrickInstance, IValidateInfo } from '@chief-editor/base';
export declare type PromiseResult<T> = Promise<T> | T;
export interface IFlowBrickLifeCycle<V, DS, DP, CG, ST> {
    onLoaded: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onDispose: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onBeforeRefreshBrick: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onAfterRefreshBrick: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onBeforeValidate: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onAfterValidate: (_: void, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onBeforeGetDatasource: <E>(extra: E, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<E>;
    onAfterGetDatasource: (data: DS, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onCheckValidateValue: (value: V, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<V | null>;
    onBeforeChange: (value: V, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<V>;
    onValueChange?: (value: V, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onAfterChange: (value: V, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<void>;
    onCatchErrorInfo: (info: IValidateInfo, path: IBrick<V, DS, DP, CG, ST>) => PromiseResult<string>;
}
export interface IFlowBrickRenderConfig {
    updateWhenLoading: boolean;
    updateWhenValidating: boolean;
    updateUntilReady: boolean;
}
export interface IFlowPartMapInfo {
    key: string;
    part: string;
    bricks?: IBrickDataGlobal[];
    repeat?: boolean;
    field?: string;
}
export interface IFlowBrickConfig<V, DS, DP, CG, ST> extends Partial<IFlowBrickLifeCycle<V, DS, DP, CG, ST>> {
    getInitialState(): ST;
    getDynamicInitialState(path: IBrickInstance<V, DS, DP, CG, ST>): ST;
    getDefaultValue(): V;
    getDynamicDefaultValue(path: IBrickInstance<V, DS, DP, CG, ST>): V;
    getInitialDatasource(): DS;
    getPartBoardInfoFromBrickData(path: IBrickInstance<V, DS, DP, CG, ST>, part: string): IBoardInfo | null;
    getPartKeyMapFromBrickData?(path: IBrickInstance<V, DS, DP, CG, ST>): IFlowPartMapInfo[];
    getDisplayData(path: IBrickInstance<V, DS, DP, CG, ST>): DP;
    getRenderConfig(path: IBrickInstance<V, DS, DP, CG, ST>): IFlowBrickRenderConfig;
}
export declare type IFlowBrickConfigGlobal = IFlowBrickConfig<any, any, any, any, any>;
