import { PropertyValueMap } from 'lit';
import { InfiniteQueryController } from '../controllers/infinite-query-controller';
import { AppType, AppTypeGuid, AppsResultType } from '../types/app.types';
import { WeavySubComponent } from '../classes/weavy-sub-component';
import { ShadowPartsController } from '../controllers/shadow-parts-controller';
declare global {
    interface HTMLElementTagNameMap {
        "wy-conversation-list": WyConversationList;
    }
}
/**
 * Displays a list of conversation items, with search and create conversation button.
 *
 * **Used sub components**
 *
 * - [`<wy-buttons>`](./ui/wy-button.ts)
 * - [`<wy-progress-circular>`](./ui/wy-progress-circular.ts)
 * - [`<wy-search>`](./ui/wy-search.ts)
 * - [`<wy-conversation-item>`](./wy-conversation-item.ts)
 * - [`<wy-empty>`](./wy-empty.ts)
 *
 * @slot navigation - Any navigation actions placed in front of the search.
 * @slot actions - Any actions placed next to the search.
 *
 * @csspart wy-conversations - Outer wrapper for the conversation list.
 * @csspart wy-conversation-list - Inner wrapper for the conversation list.
 * @csspart wy-conversations-toolbar - Search/new/actions toolbar in the top of the list
 * @csspart wy-pane - Body for empty state.
 * @csspart wy-pane-body - Body for list empty state.
 * @csspart wy-pane-group - Body section for the list empty state.
 * @csspart wy-pager - Pager element for infinite scroll.
 * @csspart wy-pager-bottom - Bottom styling for the pager element.
 *
 * @fires {WyActionEventType} wy-action - Emitted when a conversation is selected (detail: { action: "select", app: { ... } })
 */
export declare class WyConversationList extends WeavySubComponent {
    #private;
    static styles: import('lit').CSSResult[];
    /**
     * Controller for exporting named shadow parts.
     *
     * @internal
     */
    protected exportParts: ShadowPartsController;
    /** The id of the currently selected conversation */
    conversationId?: number;
    /** The conversation type guids to show in the list. */
    conversationTypes?: AppTypeGuid[];
    /** Any agent uid to display items for. */
    agent?: string;
    /** Input text to search for. */
    private searchText?;
    /**
     * Selects a conversation and triggers an action event.
     *
     * @param conversation - The conversation to select.
     */
    selectConversation(conversation: AppType | null): void;
    /**
     * Triggers `wy-action` event.
     * @param action - The performed action.
     * @param app - The conversation to select.
     * @returns Whether the event was successful.
     */
    private dispatchAction;
    /**
     * The query data controller for the conversation list.
     *
     * @internal
     */
    conversationsQuery: InfiniteQueryController<AppsResultType>;
    /**
     * Mutation for marking conversations (read/unread).
     *
     * @internal
     */
    private markConversationMutation?;
    /**
     * Mutation for starring/unstarring conversations.
     *
     * @internal
     */
    private starConversationMutation?;
    /**
     * Mutation for pinning/unpinning conversations.
     *
     * @internal
     */
    private pinConversationMutation?;
    /**
     * Mutation for leaving a conversation.
     *
     * @internal
     */
    private leaveConversationMutation?;
    /**
     * Mutation for removing a conversation.
     *
     * @internal
     */
    private removeConversationMutation?;
    /**
     * Mutation for trashing a conversation.
     *
     * @internal
     */
    private trashConversationMutation?;
    /**
     * Infinite scroll controller instance used to observe the pager node.
     *
     * @internal
     */
    private infiniteScroll;
    /**
     * Ref for pager element used by the infinite scroll controller.
     *
     * @internal
     */
    private pagerRef;
    /** Refresh the conversation query */
    private handleRefresh;
    /**
     * Updates member data when realtime presence is received.
     * @param data - Realtime presence event data
     */
    private handlePresenceChange;
    /**
     * Marks a conversation as read.
     *
     * @param appId - The id of the conversation to mark.
     * @param messageId - Optional message id to set the marker to.
     */
    private handleMark;
    /**
     * Sets a conversation as starred.
     *
     * @param appId -  The id of the conversation to star.
     * @param star - Whether to make the conversation starred.
     */
    private handleStar;
    /**
     * Sets a conversation as pinned.
     *
     * @param appId - The id of the conversation to pin.
     * @param pin - Whether to make the conversation pinned.
     */
    private handlePin;
    /**
     * Leave a conversation (for the current user).
     *
     * @param appId - The id of the conversation to leave.
     */
    private handleLeaveConversation;
    /**
     * Remove a conversation.
     *
     * @param appId - The id of the conversation to remove.
     */
    private handleRemoveConversation;
    /**
     * Trash a conversation.
     *
     * @param appId - The id of the conversation to trash.
     */
    private handleTrashConversation;
    protected willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    protected update(changedProperties: PropertyValueMap<this>): void;
    updated(changedProperties: PropertyValueMap<this & {
        searchText: string;
    }>): Promise<void>;
    private renderConversations;
    render(): import('../../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
    disconnectedCallback(): void;
}
//# sourceMappingURL=wy-conversation-list.d.ts.map