import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { PurchaseConnectsArgsSchema } from "../../schemas/upwork.js";
import { UpworkClient } from "../../services/upwork-client.js";

export const purchaseConnectsToolDefinition: Tool = {
  name: "upwork_purchase_connects",
  description: "Purchase additional connects",
  inputSchema: {
    type: "object",
    properties: {
      quantity: { type: "number", minimum: 10, maximum: 200, description: "Number of connects to purchase (increments of 10)" }
    },
    required: ["quantity"]
  }
};

export async function purchaseConnectsHandler(args: unknown, upworkClient: UpworkClient) {
  const validatedArgs = PurchaseConnectsArgsSchema.parse(args);
  
  try {
    const purchaseData = {
      quantity: validatedArgs.quantity
    };

    const response = await upworkClient.getClient().post('/profiles/v1/contractors/me/connects/purchase', purchaseData);
    
    return {
      content: [
        {
          type: "text",
          text: JSON.stringify({
            success: true,
            purchase: response.data,
            message: `Successfully purchased ${validatedArgs.quantity} connects`
          }, null, 2)
        }
      ]
    };
  } catch (error) {
    throw upworkClient.handleError(error);
  }
}

export const purchaseConnectsTool = {
  definition: purchaseConnectsToolDefinition,
  handler: purchaseConnectsHandler,
  schema: PurchaseConnectsArgsSchema
};