Skip to content

useSilentClient

The useSilentClient hook creates and manages a SilentSwap client instance. This client is required for all Silent Swap operations.

Import

import { useSilentClient } from '@silentswap/react';
import { ENVIRONMENT } from '@silentswap/sdk';

Basic Usage

import { useSilentClient } from '@silentswap/react';
import { ENVIRONMENT } from '@silentswap/sdk';
 
function MyComponent() {
  const { client } = useSilentClient({
    config: {
      environment: ENVIRONMENT.MAINNET,
      baseUrl: 'https://api.silentswap.com',
    },
  });
 
  // Use client for other hooks
  return <div>Client initialized</div>;
}

API Reference

Options

interface useSilentClientOptions {
  config: SilentSwapClientConfig;
}
 
interface SilentSwapClientConfig {
  /** Environment (MAINNET, TESTNET, etc.) */
  environment: ENVIRONMENT;
  /** Base URL for the API (optional) */
  baseUrl?: string;
}

Return Value

interface useSilentClientReturn {
  /** SilentSwap client instance */
  client: SilentSwapClient;
}

Configuration

Environment Options

import { ENVIRONMENT } from '@silentswap/sdk';
 
// Mainnet
const { client } = useSilentClient({
  config: {
    environment: ENVIRONMENT.MAINNET,
    baseUrl: 'https://api.silentswap.com',
  },
});
 
// Testnet
const { client } = useSilentClient({
  config: {
    environment: ENVIRONMENT.TESTNET,
    baseUrl: 'https://api-testnet.silentswap.com',
  },
});

Custom Base URL

const { client } = useSilentClient({
  config: {
    environment: ENVIRONMENT.MAINNET,
    baseUrl: 'https://custom-api.silentswap.com', // Custom API endpoint
  },
});

Integration with Other Hooks

The client instance is used by other Silent Swap hooks:

import { 
  useSilentClient, 
  useAuth, 
  useWallet, 
  useSilentQuote 
} from '@silentswap/react';
 
function SwapComponent() {
  // Initialize client
  const { client } = useSilentClient({
    config: {
      environment: ENVIRONMENT.MAINNET,
    },
  });
 
  // Use client in other hooks
  const { auth, signIn } = useAuth({
    client,
    address: address!,
    walletClient,
  });
 
  const { wallet, generateWallet } = useWallet({
    address: address!,
    auth,
    walletClient,
  });
 
  const { getQuote, executeSwap } = useSilentQuote({
    client,
    address: address!,
    walletClient,
    facilitatorGroup: wallet?.accounts[0]?.group(),
  });
 
  // ... rest of component
}

Memoization

The client instance is memoized based on the config, so it won't be recreated unless the config changes:

// This will only create one client instance
const { client } = useSilentClient({
  config: {
    environment: ENVIRONMENT.MAINNET,
  },
});
 
// Even if component re-renders, same client is reused

Next Steps