import { ALL_EVENTS, ConnectionEvent, CredentialEvent, ProofEvent, SchemaEvent, } from "./types"; import { CloudEventDto } from "./event"; import { ConnectionUnsupportedTypeError } from "../errors/connection.unsupported.type.error"; import { CreateCredentialDefinitionRequsetDto } from "../dtos/requests/create.credential.definition.requset.dto"; import { CreateInvitationResponseDto } from "../dtos/responses/create.invitation.response.dto"; import { CreateSchemaRequestDto } from "../dtos/requests/create.schema.request.dto"; import { GetConnectionRequestDto } from "../dtos/requests/get.connection.request.dto"; import { IssueCredentialRequestDto } from "../dtos/requests/issue.credential.request.dto"; import { IssueProofRequestDto } from "../dtos/requests/issue.proof.request.dto"; import { AcceptCredentialOfferRequestDto } from "../dtos/requests/accept.credential.offer.request.dto"; export const makeEvent = (payload: { data: | null | IssueProofRequestDto | AcceptCredentialOfferRequestDto | CreateInvitationResponseDto | GetConnectionRequestDto | CreateSchemaRequestDto | CreateSchemaRequestDto | CreateCredentialDefinitionRequsetDto | IssueCredentialRequestDto; type: SchemaEvent | CredentialEvent | ProofEvent | ConnectionEvent; source: string; }) => { if (ALL_EVENTS.includes(payload.type)) { throw new ConnectionUnsupportedTypeError(); } const event = new CloudEventDto<typeof payload.data>(); event.subject = payload.type; event.source = payload.source; event.type = payload.type; event.data = payload.data; return event; };