@0x/swap-ts-sdk
TypeScript icon, indicating that this package has built-in type declarations

2.1.1 • Public • Published

@0x/swap-ts-sdk

A TypeScript client to interact with 0x API. Currently @0x/swap-ts-sdk supports 0x API v2 "Swap" and "Gasless" endpoints.

Note: @0x/swap-ts-sdk is meant for server side use only. Using the SDK from a browser is not supported.

Setup

pnpm add -E @0x/swap-ts-sdk

Important: TypeScript needs to be configured with compilerOptions.strict set to true. The client won't correctly type check if TypeScript is not in strict mode.

Visit 0x.org to get your API key.

Usage

Create a "vanilla" Node client with createClientV2:

import { createClientV2 } from '@0x/swap-ts-sdk';

const client = createClientV2({
    apiKey: '33da2...91ebf9',
});

const price = await client.swap.permit2.getPrice.query({
    buyToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
    chainId: 1,
    sellAmount: '1000000000000000000',
    sellToken: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
});

API reference

Visit docs.0x.org for the API specification.

Client documentation

The @0x/swap-ts-sdk client is a wrapped & typed tRPC v10.x client.

Visit https://trpc.io/docs/v10/client for full documentation, including how to use the client with Next.js, React Query, or vanilla Node.

Aborting calls (timeout)

import { createClientV2 } from '@0x/swap-ts-sdk';

const client = createClientV2({
    apiKey: '33da2...91ebf9',
});

const quote = await client.gasless.getQuote.query(
    {
        buyToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
        chainId: 1,
        sellAmount: '1000000000000000000',
        sellToken: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
        taker: '0x60B4f0e1DF30c8c0f0b0c8BEc8787E7564647a80',
        txOrigin: '0x60B4f0e1DF30c8c0f0b0c8BEc8787E7564647a80',
    },
    {
        signal: AbortSignal.timeout(1000),
    },
);

Using with Next.js

You can use @trpc/next directly to use the SDK with Next.js. See the documentation here: https://trpc.io/docs/v10/client/nextjs/ssr.

To type the client, the packages exports the router type:

import type { RouterV2 } from '@0x/swap-ts-sdk';
import { httpLink } from '@trpc/client';
import { createTRPCNext } from '@trpc/next';

export const trpc = createTRPCNext<RouterV2>({
    config(_opts) {
        return {
            links: [
                httpLink({
                    headers: {
                        '0x-api-key': 'your-api-key',
                        '0x-version': 'v2',
                    },
                    url: 'https://api.0x.org/trpc/swap',
                }),
            ],
        };
    },
    ssr: true,
});

Package Sidebar

Install

npm i @0x/swap-ts-sdk

Weekly Downloads

5,674

Version

2.1.1

License

ISC

Unpacked Size

424 kB

Total Files

9

Last publish

Collaborators

  • rhinodavid
  • mwelche
  • savdont
  • kyuc
  • henryzhu
  • tobernguyen
  • dekz
  • amirbandeali
  • phil-ociraptor