This bounty is no longer available
Web3 DAO | lossless-cash Logo

LOSSLESS: Build JS SDK (a wrapper for lossless v3 smart contracts)




in over 262 years



405.9 USD



You can find more info about lossless and what’s the purpose of this project here:


You will need create a wrapper library that allows easily calling every public function of lossless v3 smart contracts. Contracts can be found here:


User’s should be able to interact with lossless smart contracts without needing to set up ABI or doing any other manual stuff. The only thing needed for the developer to interact with lossless smart contracts would be this npm package.


  • Create a npm package for this functionality.

  • Project should use ethers library that allows communicating with blockchain.

  • There’s should be project scoped config file. Similar to

    • Config would be used to specify blockchain node provider url.

    • Config would be used to add user’s private key from which transactions should be submitted.

    • Config would be used to choose which network the user wants to operate on. Supported networks can be found here:

  • There should be a way to access ethers library and provider object from the lossless library. So that user’s wouldn’t need install and use ethers separately.

  • Project should work with both vanilla Javascript and Typescript.

  • Lossless smart contract addresses don’t need to be added, they will be added later on by the team.

  • Most of the functionality should be covered by test, please target around 70% test coverage. Use hardhat for testing.

  • All code should be published under publicly available repository.

  • This sdk should cover every public function that does not require any role in lossless smart contracts. For example in LosslessReporting.sol smart contract there’s a function report, user’s code that is going to use this newly implemented SDK should look similar to this:

import lossless from 'lossless';

const someAddressIWantToReport = "0x1412...";

async function run() {
  const reportId = await;