2025-06-03 14:46:12 -07:00
|
|
|
import { proto_sds_message } from "@waku/proto";
|
|
|
|
|
|
|
|
|
|
export enum MessageChannelEvent {
|
|
|
|
|
MessageSent = "messageSent",
|
|
|
|
|
MessageDelivered = "messageDelivered",
|
|
|
|
|
MessageReceived = "messageReceived",
|
|
|
|
|
MessageAcknowledged = "messageAcknowledged",
|
|
|
|
|
PartialAcknowledgement = "partialAcknowledgement",
|
|
|
|
|
MissedMessages = "missedMessages",
|
|
|
|
|
SyncSent = "syncSent",
|
|
|
|
|
SyncReceived = "syncReceived"
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-08 10:18:01 +10:00
|
|
|
export type MessageId = string;
|
2025-06-03 14:46:12 -07:00
|
|
|
export type Message = proto_sds_message.SdsMessage;
|
|
|
|
|
export type HistoryEntry = proto_sds_message.HistoryEntry;
|
|
|
|
|
export type ChannelId = string;
|
|
|
|
|
|
|
|
|
|
export function encodeMessage(message: Message): Uint8Array {
|
|
|
|
|
return proto_sds_message.SdsMessage.encode(message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function decodeMessage(data: Uint8Array): Message {
|
|
|
|
|
return proto_sds_message.SdsMessage.decode(data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type MessageChannelEvents = {
|
|
|
|
|
[MessageChannelEvent.MessageSent]: CustomEvent<Message>;
|
|
|
|
|
[MessageChannelEvent.MessageDelivered]: CustomEvent<{
|
2025-08-08 10:18:01 +10:00
|
|
|
messageId: MessageId;
|
2025-06-03 14:46:12 -07:00
|
|
|
sentOrReceived: "sent" | "received";
|
|
|
|
|
}>;
|
|
|
|
|
[MessageChannelEvent.MessageReceived]: CustomEvent<Message>;
|
2025-08-08 10:18:01 +10:00
|
|
|
[MessageChannelEvent.MessageAcknowledged]: CustomEvent<MessageId>;
|
2025-06-03 14:46:12 -07:00
|
|
|
[MessageChannelEvent.PartialAcknowledgement]: CustomEvent<{
|
2025-08-08 10:18:01 +10:00
|
|
|
messageId: MessageId;
|
2025-06-03 14:46:12 -07:00
|
|
|
count: number;
|
|
|
|
|
}>;
|
|
|
|
|
[MessageChannelEvent.MissedMessages]: CustomEvent<HistoryEntry[]>;
|
|
|
|
|
[MessageChannelEvent.SyncSent]: CustomEvent<Message>;
|
|
|
|
|
[MessageChannelEvent.SyncReceived]: CustomEvent<Message>;
|
|
|
|
|
};
|