import { Forwardable, Quotable, Sendable, MessageElem } from "./elements";
import { Parser } from './parser';
import * as pb from '../core/protobuf';
import { GroupRole } from '../common';
export declare function rand2uuid(rand: number): bigint;
export declare function uuid2rand(uuid: bigint): number;
/** 匿名情报 */
export interface Anonymous {
    /** 是否可以匿名发言 */
    enable: boolean;
    flag: string;
    id: number;
    id2: number;
    name: string;
    expire_time: number;
    color: string;
}
/** 频道发消息的返回值 */
export interface GuildMessageRet {
    seq: number;
    rand: number;
    time: number;
}
export declare abstract class Message implements Quotable, Forwardable {
    protected readonly parsed: Parser;
    post_type: "message";
    message: Sendable;
    rand: number;
    seq: number;
    time: number;
    user_id: number;
    uid: string;
    font: string;
    raw_message: string;
    source?: Quotable;
    get mentions(): (number | "all")[];
    static deserialize(serialized: Buffer): PrivateMessage;
    protected constructor(proto: pb.Proto);
    toString(): string;
}
export declare class PrivateMessage extends Message {
    message_type: "private";
    sub_type: "friend" | "group" | "temp" | "self";
    /** 发送方账号 */
    from_id: number;
    /** 接收方账号 */
    to_id: number;
    /** 是否为自动回复 */
    auto_reply: boolean;
    /** 发送方信息 */
    sender: {
        group_id: undefined;
        /** 账号 */
        user_id: number;
        /** 昵称 */
        nickname: string;
    };
    constructor(proto: pb.Proto);
}
export declare class TempMessage extends Message {
    message_type: "private";
    sub_type: "friend" | "group" | "temp" | "self";
    group_id: number;
    group_name: string;
    /** 匿名信息，{@link sub_type} 为`"anonymous"`时该属性有效 */
    anonymous: Anonymous | null;
    /** 发送方账号 */
    from_id: number;
    /** 接收方账号 */
    to_id: number;
    /** 是否为自动回复 */
    auto_reply: boolean;
    /** 发送方信息 */
    sender: {
        /** 账号 */
        user_id: number;
        /** 昵称 */
        nickname: string;
        card: string;
        /** 群号，当消息来自群聊时有效 */
        group_id: number | undefined;
    };
    constructor(proto: pb.Proto);
}
export declare class GroupMessage extends Message {
    message_type: "group";
    sub_type: "friend" | "group" | "temp" | "self";
    group_id: number;
    group_name: string;
    atme: boolean;
    atall: boolean;
    /** 发送方信息 */
    sender: {
        /** 账号 */
        user_id: number;
        /** 昵称 */
        nickname: string;
        /** subId */
        sub_id: string;
        /** 名片 */
        card: string;
        /** 等级 */
        level: number;
        /** 权限 */
        role: GroupRole;
        /** 头衔 */
        title: string;
    };
    constructor(proto: pb.Proto);
}
/** 一条转发消息 */
export declare class ForwardMessage implements Forwardable {
    protected proto: pb.Proto;
    private parsed;
    /** 账号 */
    user_id: number;
    /** 昵称 */
    nickname: string;
    /** 若转自群聊，则表示群号 */
    group_id?: number;
    /** 发送时间 */
    time: number;
    /** 发送序号 */
    seq: number;
    /** 消息内容 */
    message: Sendable;
    raw_message: string;
    /** 反序列化一条转发消息 */
    static deserialize(serialized: Buffer): ForwardMessage;
    constructor(proto: pb.Proto);
    /** 将转发消息序列化保存 */
    serialize(): Buffer;
    /** 以适合人类阅读的形式输出 */
    toString(): string;
    /** @deprecated 转换为CQ码 */
    toCqcode(): string;
}
/** 频道消息事件 */
export declare class GuildMessageEvent {
    /** 频道id */
    guild_id: string;
    /** 频道名 */
    guild_name: string;
    /** 子频道id */
    channel_id: string;
    /** 子频道名 */
    channel_name: string;
    post_type: 'message';
    detail_type: string;
    /** 消息序号（同一子频道中一般顺序递增） */
    seq: number;
    rand: number;
    time: number;
    /** 消息内容 */
    message: MessageElem[];
    raw_message: string;
    /** 发送方信息 */
    sender: {
        /** 账号 */
        tiny_id: string;
        /** 昵称 */
        nickname: string;
    };
    constructor(proto: pb.Proto);
    /** 暂时仅支持发送： 文本、AT、表情 */
    reply: (content: Sendable) => Promise<GuildMessageRet>;
}
