import type { JSONSchemaObject } from './types.js';
/**
 * Enhanced validation error with structured error information
 */
export declare class ToolArgumentValidationError extends Error {
    readonly issues: readonly string[];
    readonly toolName: string;
    constructor(toolName: string, issues: string[]);
}
/**
 * Runtime type guards for tool argument validation
 */
export declare namespace TypeGuards {
    /**
     * Type guard for string values
     */
    function isString(value: unknown): value is string;
    /**
     * Type guard for number values
     */
    function isNumber(value: unknown): value is number;
    /**
     * Type guard for boolean values
     */
    function isBoolean(value: unknown): value is boolean;
    /**
     * Type guard for array values
     */
    function isArray(value: unknown): value is unknown[];
    /**
     * Type guard for object values
     */
    function isObject(value: unknown): value is Record<string, unknown>;
    /**
     * Type guard for non-null values
     */
    function isNotNull(value: unknown): value is NonNullable<unknown>;
    /**
     * Type guard for enum values
     */
    function isEnum<T extends string>(value: unknown, enumValues: readonly T[]): value is T;
}
/**
 * Coerce loosely-typed tool arguments into their declared schema types.
 * This makes tools resilient to providers that emit boolean/number values as strings.
 */
export declare function coerceToolArguments(schema: JSONSchemaObject | undefined, args: Record<string, unknown>): Record<string, unknown>;
export declare function validateToolArguments(toolName: string, schema: JSONSchemaObject | undefined, args: Record<string, unknown>): void;
//# sourceMappingURL=schemaValidator.d.ts.map