import type { z } from 'zod';

export interface ToolExecutionContext {
  user: {
    id: number;
    nome: string;
    email: string;
  };
  basicAuth: {
    username: string;
    password: string;
  };
}

export interface ToolDefinition {
  name: string;
  description: string;
  parameters: z.ZodTypeAny;
  parametersDescription: Record<string, unknown>;
  execute: (input: any, context: ToolExecutionContext) => Promise<unknown>;
}

export interface ToolCall {
  name: string;
  arguments: unknown;
}

export interface ToolResult {
  tool: string;
  success: boolean;
  data?: unknown;
  error?: unknown;
}
