/** * Internal hook used to handle mutation middlewares. * * @example * // We have a form creating an order for a new customer. * // The form contains the customer fields in addition to the order fields * // but they should be saved as a new customer resource record * // and the order should only reference this new customer * type Order = { id: string; reference: string }; * type OrderCreateFormData = { id: string; reference: string; customer: Customer }; * type Customer = { id: string; email: string; firstName: string; lastName: string }; * * const CustomerForm = props => { * const [createCustomer] = useCreate(); * const middleware: Middleware[0]> = useCallback(async (resource, params, next) => { * const { data } = params; * const { user, ...orderData } = data; * const { data = newCustomer } = await createCustomer('customers', { data: user }); * const orderDataWithCustomer = { ...orderData, customerId: newCustomer.id }; * next(resource, { data: orderDataWithCustomer }); * }, [createCustomer]); * useRegisterMutationMiddleware(middleware); * * return ( * <> * * * * * ); * } */ export declare const useMutationMiddlewares: any = (...args: any[]) => any>() => UseMutationMiddlewaresResult; export interface UseMutationMiddlewaresResult any = (...args: any[]) => any> { registerMutationMiddleware: (callback: Middleware) => void; getMutateWithMiddlewares: (mutate: MutateFunc) => (...args: Parameters) => ReturnType; unregisterMutationMiddleware: (callback: Middleware) => void; } export type Middleware any> = MutateFunc extends (...a: any[]) => infer R ? (...a: [...U: Parameters, next: MutateFunc]) => R : never; //# sourceMappingURL=useMutationMiddlewares.d.ts.map