import { LitElement, TemplateResult } from 'lit';
import '../text-input-field/text-input-field.js';
import '../button/button.js';
import '../user-button/user-button.js';
import '../progress-bar/progress-bar.js';
import '../navigation-item/navigation-item.js';
import '../../icons/icon-calendar-google.js';
import '../../icons/icon-log-open-google.js';
import '../../icons/icon-settings-iec.js';
import '../../icons/icon-user.js';
export declare enum ObcUserMenuType {
    signIn = "sign-in",
    userSignIn = "user-sign-in",
    loadingSignIn = "loading-sign-in",
    signedIn = "signed-in"
}
export declare enum ObcUserMenuSize {
    regular = "regular",
    small = "small"
}
export type ObcUserMenuUser = {
    initials: string;
    label: string;
};
export type ObcUserMenuSignedInAction = {
    id: string;
    label: string;
};
/**
 * `<obc-user-menu>` – A user menu component with sign-in and signed-in layouts.
 *
 * Provides multiple layouts for authentication and account access states, including
 * sign-in forms, user-specific sign-in, loading states, and signed-in navigation.
 *
 * ### Features
 * - **Multiple States:** Supports sign-in, user sign-in, loading, and signed-in layouts.
 * - **Size Options:** Regular and small sizes for compact layouts.
 * - **Recent Users:** Optional "Recently signed in" section for quick access.
 * - **Navigation Actions:** Signed-in state includes navigation items and actions.
 *
 * ### Variants
 * - `type`: `sign-in`, `user-sign-in`, `loading-sign-in`, `signed-in`
 * - `size`: `regular`, `small`
 *
 * ### Usage Guidelines
 * Use `obc-user-menu` in authentication or account panels where quick access to
 * sign-in, profile, or account actions is needed. The `user-sign-in` type is
 * best for fast re-auth flows; `loading-sign-in` is for pending auth states.
 *
 * ### Properties and Configuration
 * - `type` (`ObcUserMenuType`): Controls the layout state. Defaults to `sign-in`.
 * - `size` (`ObcUserMenuSize`): Controls the overall size. Defaults to `regular`.
 * - `hasRecentlySignedIn` (`boolean`): Toggles the recent users section.
 *   Defaults to `true`.
 * - `username` (`string`): Current username value for sign-in layouts.
 * - `password` (`string`): Current password value for sign-in layouts.
 * - `usernameError` (`string`): Error message for the username field.
 * - `passwordError` (`string`): Error message for the password field.
 * - `userInitials` (`string`): Initials for the primary user profile.
 * - `userLabel` (`string`): Label for the primary user profile.
 * - `recentUsers` (`ObcUserMenuUser[]`): List of recent users shown in the
 *   "Recently signed in" section.
 * - `signedInActions` (`ObcUserMenuSignedInAction[]`): Actions shown in the
 *   signed-in navigation list.
 *
 * ### Events
 * - `sign-in-click` – Fired when a sign-in button is clicked.
 * - `sign-out-click` – Fired when the sign-out button is clicked.
 * - `signed-in-action-click` – Fired when a signed-in action is clicked.
 * - `recent-user-click` – Fired when a recent user button is clicked.
 *
 * ### Slots
 * - `signed-in-action-icon-{id}`: Optional icon for a signed-in action. The
 *   `{id}` is the normalized action id.
 *
 * ### Example
 * ```html
 * <obc-user-menu
 *   type="user-sign-in"
 *   size="small"
 *   hasRecentlySignedIn="false"
 *   userInitials="JD"
 *   userLabel="John Doe"
 * ></obc-user-menu>
 * ```
 *
 * @fires sign-in-click {CustomEvent<{username: string, password: string}>}
 * @fires sign-out-click
 * @fires signed-in-action-click {CustomEvent<{id: string, label: string}>}
 * @fires recent-user-click {CustomEvent<{initials: string, label: string}>}
 */
export declare class ObcUserMenu extends LitElement {
    /**
     * Controls the visual layout of the user menu.
     */
    type: ObcUserMenuType;
    /**
     * Controls the overall size of the user menu.
     */
    size: ObcUserMenuSize;
    /**
     * Toggles the "Recently signed in" section visibility.
     */
    hasRecentlySignedIn: boolean;
    /**
     * Current username value for sign-in layouts.
     */
    username: string;
    /**
     * Current password value for sign-in layouts.
     */
    password: string;
    /**
     * Error message for the username field.
     */
    usernameError: string;
    /**
     * Error message for the password field.
     */
    passwordError: string;
    /**
     * Initials for the primary user profile.
     */
    userInitials?: string;
    /**
     * Label for the primary user profile.
     */
    userLabel?: string;
    /**
     * Recent users for the "Recently signed in" section.
     */
    recentUsers: ObcUserMenuUser[];
    /**
     * Actions shown in the signed-in navigation list.
     */
    signedInActions: ObcUserMenuSignedInAction[];
    private get defaultSignedInActions();
    private get defaultRecentUsers();
    private renderTextInput;
    private renderUserButtons;
    private renderUserProfile;
    private getSignedInActionIcon;
    private normalizeActionId;
    private handleSignedInActionClick;
    private handleRecentUserClick;
    private handleUsernameInput;
    private handlePasswordInput;
    private validateSignIn;
    private handleSignInClick;
    private handleSignOutClick;
    private renderSignIn;
    private renderSignInSmall;
    private renderUserSignIn;
    private renderUserSignInSmall;
    private renderLoadingSignIn;
    private renderLoadingSignInSmall;
    private renderSignedIn;
    private renderSignedInSmall;
    render(): TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-user-menu': ObcUserMenu;
    }
}
//# sourceMappingURL=user-menu.d.ts.map