@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e43a6c3-340

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 (363) hide show
  1. package/README.md +108 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +204 -31
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -59
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +245 -65
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +314 -41
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +325 -1744
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2300 -1340
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +488 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +149 -2
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  69. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  72. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  78. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  80. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  82. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  84. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  86. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  88. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +178 -41
  90. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +212 -22
  92. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  94. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +230 -24
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +456 -0
  106. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  108. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +294 -99
  110. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +297 -18
  112. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/Registry.sol/Registry.json +249 -137
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +447 -39
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +107 -42
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  121. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
  128. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
  137. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  138. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +137 -39
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +106 -94
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +142 -14
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
  160. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  161. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  162. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  166. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  167. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  169. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  171. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  173. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  174. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  175. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  177. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  179. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  181. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  183. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  189. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  191. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  193. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  195. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  197. package/contracts/components/BaseComponent.sol +16 -4
  198. package/contracts/components/Distribution.sol +21 -16
  199. package/contracts/components/IBaseComponent.sol +9 -3
  200. package/contracts/components/IDistributionComponent.sol +2 -4
  201. package/contracts/components/IPoolComponent.sol +0 -2
  202. package/contracts/components/IProductComponent.sol +2 -4
  203. package/contracts/components/Pool.sol +24 -27
  204. package/contracts/components/Product.sol +41 -43
  205. package/contracts/experiment/cloning/Cloner.sol +47 -0
  206. package/contracts/instance/AccessManagedSimple.sol +115 -0
  207. package/contracts/instance/AccessManagerSimple.sol +692 -0
  208. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  209. package/contracts/instance/IInstance.sol +32 -47
  210. package/contracts/instance/IInstanceService.sol +30 -0
  211. package/contracts/instance/Instance.sol +423 -65
  212. package/contracts/instance/InstanceAccessManager.sol +288 -0
  213. package/contracts/instance/InstanceReader.sol +306 -0
  214. package/contracts/instance/InstanceService.sol +183 -0
  215. package/contracts/instance/InstanceServiceManager.sol +57 -0
  216. package/contracts/instance/base/ComponentServiceBase.sol +83 -8
  217. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  218. package/contracts/instance/base/ILifecycle.sol +3 -3
  219. package/contracts/instance/base/KeyValueStore.sol +49 -38
  220. package/contracts/instance/base/Lifecycle.sol +1 -1
  221. package/contracts/instance/module/IAccess.sol +38 -0
  222. package/contracts/instance/module/IBundle.sol +20 -0
  223. package/contracts/instance/module/IDistribution.sol +39 -0
  224. package/contracts/instance/module/IPolicy.sol +45 -0
  225. package/contracts/instance/module/IRisk.sol +11 -0
  226. package/contracts/instance/module/ISetup.sol +44 -0
  227. package/contracts/instance/module/ITreasury.sol +23 -0
  228. package/contracts/instance/service/ComponentOwnerService.sol +145 -100
  229. package/contracts/instance/service/DistributionService.sol +49 -15
  230. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  231. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  232. package/contracts/instance/service/IDistributionService.sol +1 -1
  233. package/contracts/instance/service/IPoolService.sol +1 -1
  234. package/contracts/instance/service/IProductService.sol +3 -3
  235. package/contracts/instance/service/PoolService.sol +97 -52
  236. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  237. package/contracts/registry/ChainNft.sol +40 -25
  238. package/contracts/registry/IRegistry.sol +48 -27
  239. package/contracts/registry/IRegistryService.sol +36 -15
  240. package/contracts/registry/Registry.sol +167 -168
  241. package/contracts/registry/RegistryService.sol +149 -166
  242. package/contracts/registry/RegistryServiceManager.sol +38 -10
  243. package/contracts/registry/TokenRegistry.sol +111 -0
  244. package/contracts/shared/ERC165.sol +7 -3
  245. package/contracts/shared/INftOwnable.sol +22 -0
  246. package/contracts/shared/IRegisterable.sol +3 -8
  247. package/contracts/{instance/base → shared}/IService.sol +3 -3
  248. package/contracts/shared/NftOwnable.sol +83 -34
  249. package/contracts/shared/ProxyManager.sol +3 -12
  250. package/contracts/shared/Registerable.sol +15 -42
  251. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  252. package/contracts/shared/Service.sol +55 -0
  253. package/contracts/shared/TokenHandler.sol +27 -0
  254. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  255. package/contracts/shared/Versionable.sol +3 -3
  256. package/contracts/test/TestFee.sol +2 -2
  257. package/contracts/test/TestRoleId.sol +1 -1
  258. package/contracts/test/TestService.sol +3 -5
  259. package/contracts/types/DistributorType.sol +55 -0
  260. package/contracts/types/Fee.sol +3 -3
  261. package/contracts/types/Key32.sol +8 -3
  262. package/contracts/types/NumberId.sol +52 -0
  263. package/contracts/types/ObjectType.sol +35 -14
  264. package/contracts/types/Referral.sol +85 -0
  265. package/contracts/types/RoleId.sol +60 -9
  266. package/contracts/types/StateId.sol +5 -1
  267. package/contracts/types/Timestamp.sol +7 -3
  268. package/contracts/types/UFixed.sol +128 -12
  269. package/contracts/types/Version.sol +4 -1
  270. package/package.json +4 -3
  271. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  272. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  273. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  274. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  275. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  276. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  277. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  279. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  281. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  282. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  283. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  284. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  285. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  286. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  287. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  288. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  289. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  291. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  293. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  295. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  297. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  298. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  300. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  301. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  303. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  305. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  307. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  309. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  310. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  312. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  314. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  315. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  316. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  317. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  318. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  319. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  321. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  322. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  323. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  324. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  325. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  326. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  327. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  328. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  329. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  330. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  331. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  332. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  333. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  334. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  335. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  336. package/contracts/instance/IInstanceLinked.sol +0 -8
  337. package/contracts/instance/base/InstanceBase.sol +0 -89
  338. package/contracts/instance/base/ModuleBase.sol +0 -57
  339. package/contracts/instance/base/ServiceBase.sol +0 -43
  340. package/contracts/instance/module/access/Access.sol +0 -149
  341. package/contracts/instance/module/access/IAccess.sol +0 -53
  342. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  343. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  344. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  345. package/contracts/instance/module/component/IComponent.sol +0 -28
  346. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  347. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  348. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  349. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  350. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  351. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  352. package/contracts/instance/module/risk/IRisk.sol +0 -26
  353. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  354. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  355. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  356. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  357. package/contracts/instance/service/ProductService.sol +0 -510
  358. package/contracts/registry/IChainNft.sol +0 -22
  359. package/contracts/shared/IOwnable.sol +0 -6
  360. package/contracts/test/TestDistribution.sol +0 -22
  361. package/contracts/test/TestPool.sol +0 -27
  362. package/contracts/test/TestProduct.sol +0 -74
  363. package/contracts/types/ReferralId.sol +0 -48
@@ -4,7 +4,7 @@ pragma solidity ^0.8.19;
4
4
  import {RoleId, RoleIdLib, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
5
5
 
6
6
  contract TestRoleId {
7
- function getRole(string memory roleName) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleName); }
7
+ function getRole(uint256 roleNum) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleNum); }
8
8
 
9
9
  function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
10
10
  function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
@@ -3,21 +3,19 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {NftId} from "../../contracts/types/NftId.sol";
5
5
  import {Version, VersionLib} from "../../contracts/types/Version.sol";
6
- import {ServiceBase} from "../../contracts/instance/base/ServiceBase.sol";
6
+ import {Service} from "../../contracts/shared/Service.sol";
7
7
 
8
8
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
9
9
  import {Versionable} from "../../contracts/shared/Versionable.sol";
10
10
 
11
- //import {IService} from "../../contracts/instance/base/IService.sol";
12
-
13
- contract TestService is ServiceBase {
11
+ contract TestService is Service {
14
12
 
15
13
  string public constant NAME = "TestService";
16
14
 
17
15
  constructor(address registry, NftId registryNftId, address initialOwner)
18
16
  // solhint-disable-next-line no-empty-blocks
19
17
  {
20
- _initializeServiceBase(registry, registryNftId, initialOwner);
18
+ _initializeService(registry, initialOwner);
21
19
  }
22
20
 
23
21
  function getName() public pure override returns(string memory name) {
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
6
+ import {DISTRIBUTION_TYPE} from "./ObjectType.sol";
7
+
8
+ type DistributorType is bytes8;
9
+
10
+ // type bindings
11
+ using {
12
+ eqDistributorType as ==,
13
+ neDistributorType as !=,
14
+ DistributorTypeLib.toKey32
15
+ } for DistributorType global;
16
+
17
+ // general pure free functions
18
+
19
+ // pure free functions for operators
20
+ function eqDistributorType(
21
+ DistributorType a,
22
+ DistributorType b
23
+ ) pure returns (bool isSame) {
24
+ return DistributorType.unwrap(a) == DistributorType.unwrap(b);
25
+ }
26
+
27
+ function neDistributorType(
28
+ DistributorType a,
29
+ DistributorType b
30
+ ) pure returns (bool isDifferent) {
31
+ return DistributorType.unwrap(a) != DistributorType.unwrap(b);
32
+ }
33
+
34
+ // library functions that operate on user defined type
35
+ library DistributorTypeLib {
36
+
37
+ function zero() public pure returns (DistributorType) {
38
+ return DistributorType.wrap(bytes8(0));
39
+ }
40
+
41
+ // @dev Converts a referral string into an id.
42
+ function toDistributorType(NftId distributionNftId, string memory name) public pure returns (DistributorType) {
43
+ return DistributorType.wrap(bytes8(keccak256(abi.encode(distributionNftId, name))));
44
+ }
45
+
46
+ /// @dev Returns the key32 value for the specified nft id and object type.
47
+ function toKey32(DistributorType id) public pure returns (Key32 key) {
48
+ return Key32Lib.toKey32(DISTRIBUTION_TYPE(), toKeyId(id));
49
+ }
50
+
51
+ /// @dev Returns the key id value for the specified nft id
52
+ function toKeyId(DistributorType id) public pure returns (KeyId keyId) {
53
+ return KeyId.wrap(bytes31(DistributorType.unwrap(id)));
54
+ }
55
+ }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {UFixed, UFixedMathLib} from "./UFixed.sol";
4
+ import {UFixed, UFixedLib} from "./UFixed.sol";
5
5
 
6
6
  struct Fee {
7
7
  UFixed fractionalFee;
@@ -21,7 +21,7 @@ library FeeLib {
21
21
  uint256 netAmount
22
22
  )
23
23
  {
24
- UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
24
+ UFixed fractionalAmount = UFixedLib.toUFixed(amount) *
25
25
  fee.fractionalFee;
26
26
  feeAmount = fractionalAmount.toInt() + fee.fixedFee;
27
27
  netAmount = amount - feeAmount;
@@ -37,7 +37,7 @@ library FeeLib {
37
37
 
38
38
  /// @dev Return the percent fee struct (x%, 0)
39
39
  function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
40
- return Fee(UFixedMathLib.toUFixed(percent, -2), 0);
40
+ return Fee(UFixedLib.toUFixed(percent, -2), 0);
41
41
  }
42
42
 
43
43
  /// @dev Return a zero fee struct (0, 0)
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ObjectType} from "./ObjectType.sol";
5
5
 
@@ -10,7 +10,8 @@ type KeyId is bytes31;
10
10
  using {
11
11
  eqKey32 as ==,
12
12
  neKey32 as !=,
13
- Key32Lib.toKey
13
+ Key32Lib.toKeyId,
14
+ Key32Lib.toObjectType
14
15
  } for Key32 global;
15
16
 
16
17
  // @dev Returns true iff keys are identical
@@ -37,9 +38,13 @@ library Key32Lib {
37
38
  return Key32.wrap(bytes32(uintKey));
38
39
  }
39
40
 
40
- function toKey(Key32 key) public pure returns (ObjectType objectType, KeyId id) {
41
+ function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
41
42
  bytes32 key32 = Key32.unwrap(key);
42
43
  objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
44
+ }
45
+
46
+ function toKeyId(Key32 key) public pure returns (KeyId id) {
47
+ bytes32 key32 = Key32.unwrap(key);
43
48
  id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
44
49
  }
45
50
  }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // uint32 allows for 4'294'967'296 individual items
5
+ type NumberId is uint32;
6
+
7
+ // type bindings
8
+ using {
9
+ eqNumberId as ==,
10
+ neNumberId as !=,
11
+ NumberIdLib.eqz,
12
+ NumberIdLib.gtz,
13
+ NumberIdLib.toInt
14
+ } for NumberId global;
15
+
16
+
17
+ // pure free functions for operators
18
+ function eqNumberId(NumberId a, NumberId b) pure returns (bool isSame) {
19
+ return NumberId.unwrap(a) == NumberId.unwrap(b);
20
+ }
21
+
22
+ function neNumberId(NumberId a, NumberId b) pure returns (bool isDifferent) {
23
+ return NumberId.unwrap(a) != NumberId.unwrap(b);
24
+ }
25
+
26
+ // library functions that operate on user defined type
27
+ library NumberIdLib {
28
+ /// @dev Converts the NumberId to a uint.
29
+ function zero() public pure returns (NumberId) {
30
+ return NumberId.wrap(0);
31
+ }
32
+
33
+ /// @dev Converts an uint into a NumberId.
34
+ function toNumberId(uint256 a) public pure returns (NumberId) {
35
+ return NumberId.wrap(uint32(a));
36
+ }
37
+
38
+ /// @dev Converts the NumberId to a uint.
39
+ function toInt(NumberId a) public pure returns (uint32) {
40
+ return uint32(NumberId.unwrap(a));
41
+ }
42
+
43
+ /// @dev Returns true if the value is non-zero (> 0).
44
+ function gtz(NumberId a) public pure returns (bool) {
45
+ return NumberId.unwrap(a) > 0;
46
+ }
47
+
48
+ /// @dev Returns true if the value is zero (== 0).
49
+ function eqz(NumberId a) public pure returns (bool) {
50
+ return NumberId.unwrap(a) == 0;
51
+ }
52
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  type ObjectType is uint8;
5
5
 
@@ -17,34 +17,47 @@ function PROTOCOL() pure returns (ObjectType) {
17
17
  return toObjectType(10);
18
18
  }
19
19
 
20
- function REGISTRY() pure returns (ObjectType) {
20
+ function ROLE() pure returns (ObjectType) {
21
21
  return toObjectType(20);
22
22
  }
23
23
 
24
- function TOKEN() pure returns (ObjectType) {
24
+ function TARGET() pure returns (ObjectType) {
25
25
  return toObjectType(30);
26
26
  }
27
27
 
28
- function SERVICE() pure returns (ObjectType) {
28
+ function REGISTRY() pure returns (ObjectType) {
29
29
  return toObjectType(40);
30
30
  }
31
31
 
32
- function INSTANCE() pure returns (ObjectType) {
32
+ function TOKEN() pure returns (ObjectType) {
33
33
  return toObjectType(50);
34
34
  }
35
35
 
36
- function STAKE() pure returns (ObjectType) {
36
+ function SERVICE() pure returns (ObjectType) {
37
37
  return toObjectType(60);
38
38
  }
39
39
 
40
+ function INSTANCE() pure returns (ObjectType) {
41
+ return toObjectType(70);
42
+ }
43
+
44
+ function STAKE() pure returns (ObjectType) {
45
+ return toObjectType(80);
46
+ }
47
+
40
48
  function COMPONENT() pure returns (ObjectType) {
41
49
  return toObjectType(100);
42
50
  }
43
51
 
52
+ // TODO replace by PRODUCT_SETUP
44
53
  function TREASURY() pure returns (ObjectType) {
45
54
  return toObjectType(101);
46
55
  }
47
56
 
57
+ function PRODUCT_SETUP() pure returns (ObjectType) {
58
+ return toObjectType(101);
59
+ }
60
+
48
61
  function PRODUCT() pure returns (ObjectType) {
49
62
  return toObjectType(110);
50
63
  }
@@ -53,6 +66,18 @@ function DISTRIBUTION() pure returns (ObjectType) {
53
66
  return toObjectType(120);
54
67
  }
55
68
 
69
+ function DISTRIBUTION_TYPE() pure returns (ObjectType) {
70
+ return toObjectType(121);
71
+ }
72
+
73
+ function DISTRIBUTOR() pure returns (ObjectType) {
74
+ return toObjectType(122);
75
+ }
76
+
77
+ function REFERRAL() pure returns (ObjectType) {
78
+ return toObjectType(123);
79
+ }
80
+
56
81
  function ORACLE() pure returns (ObjectType) {
57
82
  return toObjectType(130);
58
83
  }
@@ -69,20 +94,16 @@ function POLICY() pure returns (ObjectType) {
69
94
  return toObjectType(210);
70
95
  }
71
96
 
72
- function REFERRAL() pure returns (ObjectType) {
73
- return toObjectType(212);
97
+ function BUNDLE() pure returns (ObjectType) {
98
+ return toObjectType(220);
74
99
  }
75
100
 
76
101
  function CLAIM() pure returns (ObjectType) {
77
- return toObjectType(214);
102
+ return toObjectType(211);
78
103
  }
79
104
 
80
105
  function PAYOUT() pure returns (ObjectType) {
81
- return toObjectType(216);
82
- }
83
-
84
- function BUNDLE() pure returns (ObjectType) {
85
- return toObjectType(220);
106
+ return toObjectType(212);
86
107
  }
87
108
 
88
109
  /// @dev Converts the uint8 to a ObjectType.
@@ -0,0 +1,85 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
6
+ import {REFERRAL} from "./ObjectType.sol";
7
+
8
+ type ReferralId is bytes8;
9
+ type ReferralStatus is uint8;
10
+
11
+ // type bindings
12
+ using {
13
+ eqReferralId as ==,
14
+ neReferralId as !=,
15
+ ReferralLib.toKey32
16
+ } for ReferralId global;
17
+
18
+ using {
19
+ eqReferralStatus as ==,
20
+ neReferralStatus as !=
21
+ } for ReferralStatus global;
22
+
23
+ // general pure free functions
24
+
25
+ // @dev Returns true iff a and b are identical
26
+ function eqReferralId(ReferralId a, ReferralId b) pure returns (bool isSame) {
27
+ return ReferralId.unwrap(a) == ReferralId.unwrap(b);
28
+ }
29
+
30
+ // @dev Returns true iff a and b are different
31
+ function neReferralId(ReferralId a, ReferralId b) pure returns (bool isDifferent) {
32
+ return ReferralId.unwrap(a) != ReferralId.unwrap(b);
33
+ }
34
+
35
+ // @dev Returns true iff a and b are identical
36
+ function eqReferralStatus(ReferralStatus a, ReferralStatus b) pure returns (bool isSame) {
37
+ return ReferralStatus.unwrap(a) == ReferralStatus.unwrap(b);
38
+ }
39
+
40
+ // @dev Returns true iff a and b are different
41
+ function neReferralStatus(ReferralStatus a, ReferralStatus b) pure returns (bool isDifferent) {
42
+ return ReferralStatus.unwrap(a) != ReferralStatus.unwrap(b);
43
+ }
44
+
45
+ function REFERRAL_OK() pure returns (ReferralStatus) {
46
+ return ReferralStatus.wrap(10);
47
+ }
48
+
49
+ function REFERRAL_ERROR_UNKNOWN() pure returns (ReferralStatus) {
50
+ return ReferralStatus.wrap(100);
51
+ }
52
+
53
+ function REFERRAL_ERROR_EXPIRED() pure returns (ReferralStatus) {
54
+ return ReferralStatus.wrap(110);
55
+ }
56
+
57
+ function REFERRAL_ERROR_EXHAUSTED() pure returns (ReferralStatus) {
58
+ return ReferralStatus.wrap(120);
59
+ }
60
+
61
+ library ReferralLib {
62
+
63
+ function zero() public pure returns (ReferralId) {
64
+ return ReferralId.wrap(bytes8(0));
65
+ }
66
+
67
+ // @dev Converts a referral string into an id.
68
+ function toReferralId(NftId distributionNftId, string memory referral) public pure returns (ReferralId) {
69
+ return ReferralId.wrap(bytes8(keccak256(abi.encode(distributionNftId, referral))));
70
+ }
71
+
72
+ function toReferralStatus(uint8 status) public pure returns (ReferralStatus) {
73
+ return ReferralStatus.wrap(status);
74
+ }
75
+
76
+ /// @dev Returns the key32 value for the specified nft id and object type.
77
+ function toKey32(ReferralId id) public pure returns (Key32 key) {
78
+ return Key32Lib.toKey32(REFERRAL(), toKeyId(id));
79
+ }
80
+
81
+ /// @dev Returns the key id value for the specified nft id
82
+ function toKeyId(ReferralId id) public pure returns (KeyId keyId) {
83
+ return KeyId.wrap(bytes31(ReferralId.unwrap(id)));
84
+ }
85
+ }
@@ -1,12 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- type RoleId is bytes8;
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {ROLE} from "./ObjectType.sol";
6
+
7
+ type RoleId is uint64;
5
8
 
6
9
  // type bindings
7
10
  using {
8
11
  eqRoleId as ==,
9
- neRoleId as !=
12
+ neRoleId as !=,
13
+ RoleIdLib.eqz,
14
+ RoleIdLib.gtz,
15
+ RoleIdLib.toInt,
16
+ RoleIdLib.toKey32
10
17
  } for RoleId global;
11
18
 
12
19
  // general pure free functions
@@ -15,10 +22,24 @@ function ORACLE_OWNER_ROLE_NAME() pure returns (string memory) { return "OracleO
15
22
  function POOL_OWNER_ROLE_NAME() pure returns (string memory) { return "PoolOwnerRole"; }
16
23
  function PRODUCT_OWNER_ROLE_NAME() pure returns (string memory) { return "ProductOwnerRole"; }
17
24
 
18
- function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("DistributionOwnerRole"); }
19
- function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("OracleOwnerRole"); }
20
- function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("PoolOwnerRole"); }
21
- function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId("ProductOwnerRole"); }
25
+ function ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(0); }
26
+
27
+ // TODO correct numbers (maybe they are already defined in RegistryService)
28
+ function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(100); }
29
+ function ORACLE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(200); }
30
+ function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(300); }
31
+ function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(400); }
32
+
33
+ function DISTRIBUTION_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1000); }
34
+ function POLICY_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1100); }
35
+ function BUNDLE_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1200); }
36
+ function POOL_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1300); }
37
+ function PRODUCT_REGISTRAR_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1400); }
38
+
39
+ function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(10000); }
40
+ function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(10100); }
41
+
42
+ function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(11000); }
22
43
 
23
44
  // @dev Returns true iff role ids a and b are identical
24
45
  function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
@@ -31,8 +52,38 @@ function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
31
52
  }
32
53
 
33
54
  library RoleIdLib {
34
- // @dev Converts a role string into a role id.
35
- function toRoleId(string memory role) public pure returns (RoleId) {
36
- return RoleId.wrap(bytes8(keccak256(abi.encode(role))));
55
+ /// @dev Converts the RoleId to a uint.
56
+ function zero() public pure returns (RoleId) {
57
+ return RoleId.wrap(0);
58
+ }
59
+
60
+ /// @dev Converts an uint into a RoleId.
61
+ function toRoleId(uint256 a) public pure returns (RoleId) {
62
+ return RoleId.wrap(uint64(a));
63
+ }
64
+
65
+ /// @dev Converts the RoleId to a uint.
66
+ function toInt(RoleId a) public pure returns (uint64) {
67
+ return uint64(RoleId.unwrap(a));
68
+ }
69
+
70
+ /// @dev Returns true if the value is non-zero (> 0).
71
+ function gtz(RoleId a) public pure returns (bool) {
72
+ return RoleId.unwrap(a) > 0;
73
+ }
74
+
75
+ /// @dev Returns true if the value is zero (== 0).
76
+ function eqz(RoleId a) public pure returns (bool) {
77
+ return RoleId.unwrap(a) == 0;
78
+ }
79
+
80
+ /// @dev Returns the key32 value for the specified id and object type.
81
+ function toKey32(RoleId a) public pure returns (Key32 key) {
82
+ return Key32Lib.toKey32(ROLE(), toKeyId(a));
83
+ }
84
+
85
+ /// @dev Returns the key id value for the specified id
86
+ function toKeyId(RoleId a) public pure returns (KeyId keyId) {
87
+ return KeyId.wrap(bytes31(uint248(RoleId.unwrap(a))));
37
88
  }
38
89
  }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  // uint96 allows for chain ids up to 13 digits
5
5
  type StateId is uint8;
@@ -58,6 +58,10 @@ function PAID() pure returns (StateId) {
58
58
  return toStateId(220);
59
59
  }
60
60
 
61
+ function KEEP_STATE() pure returns (StateId) {
62
+ return toStateId(type(uint8).max);
63
+ }
64
+
61
65
  /// @dev Converts the uint8 to a StateId.
62
66
  function toStateId(uint256 id) pure returns (StateId) {
63
67
  return StateId.wrap(uint8(id));
@@ -50,9 +50,9 @@ function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
50
50
  return Timestamp.wrap(uint40(timestamp));
51
51
  }
52
52
 
53
- function blockTimestamp() view returns (Timestamp) {
54
- return toTimestamp(block.timestamp);
55
- }
53
+ // function blockTimestamp() view returns (Timestamp) {
54
+ // return toTimestamp(block.timestamp);
55
+ // }
56
56
 
57
57
  /// @dev Return the Timestamp zero (0)
58
58
  function zeroTimestamp() pure returns (Timestamp) {
@@ -60,6 +60,10 @@ function zeroTimestamp() pure returns (Timestamp) {
60
60
  }
61
61
 
62
62
  library TimestampLib {
63
+ function blockTimestamp() public view returns (Timestamp) {
64
+ return Timestamp.wrap(uint40(block.timestamp));
65
+ }
66
+
63
67
  /// @dev return true if Timestamp a is after Timestamp b
64
68
  function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {
65
69
  return gtTimestamp(a, b);