Nourished Personal Mucus

    This package has been deprecated

    Author message:

    moved to @depay/web3-exchanges

    depay-web3-exchanges

    6.3.2 • Public • Published

    Quickstart

    yarn add depay-web3-exchanges
    

    or

    npm install --save depay-web3-exchanges
    
    import { all, findByName, route } from 'depay-web3-exchanges'
    
    all
    // [
    //   { name: 'uniswap_v3', label: 'Uniswap v3', logo: '...' }
    //   { name: 'pancakeswap_v2', label: 'PancakeSwap v2', logo: '...' }
    //   ...
    // ]
    
    let exchange = findByName('uniswap_v3')
    // { name: 'uniswap_v3', label: 'Uniswap v3', logo: '...' }
    
    let routes = await route({
      blockchain: 'ethereum',
      tokenIn: '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb',
      tokenOut: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
      amountIn: 1,
      fromAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390',
      toAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
    }) // returns routes sorted by cost-effectiveness (best first)
    
    // use connected wallet to sign and send the swap transaction
    import { getWallet } from 'depay-web3-wallets'
    
    let wallet = getWallet()
    
    wallet.sendTransaction(route.transaction)

    Support

    This library supports the following blockchains:

    This library supports the following decentralized exchanges:

    Soon:

    Data Structures

    Exchange

    Decentralized exchange data is provided in the following structure:

    {
      blockchain: String (e.g. ethereum)
      name: String (e.g. uniswap_v2)
      alternativeNames: Array (e.g. ['pancake'])
      label: String (e.g. Uniswap v2)
      logo: String (base64 encoded PNG),
      contracts: Object (contains important contract addresses and apis to interact with the exchange)
    }
    

    Swap

    A Swap configuration is fed into the route function:

    {
      tokenIn: String (e.g. '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb')
      tokenOut: String (e.g. '0xdAC17F958D2ee523a2206206994597C13D831ec7')
      amountIn: Human Readable Number (e.g. 1.2)
      amountInMax: Human Readable Number (e.g. 1.2)
      amountOut: Human Readable Number (e.g. 1.2)
      amountOutMin: Human Readable Number (e.g. 1.2)
      fromAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
      toAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
    }
    

    The following combinations of provided amounts are possible:

    • Only amountIn, amountOutMin will be calculated automatically and can vary
    • Only amountOut, amountInMax will be calculated automatically and can vary
    • Only amountInMax, amountOut will be calculated automatically and can vary
    • Only amountOutMin, amountIn will be calculated automatically and can vary
    • amountIn and amountOutMax (routing will stick to both)
    • amountOut and amountInMin (routing will stick to both)

    Route

    Routes are returned by calling route. A single Route has the following structure:

    {
      tokenIn: String (e.g. '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb')
      tokenOut: String (e.g. '0xdAC17F958D2ee523a2206206994597C13D831ec7')
      path: Array (e.g. ['0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb', '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', '0xdAC17F958D2ee523a2206206994597C13D831ec7'])
      amountIn: BigNumber (e.g. '1000000000000000000')
      amountOutMin: BigNumber (e.g. '32000000000000000000')
      amountOut: BigNumber (e.g. '32000000000000000000')
      amountInMax: BigNumber (e.g. '1000000000000000000')
      fromAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
      toAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
      transaction: Transaction (see depay-web3-wallets for details)
      exchange: Exchange (see [Exchange data structure](#exchange))
    }
    

    See depay-web3-wallets for details about the transaction format.

    Functionalities

    all: Stores all information for all decentralized exchanges

    import { all } from 'depay-web3-exchanges'
    
    all
    // [
    //   { name: 'uniswap_v3', label: 'Uniswap v3', logo: '...' }
    //   { name: 'pancakeswap_v2', label: 'PancakeSwap v2', logo: '...' }
    //   ...
    // ]

    findByName: Get decentralized exchanged by name (name usually contains version, too)

    import { findByName } from 'depay-web3-exchanges'
    
    findByName('uniswap_v3')
    // { name: 'uniswap_v3', label: 'Uniswap v3', logo: '...' }
    
    findByName('pancakeswap_v2')
    // { name: 'pancakeswap_v2', label: 'PancakeSwap v2', logo: '...' }

    route: Routes a Swap configuration and returns routes to perform the Swap

    import { route } from 'depay-web3-exchanges'
    
    let routes = route {
      tokenIn: '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb',
      tokenOut: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
      amountIn: 1,
      amountOutMin: 2,
      fromAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390',
      toAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
    } // returns routes sorted by cost-effectiveness (best first)
    
    // use connected wallet to sign and send the swap transaction
    import { getWallet } from 'depay-web3-wallets'
    
    let wallet = getWallet()
    
    wallet.sendTransaction(routes[0].transaction)

    route can also be called on concrete exchanges:

    import { findByName } from 'depay-web3-exchanges'
    
    let exchange = findByName('uniswap_v2')
    
    let route = await exchange.route({
      blockchain: 'ethereum',
      tokenIn: '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb',
      tokenOut: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
      amountIn: 1,
      amountOutMin: 2,
      fromAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390',
      toAddress: '0x5Af489c8786A018EC4814194dC8048be1007e390'
    })
    
    // use connected wallet to sign and send the swap transaction
    import { getWallet } from 'depay-web3-wallets'
    
    let wallet = getWallet()
    
    wallet.sendTransaction(route.transaction)

    Domain Knowledge

    Wrapped native tokens (like WETH)

    In case you select to swap the wrapped native token to the native token or vise versa, this library will actually suggest to wrap/unwrap instead of going through an exchange.

    Development

    Get started

    yarn install
    yarn dev
    

    Release

    npm publish
    

    Install

    npm i depay-web3-exchanges

    DownloadsWeekly Downloads

    94

    Version

    6.3.2

    License

    MIT

    Unpacked Size

    1.02 MB

    Total Files

    6

    Last publish

    Collaborators

    • depay-sebastian