/// <inheritdoc />
        public async Task <PresentationAcknowledgeMessage> CreateAcknowledgeMessageAsync(IAgentContext agentContext, string proofRecordId, string status = AcknowledgementStatusConstants.Ok)
        {
            var record = await GetAsync(agentContext, proofRecordId);

            var threadId           = record.GetTag(TagConstants.LastThreadId);
            var acknowledgeMessage = new PresentationAcknowledgeMessage(agentContext.UseMessageTypesHttps)
            {
                Id     = threadId,
                Status = status
            };

            acknowledgeMessage.ThreadFrom(threadId);

            return(acknowledgeMessage);
        }
        /// <inheritdoc />
        public virtual async Task <ProofRecord> ProcessAcknowledgeMessageAsync(IAgentContext agentContext, PresentationAcknowledgeMessage acknowledgeMessage)
        {
            var proofRecord = await this.GetByThreadIdAsync(agentContext, acknowledgeMessage.GetThreadId());

            EventAggregator.Publish(new ServiceMessageProcessingEvent
            {
                RecordId    = proofRecord.Id,
                MessageType = acknowledgeMessage.Type,
                ThreadId    = acknowledgeMessage.GetThreadId()
            });

            return(proofRecord);
        }