import { LitElement, PropertyValues, PropertyValueMap } from 'lit';
import { PersistStateController } from './controllers/persist-state-controller';
import { RealtimeAppEventType, RealtimeConversationDeliveredEventType, RealtimeConversationMarkedEventType, RealtimeMemberEventType, RealtimeMessageEventType } from './types/realtime.types';
import { AppType, AppTypes } from './types/app.types';
import { ConversationTypeGuid, ConversationType } from './types/conversations.types';
import { QueryController } from './controllers/query-controller';
import { BotType } from './types/users.types';
import { Constructor } from './types/generic.types';

declare const WyMessenger_base: Constructor<import('./mixins/app-mixin').AppProps & import('./mixins/app-mixin').AppContextProps & import('./mixins/app-mixin').AppSettingProps & import('./types/features.types').FeatureProps> & typeof LitElement;
export declare class WyMessenger extends WyMessenger_base {
    static styles: import('lit').CSSResult[];
    appType: AppTypes;
    name?: string;
    bot?: string;
    types: ConversationTypeGuid[];
    botUser?: BotType;
    conversationId: number | null;
    protected conversation?: ConversationType;
    protected conversationQuery: QueryController<ConversationType>;
    protected botQuery: QueryController<BotType>;
    protected persistState: PersistStateController<this>;
    hasEventListener: {
        [key: string]: boolean;
    };
    /**
     * @ignore
     */
    addEventListener(type: any, listener: any, options?: any): void;
    /**
     * A keyboard-consuming element releases focus.
     * @event release-focus
     */
    protected releaseFocusEvent: () => CustomEvent<undefined>;
    /**
     * Event: New message created.
     * @event wy:message_created
     */
    protected realtimeMessageCreatedEvent: (realtimeEvent: RealtimeMessageEventType) => Promise<void>;
    /**
     * Event: Conversation added.
     * @event wy:app_created
     */
    protected realtimeAppCreatedEvent: (realtimeEvent: RealtimeAppEventType) => Promise<void>;
    /**
     * Event: Message seen-by status updated.
     * @event wy:conversation_marked
     */
    protected realtimeConversationMarkedEvent: (realtimeEvent: RealtimeConversationMarkedEventType) => Promise<void>;
    /**
     * Event: Message delivered status updated.
     * @event wy:conversation_delivered
     */
    protected realtimeConversationDeliveredEvent: (realtimeEvent: RealtimeConversationDeliveredEventType) => Promise<void>;
    /**
     * Event: A member is added to a conversation app.
     * @event wy:member_added
     */
    protected realtimeMemberAddedEvent: (realtimeEvent: RealtimeMemberEventType) => Promise<void>;
    /**
     * Checks if a conversation belongs to Messenger.
     *
     * @param conversation {AppType | number} - The conversation or id to check if it belongs to Messenger.
     * @returns Promise<Boolean>
     */
    conversationBelongsToMessenger(conversation: AppType | number): Promise<Boolean>;
    /**
     * Set the active conversation.
     *
     * @param id {number} - The id of the conversation to select.
     */
    selectConversation(id: number): Promise<void>;
    /**
     * Deselects any active conversation.
     */
    clearConversation(): void;
    constructor();
    protected willUpdate(changedProperties: PropertyValues<this>): Promise<void>;
    protected update(changedProperties: PropertyValueMap<this>): void;
    render(): import('lit-html').TemplateResult<1>;
    disconnectedCallback(): void;
}
export type WyMessengerType = Constructor<WyMessenger>;
export {};
//# sourceMappingURL=wy-messenger.d.ts.map