UNPKG

@govtechsg/open-attestation

Version:
58 lines (57 loc) 2.83 kB
import { OpenAttestationDocument as OpenAttestationDocumentV2 } from "../__generated__/schema.2.0"; import { SchemaId } from "../shared/@types/document"; import { Array as RunTypesArray, Literal, Partial, Record as RunTypesRecord, Static, String } from "runtypes"; export declare const ObfuscationMetadata: Partial<{ obfuscatedData: RunTypesArray<import("runtypes").Constraint<String, string, unknown>, false>; }, false>; export type ObfuscationMetadata = Static<typeof ObfuscationMetadata>; export declare const Proof: RunTypesRecord<{ type: Literal<"OpenAttestationSignature2018">; created: String; proofPurpose: Literal<"assertionMethod">; verificationMethod: String; signature: String; }, false>; export type Proof = Static<typeof Proof>; export declare const ArrayProof: RunTypesArray<RunTypesRecord<{ type: Literal<"OpenAttestationSignature2018">; created: String; proofPurpose: Literal<"assertionMethod">; verificationMethod: String; signature: String; }, false>, false>; export type ArrayProof = Static<typeof ArrayProof>; export declare const Signature: RunTypesRecord<{ type: Literal<"SHA3MerkleProof">; targetHash: String; merkleRoot: String; proof: RunTypesArray<String, false>; }, false>; export type Signature = Static<typeof Signature>; export declare const SignatureStrict: import("runtypes").Intersect<[RunTypesRecord<{ type: Literal<"SHA3MerkleProof">; targetHash: String; merkleRoot: String; proof: RunTypesArray<String, false>; }, false>, RunTypesRecord<{ targetHash: import("runtypes").Constraint<String, string, unknown>; merkleRoot: import("runtypes").Constraint<String, string, unknown>; proof: RunTypesArray<import("runtypes").Constraint<String, string, unknown>, false>; }, false>]>; export type SignatureStrict = Static<typeof SignatureStrict>; export interface SchematisedDocument<T extends OpenAttestationDocumentV2 = OpenAttestationDocumentV2> { version: SchemaId; data: DeepStringify<T>; schema?: string; privacy?: ObfuscationMetadata; } export interface WrappedDocument<T extends OpenAttestationDocumentV2 = OpenAttestationDocumentV2> extends SchematisedDocument<T> { signature: Signature; } export interface SignedWrappedDocument<T extends OpenAttestationDocumentV2 = OpenAttestationDocumentV2> extends WrappedDocument<T> { proof: Proof[]; } export type DeepStringify<T> = { [P in keyof T]: T[P] extends Array<number> ? Array<string> : T[P] extends Array<string> ? Array<string> : T[P] extends Record<string, any> ? DeepStringify<T[P]> : T[P] extends Array<Record<string, infer U>> ? DeepStringify<U> : number extends T[P] ? string : undefined extends T[P] ? DeepStringify<T[P]> : T[P] extends string ? string : DeepStringify<T[P]>; }; export * from "../__generated__/schema.2.0";