import { ChatMember, ChatMessage, ChatEvents, Chat as ChatCore } from '@signalwire/core';
import { BaseChat } from './BaseChat';
import { SWClient } from '../SWClient';
import { RealTimeChatEvents } from '../types/chat';
interface ChatListenOptions {
    channels: string[];
    onMessageReceived?: (message: ChatMessage) => unknown;
    onMemberJoined?: (member: ChatMember) => unknown;
    onMemberUpdated?: (member: ChatMember) => unknown;
    onMemberLeft?: (member: ChatMember) => unknown;
}
type ChatListenersKeys = keyof Omit<ChatListenOptions, 'channels' | 'topics'>;
declare const Chat_base: {
    new (...args: any[]): {
        [x: string]: any;
        getMembers(params: ChatCore.GetMembersInput): any;
        getMessages(params: ChatCore.GetMessagesInput): any;
        setMemberState({ memberId, ...rest }?: Record<string, unknown>): any;
        getMemberState({ memberId, ...rest }?: Record<string, unknown>): any;
    };
} & {
    new (options: SWClient): BaseChat<ChatListenOptions, RealTimeChatEvents>;
};
export declare class Chat extends Chat_base {
    protected _eventMap: Record<ChatListenersKeys, ChatEvents>;
    constructor(options: SWClient);
}
export { ChatMember, ChatMessage } from '@signalwire/core';
export type { ChatAction, ChatChannel, ChatChannelMessageEvent, ChatChannelMessageEventParams, ChatChannelState, ChatEvent, ChatGetMembersParams, ChatGetMemberStateParams, ChatGetMessagesParams, ChatMemberContract, ChatMemberEntity, ChatMemberJoinedEvent, ChatMemberJoinedEventParams, ChatMemberLeftEvent, ChatMemberLeftEventParams, ChatMemberUpdatedEvent, ChatMemberUpdatedEventParams, ChatMessageContract, ChatMessageEntity, ChatSetMemberStateParams, InternalChatMemberEntity, InternalChatMessageEntity, InternalPubSubMessageEntity, MapToPubSubShape, MessagingAction, PaginationCursor, PubSubAction, PubSubChannel, PubSubChannelMessageEvent, PubSubChannelMessageEventParams, PubSubEvent, PubSubEventAction, PubSubPublishParams, } from '@signalwire/core';
//# sourceMappingURL=Chat.d.ts.map