/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type NormalizedAnnotatedAllowedTypes, type TreeNodeSchema } from "./treeNodeSchema.js";
/**
 * Traverses all {@link TreeNodeSchema} schema reachable from `schema`, applying the visitor pattern.
 */
export declare function walkNodeSchema(schema: TreeNodeSchema, visitor: SchemaVisitor, visitedSet: Set<TreeNodeSchema>): void;
/**
 * Traverses all {@link TreeNodeSchema} schema reachable from `allowedTypes`, applying the visitor pattern.
 */
export declare function walkAllowedTypes(annotatedAllowedTypes: NormalizedAnnotatedAllowedTypes, visitor: SchemaVisitor, visitedSet?: Set<TreeNodeSchema>): void;
/**
 * Callbacks for use in {@link walkFieldSchema} / {@link walkAllowedTypes} / {@link walkNodeSchema}.
 */
export interface SchemaVisitor {
    /**
     * Called once for each node schema.
     */
    node?: (schema: TreeNodeSchema) => void;
    /**
     * Called once for each set of allowed types.
     * Includes implicit allowed types (when a single type was used instead of an array).
     *
     * This includes every field, but also the allowed types array for maps and arrays and the root if starting at {@link walkAllowedTypes}.
     */
    allowedTypes?: (allowedTypes: NormalizedAnnotatedAllowedTypes) => void;
}
//# sourceMappingURL=walkSchema.d.ts.map