import { ControllerBase, type ControllerHost } from './Abstracts/ControllerBase';
/**
 * Represents the `ISlotControllerConfig` interface.
 *
 * @public
 */
export interface ISlotControllerConfig {
    callback?: (slotName?: string) => void;
}
/**
 * The `SlotController` class is a reactive controller that provides a set of methods to work with slots.
 *
 * @public
 */
export declare class SlotController extends ControllerBase {
    private readonly _slotChangeCallback?;
    private readonly _mutationObserver;
    private _slotChangeSubscription;
    /**
     * Constructs a new instance of the `SlotController` class.
     *
     * @public
     */
    constructor(host: ControllerHost, config?: ISlotControllerConfig);
    /**
     * @public
     * @override
     */
    hostConnected(): void;
    /**
     * @public
     * @override
     */
    hostDisconnected(): void;
    /**
     * Returns the assigned nodes of the slot.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    getAssignedNodes(slotName?: string): Array<Node>;
    /**
     * Returns the nodes of the slot.
     * If the slot name is not provided, the default slot is used.
     */
    getNodes(slotName?: string): Array<Node>;
    /**
     * Returns a boolean indicating whether the slot has assigned nodes.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    hasAssignedNodes(slotName?: string): boolean;
    /**
     * Returns a boolean indicating whether the slot has nodes.
     * If the slot name is not provided, the default slot is used.
     */
    hasNodes(slotName?: string): boolean;
    /**
     * Returns a boolean indicating whether the slot has assigned content.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    hasAssignedContent(slotName?: string): boolean;
    /**
     * Returns a boolean indicating whether the slot has content.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    hasContent(slotName?: string): boolean;
    /**
     * Returns the assigned elements of the slot.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    getAssignedElements(slotName?: string): Array<Element>;
    /**
     * Returns the elements of the slot.
     * If the slot name is not provided, the default slot is used.
     */
    getElements(slotName?: string): Array<Element>;
    /**
     * Returns a boolean indicating whether the slot has assigned elements.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    hasAssignedElements(slotName?: string): boolean;
    /**
     * Returns a boolean indicating whether the slot has elements.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The optional slot name.
     */
    hasElements(slotName?: string): boolean;
    /**
     * Returns a boolean indicating whether the slot has assigned text content.
     * If the slot name is not provided, the default slot is used.
     *
     * @public
     * @param slotName - The slot name.
     */
    hasSlot(slotName: string): boolean;
    /**
     * @private
     */
    private extractNodesFromSlot;
    /**
     * @private
     */
    private extractNodesFromChildren;
    /**
     * @private
     */
    private handleChange;
    /**
     * @private
     */
    private handleMutation;
}
//# sourceMappingURL=SlotController.d.ts.map