import { LitElement, ReactiveController, ReactiveControllerHost } from 'lit';
import { ContextConsumer } from '@lit/context';
import { WeavyType } from '../contexts/weavy-context';
import { RealtimeOptionsType } from '../types/realtime.types';
/**
 * Lit element controller for Notification live data.
 *
 * - Requires a weavy context.
 * - May be filtered for different notification types and app id scopes.
 *
 * @fires {WyUnreadEventType} wy-unread - Emitted when the number of unread notifications change.
 */
export declare class RealtimeController implements ReactiveController {
    host: LitElement & ReactiveControllerHost;
    protected registrationRequested: boolean;
    realtimeOptions: (RealtimeOptionsType | null | undefined)[];
    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>;
    /**
     * Register realtime handlers.
     */
    registerRealtime(): Promise<void>;
    /**
     * Unregister realtime handlers.
     *
     * @param skipAwait - Skip waiting for any context.
     */
    unregisterRealtime(skipAwait?: boolean): Promise<void>;
    /**
     * Tracks unread data. Initiates the query data with the given filtering scope.
     *
     * @param typeFilter - The notification types to track.
     * @param appId - Optional app id for the filtering scope.
     */
    track(realtimeOptions: (RealtimeOptionsType | null | undefined)[]): Promise<void>;
    hostUpdate(): void;
    hostDisconnected(): void;
}
//# sourceMappingURL=realtime-controller.d.ts.map