import { LitElement, ReactiveController, ReactiveControllerHost } from 'lit';
import { RealtimeEventType, RealtimeTypingEventType } from '../types/realtime.types';
import { TypingUserType } from '../types/users.types';
import { ContextConsumer } from '@lit/context';
import { WeavyType } from '../contexts/weavy-context';
import { ComponentFeaturePolicy } from '../contexts/features-context';
export declare class TypingController implements ReactiveController {
    host: ReactiveControllerHost & LitElement;
    weavyContext?: ContextConsumer<{
        __context__: WeavyType;
    }, LitElement>;
    whenWeavyContext?: Promise<WeavyType>;
    resolveWeavyContext?: (value: WeavyType | PromiseLike<WeavyType>) => void;
    get weavy(): WeavyType | undefined;
    componentFeaturesContext?: ContextConsumer<{
        __context__: ComponentFeaturePolicy;
    }, LitElement>;
    whenComponentFeaturesContext?: Promise<ComponentFeaturePolicy>;
    resolveComponentFeaturesContext?: (value: ComponentFeaturePolicy | PromiseLike<ComponentFeaturePolicy>) => void;
    get componentFeatures(): ComponentFeaturePolicy | undefined;
    private registrationRequested;
    private typingTimeout;
    private discardTime;
    private _appId?;
    private _userId?;
    get appId(): number | undefined;
    set appId(appId: number | undefined);
    get userId(): number | undefined;
    set userId(userId: number | undefined);
    typingMembers: Array<TypingUserType>;
    names: string[];
    ellipsis: string;
    constructor(host: ReactiveControllerHost);
    setContexts(): Promise<void>;
    hostUpdate(): void;
    registerRealtime(): Promise<void>;
    unregisterRealtime(): Promise<void>;
    handleRealtimeTyping: (realtimeEvent: RealtimeTypingEventType) => void;
    handleRealtimeStopTyping: (realtimeEvent: RealtimeEventType) => void;
    /**
     * @fires typing
     */
    private updateTyping;
    private setTypers;
}
//# sourceMappingURL=typing-controller.d.ts.map