import * as rc_field_form_es_interface from 'rc-field-form/es/interface';
import Upload from '@fruits-chain/react-native-upload';
import { FC, ReactNode, ComponentProps } from 'react';

type Maybe<T> = T | null;
/** All built-in and custom scalars, mapped to their actual values */
type Scalars = {
    ID: string;
    String: string;
    Boolean: boolean;
    Int: number;
    Float: number;
    BigDecimal: number;
    Date: number;
    DateTime: number;
    Instant: any;
    Long: number;
    Object: any;
    Short: any;
};
type CommodityCategoryEntity = {
    __typename?: 'CommodityCategoryEntity';
    /** 商品品类名称 */
    categoryName?: Maybe<Scalars['String']>;
    /** 商品品类id */
    id?: Maybe<Scalars['Int']>;
};
declare const enum EnabledEnum {
    /** 禁用 */
    Disable = "DISABLE",
    /** 启用 */
    Enable = "ENABLE",
    Unknown = "UNKNOWN",
    Unrecognized = "UNRECOGNIZED",
    Unspecified = "UNSPECIFIED"
}
declare const enum InputTextRule {
    /** 仅数字 */
    OnlyNumber = "ONLY_NUMBER",
    /** 仅文本 */
    OnlyText = "ONLY_TEXT",
    /** 仅用于返回值。表示此版本中未知的值 */
    Unknown = "UNKNOWN",
    /** 未知 */
    Unrecognized = "UNRECOGNIZED",
    /** 未指定 */
    Unspecified = "UNSPECIFIED"
}
declare const enum SopCheckItemEnum {
    /** 多选 */
    CheckboxType = "CHECKBOX_TYPE",
    /** 时间 */
    DateType = "DATE_TYPE",
    /** 文件（图片或者视频） */
    FileType = "FILE_TYPE",
    /** 单选 */
    RadioType = "RADIO_TYPE",
    /** 文本 */
    TextType = "TEXT_TYPE",
    /** 仅用于返回值。表示此版本中未知的值 */
    Unknown = "UNKNOWN",
    /** 未知 */
    Unrecognized = "UNRECOGNIZED",
    /** 未指定 */
    Unspecified = "UNSPECIFIED"
}
type SopCheckItemResultPayload = {
    __typename?: 'SopCheckItemResultPayload';
    /** 状态 */
    enabled?: Maybe<EnabledEnum>;
    /** 状态名称 */
    enabledName?: Maybe<Scalars['String']>;
    /** 输入框校验规则 */
    inputTextRule?: Maybe<InputTextRule>;
    /** 是否上传图片/视频 */
    isRemark?: Maybe<Scalars['Boolean']>;
    /** 检查项名称 */
    name?: Maybe<Scalars['String']>;
    /** 多语言 */
    nameLocale?: Maybe<Scalars['Object']>;
    /** 多选选项 */
    options?: Maybe<Array<Maybe<SopOptionPayload>>>;
    /** 是否上传图片/视频 */
    remarkRequired?: Maybe<Scalars['Boolean']>;
    /** 备注 */
    remarks?: Maybe<Scalars['String']>;
    /** 是否必填 */
    required?: Maybe<Scalars['Boolean']>;
    /** 快照id */
    snapshotId?: Maybe<Scalars['ID']>;
    /** 检查项id */
    sopDetailId?: Maybe<Scalars['ID']>;
    /** sop id */
    sopId?: Maybe<Scalars['ID']>;
    /** sop 答案 */
    sopResult?: Maybe<SopOrResultPayload>;
    /** 排序 */
    sort?: Maybe<Scalars['Int']>;
    /** 检查项类型 */
    type?: Maybe<SopCheckItemEnum>;
    /** 检查项类型 */
    typeName?: Maybe<Scalars['String']>;
};
type SopDetailResultPayload = {
    __typename?: 'SopDetailResultPayload';
    /** 品类 */
    category?: Maybe<CommodityCategoryEntity>;
    /** 状态 */
    enabled?: Maybe<EnabledEnum>;
    /** 状态名称 */
    enabledName?: Maybe<Scalars['String']>;
    /** 质检项 */
    sopCheckItems?: Maybe<Array<Maybe<SopCheckItemResultPayload>>>;
    /** sop id */
    sopId?: Maybe<Scalars['ID']>;
    /** 模板描述 */
    templateDesc?: Maybe<Scalars['String']>;
    /** 模板名称 */
    templateName?: Maybe<Scalars['String']>;
    /** 是否通用 */
    universal?: Maybe<Scalars['Boolean']>;
};
type SopOptionPayload = {
    __typename?: 'SopOptionPayload';
    /** 是否需要备注 */
    isRemark?: Maybe<Scalars['Boolean']>;
    /** 选项名称 */
    name?: Maybe<Scalars['String']>;
    /** 选项名称(多语言) */
    nameLocale?: Maybe<Scalars['Object']>;
    /** 是否必填备注 */
    remarkRequired?: Maybe<Scalars['Boolean']>;
    /** 备注 */
    remarks?: Maybe<Scalars['String']>;
    /** 顺序 */
    sort?: Maybe<Scalars['Int']>;
    /** 选项值 */
    value?: Maybe<Scalars['String']>;
};
type SopOrResultPayload = {
    __typename?: 'SopOrResultPayload';
    /** 业务id */
    businessId?: Maybe<Scalars['ID']>;
    /** 是否暂存 */
    cacheEnabled?: Maybe<Scalars['Boolean']>;
    /** 答案 */
    checkResult?: Maybe<Scalars['Object']>;
    /** 答案类型 */
    checkResultType?: Maybe<SopCheckItemEnum>;
    /** 创建时间 */
    createTime?: Maybe<Scalars['Long']>;
    /** 文件链接 */
    fileLink?: Maybe<Scalars['Object']>;
    /** 备注 */
    remark?: Maybe<Scalars['String']>;
    /** 质检项id */
    sopDetailId?: Maybe<Scalars['ID']>;
    /** sop id */
    sopId?: Maybe<Scalars['ID']>;
    /** result id */
    sopResultId?: Maybe<Scalars['ID']>;
    /** 用户id */
    userId?: Maybe<Scalars['Int']>;
};

type UploadProps = ComponentProps<typeof Upload>;
interface IProps$1 {
    /** 表单唯一标识（全局唯一） */
    uuid: string;
    /**
     * 文件是否启用后台上传
     * @default true
     */
    backUpload?: boolean;
    /** 表单数据是否加载中(加载中的表单不允许提交) */
    loading?: boolean;
    /** form（通过useSopForm获取） */
    form: SopFormInstance;
    /** sop模板数据（带有答案，由中台接口直出） */
    data: SopDetailResultPayload[];
    /** 每个模板title，用于渲染模板名 */
    title: string | ((templateData: SopDetailResultPayload) => string);
    /** 模板内容外部的包裹层，用于自定义容器UI */
    wrapper?: (templateData: SopDetailResultPayload, templateJSX: ReactNode) => ReactNode;
    /**  */
    uploadProps?: Partial<UploadProps>;
}
type SopFormInstance = ReturnType<typeof useSopForm>;
interface SopFormValues {
    sopList: SopDetailResultPayload[];
}
declare const useSopForm: () => {
    strictValidation: boolean;
    validateFieldsWithoutToast?: rc_field_form_es_interface.ValidateFields<SopFormValues>;
    getFieldValue: (name: rc_field_form_es_interface.NamePath) => any;
    getFieldsValue: (() => SopFormValues) & ((nameList: true | rc_field_form_es_interface.NamePath[], filterFunc?: (meta: rc_field_form_es_interface.Meta) => boolean) => any);
    getFieldError: (name: rc_field_form_es_interface.NamePath) => string[];
    getFieldsError: (nameList?: rc_field_form_es_interface.NamePath[]) => rc_field_form_es_interface.FieldError[];
    getFieldWarning: (name: rc_field_form_es_interface.NamePath) => string[];
    isFieldsTouched: ((nameList?: rc_field_form_es_interface.NamePath[], allFieldsTouched?: boolean) => boolean) & ((allFieldsTouched?: boolean) => boolean);
    isFieldTouched: (name: rc_field_form_es_interface.NamePath) => boolean;
    isFieldValidating: (name: rc_field_form_es_interface.NamePath) => boolean;
    isFieldsValidating: (nameList: rc_field_form_es_interface.NamePath[]) => boolean;
    resetFields: (fields?: rc_field_form_es_interface.NamePath[]) => void;
    setFields: (fields: rc_field_form_es_interface.FieldData[]) => void;
    setFieldValue: (name: rc_field_form_es_interface.NamePath, value: any) => void;
    setFieldsValue: (values: {
        sopList?: {
            __typename?: "SopDetailResultPayload";
            category?: {
                __typename?: "CommodityCategoryEntity";
                categoryName?: string;
                id?: number;
            };
            enabled?: EnabledEnum;
            enabledName?: string;
            sopCheckItems?: {
                __typename?: "SopCheckItemResultPayload";
                enabled?: EnabledEnum;
                enabledName?: string;
                inputTextRule?: InputTextRule;
                isRemark?: boolean;
                name?: string;
                nameLocale?: any;
                options?: {
                    __typename?: "SopOptionPayload";
                    isRemark?: boolean;
                    name?: string;
                    nameLocale?: any;
                    remarkRequired?: boolean;
                    remarks?: string;
                    sort?: number;
                    value?: string;
                }[];
                remarkRequired?: boolean;
                remarks?: string;
                required?: boolean;
                snapshotId?: string;
                sopDetailId?: string;
                sopId?: string;
                sopResult?: {
                    __typename?: "SopOrResultPayload";
                    businessId?: string;
                    cacheEnabled?: boolean;
                    checkResult?: any;
                    checkResultType?: SopCheckItemEnum;
                    createTime?: number;
                    fileLink?: any;
                    remark?: string;
                    sopDetailId?: string;
                    sopId?: string;
                    sopResultId?: string;
                    userId?: number;
                };
                sort?: number;
                type?: SopCheckItemEnum;
                typeName?: string;
            }[];
            sopId?: string;
            templateDesc?: string;
            templateName?: string;
            universal?: boolean;
        }[];
    }) => void;
    validateFields: rc_field_form_es_interface.ValidateFields<SopFormValues>;
    submit: () => void;
};
/** SOP业务表单组件 */
declare const SopForm: FC<IProps$1>;

declare const fieldKeyMap: Record<SopCheckItemEnum, FieldKey>;
declare const fieldDefaultValueMap: Record<SopCheckItemEnum, unknown>;
type FieldKey = 'TEXT_TYPE' | 'RADIO_TYPE' | 'FILE_TYPE' | 'DATE_TYPE' | 'CHECKBOX_TYPE' | '';

interface IProps {
    /** 数据是否加载中 */
    loading?: boolean;
    /** sop模板数据（带有答案，由中台接口直出） */
    data: SopDetailResultPayload[];
    /** 每个模板title，用于渲染模板名 */
    title: string | ((templateData: SopDetailResultPayload) => string);
    /** 模板内容外部的包裹层，用于自定义容器UI */
    wrapper?: (templateData: SopDetailResultPayload, templateJSX: ReactNode) => ReactNode;
}
/** SOP业务预览组件 */
declare const SopPreview: FC<IProps>;

export { SopForm, SopFormInstance, SopFormValues, SopPreview, fieldDefaultValueMap, fieldKeyMap, useSopForm };
