import { IEventEmitter, IEventDetail } from '@breadstone/mosaik-elements';
import type { CustomElement } from '../Components/Abstracts/CustomElement';
import type { ControlBehaviorBase, ControlBehaviorReturn } from './Abstracts/Behavior';
/**
 * Represents the `{@link ISelectableProps}` interface.
 *
 * @public
 */
export interface ISelectableEvents {
    selectionChanged: IEventEmitter<IEventDetail & {
        isSelected: boolean;
    }>;
}
/**
 * Represents the `{@link ISelectableProps}` interface.
 *
 * @public
 */
export interface ISelectableProps {
    isSelected: boolean;
}
/**
 * Represents the `ISelectable` interface.
 *
 * @public
 */
export interface ISelectable {
    /**
     * Selects the element.
     *
     * @public
     */
    select(): void;
    /**
     * Deselects the element.
     *
     * @public
     */
    deselect(): void;
    /**
     * Called when the selection changes.
     * This method is a hook that can be overridden.
     *
     * @public
     */
    onSelectionChanges(): void;
}
/**
 * A mixin that describes a selector behavior.
 *
 * @public
 */
export declare const Selectable: <T extends ControlBehaviorBase<CustomElement>>(base: T) => ControlBehaviorReturn<T, ISelectableProps & ISelectableEvents & ISelectable>;
//# sourceMappingURL=Selectable.d.ts.map