ccip-sdk
v4.0.24
Published
```bash yarn add ccip-sdk ```
Downloads
47
Maintainers
Readme
Installation
yarn add ccip-sdk
Content
OrderBookApi
- provides the ability to retrieve orders and trades from the CoW Protocol order-book, as well as add and cancel themOrderSigningUtils
- serves to sign orders and cancel them using EIP-712
import { OrderBookApi, OrderSigningUtils, SubgraphApi } from 'ccip-sdk'
const chainId = 100 // Gnosis chain
const orderBookApi = new OrderBookApi({ chainId })
const orderSigningUtils = new OrderSigningUtils()
Quick start
import { OrderBookApi, OrderSigningUtils, SupportedChainId } from '@cowprotocol/cow-sdk'
import { Web3Provider } from '@ethersproject/providers'
const account = 'YOUR_WALLET_ADDRESS'
const chainId = 5 // Goerli
const provider = new Web3Provider(window.ethereum)
const signer = provider.getSigner()
const quoteRequest = {
sellToken: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6', // WETH goerli
buyToken: '0x02abbdbaaa7b1bb64b5c878f7ac17f8dda169532', // GNO goerli
from: account,
receiver: account,
sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH
kind: OrderQuoteSide.kind.SELL,
}
const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GOERLI })
async function main() {
const { quote } = await orderBookApi.getQuote(quoteRequest)
const orderSigningResult = await OrderSigningUtils.signOrder(quote, chainId, signer)
const orderId = await orderBookApi.sendOrder({ ...quote, ...orderSigningResult })
const order = await orderBookApi.getOrder(orderId)
const trades = await orderBookApi.getTrades({ orderId })
const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer)
const cancellationResult = await orderBookApi.sendSignedOrderCancellations({...orderCancellationSigningResult, orderUids: [orderId] })
console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult })
}
OrderBookApi
OrderBookApi
- is a main tool for working
Since the API supports different networks and environments, there are some options to configure it.
Environment configuration
chainId
- can be one of SupportedChainId.MAINNET
, SupportedChainId.GNOSIS_CHAIN
, or SupportedChainId.GOERLI
env
- this parameter affects which environment will be used:
https://api.cow.fi
forprod
(default)https://barn.api.cow.fi
forstaging
import { OrderBookApi } from '@cowprotocol/cow-sdk'
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.GOERLI,
env: 'staging' // <-----
})
API urls configuration
In case you need to use custom endpoints (e.g. you use a proxy), you can do it this way:
import { OrderBookApi } from '@cowprotocol/cow-sdk'
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.GOERLI,
baseUrls: { // <-----
[SupportedChainId.MAINNET]: 'https://YOUR_ENDPOINT/mainnet',
[SupportedChainId.GNOSIS_CHAIN]: 'https://YOUR_ENDPOINT/xdai',
[SupportedChainId.GOERLI]: 'https://YOUR_ENDPOINT/goerli',
}
})
The client's limiter settings can be configured as well:
import { OrderBookApi } from '@cowprotocol/cow-sdk'
import { BackoffOptions } from 'exponential-backoff'
import { RateLimiterOpts } from 'limiter'
const limiterOpts: RateLimiterOpts = {
tokensPerInterval: 5,
interval: 'second',
}
const backOffOpts: BackoffOptions = {
numOfAttempts: 5,
maxDelay: Infinity,
jitter: 'none',
}
const orderBookApi = new OrderBookApi(
{chainId: SupportedChainId.GOERLI, limiterOpts, backOffOpts},
)
Architecture
One way to make the most out of the SDK is to get familiar with its architecture.
Development
Install Dependencies
yarn
Build
yarn build
# Build in watch mode
yarn start
Unit testing
yarn test
Code generation
Some parts of the SDK are automatically generated. This is the case for the Order Book API and the Subgraph API
# Re-create automatically generated code
yarn codegen