import { OpenAPIV3 } from "openapi-types";
export type OnSchemaCallbackData<TData> = {
    data?: TData;
} & ({
    type: "reference";
    schema: OpenAPIV3.ReferenceObject;
} | {
    type: "property";
    parentSchema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
    schema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
    propertyName: string;
} | {
    type: "composite" | "array" | "additionalProperties";
    parentSchema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
    schema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject;
});
type OnSchemaCallbackType<TData> = (data: OnSchemaCallbackData<TData>) => unknown;
export declare function iterateSchema<TData>(schema: OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject | undefined, options: {
    data?: TData;
    onSchema: OnSchemaCallbackType<TData>;
}): void;
export {};
