import { LitElement, nothing, PropertyValueMap } from 'lit';
import { ReactableType, ReactionsResultType } from '../types/reactions.types';
import { QueryController } from '../controllers/query-controller';
import { WeavySubAppComponent } from '../classes/weavy-sub-app-component';
import { ShadowPartsController } from '../controllers/shadow-parts-controller';
declare global {
    interface HTMLElementTagNameMap {
        "wy-reactions": WyReactions;
        "wy-reaction-item": WyReactionItem;
    }
}
/**
 * Reaction controls for entities (messages/posts/comments).
 *
 * **Used sub components:**
 *
 * - [`<wy-button>`](./ui/wy-button.ts)
 * - [`<wy-icon>`](./ui/wy-icon.ts)
 * - [`<wy-avatar>`](./ui/wy-avatar.ts)
 * - [`<wy-item>`](./ui/wy-item.ts)
 * - [`<wy-overlay>`](./ui/wy-overlay.ts)
 * - [`<wy-container>`](./ui/wy-container.ts)
 * - [`<wy-reaction-item>`](./wy-reactions.ts)
 *
 * @csspart wy-reactions - Wrapper for reactions display.
 * @csspart wy-reaction-menu - Reaction menu container.
 * @csspart wy-reaction-picker - Reaction picker area.
 * @csspart wy-reaction-menu-button - Button that opens reaction menu.
 * @csspart wy-emoji-icon - Emoji icon wrapper.
 * @csspart wy-reaction-count - Count badge for reactions.
 *
 * @fires {CloseEventType} close - Emitted when the reaction menu is closed.
 */
export declare class WyReactions extends WeavySubAppComponent {
    static styles: import('lit').CSSResult[];
    protected exportParts: ShadowPartsController;
    /**
     * Horizontal alignment for the reaction picker.
     */
    directionX: "left" | "right";
    /**
     * Vertical alignment for the reaction picker.
     */
    directionY: "up" | "down";
    /**
     * Renders a compact version of the controls.
     */
    small: boolean;
    /**
     * Current reactions applied to the host entity.
     */
    reactions?: ReactableType[];
    /**
     * Space separated list of emojis available in the picker.
     */
    emojis: string;
    /**
     * Parent collection that owns the entity.
     */
    parentType: "posts" | "files" | "apps";
    /**
     * Identifier of the parent container.
     */
    parentId?: number;
    /**
     * Entity type targeted by the reactions.
     */
    entityType: "messages" | "posts" | "comments";
    /**
     * Identifier of the reactable entity.
     */
    entityId: number;
    /**
     * Displays the picker inline with a line layout.
     */
    line: boolean;
    /**
     * Reverses the inline layout order.
     */
    lineReverse: boolean;
    /**
     * Positions the inline layout at the bottom edge.
     */
    lineBottom: boolean;
    /**
     * Positions the inline layout below the trigger.
     */
    lineBelow: boolean;
    /**
     * Floating-ui placement for the picker popover.
     *
     * @internal
     */
    private _placement;
    /**
     * Emoji currently reacted with by the active user.
     *
     * @internal
     */
    reactedEmoji: string | undefined;
    /**
     * Whether the emoji picker popover is visible.
     *
     * @internal
     */
    show: boolean;
    /**
     * Whether the reaction list sheet is visible.
     *
     * @internal
     */
    showSheet: boolean;
    /**
     * Reaction menu button element reference.
     *
     * @internal
     */
    private buttonRef;
    /**
     * Popover menu element reference.
     *
     * @internal
     */
    private menuRef;
    /**
     * Cleanup callback from Floating UI.
     *
     * @internal
     */
    private _computePositionCleanup?;
    /**
     * Query controller providing the full reaction list.
     *
     * @internal
     */
    reactionListQuery: QueryController<ReactionsResultType>;
    /**
     * Handles outside clicks to close the picker.
     *
     * @internal
     */
    private _documentClickHandler;
    /**
     * Closes the picker when the popover hides.
     *
     * @internal
     */
    private handleClose;
    /**
     * Toggles the emoji picker visibility.
     *
     * @internal
     */
    private handleClickToggle;
    /**
     * Adds or removes the supplied reaction for the current user.
     *
     * @internal
     * @param emoji - Emoji to apply, or `undefined` to remove the reaction.
     */
    private handleReaction;
    /**
     * Opens the detailed reaction sheet view.
     *
     * @internal
     */
    private handleReactionsClick;
    protected willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1> | typeof nothing | import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>[];
    protected firstUpdated(_changedProperties: PropertyValueMap<this>): void;
    disconnectedCallback(): void;
}
/**
 * Individual reaction item used inside the reactions sheet.
 *
 * **Used sub components:**
 *
 * - [`<wy-item>`](./ui/wy-item.ts)
 * - [`<wy-avatar>`](./ui/wy-avatar.ts)
 *
 * @csspart wy-emoji-icon - Emoji shown for the reaction item.
 */
export declare class WyReactionItem extends LitElement {
    static styles: import('lit').CSSResult[];
    protected exportParts: ShadowPartsController;
    reaction: ReactableType;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
}
//# sourceMappingURL=wy-reactions.d.ts.map