import { z } from 'zod';
import { Id } from './Id';
import { DescriptorMap } from './DescriptorMap';
/**
 * Zod schema for validating presentation submission values.
 *
 * This schema ensures that a presentation submission is an object with the following properties:
 * - id: A valid id.
 * - definition_id: A valid id.
 * - descriptor_map: An array of descriptor maps.
 *
 * @type {z.ZodObject}
 *
 * @example
 * // Valid usage
 * presentationSubmissionSchema.parse({
 *  id: 'abc123',
 *  definition_id: 'def456',
 *  descriptor_map: [{ ... }]
 * }); // Returns { id: 'abc123', definition_id: 'def456', descriptor_map: [{ ... }] }
 *
 * // Invalid usage (will throw ZodError)
 * presentationSubmissionSchema.parse({}); // Throws error: Object has missing required properties
 * presentationSubmissionSchema.parse({ id: 'abc123' }); // Throws error: Object has missing required properties
 *
 * @throws {z.ZodError} Throws a ZodError if the input fails validation
 */
export declare const presentationSubmissionSchema: z.ZodObject<{
    id: z.ZodString;
    definition_id: z.ZodString;
    descriptor_map: z.ZodArray<z.ZodType<import("./DescriptorMap").DescriptorMapJSON, z.ZodTypeDef, import("./DescriptorMap").DescriptorMapJSON>, "many">;
}, "strip", z.ZodTypeAny, {
    id: string;
    definition_id: string;
    descriptor_map: import("./DescriptorMap").DescriptorMapJSON[];
}, {
    id: string;
    definition_id: string;
    descriptor_map: import("./DescriptorMap").DescriptorMapJSON[];
}>;
/**
 * Type of a presentation submission JSON object.
 */
export type PresentationSubmissionJSON = z.infer<typeof presentationSubmissionSchema>;
/**
 * Represents a presentation submission.
 *
 * @class
 *
 * @property {Id} id - The id of the presentation submission.
 * @property {Id} definitionId - The id of the presentation definition.
 * @property {DescriptorMap[]} descriptorMaps - An array of descriptor maps.
 */
export declare class PresentationSubmission {
    id: Id;
    definitionId: Id;
    descriptorMaps: DescriptorMap[];
    /**
     * Create a new PresentationSubmission instance.
     *
     * @param {Id} id - The id of the presentation submission.
     * @param {Id} definitionId - The id of the presentation definition.
     * @param {DescriptorMap[]} descriptorMaps - An array of descriptor maps.
     */
    constructor(id: Id, definitionId: Id, descriptorMaps: DescriptorMap[]);
    /**
     * Convert a presentation submission JSON object to a PresentationSubmission instance.
     * @param {PresentationSubmissionJSON} json - The presentation submission JSON object.
     * @returns {PresentationSubmission} A new PresentationSubmission instance.
     */
    static fromJSON(json: unknown): PresentationSubmission;
    /**
     * Convert this presentation submission instance to a presentation submission JSON object.
     * @returns {PresentationSubmissionJSON} A presentation submission JSON object.
     */
    toJSON(): PresentationSubmissionJSON;
}
