UNPKG

@vecrea/oid4vc-prex

Version:

A TypeScript library for handling OpenID for Verifiable Credentials (OID4VC) Presentation Exchange operations

89 lines (88 loc) 2.96 kB
import { z } from 'zod'; import { Rule, RuleJSON } from './Rule'; import { From } from './From'; import { Name } from './Name'; import { Purpose } from './Purpose'; /** * Zod schema for validating submission requirement values. * * This schema ensures that a submission requirement is an object with the following properties: * - rule: A string that must be either 'all' or 'pick'. * - name: An optional string. * - purpose: An optional string. * - from: An optional string. * - from_nested: An optional array of submission requirement objects. * - count: An optional number. * - min: An optional number. * - max: An optional number. * * @type {z.ZodType<SubmissionRequirementJSON>} * * @example * // Valid usage * submissionRequirementSchema.parse({ * rule: 'all', * name: 'name', * purpose: 'purpose', * from: 'from', * }); // Returns { rule: 'all', name: 'name', purpose: 'purpose', from: 'from'} * * // Invalid usage (will throw ZodError) * submissionRequirementSchema.parse({}); // Throws error: Object has missing required properties */ export declare const submissionRequirementSchema: z.ZodType<SubmissionRequirementJSON>; /** * Type of a submission requirement. */ export type SubmissionRequirementJSON = { name?: string | undefined; purpose?: string | undefined; from?: string | undefined; from_nested?: SubmissionRequirementJSON[] | undefined; } & RuleJSON; /** * Represents a submission requirement. * @class * * @example * // Create a valid SubmissionRequirement instance * const validSubmissionRequirement = new SubmissionRequirement( * new Rule.Pick(1, 1, 1), * new From.FromGroup(new Group('group')), * new Name('name'), * new Purpose('purpose') * ); */ export declare class SubmissionRequirement { rule: Rule; from: From; name?: Name | undefined; purpose?: Purpose | undefined; constructor(rule: Rule, from: From, name?: Name | undefined, purpose?: Purpose | undefined); /** * Creates an instance of SubmissionRequirement. * @param {SubmissionRequirementJSON} json - the JSON representation of the SubmissionRequirement. * @returns {SubmissionRequirement} A submission requirement instance. */ static fromJSON(json: SubmissionRequirementJSON): SubmissionRequirement; /** * Returns the JSON representation of the SubmissionRequirement. * * This method is used for JSON serialization. * * @returns {SubmissionRequirementJSON} The submission requirement JSON. */ toJSON(): SubmissionRequirementJSON; } /** * Namespace for SubmissionRequirement. * @namespace */ export declare namespace SubmissionRequirement { /** * Returns all unique groups in the submission requirement. * @param {SubmissionRequirement} instance - The submission requirement instance. * @returns {Set<string>} A set of groups. */ const allGroups: (instance: SubmissionRequirement) => Set<string>; }