import { TemplateResult, LitElement } from 'lit';
import type { UiMenuItemElement } from '../../../md/menu/ui-menu-item.js';
import { type IOrganization } from '../../../providers/organization.js';
/**
 * An element that allows selecting an organization from a list.
 * It renders a button with the current organization name that triggers a dropdown menu with available organizations.
 *
 * The component supports creating a new organization via a dedicated menu item.
 *
 * @example
 * ```html
 * <organization-selector
 *   .organization="${this.selectedOrg}"
 *   .organizations="${this.availableOrgs}"
 *   @select="${this.handleSelection}"
 *   @create="${this.handleCreate}"
 * ></organization-selector>
 * ```
 *
 * @fires select - Dispatched when the user selects an organization. The detail object contains the `organization` key.
 * @fires create - Dispatched when the user clicks on the "New Organization" menu item.
 */
export default class OrganizationSelector extends LitElement {
    /**
     * The currently selected organization, if any.
     * When set, the button label will show this organization's name.
     *
     * This property consumes the `organizationContext`.
     */
    accessor organization: IOrganization | undefined;
    /**
     * The list of available organizations to display in the dropdown menu.
     *
     * This property consumes the `organizationsContext`.
     */
    accessor organizations: IOrganization[] | undefined;
    /**
     * A handler for organization selection from the menu.
     */
    protected handleOrgSelect(e: CustomEvent<{
        item: UiMenuItemElement;
    }>): void;
    /**
     * Notifies about organization selection.
     * @param organizationKey The key of the organization that was selected by the user.
     */
    protected notifySelect(organizationKey: string): void;
    /**
     * Notifies about the request to create a new organization.
     */
    protected notifyCreate(): void;
    protected render(): unknown;
    protected renderTrigger(): TemplateResult;
    protected renderMenu(): TemplateResult;
}
//# sourceMappingURL=OrganizationSelector.d.ts.map