← Back
import { useCallback } from 'react';
import { RelayClient } from '@polymarket/builder-relayer-client';
import { checkAllApprovals, createAllApprovalTxs } from '../utils/approvals';

/** Set/check the token approvals the Safe needs to trade (USDC.e + outcome tokens
 *  to CTF/Exchange/NegRisk). Gasless via RelayClient. */
export default function useTokenApprovals() {
  const checkAllTokenApprovals = useCallback((safe: string) => checkAllApprovals(safe), []);

  const setAllTokenApprovals = useCallback(async (relay: RelayClient): Promise<boolean> => {
    try {
      const res = await relay.execute(createAllApprovalTxs(), 'Set all token approvals for trading');
      await res.wait();
      return true;
    } catch (e) {
      console.error('Failed to set approvals:', e);
      return false;
    }
  }, []);

  return { checkAllTokenApprovals, setAllTokenApprovals };
}

📜 Git History

6c47fa4chore: local Polikopi project home + Phase 1 redesign artifacts12 days ago
Show last diff
Loading...