export type KbxLookupColumnSource = | 'code' | 'displayName' | 'secondaryText' | 'status' | `metadata.${string}` export interface KbxLookupColumnDefinition { key: string label: string source: KbxLookupColumnSource width?: number align?: 'left' | 'center' | 'right' } export interface KbxLookupDefinition { entity: string columns?: KbxLookupColumnDefinition[] pageSize?: number } export interface KbxLookupItem { id: TId code: string displayName: string secondaryText?: string status?: string metadata?: Record } export interface KbxLookupSearchRequest { query?: string page: number pageSize: number filters?: Record } export interface KbxLookupSearchResult { items: KbxLookupItem[] totalCount: number } export interface KbxLookupProvider { search(request: KbxLookupSearchRequest): Promise> resolveById(id: TId): Promise | null> resolveByCode(code: string): Promise | null> }