/**
 * MCP Elicitation Protocol
 *
 * Protocol-level interface for the MCP elicitation system that enables
 * tools to request interactive user input during execution.
 *
 * This module provides:
 * - Protocol message types for MCP elicitation requests/responses
 * - Protocol-level handlers for different transport types
 * - Utility functions for protocol message construction
 * - Integration with the ElicitationManager
 *
 * Implements MCP 2024-11-05 elicitation specification.
 *
 * @module mcp/elicitationProtocol
 * @since 8.39.0
 */
import type { ElicitationCancelMessage, ElicitationProtocolAdapterConfig, ElicitationProtocolPayload, ElicitationRequestMessage, ElicitationRequestParams, ElicitationResponseMessage, ElicitationResponseParams, Elicitation, ElicitationResponse, ElicitationHandler, FormField, SelectOption } from "../types/index.js";
import { ElicitationManager } from "./elicitation/elicitationManager.js";
/**
 * Create an elicitation request protocol message
 */
export declare function createElicitationRequest(params: ElicitationRequestParams): ElicitationRequestMessage;
/**
 * Create an elicitation response protocol message
 */
export declare function createElicitationResponse(requestId: string, response: Omit<ElicitationResponseParams, "requestId">): ElicitationResponseMessage;
/**
 * Create an elicitation cancel protocol message
 */
export declare function createElicitationCancel(requestId: string, reason?: string): ElicitationCancelMessage;
/**
 * Check if a message is an elicitation protocol message
 */
export declare function isElicitationProtocolMessage(message: unknown): message is ElicitationProtocolPayload;
/**
 * Convert protocol message to Elicitation type
 */
export declare function protocolMessageToElicitation(message: ElicitationRequestMessage): Elicitation;
/**
 * Convert ElicitationResponse to protocol message
 */
export declare function elicitationResponseToProtocol(response: ElicitationResponse): ElicitationResponseMessage;
/**
 * Elicitation Protocol Adapter
 *
 * Bridges protocol-level messages with the ElicitationManager
 */
export declare class ElicitationProtocolAdapter {
    private manager;
    private config;
    constructor(config?: ElicitationProtocolAdapterConfig);
    /**
     * Handle incoming protocol message
     */
    handleMessage(message: ElicitationProtocolPayload): Promise<ElicitationProtocolPayload | void>;
    /**
     * Handle elicitation request
     */
    private handleRequest;
    /**
     * Handle elicitation response (for external responses)
     */
    private handleResponse;
    /**
     * Handle elicitation cancel
     */
    private handleCancel;
    /**
     * Send an elicitation request through the protocol
     */
    requestElicitation(params: ElicitationRequestParams): Promise<ElicitationResponse>;
    /**
     * Cancel a pending elicitation
     */
    cancelElicitation(requestId: string, reason?: string): void;
    /**
     * Get the underlying manager
     */
    getManager(): ElicitationManager;
    /**
     * Set protocol handler for the manager
     */
    setHandler(handler: ElicitationHandler): void;
    /**
     * Enable/disable the protocol
     */
    setEnabled(enabled: boolean): void;
    /**
     * Check if protocol is enabled
     */
    isEnabled(): boolean;
}
/**
 * Create protocol-compliant confirmation request
 */
export declare function createConfirmationRequest(message: string, options: {
    toolName: string;
    serverId?: string;
    confirmLabel?: string;
    cancelLabel?: string;
    timeout?: number;
}): ElicitationRequestMessage;
/**
 * Create protocol-compliant text input request
 */
export declare function createTextInputRequest(message: string, options: {
    toolName: string;
    serverId?: string;
    placeholder?: string;
    defaultValue?: string;
    minLength?: number;
    maxLength?: number;
    pattern?: string;
    multiline?: boolean;
    timeout?: number;
}): ElicitationRequestMessage;
/**
 * Create protocol-compliant select request
 */
export declare function createSelectRequest(message: string, selectOptions: SelectOption[], options: {
    toolName: string;
    serverId?: string;
    defaultValue?: string;
    timeout?: number;
}): ElicitationRequestMessage;
/**
 * Create protocol-compliant form request
 */
export declare function createFormRequest(message: string, fields: FormField[], options: {
    toolName: string;
    serverId?: string;
    submitLabel?: string;
    timeout?: number;
}): ElicitationRequestMessage;
/**
 * Global protocol adapter instance
 */
export declare const globalElicitationProtocol: ElicitationProtocolAdapter;
