import { Array as RunTypesArray, Boolean, Literal, Record, Static, String, Union, Number } from "runtypes"; import { ErrorVerificationFragment, InvalidVerificationFragment, SkippedVerificationFragment, ValidVerificationFragment, } from "../../../types/core"; import { Reason } from "../../../types/error"; import { OcspResponderRevocationReason, RevocationStatus, RevocationStatusArray, ValidRevocationStatus, ValidRevocationStatusArray, } from "../revocation.types"; /** * DID signed issuance status */ export const ValidDidSignedIssuanceStatus = Record({ did: String, issued: Literal(true), }); export type ValidDidSignedIssuanceStatus = Static; export const ValidDidSignedIssuanceStatusArray = RunTypesArray(ValidDidSignedIssuanceStatus); export type ValidDidSignedIssuanceStatusArray = Static; export const InvalidDidSignedIssuanceStatus = Record({ did: String, issued: Literal(false), reason: Reason, }); export type InvalidDidSignedIssuanceStatus = Static; export const DidSignedIssuanceStatus = Union(ValidDidSignedIssuanceStatus, InvalidDidSignedIssuanceStatus); export type DidSignedIssuanceStatus = Static; export const DidSignedIssuanceStatusArray = RunTypesArray(DidSignedIssuanceStatus); export type DidSignedIssuanceStatusArray = Static; /** * OCSP response */ export const ValidOcspReasonCode = Number.withConstraint((n) => Object.values(OcspResponderRevocationReason).includes(n) ); export const ValidOcspResponse = Record({ revoked: Literal(false), documentHash: String, }); export const ValidOcspResponseRevoked = Record({ revoked: Literal(true), documentHash: String, reasonCode: ValidOcspReasonCode, }); /** * Data for v2 Fragments */ export const ValidDidSignedDataV2 = Record({ issuedOnAll: Literal(true), revokedOnAny: Literal(false), details: Record({ issuance: ValidDidSignedIssuanceStatusArray, revocation: ValidRevocationStatusArray, }), }); export type ValidDidSignedDataV2 = Static; export const InvalidDidSignedDataV2 = Record({ issuedOnAll: Boolean, revokedOnAny: Boolean, details: Record({ issuance: DidSignedIssuanceStatusArray, revocation: RevocationStatusArray, }), }); export type InvalidDidSignedDataV2 = Static; /** * Data for v3 Fragments */ export const ValidDidSignedDataV3 = Record({ issuedOnAll: Literal(true), revokedOnAny: Literal(false), details: Record({ issuance: ValidDidSignedIssuanceStatus, revocation: ValidRevocationStatus, }), }); export type ValidDidSignedDataV3 = Static; export const InvalidDidSignedDataV3 = Record({ issuedOnAll: Boolean, revokedOnAny: Boolean, details: Record({ issuance: DidSignedIssuanceStatus, revocation: RevocationStatus, }), }); export type InvalidDidSignedDataV3 = Static; /** * Fragments */ export type OpenAttestationDidSignedDocumentStatusValidFragmentV2 = ValidVerificationFragment; export type OpenAttestationDidSignedDocumentStatusInvalidFragmentV2 = InvalidVerificationFragment; export type OpenAttestationDidSignedDocumentStatusValidFragmentV3 = ValidVerificationFragment; export type OpenAttestationDidSignedDocumentStatusInvalidFragmentV3 = InvalidVerificationFragment; export type OpenAttestationDidSignedDocumentStatusErrorFragment = ErrorVerificationFragment; export type OpenAttestationDidSignedDocumentStatusVerificationFragment = | OpenAttestationDidSignedDocumentStatusValidFragmentV2 | OpenAttestationDidSignedDocumentStatusInvalidFragmentV2 | OpenAttestationDidSignedDocumentStatusValidFragmentV3 | OpenAttestationDidSignedDocumentStatusInvalidFragmentV3 | OpenAttestationDidSignedDocumentStatusErrorFragment | SkippedVerificationFragment;