/**
 * Image Generation Tools
 *
 * Tool definitions for AI model use - enables AI models to generate
 * images as part of their response workflow.
 *
 * @packageDocumentation
 * @module @juspay/neurolink/image-gen
 * @category ImageGeneration
 *
 * @example
 * ```typescript
 * import { getImageGenTools } from '@juspay/neurolink';
 *
 * // Get tools for AI model registration
 * const tools = getImageGenTools();
 *
 * // Use with NeuroLink
 * const neurolink = new NeuroLink();
 * neurolink.registerCustomTools(tools);
 * ```
 */
import { ImageGenService } from "./ImageGenService.js";
import type { ImageGenConfig, ImageGenToolContext, ImageGenToolParams, ImageGenToolResponse } from "./types.js";
/**
 * Tool definition interface compatible with AI SDK / MCP
 */
export type ImageGenToolDefinition = {
    name: string;
    description: string;
    inputSchema: {
        type: "object";
        properties: Record<string, {
            type: string;
            description: string;
            enum?: string[];
        }>;
        required: string[];
    };
    execute: (params: ImageGenToolParams, context?: ImageGenToolContext) => Promise<ImageGenToolResponse>;
};
/**
 * Create an image generation tool for use with AI models
 *
 * This tool allows AI models to generate images based on text prompts.
 * It integrates with the ImageGenService for actual generation.
 *
 * @param service - ImageGenService instance to use
 * @returns Tool definition compatible with MCP/AI SDK
 *
 * @example
 * ```typescript
 * const service = new ImageGenService();
 * const tool = createImageGenTool(service);
 *
 * // Tool can now be registered with NeuroLink
 * neurolink.registerTool(tool.name, {
 *   description: tool.description,
 *   parameters: tool.inputSchema,
 *   execute: tool.execute
 * });
 * ```
 */
export declare function createImageGenTool(service: ImageGenService): ImageGenToolDefinition;
/**
 * Create an image editing/variation tool for use with AI models
 *
 * This tool allows AI models to create variations of existing images
 * or edit images based on reference images and prompts.
 *
 * @param service - ImageGenService instance to use
 * @returns Tool definition compatible with MCP/AI SDK
 */
export declare function createImageVariationTool(service: ImageGenService): ImageGenToolDefinition;
/**
 * Get all image generation tools as an array
 *
 * Creates a shared ImageGenService instance and returns all
 * image generation tools configured to use it.
 *
 * @param config - Optional configuration for the ImageGenService
 * @returns Array of tool definitions
 *
 * @example
 * ```typescript
 * import { getImageGenTools, NeuroLink } from '@juspay/neurolink';
 *
 * const tools = getImageGenTools({
 *   defaultProvider: 'openai',
 *   defaultModel: 'dall-e-3'
 * });
 *
 * const neurolink = new NeuroLink();
 * for (const tool of tools) {
 *   neurolink.registerTool(tool.name, {
 *     description: tool.description,
 *     parameters: tool.inputSchema,
 *     execute: tool.execute
 *   });
 * }
 * ```
 */
export declare function getImageGenTools(configOrService?: Partial<ImageGenConfig> | ImageGenService): ImageGenToolDefinition[];
/**
 * Get only the basic image generation tool
 *
 * @param config - Optional configuration for the ImageGenService
 * @returns Single tool definition for basic image generation
 */
export declare function getBasicImageGenTool(configOrService?: Partial<ImageGenConfig> | ImageGenService): ImageGenToolDefinition;
/**
 * Create a custom image generation tool with specific service configuration
 *
 * @param serviceConfig - Configuration for the ImageGenService
 * @param toolConfig - Optional customizations for the tool definition
 * @returns Customized tool definition
 *
 * @example
 * ```typescript
 * const customTool = createCustomImageGenTool(
 *   { defaultProvider: 'vertex', defaultModel: 'imagen-3.0-generate-001' },
 *   { name: 'vertex_generate_image', description: 'Generate images using Vertex AI Imagen' }
 * );
 * ```
 */
export declare function createCustomImageGenTool(serviceConfig?: Partial<ImageGenConfig>, toolConfig?: Partial<Pick<ImageGenToolDefinition, "name" | "description">>): ImageGenToolDefinition;
