import { DefaultPubsubTopic } from "@waku/interfaces"; import type { IDecodedMessage, IDecoder, IProtoMessage } from "@waku/interfaces"; import { TopicOnlyMessage as ProtoTopicOnlyMessage } from "@waku/proto"; export class TopicOnlyMessage implements IDecodedMessage { public payload: Uint8Array = new Uint8Array(); public rateLimitProof: undefined; public timestamp: undefined; public meta: undefined; public ephemeral: undefined; public constructor( public pubsubTopic: string, private proto: ProtoTopicOnlyMessage ) {} public get contentTopic(): string { return this.proto.contentTopic; } } export class TopicOnlyDecoder implements IDecoder { public pubsubTopic = DefaultPubsubTopic; public contentTopic = ""; public fromWireToProtoObj( bytes: Uint8Array ): Promise { const protoMessage = ProtoTopicOnlyMessage.decode(bytes); return Promise.resolve({ contentTopic: protoMessage.contentTopic, payload: new Uint8Array(), rateLimitProof: undefined, timestamp: undefined, meta: undefined, version: undefined, ephemeral: undefined }); } public async fromProtoObj( pubsubTopic: string, proto: IProtoMessage ): Promise { return new TopicOnlyMessage(pubsubTopic, proto); } }