/**
 * @fileoverview Backward compatibility layer for deprecated functions
 *
 * This module provides backward compatibility for code that uses
 * deprecated functions from older versions of the DeepSource MCP Server.
 *
 * @deprecated This entire module is deprecated and will be removed in v2.0.0
 * Please migrate to the new APIs as documented in MIGRATION.md
 *
 * @packageDocumentation
 */

import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { ToolRegistry } from './server/tool-registry.js';
import { registerDeepSourceTools } from './server/tool-registration.js';
import type { BaseHandlerDeps } from './handlers/base/handler.interface.js';
import { createDefaultHandlerDeps } from './handlers/base/handler.factory.js';
import { createLogger } from './utils/logging/logger.js';

const logger = createLogger('Compatibility');

/**
 * Validates that required environment variables are set
 * @deprecated Use getConfig() from config/index.js instead
 * @returns true if environment is valid, false otherwise
 */
export function validateEnvironment(): boolean {
  logger.warn(
    'DEPRECATED: validateEnvironment() is deprecated. ' +
      'Please use getConfig() from config/index.js instead. ' +
      'This function will be removed in the next major version.'
  );

  const apiKey = process.env.DEEPSOURCE_API_KEY;
  if (!apiKey || apiKey.trim() === '') {
    logger.error('DEEPSOURCE_API_KEY environment variable is not set or is empty');
    return false;
  }

  return true;
}

/**
 * Creates and configures a tool registry with all DeepSource tools
 * @deprecated Use DeepSourceMCPServer.create() from server/mcp-server.js instead
 * @param server - The MCP server instance
 * @param handlerDeps - Optional custom handler dependencies
 * @returns Configured tool registry
 */
export function createAndConfigureToolRegistry(
  server: McpServer,
  handlerDeps?: BaseHandlerDeps
): ToolRegistry {
  logger.warn(
    'DEPRECATED: createAndConfigureToolRegistry() is deprecated. ' +
      'Please use DeepSourceMCPServer.create() from server/mcp-server.js instead. ' +
      'This function will be removed in the next major version.'
  );

  // Create dependencies if not provided
  const deps = handlerDeps || createDefaultHandlerDeps();

  // Create registry with dependencies
  const registry = new ToolRegistry(server, deps);

  try {
    // Register all DeepSource tools using the standard registration
    registerDeepSourceTools(registry);
    logger.info('Successfully registered DeepSource tools in compatibility mode');
  } catch (error) {
    logger.error('Failed to register tools:', error);
    // Don't throw - return the registry even if registration fails
  }

  return registry;
}
