import type { Profile } from '../interfaces/profile.interface.js'; import type { IndexAttributesProvider, ProfileSummary, SummaryPrimitive } from './profile-summary.js'; export type FilterOp = 'eq' | 'gte' | 'lte' | 'range' | 'contains' | 'truthy'; export interface FilterCriterion { readonly field: string; readonly op: FilterOp; readonly value?: unknown; } export interface ProfilerQuery { readonly typeIn?: string[]; readonly typeNotIn?: string[]; readonly filters: FilterCriterion[]; readonly sort?: { field: 'createdAt'; direction: 'asc' | 'desc'; }; readonly page: number; readonly pageSize: number; } export interface ProfilerPage { readonly items: Profile[]; readonly total: number; } export declare function resolveField(summary: ProfileSummary, field: string): SummaryPrimitive | undefined; export declare function matchesCriterion(summary: ProfileSummary, criterion: FilterCriterion): boolean; export declare function matchesQuery(summary: ProfileSummary, query: ProfilerQuery): boolean; export declare function selectPage(entries: { summary: ProfileSummary; value: T; }[], query: ProfilerQuery): { items: T[]; total: number; }; export declare function distinctFromSummaries(summaries: ProfileSummary[], field: string, typeIn?: string[]): SummaryPrimitive[]; export declare function applyQueryInMemory(profiles: Profile[], query: ProfilerQuery, getAttributes?: IndexAttributesProvider): ProfilerPage; export declare function distinctInMemory(profiles: Profile[], field: string, getAttributes?: IndexAttributesProvider, typeIn?: string[]): SummaryPrimitive[];