Skip to content

kuestcom/clob-client

Repository files navigation

Kuest
Kuest Typescript CLOB Client

NPM PR

Usage

// npm install @kuestcom/clob-client
// npm install ethers
// Client initialization example and dumping API Keys

import { ApiKeyCreds, ClobClient, OrderType, Side, SignatureType } from "@kuestcom/clob-client";
import { Wallet } from "@ethersproject/wallet";

const host = 'https://clob.kuest.com';
const depositWallet = ''; // Deposit Wallet address that holds funds.
const signer = new Wallet(""); // This is your Private Key.


// In general don't create a new API key, always derive or createOrDerive
const creds = new ClobClient(host, 80002, signer).createOrDeriveApiKey();

  (async () => {
    const clobClient = new ClobClient(
        host,
        80002,
        signer,
        await creds,
        SignatureType.DEPOSIT_WALLET,
        depositWallet,
    );
    const resp2 = await clobClient.createAndPostOrder(
        {
            tokenID: "", //Use https://docs.kuest.com/developers/gamma-markets-api/get-markets to grab a sample token
            price: 0.01,
            side: Side.BUY,
            size: 5,
        },
        { tickSize: "0.001",negRisk: false }, //You'll need to adjust these based on the market. Get the tickSize and negRisk T/F from the get-markets above
        //{ tickSize: "0.001",negRisk: true },

        OrderType.GTC, 
    );
    console.log(resp2)
  })();

See examples for more information

Using viem WalletClient

import { ClobClient } from "@kuestcom/clob-client";
import { createWalletClient, http } from "viem";
import { polygonAmoy } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";

const host = "https://clob.kuest.com";
const account = privateKeyToAccount("0x...");
const walletClient = createWalletClient({
    account,
    chain: polygonAmoy,
    transport: http(),
});

const clobClient = new ClobClient(host, 80002, walletClient);

Error Handling

By default, API errors are returned as { error: "...", status: ... } objects. To have the client throw errors instead, pass throwOnError: true as the last constructor argument:

import { ClobClient, ApiError, SignatureType } from "@kuestcom/clob-client";

const clobClient = new ClobClient(
    host, 80002, signer, await creds, SignatureType.DEPOSIT_WALLET, depositWallet,
    undefined, // geoBlockToken
    undefined, // useServerTime
    undefined, // builderConfig
    undefined, // getSigner
    undefined, // retryOnError
    undefined, // tickSizeTtlMs
    true,      // throwOnError
);

try {
    const book = await clobClient.getOrderBook(tokenID);
} catch (e) {
    if (e instanceof ApiError) {
        console.log(e.message); // "No orderbook exists for the requested token id"
        console.log(e.status);  // 404
        console.log(e.data);    // full error response object from the API
    }
}

Sponsor this project

 

Contributors