Skip to main content

React SDK

@contextwtf/react · v0.1.0 · React 18+ · TanStack Query 5+ · wagmi 2+ Declarative React hooks for Context Markets. Built on @contextwtf/sdk and TanStack Query, with automatic wallet integration through wagmi.

Install

npm install @contextwtf/react @contextwtf/sdk @tanstack/react-query wagmi viem

Quick start

Provider setup

import { ContextProvider } from '@contextwtf/react'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { WagmiProvider } from 'wagmi'

const queryClient = new QueryClient()

function App() {
  return (
    <WagmiProvider config={wagmiConfig}>
      <QueryClientProvider client={queryClient}>
        <ContextProvider apiKey="your-api-key">
          <YourApp />
        </ContextProvider>
      </QueryClientProvider>
    </WagmiProvider>
  )
}

Using hooks

import { useMarkets, useQuotes } from '@contextwtf/react'

function MarketList() {
  const { data: markets, isLoading } = useMarkets({ status: 'active' })

  if (isLoading) return <div>Loading...</div>

  return (
    <ul>
      {markets?.data.map(market => (
        <li key={market.id}>{market.question}</li>
      ))}
    </ul>
  )
}

Hooks

Market hooks

HookTypeDescription
useMarketsQueryList and filter markets
useMarketQueryGet a single market by ID
useOrderbookQueryLive orderbook for a market
useQuotesQueryCurrent bid/ask/last prices
usePriceHistoryQueryHistorical price data
useMarketActivityQueryMarket event feed
useSimulateTradeQueryPreview trade execution
useOracleQueryOracle resolution data

Order hooks

HookTypeDescription
useOrdersQueryList orders with filters
useMyOrdersQueryYour open orders
useCreateOrderMutationPlace a limit order
useMarketOrderMutationPlace a market order
useCancelOrderMutationCancel an order
useCancelReplaceOrderMutationCancel and replace an order

Portfolio hooks

HookTypeDescription
usePositionsQueryView positions across markets
useBalanceQueryUSDC balance (wallet + settlement)
useClaimableQueryWinnings from resolved markets
usePortfolioStatsQueryPortfolio value and PnL

Account hooks

HookTypeDescription
useAccountStatusQueryWallet approvals and balances
useSetupAccountMutationApprove contracts for trading
useDepositMutationDeposit USDC
useWithdrawMutationWithdraw USDC

Query keys

Use contextKeys for manual cache invalidation:
import { contextKeys } from '@contextwtf/react'
import { useQueryClient } from '@tanstack/react-query'

const queryClient = useQueryClient()

// Invalidate all market data
queryClient.invalidateQueries({ queryKey: contextKeys.markets.all })

// Invalidate a specific market
queryClient.invalidateQueries({ queryKey: contextKeys.markets.detail(marketId) })