@etherisc/gif-next 0.0.2-9a053fa-993 → 0.0.2-9b434da-265

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 (339) hide show
  1. package/README.md +84 -6
  2. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +115 -48
  4. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  5. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  6. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  7. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  8. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  9. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  10. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  11. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  12. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  13. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  14. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  20. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  24. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  26. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  28. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  30. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  31. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  32. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  33. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  34. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  35. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  36. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/Instance.sol/Instance.json +2356 -1124
  38. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  40. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +117 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +506 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{service/IPoolService.sol/IPoolService.json → base/IService.sol/IService.json} +171 -126
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +736 -0
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  52. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{service/IProductService.sol/IProductService.json → base/ServiceBase.sol/ServiceBase.json} +189 -198
  54. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  56. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  58. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  60. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  62. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IRisk.sol/IRisk.json} +2 -2
  64. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/{pool/IPoolModule.sol/IPool.json → ISetup.sol/ISetup.json} +2 -2
  66. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  68. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  69. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  70. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  71. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  72. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  73. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +298 -39
  74. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  75. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -0
  76. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  77. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  78. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  79. package/artifacts/contracts/registry/Registry.sol/Registry.json +489 -120
  80. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  81. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1013 -0
  82. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +476 -0
  84. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  85. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  86. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  87. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  88. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  89. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  90. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  91. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  92. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  93. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
  94. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  95. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  96. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  97. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  98. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  99. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  100. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  101. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  102. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  103. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  104. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  105. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +83 -19
  106. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  107. package/artifacts/contracts/test/TestFee.sol/TestFee.json +28 -4
  108. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  109. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  110. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  111. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +3 -75
  112. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  113. package/artifacts/contracts/test/TestService.sol/TestService.json +277 -84
  114. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  115. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +2 -2
  116. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  117. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  118. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  119. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +106 -50
  120. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  121. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  122. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  123. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  124. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  125. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  126. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  127. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  128. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  129. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  130. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  131. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  132. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  133. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  134. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  135. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  136. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  137. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  138. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  139. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  140. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  141. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  142. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  143. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  144. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  145. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  146. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  147. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  148. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  149. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  150. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  151. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  152. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  153. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +34 -8
  154. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  155. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  156. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  158. package/contracts/components/IBaseComponent.sol +4 -4
  159. package/contracts/instance/AccessManagedSimple.sol +114 -0
  160. package/contracts/instance/AccessManagerSimple.sol +682 -0
  161. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  162. package/contracts/instance/Instance.sol +376 -48
  163. package/contracts/instance/InstanceAccessManager.sol +288 -0
  164. package/contracts/instance/InstanceService.sol +45 -0
  165. package/contracts/instance/base/IKeyValueStore.sol +48 -0
  166. package/contracts/instance/base/ILifecycle.sol +30 -0
  167. package/contracts/instance/base/KeyValueStore.sol +188 -0
  168. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +51 -40
  169. package/contracts/instance/base/ServiceBase.sol +44 -0
  170. package/contracts/instance/module/IAccess.sol +38 -0
  171. package/contracts/instance/module/IBundle.sol +19 -0
  172. package/contracts/instance/module/IDistribution.sol +39 -0
  173. package/contracts/instance/module/IPolicy.sol +45 -0
  174. package/contracts/instance/module/IRisk.sol +11 -0
  175. package/contracts/instance/module/ISetup.sol +41 -0
  176. package/contracts/instance/module/ITreasury.sol +23 -0
  177. package/contracts/registry/ChainNft.sol +43 -15
  178. package/contracts/registry/IChainNft.sol +3 -2
  179. package/contracts/registry/IRegistry.sol +42 -26
  180. package/contracts/registry/IRegistryService.sol +29 -0
  181. package/contracts/registry/ITransferInterceptor.sol +6 -0
  182. package/contracts/registry/Registry.sol +385 -275
  183. package/contracts/registry/RegistryService.sol +369 -0
  184. package/contracts/registry/RegistryServiceManager.sol +43 -0
  185. package/contracts/shared/ContractDeployerLib.sol +72 -0
  186. package/contracts/shared/ERC165.sol +1 -1
  187. package/contracts/shared/INftOwnable.sol +22 -0
  188. package/contracts/shared/IRegisterable.sol +9 -16
  189. package/contracts/shared/IVersionable.sol +56 -12
  190. package/contracts/shared/NftOwnable.sol +136 -0
  191. package/contracts/shared/ProxyManager.sol +94 -0
  192. package/contracts/shared/Registerable.sol +62 -59
  193. package/contracts/shared/TokenHandler.sol +27 -0
  194. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  195. package/contracts/shared/Versionable.sol +112 -57
  196. package/contracts/test/TestFee.sol +3 -3
  197. package/contracts/test/TestRegisterable.sol +5 -6
  198. package/contracts/test/TestRoleId.sol +6 -6
  199. package/contracts/test/TestService.sol +7 -16
  200. package/contracts/test/TestVersion.sol +4 -7
  201. package/contracts/test/TestVersionable.sol +2 -5
  202. package/contracts/test/Usdc.sol +26 -0
  203. package/contracts/types/DistributorType.sol +55 -0
  204. package/contracts/types/Fee.sol +44 -20
  205. package/contracts/types/Key32.sol +50 -0
  206. package/contracts/types/NftId.sol +16 -1
  207. package/contracts/types/NumberId.sol +52 -0
  208. package/contracts/types/ObjectType.sol +51 -14
  209. package/contracts/types/Referral.sol +85 -0
  210. package/contracts/types/RiskId.sol +43 -0
  211. package/contracts/types/RoleId.sol +51 -12
  212. package/contracts/types/StateId.sol +8 -2
  213. package/contracts/types/Timestamp.sol +7 -3
  214. package/contracts/types/UFixed.sol +19 -16
  215. package/contracts/types/Version.sol +38 -25
  216. package/package.json +5 -2
  217. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  218. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  219. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  220. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  221. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  222. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  223. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  224. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  225. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  226. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  227. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +0 -4
  228. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +0 -2022
  229. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  230. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  231. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  232. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  233. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  234. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -313
  235. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  236. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  237. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  238. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  239. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  240. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  241. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  242. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  243. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  244. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  245. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  246. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  247. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  248. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  249. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  250. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  251. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  252. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  253. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  254. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  255. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  256. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  257. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  258. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  259. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  260. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  261. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  262. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  264. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  265. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  266. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  267. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.json +0 -10
  268. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  269. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.json +0 -10
  270. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  271. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -538
  273. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  274. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  275. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -538
  277. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  278. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -519
  279. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  280. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  281. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  282. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  283. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  284. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  285. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  286. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  287. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  288. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -499
  289. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  290. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -685
  291. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  292. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  293. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  294. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  295. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  296. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  297. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  298. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  299. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  300. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  301. package/contracts/components/BaseComponent.sol +0 -89
  302. package/contracts/components/IPoolComponent.sol +0 -57
  303. package/contracts/components/IProductComponent.sol +0 -19
  304. package/contracts/components/Pool.sol +0 -174
  305. package/contracts/components/Product.sol +0 -117
  306. package/contracts/experiment/statemachine/README.md +0 -112
  307. package/contracts/instance/IInstance.sol +0 -50
  308. package/contracts/instance/IInstanceLinked.sol +0 -8
  309. package/contracts/instance/IServiceLinked.sol +0 -12
  310. package/contracts/instance/InstanceBase.sol +0 -74
  311. package/contracts/instance/module/access/Access.sol +0 -149
  312. package/contracts/instance/module/access/IAccess.sol +0 -53
  313. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  314. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  315. package/contracts/instance/module/component/ComponentModule.sol +0 -104
  316. package/contracts/instance/module/component/IComponent.sol +0 -53
  317. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  318. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  319. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  320. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  321. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  322. package/contracts/instance/module/product/IProductModule.sol +0 -6
  323. package/contracts/instance/module/product/ProductModule.sol +0 -8
  324. package/contracts/instance/module/treasury/ITreasury.sol +0 -104
  325. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  326. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -148
  327. package/contracts/instance/service/ComponentOwnerService.sol +0 -174
  328. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  329. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  330. package/contracts/instance/service/IPoolService.sol +0 -30
  331. package/contracts/instance/service/IProductService.sol +0 -58
  332. package/contracts/instance/service/PoolService.sol +0 -98
  333. package/contracts/instance/service/ProductService.sol +0 -358
  334. package/contracts/instance/service/ServiceBase.sol +0 -39
  335. package/contracts/registry/IRegistryLinked.sol +0 -8
  336. package/contracts/shared/IOwnable.sol +0 -6
  337. package/contracts/test/TestPool.sol +0 -22
  338. package/contracts/test/TestProduct.sol +0 -44
  339. /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -1,14 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {RoleId, toRoleId, PRODUCT_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE_NAME, POOL_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
4
+ import {RoleId, RoleIdLib} from "../../contracts/types/RoleId.sol";
5
5
 
6
6
  contract TestRoleId {
7
- function getRole(string memory roleName) external pure returns (RoleId) { return toRoleId(roleName); }
7
+ // function getRole(string memory roleName) external pure returns (RoleId) { return RoleIdLib.toRoleId(roleName); }
8
8
 
9
- function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
10
- function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
9
+ // function getProductOwnerRoleName() external pure returns (string memory) { return PRODUCT_OWNER_ROLE_NAME(); }
10
+ // function getProductOwnerRole() external pure returns (RoleId) { return PRODUCT_OWNER_ROLE(); }
11
11
 
12
- function getPoolOwnerRoleName() external pure returns (string memory) { return POOL_OWNER_ROLE_NAME(); }
13
- function getPoolOwnerRole() external pure returns (RoleId) { return POOL_OWNER_ROLE(); }
12
+ // function getPoolOwnerRoleName() external pure returns (string memory) { return POOL_OWNER_ROLE_NAME(); }
13
+ // function getPoolOwnerRole() external pure returns (RoleId) { return POOL_OWNER_ROLE(); }
14
14
  }
@@ -2,34 +2,25 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {NftId} from "../../contracts/types/NftId.sol";
5
- import {Version, toVersion, toVersionPart} from "../../contracts/types/Version.sol";
6
- import {ServiceBase} from "../../contracts/instance/service/ServiceBase.sol";
5
+ import {Version, VersionLib} from "../../contracts/types/Version.sol";
6
+ import {ServiceBase} from "../../contracts/instance/base/ServiceBase.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
+
11
13
  contract TestService is ServiceBase {
12
14
 
13
15
  string public constant NAME = "TestService";
14
16
 
15
- constructor(address registry, NftId registryNftId)
16
- ServiceBase(registry, registryNftId)
17
+ constructor(address registry, NftId registryNftId, address initialOwner)
17
18
  // solhint-disable-next-line no-empty-blocks
18
- {}
19
-
20
- function getVersion()
21
- public
22
- pure
23
- virtual override (IVersionable, Versionable)
24
- returns(Version)
25
19
  {
26
- return toVersion(
27
- toVersionPart(3),
28
- toVersionPart(0),
29
- toVersionPart(0));
20
+ _initializeServiceBase(registry, registryNftId, initialOwner);
30
21
  }
31
22
 
32
- function getName() external pure override returns(string memory name) {
23
+ function getName() public pure override returns(string memory name) {
33
24
  return NAME;
34
25
  }
35
26
  }
@@ -1,19 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Version, VersionPart, toVersion, toVersionPart, zeroVersion} from "../types/Version.sol";
4
+ import {Version, VersionPart, VersionLib} from "../types/Version.sol";
5
5
 
6
6
  contract TestVersion {
7
7
 
8
8
  function createVersion(uint major, uint minor, uint patch) external pure returns(Version) {
9
- return toVersion(
10
- toVersionPart(uint8(major)),
11
- toVersionPart(uint8(minor)),
12
- toVersionPart(uint8(patch)));
9
+ return VersionLib.toVersion(major, minor, patch);
13
10
  }
14
11
 
15
12
  function createVersionPart(uint versionPart) external pure returns(VersionPart) {
16
- return toVersionPart(uint8(versionPart));
13
+ return VersionLib.toVersionPart(uint8(versionPart));
17
14
  }
18
15
 
19
16
  function getVersionParts(Version version)
@@ -33,7 +30,7 @@ contract TestVersion {
33
30
  }
34
31
 
35
32
  function getZeroVersion() external pure returns(Version) {
36
- return zeroVersion();
33
+ return VersionLib.zeroVersion();
37
34
  }
38
35
 
39
36
  function isSameVersion(Version a, Version b) external pure returns(bool) {
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {Version, toVersion, toVersionPart} from "../../contracts/types/Version.sol";
4
+ import {Version, VersionLib} from "../../contracts/types/Version.sol";
5
5
  import {Versionable} from "../../contracts/shared/Versionable.sol";
6
6
 
7
7
  contract TestVersionable is Versionable {
@@ -12,9 +12,6 @@ contract TestVersionable is Versionable {
12
12
  virtual override
13
13
  returns(Version)
14
14
  {
15
- return toVersion(
16
- toVersionPart(3),
17
- toVersionPart(0),
18
- toVersionPart(0));
15
+ return VersionLib.toVersion(3,0,0);
19
16
  }
20
17
  }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ contract USDC is ERC20 {
7
+
8
+ // https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
9
+ string public constant NAME = "USDC - DUMMY";
10
+ string public constant SYMBOL = "USDC";
11
+ uint8 public constant DECIMALS = 6;
12
+ uint256 public constant INITIAL_SUPPLY = 10**9 * 10**DECIMALS; // 1 Billion 1'000'000'000
13
+ // decimals == 18 (openzeppelin erc20 default)
14
+ constructor()
15
+ ERC20(NAME, SYMBOL)
16
+ {
17
+ _mint(
18
+ _msgSender(),
19
+ INITIAL_SUPPLY
20
+ );
21
+ }
22
+
23
+ function decimals() public pure override returns(uint8) {
24
+ return DECIMALS;
25
+ }
26
+ }
@@ -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,32 +1,56 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {UFixed} from "./UFixed.sol";
4
+ import {UFixed, UFixedMathLib} from "./UFixed.sol";
5
5
 
6
6
  struct Fee {
7
7
  UFixed fractionalFee;
8
8
  uint256 fixedFee;
9
9
  }
10
10
 
11
- // general pure free functions
12
- /// @dev Converts the uint256 to a NftId.
13
- function toFee(
14
- UFixed fractionalFee,
15
- uint256 fixedFee
16
- ) pure returns (Fee memory fee) {
17
- return Fee(fractionalFee, fixedFee);
18
- }
11
+ library FeeLib {
19
12
 
20
- /// @dev Return the NftId zero (0)
21
- function zeroFee() pure returns (Fee memory fee) {
22
- return Fee(UFixed.wrap(0), 0);
23
- }
13
+ function calculateFee(
14
+ Fee memory fee,
15
+ uint256 amount
16
+ )
17
+ public
18
+ pure
19
+ returns (
20
+ uint256 feeAmount,
21
+ uint256 netAmount
22
+ )
23
+ {
24
+ UFixed fractionalAmount = UFixedMathLib.toUFixed(amount) *
25
+ fee.fractionalFee;
26
+ feeAmount = fractionalAmount.toInt() + fee.fixedFee;
27
+ netAmount = amount - feeAmount;
28
+ }
24
29
 
25
- // pure free functions for operators
26
- function feeIsSame(Fee memory a, Fee memory b) pure returns (bool isSame) {
27
- return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
28
- }
30
+ /// @dev Converts the uint256 to a fee struct.
31
+ function toFee(
32
+ UFixed fractionalFee,
33
+ uint256 fixedFee
34
+ ) public pure returns (Fee memory fee) {
35
+ return Fee(fractionalFee, fixedFee);
36
+ }
29
37
 
30
- function feeIsZero(Fee memory fee) pure returns (bool) {
31
- return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
32
- }
38
+ /// @dev Return the percent fee struct (x%, 0)
39
+ function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
40
+ return Fee(UFixedMathLib.toUFixed(percent, -2), 0);
41
+ }
42
+
43
+ /// @dev Return a zero fee struct (0, 0)
44
+ function zeroFee() public pure returns (Fee memory fee) {
45
+ return Fee(UFixed.wrap(0), 0);
46
+ }
47
+
48
+ // pure free functions for operators
49
+ function feeIsSame(Fee memory a, Fee memory b) public pure returns (bool isSame) {
50
+ return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
51
+ }
52
+
53
+ function feeIsZero(Fee memory fee) public pure returns (bool) {
54
+ return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
55
+ }
56
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "./ObjectType.sol";
5
+
6
+ type Key32 is bytes32;
7
+ type KeyId is bytes31;
8
+
9
+ // type bindings
10
+ using {
11
+ eqKey32 as ==,
12
+ neKey32 as !=,
13
+ Key32Lib.toKeyId,
14
+ Key32Lib.toObjectType
15
+ } for Key32 global;
16
+
17
+ // @dev Returns true iff keys are identical
18
+ function eqKey32(Key32 a, Key32 b) pure returns (bool isSame) {
19
+ return Key32.unwrap(a) == Key32.unwrap(b);
20
+ }
21
+
22
+ // @dev Returns true iff keys are different
23
+ function neKey32(Key32 a, Key32 b) pure returns (bool isDifferent) {
24
+ return Key32.unwrap(a) != Key32.unwrap(b);
25
+ }
26
+
27
+ library Key32Lib {
28
+
29
+ uint8 public constant TYPE_SHIFT = 31 * 8;
30
+ uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
31
+ bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
32
+ bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
33
+
34
+ function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
35
+ uint256 uintObjectType = ObjectType.unwrap(objectType);
36
+ uint256 uintId = uint248(KeyId.unwrap(id));
37
+ uint256 uintKey = (uintObjectType << TYPE_SHIFT) + uintId;
38
+ return Key32.wrap(bytes32(uintKey));
39
+ }
40
+
41
+ function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
42
+ bytes32 key32 = Key32.unwrap(key);
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);
48
+ id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
49
+ }
50
+ }
@@ -1,6 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {ObjectType} from "./ObjectType.sol";
6
+
4
7
  // uint96 allows for chain ids up to 13 digits
5
8
  type NftId is uint96;
6
9
 
@@ -10,7 +13,9 @@ using {
10
13
  neNftId as !=,
11
14
  NftIdLib.toInt,
12
15
  NftIdLib.gtz,
13
- NftIdLib.eqz
16
+ NftIdLib.eqz,
17
+ NftIdLib.toKeyId,
18
+ NftIdLib.toKey32
14
19
  } for NftId global;
15
20
 
16
21
  // general pure free functions
@@ -54,4 +59,14 @@ library NftIdLib {
54
59
  function eq(NftId a, NftId b) public pure returns (bool isSame) {
55
60
  return eqNftId(a, b);
56
61
  }
62
+
63
+ /// @dev Returns the key32 value for the specified nft id and object type.
64
+ function toKey32(NftId id, ObjectType objectType) public pure returns (Key32 key) {
65
+ return Key32Lib.toKey32(objectType, toKeyId(id));
66
+ }
67
+
68
+ /// @dev Returns the key id value for the specified nft id
69
+ function toKeyId(NftId id) public pure returns (KeyId keyId) {
70
+ return KeyId.wrap(bytes31(uint248(NftId.unwrap(id))));
71
+ }
57
72
  }
@@ -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,56 +17,93 @@ 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 PRODUCT() pure returns (ObjectType) {
40
+ function INSTANCE() pure returns (ObjectType) {
41
+ return toObjectType(70);
42
+ }
43
+
44
+ function STAKE() pure returns (ObjectType) {
45
+ return toObjectType(80);
46
+ }
47
+
48
+ function COMPONENT() pure returns (ObjectType) {
41
49
  return toObjectType(100);
42
50
  }
43
51
 
44
- function DISTRIBUTOR() pure returns (ObjectType) {
52
+ // TODO replace by PRODUCT_SETUP
53
+ function TREASURY() pure returns (ObjectType) {
54
+ return toObjectType(101);
55
+ }
56
+
57
+ function PRODUCT_SETUP() pure returns (ObjectType) {
58
+ return toObjectType(101);
59
+ }
60
+
61
+ function PRODUCT() pure returns (ObjectType) {
45
62
  return toObjectType(110);
46
63
  }
47
64
 
48
- function ORACLE() pure returns (ObjectType) {
65
+ function DISTRIBUTION() pure returns (ObjectType) {
49
66
  return toObjectType(120);
50
67
  }
51
68
 
52
- function POOL() pure returns (ObjectType) {
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
+
81
+ function ORACLE() pure returns (ObjectType) {
53
82
  return toObjectType(130);
54
83
  }
55
84
 
56
- function POLICY() pure returns (ObjectType) {
85
+ function POOL() pure returns (ObjectType) {
86
+ return toObjectType(140);
87
+ }
88
+
89
+ function RISK() pure returns (ObjectType) {
57
90
  return toObjectType(200);
58
91
  }
59
92
 
60
- function BUNDLE() pure returns (ObjectType) {
93
+ function POLICY() pure returns (ObjectType) {
61
94
  return toObjectType(210);
62
95
  }
63
96
 
97
+ function BUNDLE() pure returns (ObjectType) {
98
+ return toObjectType(220);
99
+ }
100
+
64
101
  function CLAIM() pure returns (ObjectType) {
65
- return toObjectType(201);
102
+ return toObjectType(211);
66
103
  }
67
104
 
68
105
  function PAYOUT() pure returns (ObjectType) {
69
- return toObjectType(202);
106
+ return toObjectType(212);
70
107
  }
71
108
 
72
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
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {RISK} from "./ObjectType.sol";
6
+
7
+ type RiskId is bytes8;
8
+
9
+ // type bindings
10
+ using {
11
+ eqRiskId as ==,
12
+ neRiskId as !=,
13
+ RiskIdLib.toKey32
14
+ } for RiskId global;
15
+
16
+ // general pure free functions
17
+
18
+ // @dev Returns true iff risk ids a and b are identical
19
+ function eqRiskId(RiskId a, RiskId b) pure returns (bool isSame) {
20
+ return RiskId.unwrap(a) == RiskId.unwrap(b);
21
+ }
22
+
23
+ // @dev Returns true iff risk ids a and b are different
24
+ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) {
25
+ return RiskId.unwrap(a) != RiskId.unwrap(b);
26
+ }
27
+
28
+ library RiskIdLib {
29
+ // @dev Converts a role string into a role id.
30
+ function toRiskId(string memory risk) public pure returns (RiskId) {
31
+ return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
32
+ }
33
+
34
+ /// @dev Returns the key32 value for the specified nft id and object type.
35
+ function toKey32(RiskId id) public pure returns (Key32 key) {
36
+ return Key32Lib.toKey32(RISK(), toKeyId(id));
37
+ }
38
+
39
+ /// @dev Returns the key id value for the specified nft id
40
+ function toKeyId(RiskId id) public pure returns (KeyId keyId) {
41
+ return KeyId.wrap(bytes31(RiskId.unwrap(id)));
42
+ }
43
+ }