import { DTOUserEmailSettings, DTOUserUpdatePayload } from "@supernova-studio/client"; import { UserProfile, UserProfileRemoteModel, UserProfileTransportModel, UserThemeRemoteModel } from "./SDKUserProfile"; type UserSource = "SignUp" | "Invite" | "SSO"; export type UserUpdateModel = DTOUserUpdatePayload; export type UserRemoteModel = { id: string; email: string; source: UserSource | null; createdAt: string; profile: UserProfileRemoteModel; theme?: UserThemeRemoteModel; linkedIntegrations?: LinkedIntegrations; emailSettings?: UserEmailSettingsRemoteModel; }; export type LinkedIntegrations = { figma?: UserLinkedIntegration; github?: UserLinkedIntegration[]; azure?: UserLinkedIntegration[]; gitlab?: UserLinkedIntegration[]; bitbucket?: UserLinkedIntegration[]; }; type UserLinkedIntegration = { id: string; email?: string; handle?: string; authType?: "OAuth2" | "PAT"; avatarUrl?: string; customUrl?: string; }; export type UserEmailSettingsRemoteModel = DTOUserEmailSettings; export type UserTransportModel = Pick & { createdAt: string; profile: UserProfileTransportModel; linkedIntegrations?: LinkedIntegrations; emailSettings?: UserEmailSettingsRemoteModel; }; export type UserAvatarUpdateModel = { avatar?: string; }; export declare class User { /** Unique user identifier */ id: string; /** Unique user email */ email: string; /** When was the user created */ createdAt: Date | null; /** User profile */ profile: UserProfile; /** Source of user account */ source: UserSource | null; /** Linked integrations */ linkedIntegrations: LinkedIntegrations | null; /** Email settings */ emailSettings: UserEmailSettingsRemoteModel | null; constructor(model: UserRemoteModel); /** Constructs representation that can be used to write full object to remote */ toRemote(): UserRemoteModel; /** Constructs representation that can be used to transport the instantiated object as JSON, for example for SSR <> Client use-cases. Reconstruct to class instance using `fromTransport` */ toTransport(): UserTransportModel; /** Reconstructs class from the transport model */ static fromTransport(model: UserTransportModel): User; /** Returns user's name which should be used in read-only cases. */ get displayName(): string; /** Returns user's initials */ get initials(): string; get firstName(): string | undefined; } export {};