import type { UmbTreeItemContext } from '../index.js';
import type { UmbTreeItemModel } from '../../types.js';
import { type TemplateResult } from '../../../../../external/lit/index.js';
import { UmbLitElement } from '../../../lit-element/index.js';
import type { UmbEntityFlag } from '../../../entity-flag/index.js';
export declare abstract class UmbTreeItemElementBase<TreeItemModelType extends UmbTreeItemModel, TreeItemContextType extends UmbTreeItemContext<TreeItemModelType> = UmbTreeItemContext<TreeItemModelType>> extends UmbLitElement {
    #private;
    set item(newVal: TreeItemModelType);
    get item(): TreeItemModelType | undefined;
    protected _item?: TreeItemModelType;
    /**
     * @internal
     * Indicates whether the user has no access to this tree item.
     * This property is reflected as an attribute for styling purposes.
     *
     * **Usage Pattern (opt-in):**
     * Child classes that support access restrictions should observe their context's `noAccess` observable
     * and update this property. The base class provides the property, styling, and interaction prevention,
     * but does not subscribe to the observable to avoid forcing all tree item types to implement it.
     *
     * **Example (in child class api setter):**
     * ```typescript
     * this.observe(this.#api.noAccess, (noAccess) => (this._noAccess = noAccess));
     * ```
     *
     * **Why not in the base interface?**
     * Adding `noAccess` to `UmbTreeItemContext` would be a breaking change, forcing all tree item
     * implementations (users, members, data types, etc.) to provide this property even when access
     * restrictions don't apply to them.
     */
    protected _noAccess: boolean;
    /**
     * @param item - The item from which to extract flags.
     * @description This method is called whenever the `item` property is set. It extracts the flags from the item and assigns them to the `_flags` state property.
     * This method is in some cases overridden in subclasses to customize how flags are extracted!
     */
    protected _extractFlags(item: TreeItemModelType | undefined): void;
    protected _flags?: Array<UmbEntityFlag>;
    private _label?;
    private _isLoadingPrevChildren;
    private _isLoadingNextChildren;
    set api(value: TreeItemContextType | undefined);
    get api(): TreeItemContextType | undefined;
    hideActions: boolean;
    protected _isActive: boolean;
    private _childItems?;
    private _href?;
    private _isLoading;
    private _isSelectableContext;
    private _isSelectable;
    protected _isSelected: boolean;
    private _hasChildren;
    protected _forceShowExpand: boolean;
    private _isOpen;
    private _iconSlotHasChildren;
    private _totalPages;
    private _currentPage;
    private _hasPreviousItems;
    private _hasNextItems;
    protected _isMenu: boolean;
    set isMenu(value: boolean);
    get isMenu(): boolean;
    private _handleSelectedItem;
    private _handleDeselectedItem;
    private _onShowChildren;
    private _onHideChildren;
    render(): TemplateResult<1>;
    renderIconContainer(): TemplateResult<1>;
    _renderExpandSymbol?: () => HTMLElement | TemplateResult<1> | undefined;
    protected _getIconToRender(icon: string): string;
    protected _getIconName(): string | null | undefined;
    renderLabel(): TemplateResult<1>;
    static styles: import("lit").CSSResult[];
}
