export interface DiscoverDtoProperty { name: string; tsType: string; rules?: string[]; optional?: boolean; } export interface DiscoverDtoInfo { name: string; properties: DiscoverDtoProperty[]; } export interface DiscoverInputItem { name: string; description?: string; required?: boolean; defaultValue?: string; } export interface DiscoverInputGroup { label: string; items: DiscoverInputItem[]; } export interface DiscoverInputs { params?: string[]; query?: string[]; headers?: string[]; body?: DiscoverDtoInfo; groups?: DiscoverInputGroup[]; } export interface DiscoverSectionItem { name: string; kind?: string; detail?: string; flags?: string[]; attributes?: Record; } export interface DiscoverSection { label: string; itemLabel?: string; items: DiscoverSectionItem[]; } export interface DiscoverEntry { method: string; path: string; controller: string; handler: string; description?: string; inputs?: DiscoverInputs; guards?: string[]; } export interface DiscoverGroup { source: string; label: string; icon?: string; itemLabel?: string; entries: DiscoverEntry[]; sections?: DiscoverSection[]; } export interface ProfilerDiscoverSource { readonly type: string; collect(): DiscoverGroup | DiscoverGroup[]; }