import { Organization } from './organization.interface'; import { SecurityGroup } from './privileges.interface'; export interface UserApiData { id: string; cn: string; mail: string; note: string; mobile?: string; landingPage?: string; preferredLanguage: string; selectedOrganization: string; sn: string; timezone: string; } export interface UserCreateData { uid: string; cn: string; email: string; note: string; mobile?: string; landing_page: string; preferredLanguage: string; preferred_organization: string; sn: string; timezone: string; password: string; } export interface ProfileOptions { useCache?: boolean; autoLogin?: boolean; } export interface ProfileData { uid: string; id: string; sn: string; cn: string; email: string; landingPage?: string; selectedOrganization?: Organization; preferredOrganization?: Organization; preferredLanguage: string; timezone: string; mobile: string; note: string; } export interface ProfileDataExtended extends ProfileData { emailConfirmed: boolean; securityGroups?: SecurityGroup[]; superAdmin?: boolean; } export type ProfileFormData = Partial<{ [key in EditableUserAttributes]: T; }>; export interface SelfRegisterFormData { cn: string; mobile?: string; preferredLanguage: string; sn: string; timezone: string; uid: string; password: string; } export interface RegisterFormData extends SelfRegisterFormData { mail: string; autoConfirmEmail?: boolean; } export interface ChangePasswordFormData { password: string; confirmPassword: string; } export interface UserInfoPayload { uids: TUid[]; required_info: TAttr[]; } export type UsersInfoResponse = Record & { [uid in TUid]: { uid: string; } & { [key in TAttr & EditableRequiredUserAttributes]: string; } & { [key in TAttr & OptionalUserAttributes]?: string; } & { [key in TAttr & 'preferredLanguage']: string; }; }; type EditableRequiredUserAttributes = Exclude; export type EditableUserAttributes = OptionalUserAttributes | EditableRequiredUserAttributes; type OptionalUserAttributes = 'landingPage' | 'mobile' | 'note'; type RequiredUserAttributes = 'uid' | 'password' | 'mail' | 'cn' | 'sn' | 'timezone' | 'preferredOrganization' | 'preferredLanguage'; export declare const editableUserAttributesTuple: ["landingPage", "mobile", "note", "mail", "cn", "sn", "timezone", "preferredLanguage"]; export declare class UserElementError extends Error { } /** * Profile picture size options */ export type ProfilePictureSize = 'thumb' | 'medium' | 'large'; /** * Response structure for profile picture upload */ export interface ProfilePictureUploadResponse { /** Success message */ message: string; /** Array of signed URLs for different image sizes */ urls: string[]; } /** * Response structure for profile picture retrieval */ export interface ProfilePictureResponse { /** Success message */ message: string; /** Signed URL for the requested image size */ url: string; } export {};