import { z } from 'zod';
import { InputDescriptorId } from './InputDescriptorId';
import { JsonPath } from './JsonPath';
/**
 * Zod schema for validating descriptor map values.
 *
 * This schema ensures that a descriptor map is an object with the following properties:
 * - id: an InputDescriptorId
 * - format: a string
 * - path: a JSONPath
 * - path_nested: an optional nested descriptor map
 *
 * @type {z.ZodType<DescriptorMapJSON>}
 *
 * @example
 * // Valid usage
 * descriptorMapSchema.parse({
 *  id: '123',
 *  format: 'json',
 *  path: '$.abc123',
 *  path_nested: {
 *   id: '456',
 *   format: 'json',
 *   path: '$.def456'
 * }
 * }); // Returns { id: '123', format: 'json', path: '$.abc123', path_nested: { id: '456', format: 'json', path: '$.def456' } }
 *
 * // Invalid usage (will throw ZodError)
 * descriptorMapSchema.parse({
 *  id: '123',
 *  format: 'json',
 *  path: '$.abc123',
 *  path_nested: {
 *   id: '456',
 *   format: 'json',
 *   path: 'def456'
 * }
 * }); // Throws error: Invalid JSONPath
 *
 * @throws {z.ZodError} Throws a ZodError if the input fails validation
 */
export declare const descriptorMapSchema: z.ZodType<DescriptorMapJSON>;
/**
 * Type of a descriptor map JSON object.
 */
export type DescriptorMapJSON = {
    id: string;
    format: string;
    path: string;
    path_nested?: DescriptorMapJSON;
};
/**
 * Represents a descriptor map.
 * A descriptor map is an object that describes the path to a JSON value.
 *
 * @class
 *
 * @param {InputDescriptorId} id The input descriptor ID
 * @param {string} format The format of the JSON value
 * @param {JsonPath} path The JSON path to the value
 * @param {DescriptorMap} pathNested An optional nested descriptor map
 *
 */
export declare class DescriptorMap {
    id: InputDescriptorId;
    format: string;
    path: JsonPath;
    pathNested?: DescriptorMap | undefined;
    /**
     * Constructor for DescriptorMap
     * @param {InputDescriptorId} id
     * @param {string} format
     * @param {JsonPath} path
     * @param {DescriptorMap} pathNested
     */
    constructor(id: InputDescriptorId, format: string, path: JsonPath, pathNested?: DescriptorMap | undefined);
    /**
     * Converts JSON to DescriptorMap
     * @param {DescriptorMapJSON} json
     * @returns {DescriptorMap}
     */
    static fromJSON(json: DescriptorMapJSON): DescriptorMap;
    /**
     * Converts DescriptorMap to JSON
     * @returns {DescriptorMapJSON}
     */
    toJSON(): DescriptorMapJSON;
}
