CoW protocol SDK
Getting started
Install the SDK:
yarn add @gnosis.pm/cow-sdk
Instantiate the SDK:
import { CowSdk } from 'cow-sdk'
const chainId = 4
const cowSdk = new CowSdk(chainId)
The SDK will expose the CoW API operations (cowSdk.cowApi
)
const trades = await cowSdk.cowApi.getOrders({
owner: '0x00000000005ef87f8ca7014309ece7260bbcdaeb',
limit: 5,
offset: 0
})
console.log(trades)
The SDK has also some convenient methods that will facilitate signing orders (cowSdk.signOrder
).
Let's see a full example on how to submit an order to CowSwap:
Before this example, the protocol requires you to approve the sell token before the order can be considered.
For more details see https://docs.cow.fi/tutorials/how-to-submit-orders-via-the-api/1.-set-allowance-for-the-sell-token
import { Wallet } from 'ethers'
import { CowSdk, OrderKind } from 'cow-sdk'
const mnemonic = 'fall dirt bread cactus...'
const wallet = Wallet.fromMnemonic(mnemonic)
const cowSdk = new CowSdk(4, { signer: wallet })
const quoteResponse = await cowSdk.cowApi.getQuote({
kind: OrderKind.SELL,
amount: '1000000000000000000',
sellToken: '0xc778417e063141139fce010982780140aa0cd5ab',
buyToken: '0x4dbcdf9b62e891a7cec5a2568c3f4faf9e8abe2b',
userAddress: '0x1811be0994930fe9480eaede25165608b093ad7a',
validTo: 2524608000,
})
const order = {
kind: OrderKind.SELL,
sellToken: quoteResponse.quote.sellToken,
buyToken: quoteResponse.quote.buyToken,
validTo: quoteResponse.quote.validTo,
buyAmount: quoteResponse.quote.buyAmount,
sellAmount: quoteResponse.quote.sellAmount,
receiver: quoteResponse.quote.receiver,
partiallyFillable: false,
feeAmount: quoteResponse.quote.feeAmount,
}
const signedOrder = await cowSdk.signOrder(order)
const orderId = await cowSdk.cowApi.sendOrder({
order: { ...order, ...signedOrder },
owner: '0x1811be0994930fe9480eaede25165608b093ad7a',
})
console.log(`https://explorer.cow.fi/rinkeby/orders/${orderId}`)
Install Dependencies
yarn
Build
yarn build
Run
yarn start
Lint
yarn lint
Format
yarn format
Unit testing
yarn test