/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
import { FlowModel } from '@nocobase/flow-engine';
import React from 'react';
import { TopbarActionModel } from './TopbarActionModel';
export declare const USER_CENTER_ACTION_ID = "user-center";
export type UserCenterSection = 'profile' | 'preferences' | 'system' | 'danger';
export type UserCenterSelectOption = {
    label: React.ReactNode;
    value: string;
    disabled?: boolean;
};
export declare class UserCenterItemModel extends FlowModel {
    static itemId?: string;
    aclSnippet?: string;
    label?: React.ReactNode;
    description?: React.ReactNode;
    value?: React.ReactNode;
    closeDropdown?: () => void;
    itemId: string;
    section: UserCenterSection;
    sort: number;
    ready: boolean;
    getItemId(): string;
    getSectionSort(): number;
    isVisible(): boolean;
    isReady(): boolean;
    setCloseDropdown(closeDropdown?: () => void): void;
    resolveNode(node?: React.ReactNode): string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>;
    getLabelNode(): string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>;
    getDescriptionNode(): string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>;
    getValueNode(): string | number | boolean | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>;
    prepare(): Promise<void>;
    render(): React.JSX.Element;
}
export declare class UserCenterTextItemModel extends UserCenterItemModel {
    render(): React.JSX.Element;
}
export declare class UserCenterActionItemModel extends UserCenterItemModel {
    danger: boolean;
    disabled: boolean;
    closeOnClick: boolean;
    onClick(): Promise<void>;
    render(): React.JSX.Element;
}
export declare class UserCenterSelectItemModel extends UserCenterItemModel {
    options: UserCenterSelectOption[];
    disabled: boolean;
    closeOnChange: boolean;
    onChange(_value: string): Promise<void>;
    render(): React.JSX.Element;
}
export declare class UserCenterTopbarActionModel extends TopbarActionModel {
    private itemCache;
    sort: number;
    actionId: string;
    testId: string;
    icon: React.JSX.Element;
    private discoverItems;
    getPreparedItems(closeDropdown: () => void): Promise<UserCenterItemModel[]>;
    render(): React.JSX.Element;
}
