dKit by El dorito
  • 🌐Get Started
  • 💰Revenue Generation
  • 🤝Partnerships
  • 📦START HERE
  • Install dKit SDK
  • Set up the SDK
  • Swap
  • DKIT API
    • Introduction
    • /providers - Request supported chains by a swap provider
    • /tokens - Request supported tokens by a swap provider
    • /quote - Request a trade quote
    • /quote - Understanding the response
    • /track - Request the status of a swap
Powered by GitBook
On this page
  • Step 1: Create a QuoteParams Object
  • Step 2. Call getQuote from doritoKit API package
  • Step 3: Choose fee option multiplier, route & execute swap

Swap

Before making a swap, you need to request the best route from the doritoKit API.

Step 1: Create a QuoteParams Object

The QuoteParams object defines the details of a swap between supported blockchains. It includes all the necessary information to find the best routing options.

Here’s the interface structure for QuoteParams:

interface QuoteParams {
    affiliateBasisPoints?: string;
    buyAsset: string;
    recipientAddress?: string;
    sellAmount: string;
    sellAsset: string;
    senderAddress?: string;
    slippage: string;
}

The buyAsset & sellAsset must be of the format 'chain.ticker' For example, BTC.BTC.

The recipientAddress must be a valid address for the buyAsset blockchain. Similarly the senderAddress must be a valid address for the sellAsset.

Step 2. Call getQuote from doritoKit API package

After creating the quoteParams object, you can pass it to the getQuote function of the dKitApi class.

// or directly from @doritokit/api
import { SwapKitApi } from '@doritokit/sdk'

const quoteParams = {
    sellAsset: 'BTC.BTC',
    sellAmount: '1',
    buyAsset: 'ETH.ETH',
    senderAddress: '...', // A valid Ethereum address
    recipientAddress: '...', // A valid Bitcoin address
    slippage: '3',
};

const { routes } = await SwapKitApi.getQuote(quoteParams);

Step 3: Choose fee option multiplier, route & execute swap

import { FeeOption } from '@doritokit/sdk';

const bestRoute = routes.find(({ optimal }) => optimal)

const txHash = await dkClient.swap({
    route: bestRoute,
    recipient: '...',
    feeOptionKey: FeeOption.Fast
    // FeeOption multiplies current base fee by:
    // Average => 1.2 
    // Fast => 1.5
    // Fastest => 2
});

// Returns explorer url like etherscan, viewblock, etc.
const explorerUrl = skClient.getExplorerTxUrl(inputChain, txHash)

The skClient used above assumes a wallet has been connected as described in Set up the SDK.

Executing ERC20 Swaps with tokens on EVM chains need approval spending. Check if asset has been approved with built in methods.

import { AmountWithBaseDenom, AssetEntity } from '@doritokit/sdk'

const isApproved = skClient.isAssetApprovedForContract(
  asset, // AssetEntity
  contractAddress: selectedRoute.contract
  amount, // AmountWithBaseDenom => amount to check that's possible to spent, default MaxInt256
)

const approveTx = skClient.approveAssetForContract(
  asset, // AssetEntity
  contractAddress: selectedRoute.contract
  amount, // AmountWithBaseDenom => amount approved to spent, default MaxInt256
)
PreviousSet up the SDKNextIntroduction

Last updated 3 months ago