import type { CreateProofProposalOptions, CreateProofRequestOptions, DeleteProofOptions, GetProofFormatDataReturn, CreateProofProblemReportOptions, ProofProtocolMsgReturnType, AcceptProofProposalOptions, NegotiateProofProposalOptions, AcceptProofRequestOptions, NegotiateProofRequestOptions, AcceptPresentationOptions, GetCredentialsForRequestOptions, GetCredentialsForRequestReturn, SelectCredentialsForRequestOptions, SelectCredentialsForRequestReturn, } from './ProofProtocolOptions' import type { AgentMessage } from '../../../agent/AgentMessage' import type { FeatureRegistry } from '../../../agent/FeatureRegistry' import type { AgentContext } from '../../../agent/context/AgentContext' import type { InboundMessageContext } from '../../../agent/models/InboundMessageContext' import type { DependencyManager } from '../../../plugins' import type { Query } from '../../../storage/StorageService' import type { ProblemReportMessage } from '../../problem-reports' import type { ExtractProofFormats, ProofFormatService } from '../formats' import type { ProofState } from '../models/ProofState' import type { ProofExchangeRecord } from '../repository' export interface ProofProtocol { readonly version: string // methods for proposal createProposal( agentContext: AgentContext, options: CreateProofProposalOptions ): Promise> processProposal(messageContext: InboundMessageContext): Promise acceptProposal( agentContext: AgentContext, options: AcceptProofProposalOptions ): Promise> negotiateProposal( agentContext: AgentContext, options: NegotiateProofProposalOptions ): Promise> // methods for request createRequest( agentContext: AgentContext, options: CreateProofRequestOptions ): Promise> processRequest(messageContext: InboundMessageContext): Promise acceptRequest( agentContext: AgentContext, options: AcceptProofRequestOptions ): Promise> negotiateRequest( agentContext: AgentContext, options: NegotiateProofRequestOptions ): Promise> // retrieving credentials for request getCredentialsForRequest( agentContext: AgentContext, options: GetCredentialsForRequestOptions ): Promise> selectCredentialsForRequest( agentContext: AgentContext, options: SelectCredentialsForRequestOptions ): Promise> // methods for presentation processPresentation(messageContext: InboundMessageContext): Promise acceptPresentation( agentContext: AgentContext, options: AcceptPresentationOptions ): Promise> // methods for ack processAck(messageContext: InboundMessageContext): Promise // method for problem report createProblemReport( agentContext: AgentContext, options: CreateProofProblemReportOptions ): Promise> processProblemReport(messageContext: InboundMessageContext): Promise findProposalMessage(agentContext: AgentContext, proofExchangeId: string): Promise findRequestMessage(agentContext: AgentContext, proofExchangeId: string): Promise findPresentationMessage(agentContext: AgentContext, proofExchangeId: string): Promise getFormatData( agentContext: AgentContext, proofExchangeId: string ): Promise>> // repository methods updateState(agentContext: AgentContext, proofRecord: ProofExchangeRecord, newState: ProofState): Promise getById(agentContext: AgentContext, proofExchangeId: string): Promise getAll(agentContext: AgentContext): Promise findAllByQuery(agentContext: AgentContext, query: Query): Promise findById(agentContext: AgentContext, proofExchangeId: string): Promise delete(agentContext: AgentContext, proofRecord: ProofExchangeRecord, options?: DeleteProofOptions): Promise getByThreadAndConnectionId( agentContext: AgentContext, threadId: string, connectionId?: string ): Promise findByThreadAndConnectionId( agentContext: AgentContext, threadId: string, connectionId?: string ): Promise update(agentContext: AgentContext, proofRecord: ProofExchangeRecord): Promise register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry): void }