import { PropertyValueMap } from 'lit';
import { ReactableType } from '../types/reactions.types';
import { MemberDetailType } from '../types/members.types';
import { MeetingType } from '../types/meetings.types';
import { FileType } from '../types/files.types';
import { EmbedType } from '../types/embeds.types';
import { PollOptionType } from '../types/polls.types';
import { WeavySubAppComponent } from '../classes/weavy-sub-app-component';
import { AppType } from '../types/app.types';
import { ShadowPartsController } from '../controllers/shadow-parts-controller';
import { UserOrAgentType } from '../types/users.types';
declare global {
    interface HTMLElementTagNameMap {
        "wy-message": WyMessage;
    }
}
/**
 * Displays a single message in a conversation.
 *
 * **Used sub components:**
 *
 * - [`<wy-avatar>`](./ui/wy-avatar.ts)
 * - [`<wy-item>`](./ui/wy-item.ts)
 * - [`<wy-icon>`](./ui/wy-icon.ts)
 * - [`<wy-button>`](./ui/wy-button.ts)
 * - [`<wy-dropdown>`](./ui/wy-dropdown.ts)
 * - [`<wy-skeleton>`](./ui/wy-skeleton.ts)
 * - [`<wy-attachment-list>`](./wy-attachment.ts)
 * - [`<wy-annotation>`](./wy-annotation.ts)
 * - [`<wy-annotation-list>`](./wy-annotation.ts)
 * - [`<wy-embed>`](./wy-embed.ts)
 * - [`<wy-image-grid>`](./ui/wy-image-grid.ts)
 * - [`<wy-meeting-card>`](./wy-meeting-card.ts)
 * - [`<wy-poll>`](./wy-poll.ts)
 * - [`<wy-reactions>`](./wy-reactions.ts)
 * - [`<wy-preview>`](./wy-preview.ts)
 *
 * @csspart wy-message - Root message container.
 * @csspart wy-message-me - Modifier for messages from the current user.
 * @csspart wy-message-agent - Modifier for agent messages.
 * @csspart wy-highlight - Modifier used when a message is highlighted.
 * @csspart wy-message-author - Author/avatar area.
 * @csspart wy-message-content - Content wrapper.
 * @csspart wy-message-meta - Meta area (name/time).
 * @csspart wy-message-bubble - Message bubble.
 * @csspart wy-message-bubble-emoji - Bubble modifier for emoji-only messages.
 * @csspart wy-message-bubble-section - Sections inside the bubble (images, attachments, annotations).
 * @csspart wy-content - HTML/text content area.
 * @csspart wy-content-emoji - Content modifier for emoji-only content.
 * @csspart wy-message-seenby - Seen-by avatars area.
 * @csspart wy-annotations - Wrapper for annotation buttons (from wy-annotation-list).
 * @csspart wy-annotation - Annotation button (from wy-annotation).
 * @csspart wy-annotation-icon - Icon inside an annotation button.
 * @csspart wy-annotation-text - Text inside an annotation button.
 *
 * @fires {PollVoteEventType} vote - Emitted when a poll option is voted.
 * @fires {WyActionEventType} wy-action - Emitted when an embed action button is triggered.
 * @fires {WyPreviewOpenEventType} wy-preview-open - Fired when a preview overlay is about to open.
 * @fires {WyPreviewCloseEventType} wy-preview-close - Fired when a preview overlay is closed.
 */
export declare class WyMessage extends WeavySubAppComponent {
    static styles: import('lit').CSSResult[];
    protected exportParts: ShadowPartsController;
    /**
     * App context owning the message.
     */
    conversation?: AppType;
    /**
     * Unique identifier for the rendered message.
     */
    messageId: number;
    /**
     * The author of the message.
     */
    author: UserOrAgentType;
    /**
     * True when the message was authored by the current user.
     */
    get me(): boolean;
    /**
     * Render the message using private-conversation layout.
     */
    isPrivateChat: boolean;
    /**
     * ISO timestamp when the message was created.
     */
    createdAt: string;
    /**
     * HTML formatted message content.
     */
    html: string;
    /**
     * Plain-text message content.
     */
    text: string;
    /**
     * Annotation files attached to the message.
     */
    annotations?: FileType[];
    /**
     * Attachment files associated with the message.
     */
    attachments?: FileType[];
    /**
     * Meeting information attached to the message.
     */
    meeting?: MeetingType;
    /**
     * Poll options available on the message.
     */
    pollOptions: PollOptionType[] | undefined;
    /**
     * Embed metadata attached to the message.
     */
    embed?: EmbedType;
    /**
     * Reactions applied to the message.
     */
    reactions?: ReactableType[];
    /**
     * Members who have seen the message.
     */
    seenBy: MemberDetailType[];
    /**
     * Highlight the message bubble when true.
     */
    highlight: boolean;
    /**
     * Preview instance used for annotation files.
     * @internal
     */
    private previewAnnotationsRef;
    /**
     * Preview instance used for attachment files.
     * @internal
     */
    private previewAttachmentsRef;
    /**
     * DOM reference used to scroll highlighted messages into view.
     * @internal
     */
    private highlightRef;
    /**
     * Emit a `vote` event for the specified poll option.
     *
     * @internal
     * @param optionId - Identifier of the selected poll option.
     * @returns {boolean} True if the event was not canceled.
     */
    private dispatchVote;
    private dispatchUserAction;
    protected willUpdate(changedProperties: PropertyValueMap<this>): void;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
    protected updated(changedProperties: PropertyValueMap<this>): void;
}
//# sourceMappingURL=wy-message.d.ts.map