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; createProposal(agentContext: AgentContext, options: CreateProofProposalOptions): Promise>; processProposal(messageContext: InboundMessageContext): Promise; acceptProposal(agentContext: AgentContext, options: AcceptProofProposalOptions): Promise>; negotiateProposal(agentContext: AgentContext, options: NegotiateProofProposalOptions): Promise>; createRequest(agentContext: AgentContext, options: CreateProofRequestOptions): Promise>; processRequest(messageContext: InboundMessageContext): Promise; acceptRequest(agentContext: AgentContext, options: AcceptProofRequestOptions): Promise>; negotiateRequest(agentContext: AgentContext, options: NegotiateProofRequestOptions): Promise>; getCredentialsForRequest(agentContext: AgentContext, options: GetCredentialsForRequestOptions): Promise>; selectCredentialsForRequest(agentContext: AgentContext, options: SelectCredentialsForRequestOptions): Promise>; processPresentation(messageContext: InboundMessageContext): Promise; acceptPresentation(agentContext: AgentContext, options: AcceptPresentationOptions): Promise>; processAck(messageContext: InboundMessageContext): Promise; 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>>; 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; }