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';
export declare class TypingController implements ReactiveController {
    host: ReactiveControllerHost & LitElement;
    context?: ContextConsumer<{
        __context__: WeavyType;
    }, LitElement>;
    whenContext?: Promise<WeavyType>;
    resolveContext?: (value: WeavyType | PromiseLike<WeavyType>) => void;
    get weavy(): WeavyType | undefined;
    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);
    setContext(): Promise<void>;
    hostUpdate(): void;
    registerRealtime(): Promise<void>;
    unregisterRealtime(): Promise<void>;
    handleRealtimeTyping: (realtimeEvent: RealtimeTypingEventType) => void;
    handleRealtimeStopTyping: (realtimeEvent: RealtimeEventType) => void;
    private updateTyping;
    private setTypers;
}
//# sourceMappingURL=typing-controller.d.ts.map