import type { CreateCredentialProposalOptions, CredentialProtocolMsgReturnType, DeleteCredentialOptions, AcceptCredentialProposalOptions, NegotiateCredentialProposalOptions, CreateCredentialOfferOptions, NegotiateCredentialOfferOptions, CreateCredentialRequestOptions, AcceptCredentialOfferOptions, AcceptCredentialRequestOptions, AcceptCredentialOptions, GetCredentialFormatDataReturn, CreateCredentialProblemReportOptions } from './CredentialProtocolOptions'; import type { AgentContext } from '../../../agent'; import type { AgentMessage } from '../../../agent/AgentMessage'; import type { FeatureRegistry } from '../../../agent/FeatureRegistry'; 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 { CredentialFormatService, ExtractCredentialFormats } from '../formats'; import type { CredentialState } from '../models/CredentialState'; import type { CredentialExchangeRecord } from '../repository'; export interface CredentialProtocol { readonly version: string; createProposal(agentContext: AgentContext, options: CreateCredentialProposalOptions): Promise>; processProposal(messageContext: InboundMessageContext): Promise; acceptProposal(agentContext: AgentContext, options: AcceptCredentialProposalOptions): Promise>; negotiateProposal(agentContext: AgentContext, options: NegotiateCredentialProposalOptions): Promise>; createOffer(agentContext: AgentContext, options: CreateCredentialOfferOptions): Promise>; processOffer(messageContext: InboundMessageContext): Promise; acceptOffer(agentContext: AgentContext, options: AcceptCredentialOfferOptions): Promise>; negotiateOffer(agentContext: AgentContext, options: NegotiateCredentialOfferOptions): Promise>; createRequest(agentContext: AgentContext, options: CreateCredentialRequestOptions): Promise>; processRequest(messageContext: InboundMessageContext): Promise; acceptRequest(agentContext: AgentContext, options: AcceptCredentialRequestOptions): Promise>; processCredential(messageContext: InboundMessageContext): Promise; acceptCredential(agentContext: AgentContext, options: AcceptCredentialOptions): Promise>; processAck(messageContext: InboundMessageContext): Promise; createProblemReport(agentContext: AgentContext, options: CreateCredentialProblemReportOptions): Promise>; processProblemReport(messageContext: InboundMessageContext): Promise; findProposalMessage(agentContext: AgentContext, credentialExchangeId: string): Promise; findOfferMessage(agentContext: AgentContext, credentialExchangeId: string): Promise; findRequestMessage(agentContext: AgentContext, credentialExchangeId: string): Promise; findCredentialMessage(agentContext: AgentContext, credentialExchangeId: string): Promise; getFormatData(agentContext: AgentContext, credentialExchangeId: string): Promise>>; updateState(agentContext: AgentContext, credentialRecord: CredentialExchangeRecord, newState: CredentialState): Promise; getById(agentContext: AgentContext, credentialExchangeId: string): Promise; getAll(agentContext: AgentContext): Promise; findAllByQuery(agentContext: AgentContext, query: Query): Promise; findById(agentContext: AgentContext, credentialExchangeId: string): Promise; delete(agentContext: AgentContext, credentialRecord: CredentialExchangeRecord, options?: DeleteCredentialOptions): Promise; getByThreadAndConnectionId(agentContext: AgentContext, threadId: string, connectionId?: string): Promise; findByThreadAndConnectionId(agentContext: AgentContext, threadId: string, connectionId?: string): Promise; update(agentContext: AgentContext, credentialRecord: CredentialExchangeRecord): Promise; register(dependencyManager: DependencyManager, featureRegistry: FeatureRegistry): void; }