@japofc/baileys - v2.4.7
    Preparing search index...

    Interface ReceiptTracker

    interface ReceiptTracker {
        bind: (sock: any) => () => void;
        clear: () => void;
        getReceipts: (
            key: MsgKey,
        ) => { delivered: string[]; played: string[]; read: string[] };
        isReadBy: (key: MsgKey, user?: string) => boolean;
        onRead: (
            cb: (info: { at: number; key: MsgKey; user: string }) => void,
        ) => () => void;
        receiptHandler: (updates: { key: MsgKey; receipt: any }[]) => void;
        size: number;
        statusHandler: (updates: { key: MsgKey; update: any }[]) => void;
    }
    Index
    bind: (sock: any) => () => void
    clear: () => void
    getReceipts: (
        key: MsgKey,
    ) => { delivered: string[]; played: string[]; read: string[] }

    { delivered, read, played } jid lists for a message (read implies delivered).

    isReadBy: (key: MsgKey, user?: string) => boolean

    Has user read this message? Omit user for "read by anyone".

    onRead: (
        cb: (info: { at: number; key: MsgKey; user: string }) => void,
    ) => () => void

    Fires once per user per message on first read. Returns unsubscribe.

    receiptHandler: (updates: { key: MsgKey; receipt: any }[]) => void

    Wire into sock.ev.on('message-receipt.update', ...) — group/status receipts.

    size: number
    statusHandler: (updates: { key: MsgKey; update: any }[]) => void

    Wire into sock.ev.on('messages.update', ...) — DM status changes.