/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { MutationKey, useMutation, UseMutationResult, } from "@tanstack/react-query"; import { GustoEmbeddedCore } from "../core.js"; import { contractorsUpdate } from "../funcs/contractorsUpdate.js"; import { combineSignals } from "../lib/primitives.js"; import { RequestOptions } from "../lib/sdks.js"; import { GustoEmbeddedError } from "../models/errors/gustoembeddederror.js"; import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError, } from "../models/errors/httpclienterrors.js"; import { NotFoundErrorObject } from "../models/errors/notfounderrorobject.js"; import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import { UnprocessableEntityError } from "../models/errors/unprocessableentityerror.js"; import { PutV1ContractorsContractorUuidRequest, PutV1ContractorsContractorUuidResponse, } from "../models/operations/putv1contractorscontractoruuid.js"; import { unwrapAsync } from "../types/fp.js"; import { useGustoEmbeddedContext } from "./_context.js"; import { MutationHookOptions } from "./_types.js"; export type ContractorsUpdateMutationVariables = { request: PutV1ContractorsContractorUuidRequest; options?: RequestOptions; }; export type ContractorsUpdateMutationData = PutV1ContractorsContractorUuidResponse; export type ContractorsUpdateMutationError = | NotFoundErrorObject | UnprocessableEntityError | GustoEmbeddedError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError; /** * Update a contractor * * @remarks * Update a contractor. * * > 🚧 Warning * > * > Watch out when changing a contractor's type (when the contractor is finished onboarding). Specifically, changing contractor type can be dangerous since Gusto won't recognize and file two separate 1099s if they simply change from business to individual * * scope: `contractors:write` */ export function useContractorsUpdateMutation( options?: MutationHookOptions< ContractorsUpdateMutationData, ContractorsUpdateMutationError, ContractorsUpdateMutationVariables >, ): UseMutationResult< ContractorsUpdateMutationData, ContractorsUpdateMutationError, ContractorsUpdateMutationVariables > { const client = useGustoEmbeddedContext(); return useMutation({ ...buildContractorsUpdateMutation(client, options), ...options, }); } export function mutationKeyContractorsUpdate(): MutationKey { return ["@gusto/embedded-api", "Contractors", "update"]; } export function buildContractorsUpdateMutation( client$: GustoEmbeddedCore, hookOptions?: RequestOptions, ): { mutationKey: MutationKey; mutationFn: ( variables: ContractorsUpdateMutationVariables, ) => Promise; } { return { mutationKey: mutationKeyContractorsUpdate(), mutationFn: function contractorsUpdateMutationFn({ request, options, }): Promise { const mergedOptions = { ...hookOptions, ...options, fetchOptions: { ...hookOptions?.fetchOptions, ...options?.fetchOptions, signal: combineSignals( hookOptions?.fetchOptions?.signal, options?.fetchOptions?.signal, ), }, }; return unwrapAsync(contractorsUpdate( client$, request, mergedOptions, )); }, }; }