@vecrea/oid4vc-prex
Version:
A TypeScript library for handling OpenID for Verifiable Credentials (OID4VC) Presentation Exchange operations
89 lines (88 loc) • 2.96 kB
TypeScript
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>;
}