// packages/dapp-kit/src/hooks/swap/useCancelLimitOrder.ts import { useSodaxContext } from '../shared/useSodaxContext.js'; import type { GetWalletProviderType, Intent, SpokeChainKey, TxHashPair } from '@sodax/sdk'; import type { MutationHookParams } from '../shared/types.js'; import { useSafeMutation, type SafeUseMutationResult } from '../shared/useSafeMutation.js'; import { unwrapResult } from '../shared/unwrapResult.js'; type CancelLimitOrderParams = { srcChainKey: K; walletProvider: GetWalletProviderType; intent: Intent; timeout?: number; }; /** * React hook for cancelling a limit-order intent. * * Throws on SDK failure so React Query's native error model engages (`isError`, `error`, * `onError`, `retry`). Returns the unwrapped `TxHashPair` on success. */ export function useCancelLimitOrder({ mutationOptions, }: MutationHookParams = {}): SafeUseMutationResult< TxHashPair, Error, CancelLimitOrderParams > { const { sodax } = useSodaxContext(); return useSafeMutation({ mutationKey: ['swap', 'limitOrder', 'cancel'], ...mutationOptions, mutationFn: async ({ srcChainKey, walletProvider, intent, timeout }) => unwrapResult(await sodax.swaps.cancelLimitOrder({ params: { srcChainKey, intent }, walletProvider, timeout })), }); }