import { request } from '@/shared/api/client'; import type { ScreenerResult } from '@/shared/api/responses'; export interface ScreenerQuery { type: 'share' | 'bond'; priceMin?: number; priceMax?: number; volumeMin?: number; listLevel?: number; changePercentMin?: number; changePercentMax?: number; capitalizationMin?: number; yieldMin?: number; yieldMax?: number; durationMin?: number; durationMax?: number; couponMin?: number; couponMax?: number; couponPercentMin?: number; couponPercentMax?: number; maturityBefore?: string; maturityAfter?: string; bondType?: string; sortBy?: string; sortOrder?: 'asc' | 'desc'; page?: number; pageSize?: number; } export function getScreenerResults( params: ScreenerQuery, ): Promise<{ data: ScreenerResult; meta: { cachedAt: string | null; fromCache: boolean } }> { const query: Record = {}; Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { query[key] = String(value); } }); return request('/api/v1/securities/screener', query); }