/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { MutationKey, useMutation, UseMutationResult, } from "@tanstack/react-query"; import { GustoEmbeddedCore } from "../core.js"; import { contractorsDeleteV1ContractorsContractorUuidTermination } from "../funcs/contractorsDeleteV1ContractorsContractorUuidTermination.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 { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; import { UnprocessableEntityError } from "../models/errors/unprocessableentityerror.js"; import { DeleteV1ContractorsContractorUuidTerminationRequest, DeleteV1ContractorsContractorUuidTerminationResponse, } from "../models/operations/deletev1contractorscontractoruuidtermination.js"; import { unwrapAsync } from "../types/fp.js"; import { useGustoEmbeddedContext } from "./_context.js"; import { MutationHookOptions } from "./_types.js"; export type ContractorsDeleteV1ContractorsContractorUuidTerminationMutationVariables = { request: DeleteV1ContractorsContractorUuidTerminationRequest; options?: RequestOptions; }; export type ContractorsDeleteV1ContractorsContractorUuidTerminationMutationData = DeleteV1ContractorsContractorUuidTerminationResponse; export type ContractorsDeleteV1ContractorsContractorUuidTerminationMutationError = | UnprocessableEntityError | GustoEmbeddedError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError; /** * Cancel a pending contractor termination * * @remarks * ## Purpose * Cancels a pending contractor dismissal. For future-dated dismissals, cancellation is available anytime before the date. * For past-dated dismissals, cancellation is only available within the 2-day grace period. * * ## Prerequisites * Before calling this endpoint: * - The contractor must have a pending dismissal (scheduled or within the grace period) * * ## Related webhooks * - `contractor.reactivated`: Fires when the contractor becomes active again after cancellation * * scope: `contractors:write` */ export function useContractorsDeleteV1ContractorsContractorUuidTerminationMutation( options?: MutationHookOptions< ContractorsDeleteV1ContractorsContractorUuidTerminationMutationData, ContractorsDeleteV1ContractorsContractorUuidTerminationMutationError, ContractorsDeleteV1ContractorsContractorUuidTerminationMutationVariables >, ): UseMutationResult< ContractorsDeleteV1ContractorsContractorUuidTerminationMutationData, ContractorsDeleteV1ContractorsContractorUuidTerminationMutationError, ContractorsDeleteV1ContractorsContractorUuidTerminationMutationVariables > { const client = useGustoEmbeddedContext(); return useMutation({ ...buildContractorsDeleteV1ContractorsContractorUuidTerminationMutation( client, options, ), ...options, }); } export function mutationKeyContractorsDeleteV1ContractorsContractorUuidTermination(): MutationKey { return [ "@gusto/embedded-api", "Contractors", "deleteV1ContractorsContractorUuidTermination", ]; } export function buildContractorsDeleteV1ContractorsContractorUuidTerminationMutation( client$: GustoEmbeddedCore, hookOptions?: RequestOptions, ): { mutationKey: MutationKey; mutationFn: ( variables: ContractorsDeleteV1ContractorsContractorUuidTerminationMutationVariables, ) => Promise< ContractorsDeleteV1ContractorsContractorUuidTerminationMutationData >; } { return { mutationKey: mutationKeyContractorsDeleteV1ContractorsContractorUuidTermination(), mutationFn: function contractorsDeleteV1ContractorsContractorUuidTerminationMutationFn( { request, options, }, ): Promise< ContractorsDeleteV1ContractorsContractorUuidTerminationMutationData > { const mergedOptions = { ...hookOptions, ...options, fetchOptions: { ...hookOptions?.fetchOptions, ...options?.fetchOptions, signal: combineSignals( hookOptions?.fetchOptions?.signal, options?.fetchOptions?.signal, ), }, }; return unwrapAsync( contractorsDeleteV1ContractorsContractorUuidTermination( client$, request, mergedOptions, ), ); }, }; }