nodara-contract 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/README.md +14 -0
  2. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  4. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  6. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  8. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol/ERC20Burnable.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol/ERC20Burnable.json +312 -0
  10. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  12. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  14. package/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +228 -0
  16. package/artifacts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.json +183 -0
  18. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  20. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.sol/IERC1967Upgradeable.json +56 -0
  22. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC4906Upgradeable.sol/IERC4906Upgradeable.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/IERC4906Upgradeable.sol/IERC4906Upgradeable.json +328 -0
  24. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.json +24 -0
  26. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.sol/ERC1967UpgradeUpgradeable.json +69 -0
  28. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.sol/IBeaconUpgradeable.json +24 -0
  30. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  32. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json +113 -0
  34. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  36. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol/ERC721Upgradeable.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol/ERC721Upgradeable.json +354 -0
  38. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol/IERC721ReceiverUpgradeable.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol/IERC721ReceiverUpgradeable.json +45 -0
  40. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol/IERC721Upgradeable.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol/IERC721Upgradeable.json +296 -0
  42. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol/ERC721EnumerableUpgradeable.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol/ERC721EnumerableUpgradeable.json +410 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol/ERC721URIStorageUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol/ERC721URIStorageUpgradeable.json +386 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol/IERC721EnumerableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.sol/IERC721EnumerableUpgradeable.json +352 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.json +341 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol/CountersUpgradeable.json +10 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +43 -0
  62. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +4 -0
  63. package/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.json +30 -0
  64. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.dbg.json +4 -0
  65. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol/MathUpgradeable.json +10 -0
  66. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol/SignedMathUpgradeable.dbg.json +4 -0
  67. package/artifacts/@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol/SignedMathUpgradeable.json +10 -0
  68. package/artifacts/build-info/0e2d893049ad4fa186582937b6a7ba86.json +1 -0
  69. package/artifacts/build-info/b7890b3cfe499293356f8c290e6e1ee4.json +1 -0
  70. package/artifacts/contracts/CROWD.sol/CROWD.dbg.json +4 -0
  71. package/artifacts/contracts/CROWD.sol/CROWD.json +413 -0
  72. package/artifacts/contracts/CUSDT.sol/CUSDT.dbg.json +4 -0
  73. package/artifacts/contracts/CUSDT.sol/CUSDT.json +413 -0
  74. package/artifacts/contracts/NFT.sol/NFT.dbg.json +4 -0
  75. package/artifacts/contracts/NFT.sol/NFT.json +1158 -0
  76. package/artifacts/contracts/NFTFounder.sol/NFTFounder.dbg.json +4 -0
  77. package/artifacts/contracts/NFTFounder.sol/NFTFounder.json +889 -0
  78. package/artifacts/contracts/NFTGenesis.sol/NFTGenesis.dbg.json +4 -0
  79. package/artifacts/contracts/NFTGenesis.sol/NFTGenesis.json +1149 -0
  80. package/artifacts/contracts/Network.sol/Network.dbg.json +4 -0
  81. package/artifacts/contracts/Network.sol/Network.json +1218 -0
  82. package/artifacts/contracts/Swap.sol/Swap.dbg.json +4 -0
  83. package/artifacts/contracts/Swap.sol/Swap.json +485 -0
  84. package/artifacts/contracts/USDT.sol/USDT.dbg.json +4 -0
  85. package/artifacts/contracts/USDT.sol/USDT.json +413 -0
  86. package/artifacts/contracts/lib/AccessControl.sol/AccessControl.dbg.json +4 -0
  87. package/artifacts/contracts/lib/AccessControl.sol/AccessControl.json +254 -0
  88. package/artifacts/contracts/lib/NFTGetter.sol/NFTGetter.dbg.json +4 -0
  89. package/artifacts/contracts/lib/NFTGetter.sol/NFTGetter.json +186 -0
  90. package/artifacts/contracts/lib/NFTHelpers.sol/NFTHelpers.dbg.json +4 -0
  91. package/artifacts/contracts/lib/NFTHelpers.sol/NFTHelpers.json +10 -0
  92. package/artifacts/contracts/lib/ValhallaBlackList.sol/ValhallaBlackList.dbg.json +4 -0
  93. package/artifacts/contracts/lib/ValhallaBlackList.sol/ValhallaBlackList.json +30 -0
  94. package/artifacts/contracts/lib/ValhallaPool.sol/ValhallaPool.dbg.json +4 -0
  95. package/artifacts/contracts/lib/ValhallaPool.sol/ValhallaPool.json +162 -0
  96. package/contracts/CROWD.sol +32 -0
  97. package/contracts/CUSDT.sol +32 -0
  98. package/contracts/NFT.sol +504 -0
  99. package/contracts/NFTFounder.sol +254 -0
  100. package/contracts/NFTGenesis.sol +343 -0
  101. package/contracts/Network.sol +513 -0
  102. package/contracts/Swap.sol +197 -0
  103. package/contracts/USDT.sol +32 -0
  104. package/contracts/lib/AccessControl.sol +35 -0
  105. package/contracts/lib/NFTGetter.sol +60 -0
  106. package/contracts/lib/NFTHelpers.sol +111 -0
  107. package/contracts/lib/ValhallaBlackList.sol +18 -0
  108. package/contracts/lib/ValhallaPool.sol +44 -0
  109. package/package.json +66 -0
  110. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +176 -0
  111. package/typechain-types/@openzeppelin/contracts/access/index.ts +4 -0
  112. package/typechain-types/@openzeppelin/contracts/index.ts +7 -0
  113. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +464 -0
  114. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +342 -0
  115. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +533 -0
  116. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +384 -0
  117. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  118. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +7 -0
  119. package/typechain-types/@openzeppelin/contracts/token/index.ts +5 -0
  120. package/typechain-types/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.ts +410 -0
  121. package/typechain-types/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.ts +341 -0
  122. package/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts +188 -0
  123. package/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts +6 -0
  124. package/typechain-types/@openzeppelin/contracts-upgradeable/index.ts +15 -0
  125. package/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable.ts +115 -0
  126. package/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/IERC4906Upgradeable.ts +597 -0
  127. package/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable.ts +87 -0
  128. package/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts +4 -0
  129. package/typechain-types/@openzeppelin/contracts-upgradeable/interfaces/index.ts +7 -0
  130. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable.ts +127 -0
  131. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts +4 -0
  132. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable.ts +87 -0
  133. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts +4 -0
  134. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts +9 -0
  135. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts +69 -0
  136. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts +238 -0
  137. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  138. package/typechain-types/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.ts +69 -0
  139. package/typechain-types/@openzeppelin/contracts-upgradeable/security/index.ts +4 -0
  140. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.ts +631 -0
  141. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.ts +126 -0
  142. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.ts +559 -0
  143. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.ts +726 -0
  144. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.ts +669 -0
  145. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable.ts +654 -0
  146. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable.ts +619 -0
  147. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/index.ts +7 -0
  148. package/typechain-types/@openzeppelin/contracts-upgradeable/token/ERC721/index.ts +8 -0
  149. package/typechain-types/@openzeppelin/contracts-upgradeable/token/index.ts +5 -0
  150. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts +69 -0
  151. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts +6 -0
  152. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.ts +121 -0
  153. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.ts +103 -0
  154. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/introspection/index.ts +5 -0
  155. package/typechain-types/@openzeppelin/index.ts +7 -0
  156. package/typechain-types/common.ts +46 -0
  157. package/typechain-types/contracts/CROWD.ts +728 -0
  158. package/typechain-types/contracts/CUSDT.ts +728 -0
  159. package/typechain-types/contracts/NFT.ts +1979 -0
  160. package/typechain-types/contracts/NFTFounder.ts +1562 -0
  161. package/typechain-types/contracts/NFTGenesis.ts +1908 -0
  162. package/typechain-types/contracts/Network.ts +2094 -0
  163. package/typechain-types/contracts/Swap.ts +914 -0
  164. package/typechain-types/contracts/USDT.ts +728 -0
  165. package/typechain-types/contracts/index.ts +13 -0
  166. package/typechain-types/contracts/lib/AccessControl.ts +447 -0
  167. package/typechain-types/contracts/lib/NFTGetter.ts +404 -0
  168. package/typechain-types/contracts/lib/ValhallaBlackList.ts +105 -0
  169. package/typechain-types/contracts/lib/ValhallaPool.ts +257 -0
  170. package/typechain-types/contracts/lib/index.ts +7 -0
  171. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +78 -0
  172. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +4 -0
  173. package/typechain-types/factories/@openzeppelin/contracts/index.ts +5 -0
  174. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +350 -0
  175. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +206 -0
  176. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +327 -0
  177. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +248 -0
  178. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  179. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  180. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +4 -0
  181. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.ts +247 -0
  182. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable__factory.ts +202 -0
  183. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts +91 -0
  184. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts +6 -0
  185. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts +9 -0
  186. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1967Upgradeable__factory.ts +71 -0
  187. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC4906Upgradeable__factory.ts +343 -0
  188. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/IERC1822ProxiableUpgradeable__factory.ts +43 -0
  189. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/draft-IERC1822Upgradeable.sol/index.ts +4 -0
  190. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/interfaces/index.ts +6 -0
  191. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/ERC1967UpgradeUpgradeable__factory.ts +88 -0
  192. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/ERC1967/index.ts +4 -0
  193. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/IBeaconUpgradeable__factory.ts +39 -0
  194. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/beacon/index.ts +4 -0
  195. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts +6 -0
  196. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts +39 -0
  197. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts +128 -0
  198. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  199. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable__factory.ts +43 -0
  200. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/security/index.ts +4 -0
  201. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable__factory.ts +406 -0
  202. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable__factory.ts +64 -0
  203. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable__factory.ts +311 -0
  204. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable__factory.ts +429 -0
  205. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable__factory.ts +405 -0
  206. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721EnumerableUpgradeable__factory.ts +371 -0
  207. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/IERC721MetadataUpgradeable__factory.ts +360 -0
  208. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/extensions/index.ts +7 -0
  209. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/ERC721/index.ts +7 -0
  210. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/token/index.ts +4 -0
  211. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts +39 -0
  212. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts +5 -0
  213. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.ts +58 -0
  214. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable__factory.ts +45 -0
  215. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/introspection/index.ts +5 -0
  216. package/typechain-types/factories/@openzeppelin/index.ts +5 -0
  217. package/typechain-types/factories/contracts/CROWD__factory.ts +459 -0
  218. package/typechain-types/factories/contracts/CUSDT__factory.ts +459 -0
  219. package/typechain-types/factories/contracts/NFTFounder__factory.ts +941 -0
  220. package/typechain-types/factories/contracts/NFTGenesis__factory.ts +1201 -0
  221. package/typechain-types/factories/contracts/NFT__factory.ts +1204 -0
  222. package/typechain-types/factories/contracts/Network__factory.ts +1267 -0
  223. package/typechain-types/factories/contracts/Swap__factory.ts +531 -0
  224. package/typechain-types/factories/contracts/USDT__factory.ts +459 -0
  225. package/typechain-types/factories/contracts/index.ts +12 -0
  226. package/typechain-types/factories/contracts/lib/AccessControl__factory.ts +269 -0
  227. package/typechain-types/factories/contracts/lib/NFTGetter__factory.ts +238 -0
  228. package/typechain-types/factories/contracts/lib/ValhallaBlackList__factory.ts +45 -0
  229. package/typechain-types/factories/contracts/lib/ValhallaPool__factory.ts +177 -0
  230. package/typechain-types/factories/contracts/lib/index.ts +7 -0
  231. package/typechain-types/factories/index.ts +5 -0
  232. package/typechain-types/hardhat.d.ts +375 -0
  233. package/typechain-types/index.ts +84 -0
@@ -0,0 +1,513 @@
1
+ //SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.17;
3
+
4
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
6
+ import "./CROWD.sol";
7
+ import "./NFTFounder.sol";
8
+ import "./lib/NFTGetter.sol";
9
+ import "./lib/ValhallaPool.sol";
10
+ import "./lib/AccessControl.sol";
11
+ import "./lib/ValhallaBlackList.sol";
12
+
13
+ enum Rank {
14
+ NoRank,
15
+ Common,
16
+ Rare,
17
+ SuperRare,
18
+ Epic,
19
+ Legend,
20
+ SuperLegend
21
+ }
22
+
23
+ struct Account {
24
+ bool isRegistered;
25
+ bool isImported;
26
+ Rank rank;
27
+ address referrer;
28
+ uint downlineCount;
29
+ uint directDownlineCount;
30
+ uint rankUpdatedAt;
31
+ uint rankRewardClaimedAt;
32
+ }
33
+
34
+ struct RankDistribution {
35
+ uint common;
36
+ uint rare;
37
+ uint superRare;
38
+ uint epic;
39
+ uint legend;
40
+ uint superLegend;
41
+ }
42
+
43
+ contract Network is
44
+ ValhallaPool,
45
+ ValhallaBlackList,
46
+ Initializable,
47
+ AccessControl,
48
+ UUPSUpgradeable
49
+ {
50
+ mapping(address => Account) public accountMap;
51
+ mapping(address => uint) public rewardMap;
52
+ mapping(address => uint) public directCommonRankMap;
53
+ mapping(address => uint) public directRareRankMap;
54
+ mapping(address => uint) public directSuperRareRankMap;
55
+ mapping(address => uint) public directEpicRankMap;
56
+ mapping(address => uint) public directLegendRankMap;
57
+ mapping(address => uint) public directSuperLegendRankMap;
58
+ address public feeReceiverAddress;
59
+ address public feeReceiverAddress2;
60
+ address public reserveAddress;
61
+ bool public isRankRewardClaimable;
62
+ uint public rankRewardClaimableAt;
63
+ uint public deployedAtBlock;
64
+
65
+ // ipoPoolDistrbution + referrerPooDistribution = registrationFee
66
+ uint private ipoPoolDistribution;
67
+ uint private referrerPoolDistribution;
68
+
69
+ RankDistribution public rankDistribution;
70
+ NFTGetter public nftGetter;
71
+ CROWD public gnetERC20;
72
+ ERC20 public usdtERC20;
73
+ NFTFounder public nftFounder;
74
+
75
+ // events
76
+ event Registration(address indexed _from, address indexed referrer);
77
+ event ClaimReward(address indexed _from, uint value);
78
+ event ClaimRankReward(address indexed _from, uint value);
79
+ event Blacklisted(address indexed _target);
80
+ event RankUpgraded(address indexed _from, Rank rank);
81
+ event RankRewardOpened(uint indexed _timestamp);
82
+ event RankRewardClosed(uint indexed _timestamp);
83
+
84
+ /// @custom:oz-upgrades-unsafe-allow constructor
85
+ constructor() {
86
+ _disableInitializers();
87
+ }
88
+
89
+ function initialize(
90
+ address _admin,
91
+ address[] memory root_address,
92
+ address _feeReceiverAddress,
93
+ address _feeReceiverAddress2,
94
+ address _reserveAddress,
95
+ uint _ipoPoolDistribution,
96
+ uint _referrerPoolDistribution
97
+ ) public initializer {
98
+ __AccessControl_init();
99
+ __UUPSUpgradeable_init();
100
+
101
+ _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
102
+ _grantRole(UPGRADER_ROLE, msg.sender);
103
+ _grantRole(DEFAULT_ADMIN_ROLE, _admin);
104
+
105
+ deployedAtBlock = block.number;
106
+ ipoPoolDistribution = _ipoPoolDistribution;
107
+ referrerPoolDistribution = _referrerPoolDistribution;
108
+ feeReceiverAddress = _feeReceiverAddress;
109
+ feeReceiverAddress2 = _feeReceiverAddress2;
110
+ reserveAddress = _reserveAddress;
111
+
112
+ accountMap[_feeReceiverAddress2].isRegistered = true;
113
+ accountMap[_feeReceiverAddress2].referrer = address(0);
114
+
115
+ accountMap[_feeReceiverAddress].isRegistered = true;
116
+ accountMap[_feeReceiverAddress].referrer = address(0);
117
+ emit Registration(_feeReceiverAddress, address(0));
118
+
119
+ accountMap[_reserveAddress].isRegistered = true;
120
+ accountMap[_reserveAddress].referrer = address(0);
121
+ emit Registration(_feeReceiverAddress, address(0));
122
+
123
+ address _parent;
124
+ for (uint i = 0; i < root_address.length; i++) {
125
+ address _current = root_address[i];
126
+ accountMap[_current].isRegistered = true;
127
+ accountMap[_current].downlineCount = root_address.length - i - 1;
128
+ accountMap[_current].directDownlineCount = 1;
129
+ accountMap[_current].rank = Rank.NoRank;
130
+ accountMap[_current].referrer = _parent;
131
+ emit Registration(_current, _parent);
132
+ _parent = _current;
133
+ }
134
+ }
135
+
136
+ function _authorizeUpgrade(
137
+ address newImplementation
138
+ ) internal override onlyUpgrader {}
139
+
140
+ function _addDownlineAndAdjustRank(address _address) private {
141
+ Account storage _account = accountMap[_address];
142
+ _account.downlineCount += 1;
143
+ // if its already in max rank dont do anything
144
+ // for the sake of gas optimization
145
+ if (_account.rank == Rank.SuperLegend) return;
146
+
147
+ if (_account.downlineCount >= 200000 && _account.rank == Rank.Legend) {
148
+ uint totalEligibleDirectRank = directLegendRankMap[_address] +
149
+ directSuperLegendRankMap[_address];
150
+
151
+ if (totalEligibleDirectRank >= 2) {
152
+ _account.rank = Rank.SuperLegend;
153
+ rankDistribution.legend -= 1;
154
+ rankDistribution.superLegend += 1;
155
+ directLegendRankMap[_account.referrer] -= 1;
156
+ directSuperLegendRankMap[_account.referrer] += 1;
157
+ }
158
+ } else if (_account.downlineCount >= 50000 && _account.rank == Rank.Epic) {
159
+ uint totalEligibleDirectRank = directEpicRankMap[_address] +
160
+ directLegendRankMap[_address] +
161
+ directSuperLegendRankMap[_address];
162
+
163
+ if (totalEligibleDirectRank >= 2) {
164
+ _account.rank = Rank.Legend;
165
+ rankDistribution.epic -= 1;
166
+ rankDistribution.legend += 1;
167
+ directEpicRankMap[_account.referrer] -= 1;
168
+ directLegendRankMap[_account.referrer] += 1;
169
+ }
170
+ } else if (
171
+ _account.downlineCount >= 10000 && _account.rank == Rank.SuperRare
172
+ ) {
173
+ uint totalEligibleDirectRank = directSuperRareRankMap[_address] +
174
+ directEpicRankMap[_address] +
175
+ directLegendRankMap[_address] +
176
+ directSuperLegendRankMap[_address];
177
+
178
+ if (totalEligibleDirectRank >= 2) {
179
+ _account.rank = Rank.Epic;
180
+ rankDistribution.superRare -= 1;
181
+ rankDistribution.epic += 1;
182
+ directSuperRareRankMap[_account.referrer] -= 1;
183
+ directEpicRankMap[_account.referrer] += 1;
184
+ }
185
+ } else if (_account.downlineCount >= 2000 && _account.rank == Rank.Rare) {
186
+ uint totalEligibleDirectRank = directRareRankMap[_address] +
187
+ directSuperRareRankMap[_address] +
188
+ directEpicRankMap[_address] +
189
+ directLegendRankMap[_address] +
190
+ directSuperLegendRankMap[_address];
191
+ if (totalEligibleDirectRank >= 2) {
192
+ _account.rank = Rank.SuperRare;
193
+ rankDistribution.rare -= 1;
194
+ rankDistribution.superRare += 1;
195
+ directRareRankMap[_account.referrer] -= 1;
196
+ directSuperRareRankMap[_account.referrer] += 1;
197
+ }
198
+ } else if (_account.downlineCount >= 400 && _account.rank == Rank.Common) {
199
+ uint totalEligibleDirectRank = directCommonRankMap[_address] +
200
+ directRareRankMap[_address] +
201
+ directSuperRareRankMap[_address] +
202
+ directEpicRankMap[_address] +
203
+ directLegendRankMap[_address] +
204
+ directSuperLegendRankMap[_address];
205
+ if (totalEligibleDirectRank >= 2) {
206
+ _account.rank = Rank.Rare;
207
+ rankDistribution.common -= 1;
208
+ rankDistribution.rare += 1;
209
+ directCommonRankMap[_account.referrer] -= 1;
210
+ directRareRankMap[_account.referrer] += 1;
211
+ }
212
+ } else if (_account.downlineCount >= 100 && _account.rank == Rank.NoRank) {
213
+ _account.rank = Rank.Common;
214
+ rankDistribution.common += 1;
215
+ directCommonRankMap[_account.referrer] += 1;
216
+ } else {
217
+ return;
218
+ }
219
+
220
+ emit RankUpgraded(_address, _account.rank);
221
+ }
222
+
223
+ function _distributeRegistrationFeeToNthReferrer(
224
+ uint value
225
+ ) private returns (uint) {
226
+ uint _reference = value;
227
+ uint _valueLeft = value;
228
+
229
+ Account storage currentAccount = accountMap[msg.sender];
230
+
231
+ // rules of how registration fee going to be distributed
232
+ // into up to 15 upline in percentage
233
+ // root 1 - 2 = 10%, 3 = 6%, 4 = 5%, etc.
234
+ uint8[15] memory uplineRegistrationFeeDistributionPercentage = [
235
+ 30,
236
+ 8,
237
+ 3,
238
+ 2,
239
+ 2,
240
+ 1,
241
+ 1,
242
+ 1,
243
+ 1,
244
+ 1,
245
+ 1,
246
+ 1,
247
+ 1,
248
+ 1,
249
+ 1
250
+ ];
251
+ for (
252
+ uint i = 0;
253
+ i < uplineRegistrationFeeDistributionPercentage.length;
254
+ i++
255
+ ) {
256
+ address _parentAddress = currentAccount.referrer;
257
+
258
+ // exit loop once it encounter zero address
259
+ // because it's expected to be no other upline can be processed
260
+ if (_parentAddress == address(0)) break;
261
+
262
+ // ignore blacklisted upline
263
+ if (blacklistedAddressMap[_parentAddress] == false) {
264
+ _addDownlineAndAdjustRank(_parentAddress);
265
+ uint _percentage = uplineRegistrationFeeDistributionPercentage[i];
266
+ uint _distribution_value = (_reference * _percentage) / 100;
267
+ rewardMap[_parentAddress] += _distribution_value;
268
+ _valueLeft -= _distribution_value;
269
+ }
270
+
271
+ currentAccount = accountMap[_parentAddress];
272
+ }
273
+ return _valueLeft;
274
+ }
275
+
276
+ function wdUSDT(uint amount) public onlyAdmin {
277
+ require(
278
+ amount <= usdtERC20.balanceOf(address(this)),
279
+ "Insufficient CUSD balance"
280
+ );
281
+ usdtERC20.transfer(msg.sender, amount);
282
+ }
283
+
284
+ function setNFTFounderAddress(NFTFounder _nftFounder) public onlyAdmin {
285
+ nftFounder = _nftFounder;
286
+ }
287
+
288
+ function setNftAddress(NFTGetter _nftGetter) public onlyAdmin {
289
+ nftGetter = _nftGetter;
290
+ }
291
+
292
+ function setCRWDAddress(CROWD _gnetERC20) public onlyAdmin {
293
+ gnetERC20 = _gnetERC20;
294
+ }
295
+
296
+ function setCUSDAddress(ERC20 _usdtERC20) public onlyAdmin {
297
+ usdtERC20 = _usdtERC20;
298
+ }
299
+
300
+ function getRegistrationFee() public view returns (uint) {
301
+ return ipoPoolDistribution + referrerPoolDistribution;
302
+ }
303
+
304
+ function register(address referrer) public notInBlacklist {
305
+ uint registrationFee = getRegistrationFee();
306
+ Account storage account = accountMap[msg.sender];
307
+ uint balance = usdtERC20.balanceOf(msg.sender);
308
+ require(address(usdtERC20) != address(0), "admin didn't set token ERC");
309
+ require(balance >= registrationFee, "Unmatch Registration Fee");
310
+ require(account.isRegistered == false, "Address already registered");
311
+ require(referrer != address(0), "Invalid referrer");
312
+ require(accountMap[referrer].isRegistered, "Referrer should be registered");
313
+ require(blacklistedAddressMap[referrer] == false, "Referrer blacklisted");
314
+ require(!isRankRewardClaimable, "Registration closed");
315
+
316
+ account.referrer = referrer;
317
+ account.isRegistered = true;
318
+ account.rank = Rank.NoRank;
319
+ account.directDownlineCount = 0;
320
+ accountMap[referrer].directDownlineCount += 1;
321
+
322
+ _storeIpoPool(ipoPoolDistribution);
323
+ uint valueLeft = _distributeRegistrationFeeToNthReferrer(
324
+ referrerPoolDistribution
325
+ );
326
+ uint globalPoolDistribution = (referrerPoolDistribution * 17) / 100;
327
+ _storeGlobalPool(globalPoolDistribution);
328
+ valueLeft -= globalPoolDistribution;
329
+ uint reserveDistribution = (referrerPoolDistribution * 3) / 100;
330
+ // need approval
331
+ usdtERC20.transferFrom(msg.sender, address(this), registrationFee);
332
+
333
+ usdtERC20.transfer(address(nftFounder), reserveDistribution);
334
+ nftFounder.distributeFounderRewards(reserveDistribution);
335
+
336
+ valueLeft -= reserveDistribution;
337
+
338
+ usdtERC20.transfer(feeReceiverAddress, valueLeft / 2);
339
+ usdtERC20.transfer(feeReceiverAddress2, valueLeft / 2);
340
+ emit Registration(msg.sender, referrer);
341
+ }
342
+
343
+ function importAccount(address _address, address _referrer) public onlyAdmin {
344
+ Account storage account = accountMap[_address];
345
+
346
+ require(!isRankRewardClaimable, "Registration closed");
347
+ require(_address != address(0), "Invalid address");
348
+ require(_referrer != address(0), "Invalid referrer");
349
+
350
+ require(!account.isRegistered, "Address already registered");
351
+ require(!account.isImported, "Address already imported");
352
+
353
+ require(
354
+ accountMap[_referrer].isRegistered,
355
+ "Referrer should be registered"
356
+ );
357
+ require(!blacklistedAddressMap[_referrer], "Referrer blacklisted");
358
+
359
+ account.referrer = _referrer;
360
+ account.isRegistered = true;
361
+ account.isImported = true;
362
+ account.rank = Rank.NoRank;
363
+ account.directDownlineCount = 0;
364
+
365
+ accountMap[_referrer].directDownlineCount += 1;
366
+
367
+ address _currentParent = _referrer;
368
+ for (uint i = 0; i < 15 && _currentParent != address(0); i++) {
369
+ _addDownlineAndAdjustRank(_currentParent);
370
+ _currentParent = accountMap[_currentParent].referrer;
371
+ }
372
+
373
+ emit Registration(_address, _referrer);
374
+ }
375
+
376
+ function claimReward() public notInBlacklist {
377
+ uint _reward = rewardMap[msg.sender];
378
+ require(_reward > 0, "No reward to be claimed");
379
+ // apply 10% tax
380
+ uint tax = (_reward * 10) / 100;
381
+ // claim reward
382
+
383
+ uint halfTax = tax / 2;
384
+ usdtERC20.transfer(feeReceiverAddress, halfTax);
385
+ usdtERC20.transfer(feeReceiverAddress2, halfTax);
386
+ usdtERC20.transfer(msg.sender, _reward - tax);
387
+ rewardMap[msg.sender] = 0;
388
+ emit ClaimReward(msg.sender, _reward - tax);
389
+ }
390
+
391
+ function getMyRankReward(address _address) public view returns (uint) {
392
+ Account memory account = accountMap[_address];
393
+ PoolType storage globalPool = poolMap[GLOBAL_POOL_KEY];
394
+ if (globalPool.valueLeft == 0) return 0;
395
+ if (isRankRewardClaimable == false) return 0;
396
+ if (account.rankRewardClaimedAt >= rankRewardClaimableAt) return 0;
397
+ if (account.rank == Rank.NoRank) return 0;
398
+ uint distribution = 0;
399
+ uint base = 0;
400
+ if (account.rank == Rank.Common) {
401
+ distribution = rankDistribution.common;
402
+ base = (globalPool.valueLeft * 3) / 100;
403
+ }
404
+ if (account.rank == Rank.Rare) {
405
+ distribution = rankDistribution.rare;
406
+ base = (globalPool.valueLeft * 7) / 100;
407
+ }
408
+ if (account.rank == Rank.SuperRare) {
409
+ distribution = rankDistribution.superRare;
410
+ base = (globalPool.valueLeft * 12) / 100;
411
+ }
412
+ if (account.rank == Rank.Epic) {
413
+ distribution = rankDistribution.epic;
414
+ base = (globalPool.valueLeft * 18) / 100;
415
+ }
416
+ if (account.rank == Rank.Legend) {
417
+ distribution = rankDistribution.legend;
418
+ base = (globalPool.valueLeft * 26) / 100;
419
+ }
420
+ if (account.rank == Rank.SuperLegend) {
421
+ distribution = rankDistribution.superLegend;
422
+ base = (globalPool.valueLeft * 34) / 100;
423
+ }
424
+
425
+ return base / distribution;
426
+ }
427
+
428
+ function claimRankReward() public notInBlacklist {
429
+ uint myReward = getMyRankReward(msg.sender);
430
+ uint nftValue = nftGetter.totalValueMap(msg.sender);
431
+ Account storage account = accountMap[msg.sender];
432
+
433
+ require(myReward > 0, "No Reward can be claimed");
434
+ if (account.rank == Rank.Common) {
435
+ require(nftValue >= 500_000 * 10 ** gnetERC20.decimals(), "Not Eligible");
436
+ }
437
+ if (account.rank == Rank.Rare) {
438
+ require(
439
+ nftValue >= 2_000_000 * 10 ** gnetERC20.decimals(),
440
+ "Not Eligible"
441
+ );
442
+ }
443
+ if (account.rank == Rank.SuperRare) {
444
+ require(
445
+ nftValue >= 10_000_000 * 10 ** gnetERC20.decimals(),
446
+ "Not Eligible"
447
+ );
448
+ }
449
+ if (account.rank == Rank.Epic) {
450
+ require(
451
+ nftValue >= 50_000_000 * 10 ** gnetERC20.decimals(),
452
+ "Not Eligible"
453
+ );
454
+ }
455
+ if (account.rank == Rank.Legend) {
456
+ require(
457
+ nftValue >= 250_000_000 * 10 ** gnetERC20.decimals(),
458
+ "Not Eligible"
459
+ );
460
+ }
461
+ if (account.rank == Rank.SuperLegend) {
462
+ require(
463
+ nftValue >= 1_000_000_000 * 10 ** gnetERC20.decimals(),
464
+ "Not Eligible"
465
+ );
466
+ }
467
+
468
+ uint tax = (myReward * 10) / 100;
469
+ uint halfTax = tax / 2;
470
+ // claim rank reward
471
+ usdtERC20.transfer(feeReceiverAddress, halfTax);
472
+ usdtERC20.transfer(feeReceiverAddress2, halfTax);
473
+ usdtERC20.transfer(msg.sender, myReward - tax);
474
+ account.rankRewardClaimedAt = block.timestamp;
475
+ PoolType storage globalPool = poolMap[GLOBAL_POOL_KEY];
476
+ globalPool.valueLeft -= myReward;
477
+ emit ClaimRankReward(msg.sender, myReward);
478
+ }
479
+
480
+ function startClaimingRankReward() public onlyStaff {
481
+ require(isRankRewardClaimable == false, "Already started");
482
+ isRankRewardClaimable = true;
483
+ rankRewardClaimableAt = block.timestamp;
484
+
485
+ PoolType storage globalPool = poolMap[GLOBAL_POOL_KEY];
486
+ globalPool.valueLeft = globalPool.claimable;
487
+ globalPool.claimable = globalPool.claimable - globalPool.valueLeft;
488
+ nftGetter.startClaimingRankReward();
489
+ emit RankRewardOpened(block.timestamp);
490
+ }
491
+
492
+ function stopClaimingRankReward() public onlyStaff {
493
+ require(isRankRewardClaimable, "Rank reward not started");
494
+ isRankRewardClaimable = false;
495
+ PoolType storage globalPool = poolMap[GLOBAL_POOL_KEY];
496
+ globalPool.claimable += globalPool.valueLeft;
497
+ globalPool.valueLeft = 0;
498
+ nftGetter.stopClaimingRankReward();
499
+ emit RankRewardClosed(block.timestamp);
500
+ }
501
+
502
+ function blackListAddress(address addr) public onlyAdmin {
503
+ require(addr != msg.sender, "You cannot blacklist yourself");
504
+ require(addr != address(0), "You cannot blacklist address zero");
505
+ addToBlacklistMap(addr);
506
+ emit Blacklisted(addr);
507
+ }
508
+
509
+ function changeFeeRegister(uint _ipoPol, uint _referalPol) public onlyAdmin {
510
+ ipoPoolDistribution = _ipoPol;
511
+ referrerPoolDistribution = _referalPol;
512
+ }
513
+ }
@@ -0,0 +1,197 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.9;
3
+
4
+ import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
5
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
7
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
8
+
9
+ contract Swap is Initializable, OwnableUpgradeable, UUPSUpgradeable {
10
+ /// @custom:oz-upgrades-unsafe-allow constructor
11
+ constructor() {
12
+ _disableInitializers();
13
+ }
14
+
15
+ event SwapToken(
16
+ ERC20 _from,
17
+ ERC20 _to,
18
+ uint _quantity,
19
+ address _user,
20
+ uint _timeStamp
21
+ );
22
+
23
+ event AddLiquidity(ERC20 indexed token, uint amount, uint timestamp);
24
+
25
+ event RemoveLiquidity(ERC20 indexed token, uint amount, uint timestamp);
26
+
27
+ ERC20 public usdt;
28
+ ERC20 public cusdt;
29
+ ERC20 public crowd;
30
+
31
+ function initialize(
32
+ ERC20 _usdt,
33
+ ERC20 _cusdt,
34
+ ERC20 _crowd
35
+ ) public initializer {
36
+ __Ownable_init();
37
+ __UUPSUpgradeable_init();
38
+ usdt = _usdt;
39
+ cusdt = _cusdt;
40
+ crowd = _crowd;
41
+ }
42
+
43
+ function swapToCUSDT(uint _amount) public {
44
+ // USDT has 18 decimals. CUSDT has 18 decimals.
45
+ // 1:1 ratio.
46
+ uint cusdtAmount = _amount;
47
+ require(cusdt.balanceOf(address(this)) >= cusdtAmount, "Insufficient Pool");
48
+
49
+ usdt.transferFrom(msg.sender, address(this), _amount);
50
+ cusdt.transfer(msg.sender, cusdtAmount);
51
+ emit SwapToken(usdt, cusdt, _amount, msg.sender, block.timestamp);
52
+ }
53
+
54
+ function swapToCROWD(uint _amount) public {
55
+ // 1 CROWD = 0.002 USDT -> 1 USDT = 500 CROWD.
56
+ // USDT (18 dec) -> CROWD (18 dec).
57
+ // Multiplier = 500.
58
+ uint crowdAmount = _amount * 500;
59
+ require(crowd.balanceOf(address(this)) >= crowdAmount, "Insufficient Pool");
60
+
61
+ usdt.transferFrom(msg.sender, address(this), _amount);
62
+ crowd.transfer(msg.sender, crowdAmount);
63
+ emit SwapToken(usdt, crowd, _amount, msg.sender, block.timestamp);
64
+ }
65
+
66
+ function swapToUSDTFromCUSDT(uint _amount) public {
67
+ // CUSDT has 18 decimals. USDT has 18 decimals.
68
+ // 1:1 ratio.
69
+ uint usdtAmount = _amount;
70
+ require(usdt.balanceOf(address(this)) >= usdtAmount, "Insufficient Pool");
71
+
72
+ cusdt.transferFrom(msg.sender, address(this), _amount);
73
+ usdt.transfer(msg.sender, usdtAmount);
74
+ emit SwapToken(cusdt, usdt, _amount, msg.sender, block.timestamp);
75
+ }
76
+
77
+ function swapToUSDTFromCROWD(uint _amount) public {
78
+ // 1 CROWD = 0.002 USDT -> 500 CROWD = 1 USDT.
79
+ // CROWD (18 dec) -> USDT (18 dec).
80
+ // Divider = 500.
81
+ uint usdtAmount = _amount / 500;
82
+ require(usdt.balanceOf(address(this)) >= usdtAmount, "Insufficient Pool");
83
+
84
+ crowd.transferFrom(msg.sender, address(this), _amount);
85
+ usdt.transfer(msg.sender, usdtAmount);
86
+ emit SwapToken(crowd, usdt, _amount, msg.sender, block.timestamp);
87
+ }
88
+
89
+ /**
90
+ * @notice Owner adds CUSDT liquidity to the pool
91
+ * @param _amount Amount of CUSDT to add
92
+ */
93
+ function addLiquidityCUSDT(uint _amount) public onlyOwner {
94
+ require(_amount > 0, "Amount must be greater than 0");
95
+
96
+ cusdt.transferFrom(msg.sender, address(this), _amount);
97
+
98
+ emit AddLiquidity(cusdt, _amount, block.timestamp);
99
+ }
100
+
101
+ /**
102
+ * @notice Owner adds CROWD liquidity to the pool
103
+ * @param _amount Amount of CROWD to add
104
+ */
105
+ function addLiquidityCROWD(uint _amount) public onlyOwner {
106
+ require(_amount > 0, "Amount must be greater than 0");
107
+
108
+ crowd.transferFrom(msg.sender, address(this), _amount);
109
+
110
+ emit AddLiquidity(crowd, _amount, block.timestamp);
111
+ }
112
+
113
+ /**
114
+ * @notice Owner removes CUSDT liquidity from the pool
115
+ * @param _amount Amount of CUSDT to remove
116
+ */
117
+ function removeLiquidityCUSDT(uint _amount) public onlyOwner {
118
+ require(_amount > 0, "Amount must be greater than 0");
119
+ require(
120
+ cusdt.balanceOf(address(this)) >= _amount,
121
+ "Insufficient pool balance"
122
+ );
123
+
124
+ cusdt.transfer(msg.sender, _amount);
125
+
126
+ emit RemoveLiquidity(cusdt, _amount, block.timestamp);
127
+ }
128
+
129
+ /**
130
+ * @notice Owner removes CROWD liquidity from the pool
131
+ * @param _amount Amount of CROWD to remove
132
+ */
133
+ function removeLiquidityCROWD(uint _amount) public onlyOwner {
134
+ require(_amount > 0, "Amount must be greater than 0");
135
+ require(
136
+ crowd.balanceOf(address(this)) >= _amount,
137
+ "Insufficient pool balance"
138
+ );
139
+
140
+ crowd.transfer(msg.sender, _amount);
141
+
142
+ emit RemoveLiquidity(crowd, _amount, block.timestamp);
143
+ }
144
+
145
+ /**
146
+ * @notice Owner removes USDT from the pool (accumulated from swaps)
147
+ * @param _amount Amount of USDT to remove
148
+ */
149
+ function withdrawUSDT(uint _amount) public onlyOwner {
150
+ require(_amount > 0, "Amount must be greater than 0");
151
+ require(
152
+ usdt.balanceOf(address(this)) >= _amount,
153
+ "Insufficient pool balance"
154
+ );
155
+
156
+ usdt.transfer(msg.sender, _amount);
157
+ }
158
+
159
+ /**
160
+ * @notice Get pool balances for all tokens
161
+ */
162
+ function getPoolBalances()
163
+ public
164
+ view
165
+ returns (uint usdtBalance, uint cusdtBalance, uint crowdBalance)
166
+ {
167
+ return (
168
+ usdt.balanceOf(address(this)),
169
+ cusdt.balanceOf(address(this)),
170
+ crowd.balanceOf(address(this))
171
+ );
172
+ }
173
+
174
+ /**
175
+ * @notice Get CUSDT exchange rate
176
+ * @dev Returns how much CUSDT you get per 1 USDT (with 18 decimals)
177
+ * @return cusdtRate The amount of CUSDT per 1 USDT (1:1 ratio = 1e18)
178
+ */
179
+ function getCusdtRate() public pure returns (uint cusdtRate) {
180
+ // 1 USDT = 1 CUSDT (1:1 ratio)
181
+ return 1e18; // 1 USDT (18 decimals) = 1 CUSDT (18 decimals)
182
+ }
183
+
184
+ /**
185
+ * @notice Get CROWD exchange rate
186
+ * @dev Returns how much CROWD you get per 1 USDT (with 18 decimals)
187
+ * @return crowdRate The amount of CROWD per 1 USDT (500 CROWD per USDT = 500e18)
188
+ */
189
+ function getCrowdRate() public pure returns (uint crowdRate) {
190
+ // 1 USDT = 500 CROWD (or 1 CROWD = 0.002 USDT)
191
+ return 500e18; // 1 USDT (18 decimals) = 500 CROWD (18 decimals)
192
+ }
193
+
194
+ function _authorizeUpgrade(
195
+ address newImplementation
196
+ ) internal override onlyOwner {}
197
+ }