/**
 * Tool and schema primitives.
 *
 * These were re-exported from the `ai` package. They are implemented here now,
 * against the local type algebra in `types/aiCompat.ts`. The function and the
 * type had to move together: replacing `tool()` alone leaves it producing an
 * upstream `Tool` that no longer matches the local one, which is how the first
 * attempt failed.
 *
 * Upstream behaviour, reproduced exactly:
 *   - `tool()` is identity. It exists for inference, not for runtime.
 *   - `jsonSchema()` wraps a raw JSON Schema in the duck-typed shape the rest of
 *     this repo reads — `convertZodToJsonSchema` looks for the `jsonSchema`
 *     property, not for the brand — and still stamps
 *     `Symbol.for("vercel.ai.schema")` so anything that does check it keeps
 *     working.
 *   - `stepCountIs(n)` returns `({steps}) => steps.length === n`.
 */
import type { JSONSchema7, Schema, Tool } from "../types/index.js";
export declare function tool<INPUT, OUTPUT>(definition: Tool<INPUT, OUTPUT>): Tool<INPUT, OUTPUT>;
export declare function tool<INPUT>(definition: Tool<INPUT, never>): Tool<INPUT, never>;
export declare function jsonSchema<OBJECT = unknown>(schema: JSONSchema7 | (() => JSONSchema7), options?: {
    validate?: (value: unknown) => {
        success: true;
        value: OBJECT;
    } | {
        success: false;
        error: unknown;
    };
}): Schema<OBJECT>;
export declare const stepCountIs: (stepCount: number) => ({ steps }: {
    steps: unknown[];
}) => boolean;
