import { EvaEndpoint, IEvaServiceCallOptions } from '@springtree/eva-sdk-core-service'; import { IEvaServiceDefinition } from '@springtree/eva-services-core'; import { GetRecoilValue, RecoilState, RecoilValueReadOnly, SerializableParam } from 'recoil'; export interface IServiceFamilyState { error: (parameter: SerializableParam) => RecoilValueReadOnly; request: (parameter: SerializableParam) => RecoilState; response: (parameter: SerializableParam) => RecoilValueReadOnly; responseRaw: (parameter: SerializableParam) => RecoilValueReadOnly; stale: (parameter: SerializableParam) => RecoilState; } /** * Build the state values for an EVA service call with a family selector. * The service request is used as the family key. * As a bare minimum you need to supply the service definition from the SDK and * the service request. * * The recoil `key` needs to be unique and will default to the service name. * If you require the same service for different use cases you must supply a * unique key name which should also indicate its intended purpose. * As a convenience you can use the `requireCustomer` and `requireEmployee` * flags to prevent service calls from going out depending on the current user. * * @template SVC * @param {{ * service: new () => SVC, * defaultRequest?: SVC['request'], * key?: string, * requireCustomer?: boolean, * requireEmployee?: boolean, * requestedOrganizationUnitIDOverrideState?: RecoilState, * }} { * service, * defaultRequest, * key, * requireCustomer, * requireEmployee, * requestedOrganizationUnitIDOverrideState, * } * @returns {IServiceState} */ declare const buildServiceFamilyState: ({ allowEmptyRequest, service, defaultRequest, key, requireCustomer, requireEmployee, requireLoggedIn, beforeRequest, customRequest, requestedOrganizationUnitIDOverrideState, }: { allowEmptyRequest?: boolean; service: new () => SVC; defaultRequest?: SVC['request']; key?: string; requireCustomer?: boolean; requireEmployee?: boolean; requireLoggedIn?: boolean; beforeRequest?: (params: { req: SVC['request']; get: GetRecoilValue; parameter: SerializableParam; }) => SVC['request']; customRequest?: (params: { endpoint: EvaEndpoint; payload?: SVC['request']; options: IEvaServiceCallOptions; }) => Promise; requestedOrganizationUnitIDOverrideState?: RecoilState; }) => IServiceFamilyState; export default buildServiceFamilyState; //# sourceMappingURL=build-service-family-state.d.ts.map