import { Logger as WinstonLogger } from 'winston';

// Export types from chat.ts
export * from './chat';

// Export types from provider.ts
export * from './provider';

// Export types from tool.ts
export * from './tool';

// Export types from cache.ts
export * from './cache';

// Export types from execution.ts
export * from './execution';

// Export types from common.ts
export * from './common';

// Export Winston Logger as WinstonLogger
export { WinstonLogger };

// Define our own Logger interface
export interface ILogger extends WinstonLogger {}

// Re-export specific types that might be missing
export { ExecutionState, ExecutionOptions } from './execution';
export { PromptDefinition } from './common';
export { StandardizedToolCall, StandardTool, IToolManager, Tool, GenericToolSchema } from './tool';
export { 
  IAIProvider, 
  AIClientConfig, 
  ProviderCapabilities, 
  EmbeddingProvider,
  AIProviderMiddleware,
  AIProviderPlugin
} from './provider';
export { ChatMessage, ChatOptions, ProviderResponse } from './chat';

// Update StructuredPrompt type
export interface StructuredPrompt {
  name: string;
  description: string;
  input_schema: Record<string, any>;
  output_schema: Record<string, any>;
  system_message: string;
  user_message: string;
  tools: string[];
  config?: {
    temperature?: number;
    max_tokens?: number;
    provider?: string;
    model?: string;
  };
  priority?: number; // Add priority property as optional
}