/** * Investment API Service */ import { api } from '@/services/api'; import type { AgentConfig, AllocationWithAgent, AllocationTransaction, AllocationSummary, AgentPerformance, CreateAllocationInput, FundAllocationInput, WithdrawInput, } from '../types'; const INVESTMENT_BASE_URL = import.meta.env.VITE_INVESTMENT_SERVICE_URL || 'http://localhost:3093'; export const investmentApi = { // Get all agents async getAgents(): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/agents`); return data.data; }, // Get single agent async getAgent(agentType: string): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/agents/${agentType}`); return data.data; }, // Get agent performance async getAgentPerformance(agentType: string, periodDays = 30): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/agents/${agentType}/performance`, { params: { periodDays }, }); return data.data; }, // Get user allocations async getUserAllocations(): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/users/me/allocations`); return data.data; }, // Get single allocation async getAllocation(allocationId: string): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/allocations/${allocationId}`); return data.data; }, // Get allocation transactions async getAllocationTransactions(allocationId: string): Promise { const { data } = await api.get( `${INVESTMENT_BASE_URL}/api/v1/allocations/${allocationId}/transactions` ); return data.data; }, // Get user investment summary async getSummary(): Promise { const { data } = await api.get(`${INVESTMENT_BASE_URL}/api/v1/users/me/investment-summary`); return data.data; }, // Create allocation async createAllocation(input: CreateAllocationInput): Promise { const { data } = await api.post(`${INVESTMENT_BASE_URL}/api/v1/allocations`, input); return data.data; }, // Fund allocation async fundAllocation(input: FundAllocationInput): Promise { const { data } = await api.post( `${INVESTMENT_BASE_URL}/api/v1/allocations/${input.allocationId}/fund`, { amount: input.amount } ); return data.data; }, // Withdraw from allocation async withdraw(input: WithdrawInput): Promise { const { data } = await api.post( `${INVESTMENT_BASE_URL}/api/v1/allocations/${input.allocationId}/withdraw`, { amount: input.amount } ); return data.data; }, // Update allocation status async updateStatus(allocationId: string, status: string, reason?: string): Promise { const { data } = await api.patch( `${INVESTMENT_BASE_URL}/api/v1/allocations/${allocationId}/status`, { status, reason } ); return data.data; }, };