/**
 * Desmos Calculator Tool Provider
 *
 * Provides Desmos calculators (basic, scientific, graphing)
 * with authentication and proxy support.
 *
 * SECURITY BEST PRACTICE:
 * - Development: Pass apiKey directly for local testing
 * - Production: Use proxyEndpoint or authFetcher to keep API key server-side
 *
 * Part of PIE Assessment Toolkit.
 */
import type { CalculatorProvider, DesmosCalculatorConfig } from "@pie-players/pie-calculator";
import type { ToolProviderApi, ToolProviderCapabilities } from "./ToolProviderApi.js";
/**
 * Desmos tool provider configuration
 */
export interface DesmosToolProviderConfig {
    /**
     * Desmos API key (DEVELOPMENT ONLY)
     * Never expose in production client code!
     *
     * Obtain from: https://www.desmos.com/api
     */
    apiKey?: string;
    /**
     * Server proxy endpoint (PRODUCTION RECOMMENDED)
     * Backend handles API key securely
     *
     * @example '/api/desmos/token'
     * @example 'https://api.myapp.com/tools/desmos/auth'
     */
    proxyEndpoint?: string;
    /**
     * Default calculator configuration applied to all instances
     */
    defaultConfig?: DesmosCalculatorConfig;
    /**
     * Optional telemetry callback for tool/backend instrumentation.
     */
    onTelemetry?: (eventName: string, payload?: Record<string, unknown>) => void | Promise<void>;
}
/**
 * Desmos Calculator Tool Provider
 *
 * Wraps DesmosCalculatorProvider with the ToolProviderApi interface
 * for use in the ToolProviderRegistry.
 *
 * @example
 * ```typescript
 * const provider = new DesmosToolProvider();
 *
 * await provider.initialize({
 *   apiKey: 'your-api-key', // Development only
 *   proxyEndpoint: '/api/desmos/token', // Production
 * });
 *
 * const calculatorProvider = await provider.createInstance();
 * ```
 */
export declare class DesmosToolProvider implements ToolProviderApi<DesmosToolProviderConfig, CalculatorProvider> {
    readonly providerId = "desmos-calculator";
    readonly providerName = "Desmos Calculator";
    readonly category: "calculator";
    readonly version = "1.10";
    readonly requiresAuth = true;
    private desmosProvider;
    private config;
    private emitTelemetry;
    /**
     * Initialize Desmos calculator provider
     *
     * Loads the Desmos API library and authenticates with provided credentials.
     *
     * @param config Configuration with API key or proxy endpoint
     * @throws Error if initialization fails
     */
    initialize(config: DesmosToolProviderConfig): Promise<void>;
    /**
     * Create a calculator provider instance
     *
     * Returns the initialized Desmos calculator provider.
     *
     * @param config Optional instance-specific configuration (currently unused)
     * @returns Desmos calculator provider
     * @throws Error if provider not initialized
     */
    createInstance(config?: Partial<DesmosToolProviderConfig>): Promise<CalculatorProvider>;
    /**
     * Get provider capabilities
     *
     * @returns Desmos calculator capabilities
     */
    getCapabilities(): ToolProviderCapabilities;
    /**
     * Check if provider is ready
     *
     * @returns true if provider is initialized
     */
    isReady(): boolean;
    /**
     * Clean up provider resources
     *
     * Destroys the Desmos calculator provider and releases resources.
     */
    destroy(): void;
}
