import { ReturnType, SelectLogicType } from "./logicRenderService/type";
import { RenderByFormKeyValueType } from "./conditionRenderService/type";
import { RequestParamMappingDataType } from "lowcode/_setters/cTreeDataRelation-setter/type";
/**
 * 后期这里需要重新规划处理
 *
 * 当前页面:应该包含state的全部数据，所以自定义属性也属于其中
 * 固定值:固定值需要处理，字符串，数组，对象，布尔等数据
 * 地址栏:地址栏
 * 数据源：包含了接口，合约等数据
 * 当前用户地址：当前用户地址，后期会扩展到当前钱包信息
 * 循环数据：主要是loop数据源循环
 */
export declare const enum DataSourceType {
    /**
     * 当前页面
     */
    currentPageType = 1,
    /**
     * 固定值
     */
    defaultType = 2,
    /**
     * 地址栏
     */
    locationType = 3,
    /**
     * 接口返回，
     * 准备废弃
     */
    requestType = 4,
    /**
     * 计算结果
     * 准备放弃
     */
    computeType = 5,
    /**
     * 数据来自数据源
     *
     */
    dataSourceType = 6,
    /**
     * 合约方法
     */
    pactFunctionType = 7,
    /**
     * 当前用户钱包
     */
    currentWalletConnectType = 8,
    /**
     * 自定义属性
     */
    customStateType = 9,
    /**
     * 循环埋入的数据
     */
    loopDataType = 10,
    /**
     * 针对合约里面存在递归配置的
     * 只会出现在合约请求参数里面
     */
    tupleType = 11,
    /**
     * 主要是全局数据库，弹框里面会有这个属性
     * 来自物料，即全局数据不好获取，需要具体的物料，传递给全局接口
     * 比如 循环数据，按钮点击传递的id
     */
    materielType = 12,
    /**
     * 传递给弹框的参数
     * 主要用于选择其他按钮给弹框传递的数据
     */
    modalDialogType = 13,
    /**
     * 字典，主要是更具内容翻译
     */
    dictionaryType = 14,
    /**
     * 引擎规则
     */
    engineRuleType = 15,
    /**
     * 循环选中数据
     */
    loopDataSelectedType = 16,
    /**
     * 主要是配置循环数据来源为自定义指定数据源
     */
    loopCustomDataType = 17,
    /**
     * 本地存储数据，只认storageDataBefore前缀的localStorage和sessionStorage的数据
     */
    storageDataType = 18,
    /**
     * 通过渲染器传递到当前页面是的数据
     */
    renderPropsDataType = 19
}
export interface RelationOptionType {
    label: string;
    value: DataSourceType;
}
export interface LoginOptionType {
    label: string;
    value: SelectLogicType;
}
export declare function getRelationList(): RelationOptionType[];
export declare function getTupleTypeRelationList(): RelationOptionType[];
export declare function getCustomStateTypeRelationList(): RelationOptionType[];
export declare function getAlterRelationList(): RelationOptionType[];
export declare function getLoopDataRelationList(): RelationOptionType[];
export declare function getDefaultTypeRelationList(): RelationOptionType[];
export declare function getRelationOptionListByKeys(keys: DataSourceType[]): RelationOptionType[];
/**
 * 字典选项
 * @returns
 */
export declare function getDictionaryList(): {
    label: any;
    value: DataSourceType;
}[];
export declare function getConditionRenderList(): RelationOptionType[];
export declare function getLogicSelectList(): {
    label: string;
    value: SelectLogicType;
}[];
export declare function getLogicReturnOption(): {
    label: string;
    value: ReturnType;
}[];
export declare function getFormDefaultList(): {
    label: any;
    value: DataSourceType;
}[];
export declare enum refreshType {
    /**
     * window页面筛选
     */
    refreshPage = "window_location_reload",
    /**
     * 刷新登录获取信息的接口
     */
    refreshBaseInfo = "refresh_base_info"
}
export interface displayConditionFlag {
    relate: string;
    conditions: null | displayConditionFlag[];
    conditionFlag?: boolean;
    id?: string;
    rowData?: rowDataFlag;
}
export interface rowDataFlag {
    formKey: number;
    treeKey: string;
    treeData: any;
    relation: string;
    formKey1: number;
    treeKey1: string;
    treeData1: any;
}
/**
 * 固定值的输入类型
 */
export declare enum DefaultInputType {
    /**
     * 输入框
     */
    input = "input",
    /**
     * 选择框
     */
    select = "select",
    /**
     * 布尔值
     */
    boolean = "boolean"
}
export declare enum PageDisplayEnum {
    ByRatio = "byRatio",
    Normal = "normal"
}
export declare enum PageLoadingMode {
    LevelByLevel = "LevelByLevel",
    All = "All",
    Level1 = "Level1"
}
export declare enum BackgroundSize {
    Contain = "Contain",
    Cover = "cover"
}
export declare enum VideoMade {
    Video = "video",
    VideoFrames = "videoframes"
}
export interface renderFormKeyList {
    key: keyof RenderByFormKeyValueType;
    value: any;
}
export declare enum TupleOriginType {
    default = "default",
    customData = "customData"
}
export interface TupleDataProps {
    originType: TupleOriginType;
    defaultData: RequestParamMappingDataType[][];
    customData: RequestParamMappingDataType;
}
export interface TupleRenderProps {
    onChange: Function;
    components: RequestParamMappingDataType[];
    data: TupleDataProps;
    addable: number;
}
