/**
 * NeuroLink SDK Tool Registration API
 * Simple interface for developers to register custom tools
 */
import { z } from "zod";
import type { JsonValue, MCPServerCategory, MCPServerInfo, SDKToolContext, SdkSimpleTool, ZodUnknownSchema } from "../types/index.js";
/**
 * Enhanced validation configuration
 */
declare const VALIDATION_CONFIG: {
    readonly NAME_MIN_LENGTH: 2;
    readonly NAME_MAX_LENGTH: number;
    readonly DESCRIPTION_MIN_LENGTH: 10;
    readonly DESCRIPTION_MAX_LENGTH: number;
    readonly RESERVED_NAMES: Set<string>;
    readonly RECOMMENDED_PATTERNS: readonly ["get_data", "fetch_info", "calculate_value", "send_message", "create_item", "update_record", "delete_file", "validate_input"];
    readonly COMPILED_PATTERN_REGEXES: RegExp[];
};
/**
 * Creates a MCPServerInfo from a set of tools
 */
export declare function createMCPServerFromTools(serverId: string, tools: Record<string, SdkSimpleTool>, metadata?: {
    title?: string;
    description?: string;
    category?: MCPServerCategory;
    version?: string;
    author?: string;
    [key: string]: JsonValue | undefined;
}): MCPServerInfo;
/**
 * Helper to create a tool with type safety
 */
export declare function createTool(config: SdkSimpleTool): SdkSimpleTool;
/**
 * Helper to create a validated tool with suggested improvements
 */
export declare function createValidatedTool(name: string, config: SdkSimpleTool, options?: {
    strict?: boolean;
    suggestions?: boolean;
}): SdkSimpleTool;
/**
 * Helper to create a tool with typed parameters
 */
export declare function createTypedTool<TParams extends ZodUnknownSchema>(config: Omit<SdkSimpleTool, "execute"> & {
    parameters: TParams;
    execute: (params: z.infer<TParams>, context?: SDKToolContext) => Promise<JsonValue> | JsonValue;
}): SdkSimpleTool;
/**
 * Validate tool configuration with detailed error messages
 */
export declare function validateTool(name: string, tool: SdkSimpleTool): void;
/**
 * Utility to validate multiple tools at once
 */
export declare function validateTools(tools: Record<string, SdkSimpleTool>): {
    valid: string[];
    invalid: Array<{
        name: string;
        error: string;
    }>;
};
/**
 * Get validation configuration for external inspection
 */
export declare function getValidationConfig(): typeof VALIDATION_CONFIG;
/**
 * Check if a tool name is available (not reserved)
 */
export declare function isToolNameAvailable(name: string): boolean;
/**
 * Suggest alternative tool names if the provided name is invalid
 */
export declare function suggestToolNames(baseName: string): string[];
export {};
