{
"sourceCode": "{{\r\n \"language\": \"Solidity\",\r\n \"settings\": {\r\n \"evmVersion\": \"london\",\r\n \"libraries\": {},\r\n \"metadata\": {\r\n \"bytecodeHash\": \"ipfs\",\r\n \"useLiteralContent\": true\r\n },\r\n \"optimizer\": {\r\n \"enabled\": true,\r\n \"runs\": 200\r\n },\r\n \"remappings\": [],\r\n \"outputSelection\": {\r\n \"*\": {\r\n \"*\": [\r\n \"evm.bytecode\",\r\n \"evm.deployedBytecode\",\r\n \"devdoc\",\r\n \"userdoc\",\r\n \"metadata\",\r\n \"abi\"\r\n ]\r\n }\r\n }\r\n },\r\n \"sources\": {\r\n \"@openzeppelin/contracts/token/ERC20/IERC20.sol\": {\r\n \"content\": \"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `to`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address to, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `from` to `to` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 amount) external returns (bool);\\n}\\n\"\r\n },\r\n \"contracts/Lens/StakeLens.sol\": {\r\n \"content\": \"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.16;\\n\\nimport {IERC20} from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport {IGovSBL} from \\\"../Token/IGovSBL.sol\\\";\\n\\ncontract StakeLens {\\n struct Token {\\n address token;\\n uint256 amount;\\n }\\n\\n function rewardEarned(\\n address _account,\\n IGovSBL _govSBL,\\n IERC20[] memory _tokens\\n ) external returns (Token[] memory) {\\n Token[] memory tokens = new Token[](_tokens.length);\\n\\n for (uint256 i = 0; i < _tokens.length; i++) {\\n tokens[i].token = address(_tokens[i]);\\n tokens[i].amount = _tokens[i].balanceOf(_account);\\n }\\n\\n _govSBL.stake(_account, 0);\\n\\n for (uint256 i = 0; i < _tokens.length; i++) {\\n tokens[i].amount =\\n _tokens[i].balanceOf(_account) -\\n tokens[i].amount;\\n }\\n\\n return tokens;\\n }\\n}\\n\"\r\n },\r\n \"contracts/Token/IGovSBL.sol\": {\r\n \"content\": \"// SPDX-License-Identifier: MIT\\n\\npragma solidity 0.8.16;\\n\\ninterface IGovSBL {\\n function stake(address user, uint256 amount) external;\\n\\n function getBoostMultiplier(address user) external view returns (uint256);\\n\\n function maxBoostMultiplier() external view returns (uint256);\\n\\n function getBalanceTierAndBoost(\\n address user\\n ) external view returns (uint256);\\n function getNftBoost(address user) external view returns (uint256);\\n}\\n\"\r\n }\r\n }\r\n}}"
}