/** Helper to build URL query string from params object */ export function buildQuery(params?: Record): string { if (!params) return ''; const qp = new URLSearchParams(); Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null && value !== '') { qp.append(key, String(value)); } }); const qs = qp.toString(); return qs ? `?${qs}` : ''; } // eslint-disable-next-line @typescript-eslint/no-explicit-any export type RequestFn = (endpoint: string, options?: RequestInit) => Promise; export type GetTokenFn = () => string | null;