import "../entry/union";
declare enum EEmbeddedUINameEnum {
    LEAVEMESSAGE = "LeaveMessage"
}
export declare enum EResourcePickerItemType {
    /** 用户 */
    USER = "USER",
    /** 部门 */
    DEPARTMENT = "DEPARTMENT",
    /** 群聊 */
    CONVERSATION = "CONVERSATION",
    /** 企业内用户 */
    ORGUSER = "ORGUSER",
    /** 角色 */
    ROLE = "ROLE",
    /** 邮箱 */
    EMAIL = "EMAIL",
    /** 动态用户组 */
    DYNAMICGROUP = "DYNAMICGROUP"
}
export declare enum EDataSourceId {
    /** 最近会话数据源 */
    RECENT_CONVERSATION = "RecentConversation",
    /** 搜索数据源 */
    SEARCH = "Search",
    /** 群里列表数据源 */
    GROUP = "Group",
    /** 组织架构数据源 */
    ORGANIZATION = "Organization",
    /** 批量导入数据源 */
    BATCH_PHONE_ADD = "BatchPhoneAdd",
    /** 群内选人数据源 */
    GROUPMEMBERS = "GroupMembers",
    /** 自定义用户数据源 */
    CUSTOMUSERSDS = "CustomUsers"
}
export declare enum EPluginTypes {
    SelectItemDisabledPlugin = "selectItemDisabledPlugin",
    RoleSelectedPlugin = "roleSelectedPlugin",
    FilterSearchInternalGroupPlugin = "filterSearchInternalGroupPlugin",
    FilterTypePlugin = "filterTypePlugin",
    ShowRootOrgPlugin = "showRootOrgPlugin",
    REcentConvfilterGrouplugin = "RecentConvfilterGrouplugin",
    REcentConvfilterInternalGroupPlugin = "RecentConvfilterInternalGroupPlugin",
    REcentConvfilterSingleGroupPlugin = "RecentConvfilterSingleGroupPlugin",
    HideBreadCrumbPlugin = "hideBreadCrumbPlugin",
    GroupStatusPlugin = "groupStatusPlugin",
    LeaveOfficeSelectedPlugin = "leaveOfficeSelectedPlugin",
    RoleFilterPlugin = "roleFilterPlugin",
    OldRoleFilterPlugin = "oldRoleFilterPlugin",
    filterGroupOrgIdsPlugin = "filterGroupOrgIdsPlugin"
}
export interface IDeptIdDict {
    orgId?: string;
    corpId?: string;
    deptId: string;
}
export interface ISelectItemsModel {
    /** 已选的用户数组 */
    uids?: string[];
    /** 已选群聊id数组 */
    cids?: string[];
    /** 已选群聊数组*/
    openConversationIds?: string[];
    /** 已选的邮箱数组 */
    emails?: string[];
    /** 已选的角色数组 */
    roleIds?: string[];
    /** 已选的自定义数据数组 */
    customDsIds?: any;
    /** 已选部门数组 */
    deptIds?: IDeptIdDict[];
    /** 已选组织内用户数组 */
    orgStaffIds?: string[];
    /** 已选动态用户组数组 */
    groupIds?: string[];
}
/** 数据源接口 */
export interface IPanelProps {
    /** 数据源id */
    id: string;
    /** 数据源可选数据类型 */
    types: EResourcePickerItemType[];
    /** 数据源配置参数 */
    props?: any;
    /** 数据源插件 */
    pluginKeys?: Array<string | EPluginTypes>;
    viewInfo?: {
        iconUrl: string;
        name: string;
    };
}
/** 已选数据设置 */
export interface ISelectConfig {
    /** 不可选数据设置 */
    disabledItems?: ISelectItemsModel;
    /** 已选数据 */
    selectedItems?: ISelectItemsModel;
    /** 必选数据 */
    requiredItems?: ISelectItemsModel;
    /** 选择设置 */
    selectOptions?: {
        /** 是否可以站看子级 */
        canSelectSubNodes?: boolean;
        /** 是否隐藏必选数据 */
        isHideRequiredItems?: boolean;
    };
}
export interface IResourcePickerParams {
    /** 标题 */
    title?: string;
    /** 组织id */
    corpId: string;
    /** 最多选择数量，设置为1时为单选模式 */
    maxCount?: number;
    /** 最少选择数量，默认为0 */
    minCount?: number;
    /** 扩展模块，仅PC支持 */
    embeddedUIName?: EEmbeddedUINameEnum;
    /** 扩展模块默认数据 */
    embeddedUIDefaultData?: string;
    /** 是否由jsapi打开 */
    fromJsAPi?: boolean;
    /** 已选数量司法计算部门内人数 */
    cntDeptMembers?: boolean;
    /** 选择部门时，是否请求并返回部门里的员工 */
    responseUserOnly?: boolean;
    /** 选人组件数据源框架 */
    framework: {
        /** 当前数据源 */
        currentPanel?: IRecentConversationDSType | IGroupMembersDSType | IGroupDSType | IOrganizationDSType | IBatchPhoneAddDSType | ICustomUsersDSType;
        /** 默认数据源面版 */
        defaultPanel: IRecentConversationDSType | IGroupMembersDSType | IGroupDSType | IOrganizationDSType | IBatchPhoneAddDSType | ICustomUsersDSType;
        /** 可选数据源配置 */
        navList?: (IRecentConversationDSType | IGroupMembersDSType | IGroupDSType | IOrganizationDSType | IBatchPhoneAddDSType | ICustomUsersDSType)[];
        /** 搜索数据源配置 */
        searchPanel?: ISearchDSType;
        isShowBtn?: boolean;
    };
    /** 选择数据配置 */
    select?: ISelectConfig;
    /** 扩展参数 */
    [key: string]: any;
}
export interface IResourcePickerResult {
    selectedItem: {
        /**
         * 选择的用户数据
         */
        users?: Array<{
            /** 头像地址 */
            avatar: string;
            /** 名称 */
            name: string;
            /** staffId */
            emplId: string;
            /** 组织ID */
            corpId: string;
        }>;
        /**
         * 选择的部门数据
         */
        departments?: Array<{
            /** 部门人数 */
            number: number;
            /** 部门名称 */
            name: string;
            /** 部门id */
            id: string;
        }>;
        /**
         * 选择的群聊数据
         */
        groups?: Array<{
            /** 群头像 */
            avatar: string;
            /** 群名称 */
            name: string;
            /** 群id */
            openConversationId: string;
        }>;
        /**
         * 选择的角色数据
         */
        roles?: Array<{
            /** 角色名称 */
            name: string;
            /** 角色ID */
            roleId: string;
        }>;
        /**
         * 选择的动态用户数据
         */
        dynamicGroups?: Array<{
            /** 动态用户组名称 */
            name: string;
            /** 动态用户组id */
            groupId: string;
            /** 动态用户组人员数量 */
            number: number;
        }>;
        /**
         * 选择的邮箱数据
         */
        emails?: Array<{
            /** 邮箱地址 */
            email: string;
        }>;
        /**
         * 选择的扩展数据
         */
        customItems?: Array<any>;
    };
    embeddedData: any;
}
/** 最近会话/群聊接口 */
export interface IRecentConversationDSType extends IPanelProps {
    /** 数据源id */
    id: EDataSourceId.RECENT_CONVERSATION | EDataSourceId.GROUP;
    /** 可选数据类型 */
    types: (EResourcePickerItemType.CONVERSATION | EResourcePickerItemType.USER)[];
    props?: {
        /** 加载数量，最大1000，默认50 */
        count?: number;
        /** 分页展示 默认 50 */
        size?: number;
        /** 是否可以选择群内成员，默认 false */
        selectGroupMembers?: number;
        /** 过滤最近会话类型	显示类型过滤，1只显示群聊，2只显示单聊 */
        filterConvType?: number[];
        /** 群状态设置 */
        groupStatus?: {
            /** 是否显示checkbox */
            isSelectable: false;
            /** 是否不可选择*/
            isDisabled: true;
        };
        /** 过滤指定组织下的会话 */
        filterCorpIds?: string[];
    };
    pluginKeys?: (EPluginTypes.GroupStatusPlugin | EPluginTypes.REcentConvfilterSingleGroupPlugin | EPluginTypes.REcentConvfilterGrouplugin | EPluginTypes.filterGroupOrgIdsPlugin)[];
}
/** 搜索数据源参数 */
export interface ISearchDSType extends IPanelProps {
    /** 数据源id */
    id: EDataSourceId.SEARCH;
    types: (EResourcePickerItemType.CONVERSATION
    /** 搜索用户 */
     | EResourcePickerItemType.ORGUSER
    /** 搜索邮箱 */
     | EResourcePickerItemType.EMAIL
    /** 搜索部门 */
     | EResourcePickerItemType.DEPARTMENT)[];
    props?: {
        orgIds?: string[];
        corpIds?: string[];
        size?: number;
        customOptions?: {};
    };
}
/** 群聊列表数据源 */
export interface IGroupDSType extends IRecentConversationDSType {
    /** 数据源ID */
    id: EDataSourceId.GROUP;
    /** 数据源可选类型 */
    types: [EResourcePickerItemType.CONVERSATION];
}
/** 组织架构数据源 */
export interface IOrganizationDSType extends IPanelProps {
    /** 组织架构数据源id */
    id: EDataSourceId.ORGANIZATION;
    /** 可选类型 */
    types: (EResourcePickerItemType.USER
    /** 部门 */
     | EResourcePickerItemType.DEPARTMENT
    /** 动态用户组，仅部分组织有开启 */
     | EResourcePickerItemType.DYNAMICGROUP
    /** 角色 */
     | EResourcePickerItemType.ROLE)[];
    /** 数据源配置 */
    props?: {
        /** 指定组织 */
        corpId?: string;
        /** 指定部门 */
        deptId?: string;
        /** 在组织架构界面是否展示当前用户所在部门。默认为true */
        isHideDepts?: boolean;
        /** 是否展示外部联系人 */
        isShowExternal?: boolean;
        /** 是否可以通过角色选择人员 */
        canselectUsersByRole?: boolean;
        /** 是否可以选择角色 */
        canSelectRole?: boolean;
        /** 是否隐藏部门路径的面包屑 */
        hideNodePath?: boolean;
        /** 是否显示根节点 */
        showRootOrg?: boolean;
        /** 是否定位到特定部门并不能选择上级 需要配合deptId使用。默认false*/
        hidePath?: boolean;
        /** 是否展示关联组织 默认true*/
        showLinkedOrg?: boolean;
        /** 是否可以全选本组织 */
        selectAll?: boolean;
    };
}
/** 批量导入数据源 */
export interface IBatchPhoneAddDSType extends IPanelProps {
    id: EDataSourceId.BATCH_PHONE_ADD;
    props?: {
        /** 指定批量导入组织id */
        corpId?: string;
    };
}
/** 群聊内选人数据源 */
export interface IGroupMembersDSType extends IPanelProps {
    id: EDataSourceId.GROUPMEMBERS;
    types: EResourcePickerItemType.USER[];
    props: {
        /** 群聊id,内部使用 */
        cid?: string;
        /** 群聊id */
        openConversationId?: string;
        /** 加载数量，最大1000，默认50 */
        count?: number;
        /** 分页展示 默认 50 */
        size?: number;
    };
}
/** 自定义用户内选人 */
export interface ICustomUsersDSType extends IPanelProps {
    id: EDataSourceId.CUSTOMUSERSDS;
    types: EResourcePickerItemType.USER[];
    props: {
        /** uid数组 */
        uids?: string[];
        /** 企业员工id数组 */
        emplIds?: string[];
        /** 自定义标题 */
        customTitle?: string;
    };
}
export declare const resourcePicker: (args: IResourcePickerParams) => Promise<IResourcePickerResult>;
export {};
