import { nothing, PropertyValueMap } from 'lit';
import { AppType } from '../types/app.types';
import { MessagesResultType, MutateMessageProps } from '../types/messages.types';
import { InfiniteQueryController } from '../controllers/infinite-query-controller';
import { ReverseInfiniteScrollController } from '../controllers/infinite-scroll-controller';
import { MutationController } from '../controllers/mutation-controller';
import { Ref } from 'lit/directives/ref.js';
import { PollMutationType } from '../data/poll';
import { MarkConversationMutationType, UpdateConversationMutationType } from '../data/conversation';
import { WeavySubComponent } from '../classes/weavy-sub-component';
import { ShadowPartsController } from '../controllers/shadow-parts-controller';
import { QueryController } from '../controllers/query-controller';
import { MembersResultType } from '../types/members.types';
import { MetadataType } from '../types/lists.types';
import { TypingEventType } from '../types/typing.events';
import { EditorSubmitEventType } from '../types/editor.events';
import { WyMessageEditor } from './wy-editor-message';
export declare class WyConversation extends WeavySubComponent {
    #private;
    static styles: import('lit').CSSResult[];
    protected exportParts: ShadowPartsController;
    conversation?: AppType;
    conversationId?: number;
    header: boolean;
    agentInstructions?: string;
    placeholder?: string;
    lastReadMessagePosition: "above" | "below";
    lastReadMessageId?: number;
    showNewMessages: boolean;
    isCreatingConversation: boolean;
    showReadReceipts: boolean;
    createConversation?: (payload: Omit<MutateMessageProps, "app_id">) => Promise<AppType>;
    requestMetadata?: (payload: MutateMessageProps) => Promise<MetadataType | undefined>;
    /**
     * A keyboard-consuming element releases focus.
     * @event release-focus
     */
    releaseFocusEvent: () => CustomEvent<undefined>;
    protected bottomObserver: IntersectionObserver | undefined;
    isPrivateChat(conversation?: AppType): boolean;
    isChatRoom(conversation?: AppType): boolean;
    protected messagesQuery: InfiniteQueryController<MessagesResultType>;
    protected membersQuery: QueryController<MembersResultType>;
    protected agentsQuery: QueryController<MembersResultType>;
    protected markConversationMutation?: MarkConversationMutationType;
    protected updateConversationMutation?: UpdateConversationMutationType;
    protected pollMutation?: PollMutationType;
    protected addMessageMutation: MutationController<import('../types/msg.types').MsgType, Error, MutateMessageProps, unknown>;
    protected infiniteScroll: ReverseInfiniteScrollController;
    protected pagerRef: Ref<HTMLElement>;
    protected bottomRef: Ref<HTMLElement>;
    protected editorRef: Ref<WyMessageEditor>;
    protected shouldBeAtBottom: boolean;
    protected isTyping: boolean;
    get isAtBottom(): boolean;
    scrollToBottom(smooth?: boolean): Promise<void>;
    protected handleTyping(e: TypingEventType): void;
    protected handleSubmit(e: EditorSubmitEventType): Promise<import('../types/msg.types').MsgType>;
    setEditorText(text: string): Promise<void>;
    setEditorMetadata(metadata?: MetadataType): Promise<void>;
    selectAllInEditor(): Promise<void>;
    setCursorLastInEditor(): Promise<void>;
    focusEditor(): void;
    setEmptyConversationTitle(name: string): Promise<void>;
    private handleRealtimeMessage;
    private handleRealtimeReactionAdded;
    private handleRealtimeReactionDeleted;
    private handleRealtimeMarked;
    markAsRead(messageId?: number): Promise<void>;
    protected markAsReadHandler: () => void;
    protected willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    protected update(changedProperties: PropertyValueMap<this>): void;
    renderConversationHeader(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1> | typeof nothing;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
    updated(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
}
//# sourceMappingURL=wy-conversation.d.ts.map