import { PropertyValueMap } from 'lit';
import { PersistStateController } from './controllers/persist-state-controller';
import { ThemeController } from './controllers/theme-controller';
import { AppType, AppTypeGuid } from './types/app.types';
import { QueryController } from './controllers/query-controller';
import { ComponentFeatures } from './contexts/features-context';
import { ConversationFilterProps, UnreadConversationsController, UnreadConversationsProps } from './controllers/unread-conversations-controller';
import { CreateConversationController } from './controllers/create-conversation-controller';
import { MemberIdType } from './types/members.types';
import { WeavyTypeComponent } from './classes/weavy-type-component';
declare global {
    interface HTMLElementTagNameMap {
        "wy-messenger-conversations": WyMessengerConversations;
    }
}
/**
 * @import { WyAppEventType } from "./types/app.events"
 * @import { WyUnreadEventType } from "./types/ui.events"
 */
/**
 * Weavy messenger component to render multiple one-to-one conversations, group chats or agent conversations.
 *
 * **Component Layout**
 *
 * The component is [block-level](https://developer.mozilla.org/en-US/docs/Glossary/Block-level_content) with pre-defined CSS styling to adapt to flex- and grid-layouts as well as traditional flow-layouts.
 * It's usually recommended to use a proper flex-layout for the container you are placing the component in for a smooth layout integration.
 *
 * The height grows with the content per default. Content is automatically loaded during scrolling when the last content becomes visible (aka infinite scrolling).
 * If placed in a flex- or grid-layout or if an explicit height is set, the component becomes scrollable.
 *
 * The content within the components is per default aligned to the edges of it's own _box_ and designed to not be placed next to a edge or border.
 * It's recommended to adjust the layout with your default padding. Setting the `--wy-padding-outer` to your default padding will allow the component to still fill the are where it's placed,
 * but with proper padding within the scrollable area of the component.
 * If you want to make the component go all the way to the edges without padding or any outermost roundness instead,
 * set `--wy-padding-outer: 0;` and `--wy-border-radius-outer: 0;` to make the component fit nicely with the edge.
 *
 * You can add additional styling using _CSS Custom Properties_ and _CSS Shadow Parts_ and further customization using _slots_.
 *
 * **Used sub components:**
 *
 * - [`<wy-conversation-list>`](./components/wy-conversation-list.ts)
 * - [`<wy-conversation-new>`](./components/wy-conversation-new.ts)
 *
 * @tagname wy-messenger-conversations
 * @fires {WyActionEventType} wy-action - Emitted when a conversation is created or an action is performed on a conversation.
 * @fires {WyUnreadEventType} wy-unread - Fired when the number of unread notifications change.
 *
 * @slot actions - Buttons placed in the top right of the conversation list.
 * @slot conversation-new - The button for creating a new conversation. Replaces the button.
 */
export declare class WyMessengerConversations extends WeavyTypeComponent implements UnreadConversationsProps, ConversationFilterProps {
    static styles: import('lit').CSSResult[];
    /** @internal */
    componentFeatures: ComponentFeatures;
    /** @internal */
    protected theme: ThemeController;
    /** @internal */
    protected unreadConversations: UnreadConversationsController;
    /** @internal */
    protected createConversationController: CreateConversationController;
    /** Conversation types included in the messenger list. */
    componentTypes: AppTypeGuid[];
    /**
     * Agent uid filter. When set, conversations are limited to the agent chat.
     */
    set agent(agent: string | undefined);
    get agent(): string | undefined;
    /** Current unread conversation count. */
    get unread(): number;
    /** Active conversation id. */
    conversationId?: number | null;
    /** @internal */
    protected conversationQuery: QueryController<AppType>;
    /** @internal */
    protected persistState: PersistStateController<this>;
    /** @internal */
    private conversationNewRef;
    /**
     * Creates a new conversation.
     *
     * When in agent mode, a conversation is created instantly.
     *
     * @param members - Optional array of member id or member uid.
     */
    createConversation(members?: MemberIdType[]): Promise<AppType>;
    /**
     * Opens the select member dialog to let the user choose members.
     *
     * @returns Promise resolving to any selected member ids or uids.
     */
    selectMembers(): Promise<MemberIdType[] | undefined>;
    protected willUpdate(changedProperties: PropertyValueMap<this>): Promise<void>;
    render(): import('../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
}
//# sourceMappingURL=wy-messenger-conversations.d.ts.map