sdk-viem-adapter
This adapter provides integration with the viem library, enabling you to use all CoW Protocol SDK packages with viem clients and accounts.
Installation
Install the adapter and its peer dependency:
npm install @cowprotocol/sdk-viem-adapter
yarn add @cowprotocol/sdk-viem-adapter
pnpm add @cowprotocol/sdk-viem-adapter
Usage
Basic Setup
import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'
import { http, createPublicClient, privateKeyToAccount } from 'viem'
import { sepolia } from 'viem/chains'
const account = privateKeyToAccount('YOUR_PRIVATE_KEY' as `0x${string}`)
const transport = http('YOUR_RPC_URL')
const provider = createPublicClient({ chain: sepolia, transport })
const adapter = new ViemAdapter({ provider, signer: account })
Using with CoW SDK
import { CowSdk, SupportedChainId } from '@cowprotocol/cow-sdk'
import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'
import { http, createPublicClient, privateKeyToAccount } from 'viem'
import { sepolia } from 'viem/chains'
const account = privateKeyToAccount('YOUR_PRIVATE_KEY' as `0x${string}`)
const transport = http('YOUR_RPC_URL')
const provider = createPublicClient({ chain: sepolia, transport })
const adapter = new ViemAdapter({ provider, signer: account })
const sdk = new CowSdk({
chainId: SupportedChainId.SEPOLIA,
adapter,
tradingOptions: {
traderParams: {
appCode: 'YOUR_APP_CODE',
},
options: {
chainId: SupportedChainId.SEPOLIA,
},
},
})
const orderId = await sdk.trading.postSwapOrder(parameters)
const orders = await sdk.orderBook.getOrders({ owner: address })
Using with Individual Packages
import { TradingSdk } from '@cowprotocol/sdk-trading'
import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'
import { http, createPublicClient, privateKeyToAccount } from 'viem'
import { sepolia } from 'viem/chains'
const account = privateKeyToAccount('YOUR_PRIVATE_KEY' as `0x${string}`)
const transport = http('YOUR_RPC_URL')
const provider = createPublicClient({ chain: sepolia, transport })
const adapter = new ViemAdapter({ provider, signer: account })
const trading = new TradingSdk({ appCode: 'YOUR_APP_CODE' }, { chainId: SupportedChainId.SEPOLIA }, adapter)
const orderId = await trading.postSwapOrder(parameters)
API Reference
Constructor
new ViemAdapter({ provider, signer })
Parameters
provider - A viem PublicClient instance
signer - A viem account instance or private key
Methods
The adapter implements the standard CoW Protocol adapter interface, providing methods for:
- Transaction signing
- Contract interactions
- Account management
- Chain information