import type { CredentialFormatPayload } from './formats' import type { AutoAcceptCredential } from './models' import type { CredentialProtocol } from './protocol/CredentialProtocol' import type { CredentialFormatsFromProtocols, DeleteCredentialOptions, GetCredentialFormatDataReturn, } from './protocol/CredentialProtocolOptions' // re-export GetCredentialFormatDataReturn type from protocol, as it is also used in the api export type { GetCredentialFormatDataReturn, DeleteCredentialOptions } export type FindCredentialProposalMessageReturn = ReturnType< CPs[number]['findProposalMessage'] > export type FindCredentialOfferMessageReturn = ReturnType< CPs[number]['findOfferMessage'] > export type FindCredentialRequestMessageReturn = ReturnType< CPs[number]['findRequestMessage'] > export type FindCredentialMessageReturn = ReturnType< CPs[number]['findCredentialMessage'] > /** * Get the supported protocol versions based on the provided credential protocols. */ export type CredentialProtocolVersionType = CPs[number]['version'] interface BaseOptions { autoAcceptCredential?: AutoAcceptCredential comment?: string } /** * Interface for CredentialsApi.proposeCredential. Will send a proposal. */ export interface ProposeCredentialOptions extends BaseOptions { connectionId: string protocolVersion: CredentialProtocolVersionType credentialFormats: CredentialFormatPayload, 'createProposal'> } /** * Interface for CredentialsApi.acceptProposal. Will send an offer * * credentialFormats is optional because this is an accept method */ export interface AcceptCredentialProposalOptions extends BaseOptions { credentialRecordId: string credentialFormats?: CredentialFormatPayload, 'acceptProposal'> } /** * Interface for CredentialsApi.negotiateProposal. Will send an offer */ export interface NegotiateCredentialProposalOptions extends BaseOptions { credentialRecordId: string credentialFormats: CredentialFormatPayload, 'createOffer'> } /** * Interface for CredentialsApi.createOffer. Will create an out of band offer */ export interface CreateCredentialOfferOptions extends BaseOptions { protocolVersion: CredentialProtocolVersionType credentialFormats: CredentialFormatPayload, 'createOffer'> } /** * Interface for CredentialsApi.offerCredential. Extends CreateCredentialOfferOptions, will send an offer */ export interface OfferCredentialOptions extends BaseOptions, CreateCredentialOfferOptions { connectionId: string } /** * Interface for CredentialsApi.acceptOffer. Will send a request * * credentialFormats is optional because this is an accept method */ export interface AcceptCredentialOfferOptions extends BaseOptions { credentialRecordId: string credentialFormats?: CredentialFormatPayload, 'acceptOffer'> } /** * Interface for CredentialsApi.negotiateOffer. Will send a proposal. */ export interface NegotiateCredentialOfferOptions extends BaseOptions { credentialRecordId: string credentialFormats: CredentialFormatPayload, 'createProposal'> } /** * Interface for CredentialsApi.acceptRequest. Will send a credential * * credentialFormats is optional because this is an accept method */ export interface AcceptCredentialRequestOptions extends BaseOptions { credentialRecordId: string credentialFormats?: CredentialFormatPayload, 'acceptRequest'> autoAcceptCredential?: AutoAcceptCredential comment?: string } /** * Interface for CredentialsApi.acceptCredential. Will send an ack message */ export interface AcceptCredentialOptions { credentialRecordId: string } /** * Interface for CredentialsApi.sendRevocationNotification. Will send a revoke message */ export interface SendRevocationNotificationOptions { credentialRecordId: string revocationId: string // TODO: Get from record? revocationFormat: string // TODO: Get from record? comment?: string requestAck?: boolean } /** * Interface for CredentialsApi.sendProblemReport. Will send a problem-report message */ export interface SendCredentialProblemReportOptions { credentialRecordId: string description: string }