Skip to content

Setup API

Functions for configuring the SDK runtime.

Configures the SDK with a chain client. Must be called once before using any other SDK functions.

configureSetup(config: SetupConfig): void
ParameterTypeRequiredDescription
chainClientChainClientYesChain client for on-chain operations
onError?(error: Error, context: ErrorContext) => voidNoGlobal error handler

void

import { configureSetup, createWagmiChainClient } from "cooperative";
import { createConfig, http } from "wagmi";
import { mainnet } from "viem/chains";
const config = createConfig({
chains: [mainnet],
transports: {
[mainnet.id]: http(),
},
});
configureSetup({
chainClient: createWagmiChainClient(config),
onError: (error, context) => {
console.error(`Error in ${context.function}:`, error);
},
});
  • Error: SDK is already configured - Called configureSetup multiple times
  • Error: Invalid chain client - Provided chain client doesn’t implement required interface

Creates a chain client from a wagmi configuration.

createWagmiChainClient(config: Config): ChainClient

A wagmi configuration object created with createConfig.

ChainClient - Chain client implementation that can be passed to configureSetup.

import { createWagmiChainClient } from "cooperative";
import { createConfig, http } from "wagmi";
import { mainnet } from "viem/chains";
const wagmiConfig = createConfig({
chains: [mainnet],
transports: {
[mainnet.id]: http(),
},
});
const chainClient = createWagmiChainClient(wagmiConfig);
  • Requires @wagmi/core as a peer dependency
  • The wagmi config must include all chains you plan to use

Creates a wagmi configuration optimized for Cooperative SDK.

createCooperativeConfig(options?: CooperativeConfigOptions): Config
ParameterTypeRequiredDescription
chainsChain[]NoArray of chains (default: Ethereum, Polygon, Base)
transportsRecord<number, Transport>NoTransport configuration per chain
ssr?booleanNoEnable SSR support (default: false)

Config - A wagmi configuration object.

import { createCooperativeConfig } from "cooperative";
import { http } from "wagmi";
const config = createCooperativeConfig({
transports: {
1: http("https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY"),
137: http("https://polygon-mainnet.g.alchemy.com/v2/YOUR_KEY"),
8453: http("https://base-mainnet.g.alchemy.com/v2/YOUR_KEY"),
},
});

If no chains are provided, defaults to:

  • Ethereum (1)
  • Polygon (137)
  • Base (8453)