diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52031de --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sol linguist-language=Solidity diff --git a/contracts/protocols/staking.sol b/contracts/protocols/staking.sol new file mode 100644 index 0000000..c47fc46 --- /dev/null +++ b/contracts/protocols/staking.sol @@ -0,0 +1,53 @@ +pragma solidity ^0.6.0; +pragma experimental ABIEncoderV2; + +interface TokenInterface { + function decimals() external view returns (uint); + function totalSupply() external view returns (uint256); + function balanceOf(address) external view returns (uint); +} + +interface IStakingRewards { + function balanceOf(address) external view returns (uint256); + function earned(address) external view returns (uint256); +} + +interface Staking { + function getStakingData(string calldata stakingName) + external + view + returns ( + IStakingRewards stakingContract, + TokenInterface stakingToken, + bytes32 stakingType + ); +} + +contract CurveStakingHelpers { + /** + * @dev Return mapping contract Address + */ + function getStakingAddr() internal virtual view returns (address) { + return 0x772590F33eD05b0E83553650BF9e75A04b337526; + } +} + +contract Resolver is CurveStakingHelpers { + + function getPosition(address user, string memory stakingPoolName) public view returns ( + uint stakedBal, + uint rewardsEarned, + uint tokenBal + ) { + Staking staking = Staking(getStakingAddr()); + (IStakingRewards stakingContract, TokenInterface stakingToken, bytes32 stakingType) = staking.getStakingData(stakingPoolName); + stakedBal = stakingContract.balanceOf(user); + rewardsEarned = stakingContract.earned(user); + tokenBal = stakingToken.balanceOf(user); + } +} + + +contract InstaCurveStakingResolver is Resolver { + string public constant name = "Synthetix-Staking-Resolver-v1"; +} diff --git a/contracts/protocols/synthetix_staking.sol b/contracts/protocols/synthetix_staking.sol deleted file mode 100644 index bb008ee..0000000 --- a/contracts/protocols/synthetix_staking.sol +++ /dev/null @@ -1,59 +0,0 @@ -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; - -interface TokenInterface { - function decimals() external view returns (uint); - function totalSupply() external view returns (uint256); - function balanceOf(address) external view returns (uint); -} - -interface IStakingRewards { - function balanceOf(address) external view returns (uint256); - function earned(address) external view returns (uint256); -} - -contract CurveStakingHelpers { - /** - * @dev Return Curve Token Address - */ - function getCurveTokenAddr() internal pure returns (address) { - return 0xC25a3A3b969415c80451098fa907EC722572917F; - } - - /** - * @dev Return Curve sUSD Staking Address - */ - function getCurveStakingAddr() internal pure returns (address) { - return 0xDCB6A51eA3CA5d3Fd898Fd6564757c7aAeC3ca92; - } - - /** - * @dev Return Synthetix Token address. - */ - function getSnxAddr() internal pure returns (address) { - return 0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F; - } - -} - - -contract Resolver is CurveStakingHelpers { - - function getStakingPosition(address user) public view returns ( - uint curveBal, - uint stakedBal, - uint rewardsEarned, - uint snxBal - ) { - curveBal = TokenInterface(getCurveTokenAddr()).balanceOf(user); - IStakingRewards stakingContract = IStakingRewards(getCurveStakingAddr()); - stakedBal = stakingContract.balanceOf(user); - rewardsEarned = stakingContract.earned(user); - snxBal = TokenInterface(getSnxAddr()).balanceOf(user); - } -} - - -contract InstaCurveStakingResolver is Resolver { - string public constant name = "Curve-SUSD-Staking-Resolver-v1"; -} \ No newline at end of file diff --git a/truffle-config.js b/truffle-config.js new file mode 100644 index 0000000..6312f18 --- /dev/null +++ b/truffle-config.js @@ -0,0 +1,15 @@ +module.exports = { + // Configure your compilers + compilers: { + solc: { + version: "v0.6.2", + settings: { + optimizer: { + enabled: true, + }, + // evmVersion: "istanbul" + } + } + } +} +