type Entity = object; interface BaseService { getFetchParams?(params: object): object; } export interface SingleTypeService extends BaseService { find?(params: object): Promise | Entity; createOrUpdate?(params: object): Promise | Entity; delete?(params: object): Promise | Entity; } export interface CollectionTypeService extends BaseService { find?(params: object): Promise | Entity; findOne?(entityId: string, params: object): Promise | Entity; create?(params: object): Promise | Entity; update?(entityId: string, params: object): Promise | Entity; delete?(entityId: string, params: object): Promise | Entity; } export type Service = SingleTypeService | CollectionTypeService; export type GenericService = Partial & { [method: string | number | symbol]: (...args: any) => any; };