/** * Internal dependencies */ import { BaseQueryParams, WPDataSelector, WPDataSelectors } from '../types'; import { getItem, getItemError, getItems, getItemsTotalCount, getItemsError, getItemCreateError, getItemDeleteError, getItemUpdateError } from './selectors'; export type IdType = number | string; export type IdQuery = IdType | { id: IdType; key: IdType; } | { [key: string]: IdType; }; export type Item = { id: IdType; [key: string]: unknown; }; export type ItemQuery = BaseQueryParams & { [key: string]: unknown; parent_id?: IdType; order_by?: string; }; export type Params = { [key: string]: IdType; }; type WithRequiredProperty = Type & { [Property in Key]-?: Type[Property]; }; export type CrudActionOptions = { optimisticQueryUpdate?: ItemQuery; optimisticUrlParameters?: IdType[]; }; export type CrudActions = MapActions<{ create: (query: RequiredFields extends keyof MutableProperties ? WithRequiredProperty, RequiredFields> : Partial, options?: CrudActionOptions) => ItemType; update: (idQuery: IdQuery, query: Partial) => Item; }, ResourceName, Generator> & MapActions<{ delete: (id: IdQuery) => Item; }, ResourceName, Generator>; export type CrudSelectors = MapSelectors<{ '': WPDataSelector; }, ResourceName, IdQuery, ItemType> & MapSelectors<{ Error: WPDataSelector; DeleteError: WPDataSelector; UpdateError: WPDataSelector; }, ResourceName, IdQuery, unknown> & MapSelectors<{ '': WPDataSelector; }, PluralResourceName, ItemQueryType, ItemType[]> & MapSelectors<{ TotalCount: WPDataSelector; }, PluralResourceName, ItemQueryType, number> & MapSelectors<{ Error: WPDataSelector; }, PluralResourceName, ItemQueryType, unknown> & MapSelectors<{ CreateError: WPDataSelector; }, PluralResourceName, MutableProperties, unknown> & WPDataSelectors; export type MapSelectors = { [Property in keyof Type as `get${Capitalize}${Capitalize}`]: (state: unknown, x?: ParamType) => ReturnType; }; export type MapActions = { [Property in keyof Type as `${Lowercase}${Capitalize}`]: Type[Property] extends (...args: infer P) => unknown ? (...args: P) => ReturnType : never; }; export {}; //# sourceMappingURL=types.d.ts.map