money-legos


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 and visit our Discord here!
Protocols supported:
- AAVE
- Compound
- Curve Finance
- DappSys
- DyDx
- ERC20
- Idle V3
- Kyber.Network
- MakerDAO
- OneSplit
- UMA Protocol
- Uniswap v1
- Synthetix
- Balancer
- mStable
- Uniswap v2
Importing specific protocols is also supported:
Install
npm install @studydefi/money-legos
Usage
JavaScript
import { legos } from "@studydefi/money-legos";
legos.erc20.abi;
legos.erc20.dai.address;
legos.uniswap.factory.abi;
legos.uniswap.factory.address;
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
);
}
}