/**
 * 消息缓冲与派发模块
 * 负责消息的缓冲、分类和派发
 */
import type { DirectMessage, GroupMessage, ProfileInfo } from './types.js';
/** 分类后的消息 */
export interface ClassifiedMessages {
    directMessages: DirectMessage[];
    groupMessages: GroupMessage[];
}
/** 消息到达回调类型 */
export type OnMessageArrivedCallback = () => void;
/**
 * 消息缓冲区
 * 管理消息的存储、分类和派发
 */
export declare class MessageBuffer {
    private buffer;
    private resolvers;
    private onMessageArrived;
    private isPolling;
    /**
     * 设置消息到达回调
     * 当有新消息到达且正在 poll 等待时，会立即调用此回调
     */
    setOnMessageArrived(callback: OnMessageArrivedCallback | null): void;
    /**
     * 设置是否正在 poll 等待
     */
    setIsPolling(polling: boolean): void;
    /**
     * 添加消息到缓冲区
     */
    push(message: DirectMessage | GroupMessage): void;
    /**
     * 接收 Profile 推送。
     * 主流程：记录日志 -> 不进入未读缓冲区 -> 引导调用方通过 get_profile 获取身份详情。
     */
    setProfileMessage(profile: ProfileInfo): void;
    /**
     * 移除 Profile 系统消息。
     * 当前未再向未读消息注入 profile 信息，保留该方法仅为兼容既有调用链。
     */
    removeProfileMessage(): void;
    /**
     * 检查是否有 Profile 消息。
     * 当前身份信息不会进入未读消息，因此固定返回 false。
     */
    hasProfileMessage(): boolean;
    /**
     * 获取 Profile 消息。
     * 当前身份信息不会进入未读消息，因此固定返回 null。
     */
    getProfileMessage(): null;
    /**
       * 阻塞等待新消息
       * 如果缓冲区有消息则立即返回，否则阻塞等待
       * @param timeoutMs 可选超时时间（毫秒），超时后返回空消息而不继续阻塞
       */
    poll(timeoutMs?: number): Promise<ClassifiedMessages>;
    /**
     * 非阻塞获取消息
     */
    get(): ClassifiedMessages;
    /**
     * 获取缓冲区大小
     */
    size(): number;
    /**
     * 清空缓冲区
     */
    clear(): void;
    /**
       * 尝试派发缓冲区消息给等待的 resolver
       */
    private tryDispatch;
    /**
     * 消费缓冲区所有消息并分类
     */
    private consumeAll;
    /**
     * 判断消息类型
     * DirectMessage 的 msgId 是 string，GroupMessage 的 msgId 是 number
     */
    private isDirectMessage;
}
//# sourceMappingURL=message-buffer.d.ts.map