mirror of
https://github.com/Instadapp/dsa-resolvers-deprecated.git
synced 2024-07-29 22:38:16 +00:00
adding .gitattributes for GitHub syntax highlight;
rename synthetix_staking to staking; Added getPosition to return balance and earned value; added truffle-config.js for local contract compile;
This commit is contained in:
parent
25ac9cb464
commit
b91bdda63b
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
*.sol linguist-language=Solidity
|
||||||
53
contracts/protocols/staking.sol
Normal file
53
contracts/protocols/staking.sol
Normal file
|
|
@ -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";
|
||||||
|
}
|
||||||
|
|
@ -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";
|
|
||||||
}
|
|
||||||
15
truffle-config.js
Normal file
15
truffle-config.js
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
module.exports = {
|
||||||
|
// Configure your compilers
|
||||||
|
compilers: {
|
||||||
|
solc: {
|
||||||
|
version: "v0.6.2",
|
||||||
|
settings: {
|
||||||
|
optimizer: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
// evmVersion: "istanbul"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user