import type { Endpoint, RequestStatus } from '../../api/types/endpoint.interface'; import type { QueryOptions, QueryResult } from '../../api/types/query.interface'; export interface UseApiMutationResult { /** Запустить мутацию (ошибки не пробрасываются — смотри `error`/`isError`) */ mutate: (params: TParams) => void; /** Запустить мутацию и дождаться результата (ошибки пробрасываются) */ mutateAsync: (params: TParams) => Promise>; /** Данные успешного ответа */ data: TData | undefined; /** Ошибка мутации */ error: Error | undefined; /** Текущий статус */ status: RequestStatus; /** Мутация выполняется */ isLoading: boolean; /** Мутация завершилась ошибкой */ isError: boolean; /** Мутация завершилась успехом */ isSuccess: boolean; /** Сбросить состояние к idle */ reset: () => void; } /** * Хук для выполнения мутаций (POST/PUT/DELETE/PATCH) через эндпоинт ApiClient. * * В отличие от {@link useApiQuery}, запрос не стартует автоматически — его * запускает `mutate`/`mutateAsync`. Мутации не кэшируются (по REST-методу), а их * `invalidatesTags` инвалидируют кэш — активные `useApiQuery` соседних эндпоинтов * автоматически перезапросятся через шину инвалидации. * * @example * const { mutate, isLoading } = useApiMutation(endpoints.createUser) * mutate({ name: 'Alex' }) */ export declare function useApiMutation, TData>(endpoint: Endpoint, options?: QueryOptions): UseApiMutationResult;