import { ArcGISRequestError, IAuthenticationManager } from "@esri/arcgis-rest-request"; import type { IGroup, IUser } from "@esri/arcgis-rest-portal"; import { IEmail } from "@esri/hub-common"; export declare type AGOAccess = "public" | "org" | "private"; /** * Hub Product Enum * "basic" - Available to ArcGIS Online Organizations * "premium" - Available to Organizations who have purchsed Hub Premium * "portal" - Available to ArcGIS Enterprise users */ export declare type HubProduct = "basic" | "premium" | "portal"; export declare type HubTeamType = (typeof TEAMTYPES)[number]; /** * Group Template * Used when creating Team Groups */ export interface IGroupTemplate extends Partial { config: { groupType: string; type: HubTeamType; availableIn: HubProduct[]; propertyName?: string; requiredPrivs: string[]; titleI18n: string; descriptionI18n: string; snippetI18n: string; privPropValues?: IPrivPropValues[]; }; } /** * privPropValues template * Used if we want to conditionally change values * in a template. */ export interface IPrivPropValues { priv: string; prop: string; value: string; } /** * Team status interface, comes from ember application * status for an individual team */ export interface ITeamStatus { teamType?: string; id: string | null; isOk: boolean; isMissing: boolean; isBroken: boolean; canFix: boolean; isMember: boolean; } /** * Teams status interface, comes from ember application * Comprised of status of core/content/followers teams */ export interface ITeamsStatus { core: ITeamStatus; content: ITeamStatus; followers: ITeamStatus; } /** * User object returned from add users modal in ember application * It extends the IUser interface with an additional property * that denotes what org relationship the user might have (world|org|community|partnered|collaborationCoordinator) */ export interface IUserWithOrgType extends IUser { orgType: "world" | "org" | "community" | "partnered" | "collaborationCoordinator"; } /** * User org relationship interface * Object contains users parsed by their org relationship (world|org|community|partnered|collaborationCoordinator) */ export interface IUserOrgRelationship { world: IUserWithOrgType[]; org: IUserWithOrgType[]; community: IUserWithOrgType[]; partnered: IUserWithOrgType[]; collaborationCoordinator: IUserWithOrgType[]; } /** * Interface governing the add or invite response out of process auto add / invite / emailing users */ export interface IAddOrInviteResponse { users: string[]; errors: ArcGISRequestError[]; notAdded: string[]; notInvited: string[]; notEmailed: string[]; } /** * Email input object for add/invite flow * contains both the IEmail object and auth for the email. */ export interface IAddOrInviteEmail { message: IEmail; auth: IAuthenticationManager; groupId?: string; } /** * Add or invite flow context - object that contains all the needed * inputs for org/world/community users */ export interface IAddOrInviteContext extends IUserOrgRelationship { groupId: string; primaryRO: IAuthenticationManager; allUsers: IUserWithOrgType[]; canAutoAddUser: boolean; addUserAsGroupAdmin: boolean; email: IAddOrInviteEmail; } /** * Interface for result object out of addOrInviteUsersToTeam. */ export interface IAddOrInviteToTeamResult { errors: ArcGISRequestError[]; notAdded: string[]; notInvited: string[]; notEmailed: string[]; community: IAddOrInviteResponse; org: IAddOrInviteResponse; world: IAddOrInviteResponse; partnered: IAddOrInviteResponse; collaborationCoordinator: IAddOrInviteResponse; groupId: string; } /** * Enum of the types of teams that the teams service supports */ export declare const TEAMTYPES: readonly ["core", "content", "followers", "team", "event", "edit"];