import { ChatMessage, ChatOptions, ProviderResponse } from '../../../types/chat';
import { Tool } from '../../../types/tool';

export interface AzureProviderConfig {
  apiKey: string;
  subscriptionId: string;
  endpoint: string;
  deployment: string;
}

export interface AzureChatRequestBody {
  messages: any[];
  max_tokens?: number;
  temperature?: number;
  tools?: any[];
  tool_choice?: string;
  stream?: boolean;
}

export interface AzureChatResponse {
  id: string;
  object: string;
  created: number;
  model: string;
  choices: {
    index: number;
    message?: {
      role: string;
      content: string;
      function_call?: {
        name: string;
        arguments: string;
      };
    };
    delta?: {
      content?: string;
      function_call?: {
        name: string;
        arguments: string;
      };
    };
    finish_reason: string;
  }[];
  usage?: {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
  };
}

export interface AzureEmbeddingRequestBody {
  input: string | string[];
}

export interface AzureEmbeddingResponse {
  data: {
    embedding: number[];
  }[];
}

export type AzureCacheKey = {
  messages: ChatMessage[];
  options: ChatOptions;
  tools?: Tool[];
};