import { LitElement, ReactiveController, ReactiveControllerHost } from 'lit';
import { QueryController } from './query-controller';
import { ContextConsumer } from '@lit/context';
import { WeavyType } from '../contexts/weavy-context';
import { QueryObserverResult } from '@tanstack/query-core';
import { AppsResultType, AppTypeGuid } from '../types/app.types';
export interface UnreadConversationsProps {
    /**
     * Number of unread conversations.
     */
    readonly unread: number;
}
export interface ConversationFilterProps {
    /**
     * App types for unread scoping.
     */
    componentTypes: AppTypeGuid[];
    /**
     * Optional agent uid for the scope.
     */
    agent?: string;
}
/**
 * Lit element controller for Conversation live data.
 *
 * - Requires a weavy context.
 * - May be filtered for different app types and agent ids.
 *
 * @fires {WyUnreadEventType} wy-unread - Emitted when the number of unread apps change.
 */
export declare class UnreadConversationsController implements ReactiveController {
    #private;
    host: LitElement & ReactiveControllerHost;
    /**
     * Agent id for unread scoping.
     */
    agent?: string;
    /**
     * App types for the scope.
     */
    appTypes: AppTypeGuid[];
    /**
     * The number of unread items for the current scope
     */
    get unread(): number;
    /**
     * Is the unread count pending?
     */
    get isUnreadPending(): boolean;
    /**
     * The underlying query result for the unread count.
     */
    get unreadResult(): QueryObserverResult<AppsResultType>;
    protected unreadQuery: QueryController<AppsResultType>;
    protected registrationRequested: boolean;
    protected weavyContext?: ContextConsumer<{
        __context__: WeavyType;
    }, LitElement>;
    protected whenWeavyContext: Promise<WeavyType>;
    protected resolveWeavyContext?: (value: WeavyType | PromiseLike<WeavyType>) => void;
    protected get weavy(): WeavyType | undefined;
    constructor(host: LitElement);
    /**
     * Initiates context consumers
     */
    setContexts(): Promise<void>;
    /**
     * Dispatch a `wy-unread` event on the host.
     *
     * @fires {WyUnreadEventType} wy-unread - Emitted when the number of unread items change.
     */
    dispatchUnreadEvent(): void;
    /**
     * Request an update of the underlying query data.
     */
    private handleRefresh;
    /**
     * Register realtime handlers.
     */
    registerRealtime(): Promise<void>;
    /**
     * Unregister realtime handlers.
     *
     * @param skipAwait - Skip waiting for any context.
     */
    unregisterRealtime(skipAwait?: boolean): Promise<void>;
    track(appTypes: AppTypeGuid[], agent?: string): Promise<void>;
    hostUpdate(): void;
    hostDisconnected(): void;
}
//# sourceMappingURL=unread-conversations-controller.d.ts.map