Skip to content

💰One stop shop for Ethereum ABIs, addresses, and Solidity interfaces!

License

Notifications You must be signed in to change notification settings

studydefi/money-legos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

money-legos

circleci npm types minzip

legos autocomplete

Get ABIs, Addresses, and Solidity Interfaces to popular DeFi protocols

Now with Typescript-powered autocomplete!

money-legos is an NPM package that provides you with the mainnet addresses, ABIs, and Solidity interfaces for popular DeFi protocols.

Click here for docs!

Protocols supported:

  • AAVE
  • Compound
  • Curve Finance
  • DappSys
  • DyDx
  • ERC20
  • Idle V3
  • Kyber.Network
  • MakerDAO
  • OneSplit
  • UMA Protocol
  • Uniswap v1

Importing specific protocols is also supported:

size

Install

npm install @studydefi/money-legos

Usage

JavaScript

import { legos } from "@studydefi/money-legos";

// access ABIs and addresses
legos.erc20.abi;
legos.erc20.dai.address;

// of many popular DeFi protocols
legos.uniswap.factory.abi;
legos.uniswap.factory.address;

// import only the protocol you are interested in
import uniswap from "@studydefi/money-legos/uniswap";

uniswap.factory.abi;
uniswap.factory.address;

Solidity

pragma solidity ^0.5.0;

import "@studydefi/money-legos/onesplit/contracts/IOneSplit.sol";

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";


contract OneSplitSwapper {
    // Uniswap Mainnet factory address
    address constant OneSplitAddress = 0xC586BeF4a0992C495Cf22e1aeEE4E446CECDee0E;

    function _swap(address from, address to, uint256 amountWei) internal {
        IERC20 fromIERC20 = IERC20(from);
        IERC20 toIERC20 = IERC20(to);

        (uint256 returnAmount, uint256[] memory distribution) = IOneSplit(
            OneSplitAddress
        ).getExpectedReturn(
            fromIERC20,
            toIERC20,
            amountWei,
            10,
            0
        );

        IOneSplit(OneSplitAddress).swap(
            fromIERC20,
            toIERC20,
            amountWei,
            returnAmount,
            distribution,
            0
        );
    }
}