Skip to main content

Getting Started

Installation

npm install @cryptorubic/sdk-lite
# or
yarn add @cryptorubic/sdk-lite
# or
pnpm add @cryptorubic/sdk-lite
axios is included as a dependency and used by default. If you prefer to bring your own HTTP client (e.g. fetch, ky, or a custom instance), see Configuration → Custom HTTP client.

Quick start

The full flow of a cross-chain swap takes three steps:
quote  →  swap  →  sign & send

1. Initialize the SDK

import { SDK } from '@cryptorubic/sdk-lite';

const sdk = await SDK.create({
    referrer: 'my-app',       // identifies your integration
    apiKey: 'YOUR_API_KEY',   // obtain at https://t.me/RubicPartnership
});

2. Get the best quote

const quote = await sdk.quoteBest({
    srcTokenBlockchain: 'ETH',
    srcTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', // native ETH
    srcTokenAmount: '1',
    dstTokenBlockchain: 'POLYGON',
    dstTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', // native MATIC
});

console.log('Provider:', quote.providerType);
console.log('You receive:', quote.estimate.destinationTokenAmount, 'MATIC');
console.log('Trade ID:', quote.id);

3. Get transaction data

const swapData = await sdk.swap({
    // reuse all quote params
    srcTokenBlockchain: 'ETH',
    srcTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
    srcTokenAmount: '1',
    dstTokenBlockchain: 'POLYGON',
    dstTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
    // required for swap
    id: quote.id,
    fromAddress: '0xYourWalletAddress',
    receiver: '0xDestinationAddress',
});

// swapData.transaction contains: { to, data, value }
// Send it with your wallet/web3 library:
const tx = await signer.sendTransaction(swapData.transaction);

4. Wait for completion

const finalStatus = await sdk.waitForStatus(
    { id: swapData.id, srcTxHash: tx.hash },
    {
        interval: 5000,
        onStatusUpdate: s => console.log('Status:', s.status),
    }
);

if (finalStatus.status === 'SUCCESS') {
    console.log('Done! Destination tx:', finalStatus.destinationTxHash);
}

One-call swap (swapBest)

If you don’t need to inspect the quote before sending, swapBest combines quoting and transaction building into a single request:
const swapData = await sdk.swapBest({
    srcTokenBlockchain: 'ETH',
    srcTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
    srcTokenAmount: '1',
    dstTokenBlockchain: 'POLYGON',
    dstTokenAddress: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
    fromAddress: '0xYourWalletAddress',
    receiver: '0xDestinationAddress',
});

Next steps