import { IClaims, IProofData, IPublicClaim, ISaltedFields, } from './models'; /** * IClaims interface is a factory to create Public, Private, and Proof Claims */ export interface IClaimsFactory { createClaimsUser(): IClaimsUser; createClaimsIssuer(): IClaimsIssuer; createClaimsVerifier(): IClaimsVerifier; } export interface IClaimsUser extends IClaims { createPublicClaim(publicData: object): Promise; createPrivateClaim(privateData: { [key: string]: string }, issuer: string): Promise<{ token: string; saltedFields: { [key: string]: string } }>; createProofClaim(claimUrl: string, saltedFields: IProofData): Promise; verifyPublicClaim(token: string, verifyData: object): Promise; verifyPrivateClaim(privateToken: string, saltedFields: ISaltedFields): Promise; publishPublicClaim(issued: string, verifyData: object, opts?: { hashAlg: string; createHash: (data: string) => string }): Promise; publishPrivateClaim(issued: string, saltedFields: ISaltedFields, opts?: { hashAlg: string; createHash: (data: string) => string }): Promise; } export interface IClaimsIssuer extends IClaims { issuePublicClaim(token: string | IPublicClaim): Promise; issuePrivateClaim(token: string): Promise; } export interface IClaimsVerifier extends IClaims { verifyPublicProof(claimUrl: string): Promise; verifyPrivateProof(proofToken: string): Promise; }