import { SyncMessage } from './SyncMessage'; import { SignalService } from '../../../../../protobuf'; import { MessageParams } from '../../Message'; interface RequestSyncMessageParams extends MessageParams { requestType: SignalService.SyncMessage.Request.Type; } export abstract class RequestSyncMessage extends SyncMessage { private readonly requestType: SignalService.SyncMessage.Request.Type; constructor(params: RequestSyncMessageParams) { super({ timestamp: params.timestamp, identifier: params.identifier }); this.requestType = params.requestType; } public ttl(): number { return this.getDefaultTTL(); } protected contentProto(): SignalService.Content { return new SignalService.Content({ syncMessage: this.syncProto(), }); } protected syncProto(): SignalService.SyncMessage { const syncMessage = super.syncProto(); syncMessage.request = new SignalService.SyncMessage.Request({ type: this.requestType, }); return syncMessage; } }