export declare const UserOnboardingDepartments: readonly ["Design", "Product", "Engineering", "Brand", "Other"];
export type UserOnboardingDepartment = (typeof UserOnboardingDepartments)[number];
export declare const UserOnboardingJobLevels: readonly ["Executive", "Manager", "IndividualContributor", "Other"];
export type UserOnboardingJobLevel = (typeof UserOnboardingJobLevels)[number];
export declare const UserOnboardingCompanySizes: readonly ["Just me", "2 - 49", "50 - 249", "250 - 999", "1,000 - 4,999", "5,000 - 9,999", "More than 10,000"];
export type UserOnboardingCompanySize = (typeof UserOnboardingCompanySizes)[number];
export declare const UserOnboardingDesignSystemTeamSizes: readonly ["We don’t have a design system team", "Only one person", "2 - 5", "6 - 10", "More than 10"];
export type UserOnboardingDesignSystemTeamSize = (typeof UserOnboardingDesignSystemTeamSizes)[number];
export type UserOnboardingDefaultDestination = "tokens" | "docs";
/**
 * Onboarding phase stored on the user profile. Known values:
 * - `finished` — onboarding complete (`isOnboardingFinished` is derived from this).
 * - `code-library` — continue code library onboarding at the code-container step (choice).
 * - `code-library-setup` — continue at code-container setup.
 * The API may return other strings for legacy or future flows.
 */
export type UserOnboardingPhase = "finished" | "code-library" | "code-library-setup" | "base" | (string & {});
export type UserProfileRemoteModel = {
    name?: string;
    nickname?: string;
    avatar?: string;
    onboarding?: UserProfileOnboardingRemoteModel;
    isOnboardingFinished?: boolean;
    theme?: UserThemeRemoteModel;
};
export type UserProfileOnboardingRemoteModel = {
    companyName?: string;
    numberOfPeopleInOrg?: UserOnboardingCompanySize;
    numberOfPeopleInDesignTeam?: UserOnboardingDesignSystemTeamSize;
    department?: UserOnboardingDepartment;
    jobTitle?: string;
    phase?: UserOnboardingPhase;
    jobLevel?: UserOnboardingJobLevel;
    designSystemName?: string;
    figmaUrl?: string;
    defaultDestination?: UserOnboardingDefaultDestination;
    isPageDraftOnboardingFinished?: boolean;
    isApprovalsOnboardingFinished?: boolean;
};
export type UserThemeRemoteModel = {
    preset?: "SystemPreference" | "Default" | "Sepia" | "HighContrast" | "DefaultDark" | "HighContrastDark" | "SpaceBlue" | "DarkGrey" | "Custom";
    backgroundColor?: string;
    accentColor?: string;
    contrast?: number;
    isSecondaryEnabled?: boolean;
    secondaryBackgroundColor?: string;
    secondaryContrast?: number;
    isEditorWhite?: boolean;
};
export type UserTheme = {
    preset: Exclude<UserThemeRemoteModel["preset"], undefined>;
} & Omit<UserThemeRemoteModel, "preset">;
export type UserProfileTransportModel = UserProfileRemoteModel;
export type UserProfileOnboardingUpdateModel = UserProfileOnboardingRemoteModel;
export type UserProfileUpdateModel = {
    name?: string;
    nickname?: string;
    onboarding?: UserProfileOnboardingRemoteModel;
    theme?: UserThemeRemoteModel;
};
export declare class UserProfile {
    /** User name */
    name: string;
    /** User nickname */
    nickname: string | null;
    /** Avatar */
    avatar: string | null;
    /** Is profile onboarding finished */
    isOnboardingFinished: boolean;
    /** User theme */
    theme: UserTheme | null;
    /** Onboarding object */
    onboarding: {
        companyName: string | null;
        numberOfPeopleInOrg: UserOnboardingCompanySize | null;
        numberOfPeopleInDesignTeam: UserOnboardingDesignSystemTeamSize | null;
        department: UserOnboardingDepartment | null;
        jobTitle: string | null;
        phase: UserOnboardingPhase | null;
        jobLevel: UserOnboardingJobLevel | null;
        designSystemName: string | null;
        figmaUrl: string | null;
        defaultDestination: UserOnboardingDefaultDestination | null;
        isPageDraftOnboardingFinished: boolean | null;
        isApprovalsOnboardingFinished: boolean | null;
    } | null;
    constructor(model: UserProfileRemoteModel);
    /** Constructs directly manipulable update object for user profile */
    toProfileUpdateObject(): UserProfileUpdateModel;
    toOnboardingUpdateObject(): UserProfileOnboardingUpdateModel;
    /** Constructs representation that can be used to write full object to remote */
    toRemote(): UserProfileTransportModel;
    /** 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(): UserProfileTransportModel;
    /** Reconstructs class from the transport model */
    static fromTransport(model: UserProfileTransportModel): UserProfile;
}
