import { ALL_MODULES, DOMAINS, DomainModule, ISearchFilter, ModuleProperty } from "bf-types"; import { IComputed, IObservableArray } from "mobx"; import { BfLib } from "bf-lib"; export interface ISearchManagerOptions { noModelDelay?: boolean; filters?: ISearchFilter[]; limit?: number; sort?: { field: MP; direction: "asc" | "desc"; }; apiPath?: string; } export interface ISearchManager< T = {}, D extends string = DOMAINS, M extends string = DomainModule, MP extends string = ModuleProperty > { loaded: boolean; refreshing: boolean; search_results: T[]; associated_module: M; associated_domain: D; search_filters: ISearchFilter[]; options: ISearchManagerOptions; refreshData: () => void; initialLoad: ( options?: ISearchManagerOptions, extra?: { mapResult?: (item: T) => T } ) => void; updateSearchFilters: (searchFilters: ISearchFilter) => void; }