import { request } from './client'; import type { AnalyticsResponse, Portfolio, PortfolioDetail, Position } from './responses'; export function getPortfolios(): Promise<{ data: Portfolio[]; meta: { cachedAt: string | null; fromCache: boolean }; }> { return request('/api/v1/portfolios'); } export function getPortfolio( id: number, ): Promise<{ data: PortfolioDetail; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${id}`); } export function createPortfolio(data: { name: string; description?: string; currency?: string; }): Promise<{ data: Portfolio; meta: { cachedAt: string | null; fromCache: boolean } }> { return request('/api/v1/portfolios', undefined, { method: 'POST', body: data, }); } export function updatePortfolio( id: number, data: { name?: string; description?: string; currency?: string }, ): Promise<{ data: Portfolio; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${id}`, undefined, { method: 'PATCH', body: data, }); } export function deletePortfolio( id: number, ): Promise<{ data: null; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${id}`, undefined, { method: 'DELETE', }); } export function addPosition( portfolioId: number, data: { secid: string; quantity: number; buyPrice?: number; buyDate?: string; notes?: string; tags?: string[]; }, ): Promise<{ data: Position; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${portfolioId}/positions`, undefined, { method: 'POST', body: data, }); } export function updatePosition( portfolioId: number, positionId: number, data: { quantity?: number; buyPrice?: number; buyDate?: string; notes?: string; tags?: string[]; }, ): Promise<{ data: Position; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${portfolioId}/positions/${positionId}`, undefined, { method: 'PATCH', body: data, }); } export function removePosition( portfolioId: number, positionId: number, ): Promise<{ data: null; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${portfolioId}/positions/${positionId}`, undefined, { method: 'DELETE', }); } export function getPortfolioAnalytics( portfolioId: number, ): Promise<{ data: AnalyticsResponse; meta: { cachedAt: string | null; fromCache: boolean } }> { return request(`/api/v1/portfolios/${portfolioId}/analytics`); }