@etherisc/gif-next 0.0.2-f74fcad-685 → 0.0.2-f7b8c9f-436

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 (392) hide show
  1. package/README.md +160 -6
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → components/BaseComponent.sol/BaseComponent.json} +152 -150
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +557 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +115 -116
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +177 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +308 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +207 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +471 -83
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +345 -77
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  30. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  34. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  36. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1430 -660
  40. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +1759 -801
  44. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +481 -0
  46. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  48. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  50. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  52. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/IService.sol/IService.json +421 -0
  54. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +544 -0
  56. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  58. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  60. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  62. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +468 -0
  64. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  66. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  68. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  69. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  70. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  71. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
  72. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  74. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
  76. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPoolModule.json → module/component/ComponentModule.sol/ComponentModule.json} +49 -61
  78. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  80. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  81. package/artifacts/contracts/instance/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +51 -61
  82. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  84. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
  86. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  88. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  90. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +136 -119
  92. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +137 -120
  94. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  96. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +164 -0
  98. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{pool → module/pool}/PoolModule.sol/PoolModule.json +66 -57
  100. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  102. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  104. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  106. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{treasury → module/treasury}/ITreasury.sol/ITreasury.json +1 -1
  108. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +638 -0
  110. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  112. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +638 -0
  114. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +794 -0
  116. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +630 -0
  118. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  120. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  122. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +561 -0
  124. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +751 -0
  126. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +753 -0
  128. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1068 -0
  130. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +194 -2
  132. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  133. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  134. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +408 -32
  136. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  137. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -0
  138. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  140. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.json +637 -52
  142. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  143. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +997 -0
  144. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +468 -0
  146. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  148. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  150. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  152. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  153. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IRegisterable.sol/IRegisterable.json} +98 -102
  154. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  156. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  162. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  163. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  164. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  166. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +557 -0
  168. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  170. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestPool.sol/TestPool.json +716 -0
  172. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +744 -0
  174. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  176. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  178. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestService.sol/TestService.json +584 -0
  180. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  182. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  184. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +270 -0
  186. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  187. package/artifacts/contracts/{mock → test}/Usdc.sol/USDC.json +3 -3
  188. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  190. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  194. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  195. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  196. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  198. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  199. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  200. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  202. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  212. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +58 -58
  214. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  218. package/contracts/components/BaseComponent.sol +79 -0
  219. package/contracts/components/Distribution.sol +155 -0
  220. package/contracts/components/IBaseComponent.sol +19 -0
  221. package/contracts/components/IDistributionComponent.sol +46 -0
  222. package/contracts/components/IPoolComponent.sol +64 -0
  223. package/contracts/components/IProductComponent.sol +37 -0
  224. package/contracts/components/Pool.sol +218 -24
  225. package/contracts/components/Product.sol +248 -38
  226. package/contracts/instance/IInstance.sol +40 -11
  227. package/contracts/instance/IInstanceLinked.sol +8 -0
  228. package/contracts/instance/Instance.sol +60 -45
  229. package/contracts/instance/base/ComponentServiceBase.sol +49 -0
  230. package/contracts/instance/base/IInstanceBase.sol +23 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  232. package/contracts/instance/{lifecycle → base}/ILifecycle.sol +4 -21
  233. package/contracts/instance/base/IService.sol +15 -0
  234. package/contracts/instance/base/InstanceBase.sol +89 -0
  235. package/contracts/instance/base/KeyValueStore.sol +161 -0
  236. package/contracts/instance/base/Lifecycle.sol +100 -0
  237. package/contracts/instance/base/ModuleBase.sol +57 -0
  238. package/contracts/instance/base/ServiceBase.sol +44 -0
  239. package/contracts/instance/module/access/Access.sol +149 -0
  240. package/contracts/instance/module/access/IAccess.sol +53 -0
  241. package/contracts/instance/module/bundle/BundleModule.sol +134 -0
  242. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  243. package/contracts/instance/module/component/ComponentModule.sol +71 -0
  244. package/contracts/instance/module/component/IComponent.sol +28 -0
  245. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  246. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  247. package/contracts/instance/module/policy/IPolicy.sol +63 -0
  248. package/contracts/instance/module/policy/PolicyModule.sol +91 -0
  249. package/contracts/instance/module/pool/IPoolModule.sol +41 -0
  250. package/contracts/instance/module/pool/PoolModule.sol +95 -0
  251. package/contracts/instance/module/risk/IRisk.sol +26 -0
  252. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  253. package/contracts/instance/module/treasury/ITreasury.sol +84 -0
  254. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  255. package/contracts/instance/module/treasury/TreasuryModule.sol +131 -0
  256. package/contracts/instance/service/ComponentOwnerService.sol +275 -0
  257. package/contracts/instance/service/DistributionService.sol +54 -0
  258. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  259. package/contracts/instance/service/IDistributionService.sol +12 -0
  260. package/contracts/instance/service/IPoolService.sol +37 -0
  261. package/contracts/instance/service/IProductService.sol +107 -0
  262. package/contracts/instance/service/PoolService.sol +149 -0
  263. package/contracts/instance/service/ProductService.sol +510 -0
  264. package/contracts/registry/ChainNft.sol +94 -42
  265. package/contracts/registry/IChainNft.sol +3 -2
  266. package/contracts/registry/IRegistry.sol +50 -44
  267. package/contracts/registry/IRegistryService.sol +29 -0
  268. package/contracts/registry/ITransferInterceptor.sol +6 -0
  269. package/contracts/registry/Registry.sol +435 -126
  270. package/contracts/registry/RegistryService.sol +368 -0
  271. package/contracts/registry/RegistryServiceManager.sol +43 -0
  272. package/contracts/shared/ContractDeployerLib.sol +72 -0
  273. package/contracts/shared/ERC165.sol +21 -0
  274. package/contracts/shared/INftOwnable.sol +22 -0
  275. package/contracts/shared/IRegisterable.sol +17 -0
  276. package/contracts/shared/IVersionable.sol +96 -0
  277. package/contracts/shared/NftOwnable.sol +136 -0
  278. package/contracts/shared/ProxyManager.sol +94 -0
  279. package/contracts/shared/Registerable.sol +89 -0
  280. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  281. package/contracts/shared/Versionable.sol +147 -0
  282. package/contracts/test/TestDistribution.sol +22 -0
  283. package/contracts/test/TestFee.sol +25 -0
  284. package/contracts/test/TestPool.sol +27 -0
  285. package/contracts/test/TestProduct.sol +74 -0
  286. package/contracts/test/TestRegisterable.sol +18 -0
  287. package/contracts/test/TestRoleId.sol +14 -0
  288. package/contracts/test/TestService.sol +26 -0
  289. package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
  290. package/contracts/test/TestVersion.sol +44 -0
  291. package/contracts/test/TestVersionable.sol +17 -0
  292. package/contracts/{mock → test}/Usdc.sol +1 -1
  293. package/contracts/types/AddressSet.sol +58 -0
  294. package/contracts/types/Fee.sol +44 -20
  295. package/contracts/types/Key32.sol +45 -0
  296. package/contracts/types/NftId.sol +22 -1
  297. package/contracts/types/NftIdSet.sol +60 -0
  298. package/contracts/types/ObjectType.sol +37 -13
  299. package/contracts/types/ReferralId.sol +48 -0
  300. package/contracts/types/RiskId.sol +43 -0
  301. package/contracts/types/RoleId.sol +38 -0
  302. package/contracts/types/StateId.sol +13 -3
  303. package/contracts/types/Timestamp.sol +22 -1
  304. package/contracts/types/UFixed.sol +12 -13
  305. package/contracts/types/Version.sol +104 -0
  306. package/package.json +8 -3
  307. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  308. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  309. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  310. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  311. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  312. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  313. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  314. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  315. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  316. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  317. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  318. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  319. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  321. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  322. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  323. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  324. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  325. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  326. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  327. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  328. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  329. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  330. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  331. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  332. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  333. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  335. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  336. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  337. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  338. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  340. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  342. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  343. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  344. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  345. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  346. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  347. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  348. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  349. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  350. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  351. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  352. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  353. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  354. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  355. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  356. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  357. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  358. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  359. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  360. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  361. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  362. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  363. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  364. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  365. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  366. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  367. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  368. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  369. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  370. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  371. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  372. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  373. package/contracts/components/Component.sol +0 -77
  374. package/contracts/components/IPool.sol +0 -15
  375. package/contracts/components/IProduct.sol +0 -16
  376. package/contracts/experiment/statemachine/README.md +0 -112
  377. package/contracts/instance/access/Access.sol +0 -165
  378. package/contracts/instance/access/IAccess.sol +0 -63
  379. package/contracts/instance/component/ComponentModule.sol +0 -274
  380. package/contracts/instance/component/IComponent.sol +0 -74
  381. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  382. package/contracts/instance/policy/IPolicy.sol +0 -50
  383. package/contracts/instance/policy/PolicyModule.sol +0 -114
  384. package/contracts/instance/pool/IPoolModule.sol +0 -23
  385. package/contracts/instance/pool/PoolModule.sol +0 -81
  386. package/contracts/instance/product/IProductService.sol +0 -36
  387. package/contracts/instance/product/ProductService.sol +0 -136
  388. package/contracts/instance/treasury/ITreasury.sol +0 -91
  389. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  390. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  391. package/contracts/mock/TestPool.sol +0 -16
  392. package/contracts/mock/TestProduct.sol +0 -39
@@ -1,166 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "Registerable",
4
- "sourceName": "contracts/registry/Registry.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": false,
11
- "internalType": "uint256",
12
- "name": "idx",
13
- "type": "uint256"
14
- },
15
- {
16
- "indexed": false,
17
- "internalType": "address",
18
- "name": "module",
19
- "type": "address"
20
- },
21
- {
22
- "indexed": false,
23
- "internalType": "string",
24
- "name": "comment",
25
- "type": "string"
26
- }
27
- ],
28
- "name": "LogDebug",
29
- "type": "event"
30
- },
31
- {
32
- "inputs": [],
33
- "name": "getData",
34
- "outputs": [
35
- {
36
- "internalType": "bytes",
37
- "name": "data",
38
- "type": "bytes"
39
- }
40
- ],
41
- "stateMutability": "view",
42
- "type": "function"
43
- },
44
- {
45
- "inputs": [],
46
- "name": "getInitialOwner",
47
- "outputs": [
48
- {
49
- "internalType": "address",
50
- "name": "deployer",
51
- "type": "address"
52
- }
53
- ],
54
- "stateMutability": "view",
55
- "type": "function"
56
- },
57
- {
58
- "inputs": [],
59
- "name": "getNftId",
60
- "outputs": [
61
- {
62
- "internalType": "NftId",
63
- "name": "nftId",
64
- "type": "uint96"
65
- }
66
- ],
67
- "stateMutability": "view",
68
- "type": "function"
69
- },
70
- {
71
- "inputs": [],
72
- "name": "getOwner",
73
- "outputs": [
74
- {
75
- "internalType": "address",
76
- "name": "owner",
77
- "type": "address"
78
- }
79
- ],
80
- "stateMutability": "view",
81
- "type": "function"
82
- },
83
- {
84
- "inputs": [],
85
- "name": "getParentNftId",
86
- "outputs": [
87
- {
88
- "internalType": "NftId",
89
- "name": "parentNftId",
90
- "type": "uint96"
91
- }
92
- ],
93
- "stateMutability": "view",
94
- "type": "function"
95
- },
96
- {
97
- "inputs": [],
98
- "name": "getRegistry",
99
- "outputs": [
100
- {
101
- "internalType": "contract IRegistry",
102
- "name": "registry",
103
- "type": "address"
104
- }
105
- ],
106
- "stateMutability": "view",
107
- "type": "function"
108
- },
109
- {
110
- "inputs": [],
111
- "name": "getType",
112
- "outputs": [
113
- {
114
- "internalType": "ObjectType",
115
- "name": "objectType",
116
- "type": "uint8"
117
- }
118
- ],
119
- "stateMutability": "view",
120
- "type": "function"
121
- },
122
- {
123
- "inputs": [],
124
- "name": "isRegisterable",
125
- "outputs": [
126
- {
127
- "internalType": "bool",
128
- "name": "",
129
- "type": "bool"
130
- }
131
- ],
132
- "stateMutability": "pure",
133
- "type": "function"
134
- },
135
- {
136
- "inputs": [],
137
- "name": "isRegistered",
138
- "outputs": [
139
- {
140
- "internalType": "bool",
141
- "name": "",
142
- "type": "bool"
143
- }
144
- ],
145
- "stateMutability": "view",
146
- "type": "function"
147
- },
148
- {
149
- "inputs": [],
150
- "name": "register",
151
- "outputs": [
152
- {
153
- "internalType": "NftId",
154
- "name": "nftId",
155
- "type": "uint96"
156
- }
157
- ],
158
- "stateMutability": "nonpayable",
159
- "type": "function"
160
- }
161
- ],
162
- "bytecode": "0x",
163
- "deployedBytecode": "0x",
164
- "linkReferences": {},
165
- "deployedLinkReferences": {}
166
- }
@@ -1,4 +0,0 @@
1
- {
2
- "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/371956c35f778b248bb1774ada1ed516.json"
4
- }
@@ -1,60 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "RegistryLinked",
4
- "sourceName": "contracts/registry/Registry.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "registry",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
- {
18
- "anonymous": false,
19
- "inputs": [
20
- {
21
- "indexed": false,
22
- "internalType": "uint256",
23
- "name": "idx",
24
- "type": "uint256"
25
- },
26
- {
27
- "indexed": false,
28
- "internalType": "address",
29
- "name": "module",
30
- "type": "address"
31
- },
32
- {
33
- "indexed": false,
34
- "internalType": "string",
35
- "name": "comment",
36
- "type": "string"
37
- }
38
- ],
39
- "name": "LogDebug",
40
- "type": "event"
41
- },
42
- {
43
- "inputs": [],
44
- "name": "getRegistry",
45
- "outputs": [
46
- {
47
- "internalType": "contract IRegistry",
48
- "name": "registry",
49
- "type": "address"
50
- }
51
- ],
52
- "stateMutability": "view",
53
- "type": "function"
54
- }
55
- ],
56
- "bytecode": "0x608060405234801561001057600080fd5b5060405161011438038061011483398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6082806100926000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635ab1bd5314602d575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f3fea26469706673582212206b52cc4409c12622a2ab6c2124c0d70b1e91703d256b216f9a00838ad6c64f8564736f6c63430008140033",
57
- "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80635ab1bd5314602d575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f3fea26469706673582212206b52cc4409c12622a2ab6c2124c0d70b1e91703d256b216f9a00838ad6c64f8564736f6c63430008140033",
58
- "linkReferences": {},
59
- "deployedLinkReferences": {}
60
- }
@@ -1,77 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {IRegistry, IRegisterable, IRegistryLinked} from "../registry/IRegistry.sol";
7
- import {Registerable} from "../registry/Registry.sol";
8
- import {IInstance} from "../instance/IInstance.sol";
9
-
10
- import {IInstanceLinked, IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "../instance/component/IComponent.sol";
11
- import {NftId} from "../types/NftId.sol";
12
-
13
- contract InstanceLinked is IInstanceLinked {
14
- IInstance internal _instance;
15
-
16
- constructor(address instance) {
17
- _instance = IInstance(instance);
18
- }
19
-
20
- function getInstance() public view override returns (IInstance instance) {
21
- return _instance;
22
- }
23
- }
24
-
25
- abstract contract Component is
26
- Registerable,
27
- InstanceLinked,
28
- IComponentContract
29
- {
30
- address private _deployer;
31
- address private _wallet;
32
- IERC20Metadata private _token;
33
-
34
- constructor(
35
- address registry,
36
- address instance,
37
- address token
38
- ) Registerable(registry) InstanceLinked(instance) {
39
- _wallet = address(this);
40
- _token = IERC20Metadata(token);
41
- }
42
-
43
- // from registerable
44
- function register() public override returns (NftId componentId) {
45
- require(msg.sender == getInitialOwner(), "");
46
- require(
47
- address(_registry) != address(0),
48
- "ERROR:PRD-001:REGISTRY_ZERO"
49
- );
50
- require(
51
- _registry.isRegistered(address(_instance)),
52
- "ERROR:PRD-002:INSTANCE_NOT_REGISTERED"
53
- );
54
-
55
- IComponentOwnerService cos = _instance.getComponentOwnerService();
56
- componentId = cos.register(this);
57
- }
58
-
59
- // from registerable
60
- function getParentNftId() public view override returns (NftId) {
61
- return getInstance().getNftId();
62
- }
63
-
64
- // from component contract
65
- function getWallet()
66
- external
67
- view
68
- override
69
- returns (address walletAddress)
70
- {
71
- return _wallet;
72
- }
73
-
74
- function getToken() external view override returns (IERC20Metadata token) {
75
- return _token;
76
- }
77
- }
@@ -1,15 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Fee} from "../types/Fee.sol";
5
- import {IComponentContract} from "../instance/component/IComponent.sol";
6
-
7
- // just marker interface for now
8
- interface IPoolComponent is IComponentContract {
9
- function getStakingFee() external view returns (Fee memory stakingFee);
10
-
11
- function getPerformanceFee()
12
- external
13
- view
14
- returns (Fee memory performanceFee);
15
- }
@@ -1,16 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../types/NftId.sol";
5
- import {Fee} from "../types/Fee.sol";
6
-
7
- interface IProductComponent {
8
- function getPoolNftId() external view returns (NftId poolNftId);
9
-
10
- function getPolicyFee() external view returns (Fee memory policyFee);
11
-
12
- function getProcessingFee()
13
- external
14
- view
15
- returns (Fee memory processingFee);
16
- }
@@ -1,112 +0,0 @@
1
- # State Machines
2
-
3
- Most GIF objects have a life cycle defined by a state machine.
4
-
5
- For each object type the set of possible states is defined together with its initial state and the set of valid state transitions.
6
-
7
- ## Object Types without States
8
-
9
- * Protocol
10
- * Chains
11
- * Registries (both chain and main registry)
12
-
13
- ## Object Types with States
14
-
15
- * Tokens
16
- * Instances
17
- * Products
18
- * Oracles
19
- * Pools
20
- * Bundles
21
- * Policies
22
- * Claim (non-NFT)
23
- * Payout (non-NFT)
24
-
25
- ### Simple State Machine
26
-
27
- Valid states
28
-
29
- * Active (initial state)
30
- * Paused
31
- * Archived (final state)
32
-
33
- Valid state transitions:
34
-
35
- * Active -> Paused
36
- * Paused -> Active
37
- * Paused -> Archived
38
-
39
-
40
- Candidate object types for simple state machine
41
-
42
- * Token
43
- * Instance
44
- * Product
45
- * Oracle
46
- * Pool
47
-
48
- To discuss:
49
-
50
- * Archived is final state
51
- * What mechanism should exist to revert an unintended transition to 'Archived' state. Should there be such a mechanism?
52
- * What mechanism should exist when the NFT of such an object is burned prematurely. Should there be such a mechanism
53
-
54
- ### Bundle State Machine
55
-
56
- Valid states
57
-
58
- * Active (initial state)
59
- * Paused
60
- * Expired (implicit state)
61
- * Closed (final state)
62
-
63
- Expired is not an explicit state.
64
- A bundle is expired for block.timestamp >= expiredAt
65
-
66
- ### Policy State Machine
67
-
68
- Valid states
69
-
70
- * Applied (initial state)
71
- * Revoked (final state)
72
- * Declined (final state)
73
- * Active
74
- * Expired (implicit state)
75
- * Closed (final state)
76
-
77
- Expired is not an explicit state.
78
- A policy is expired for block.timestamp >= expiredAt
79
-
80
- To discuss:
81
-
82
- * Should 'Closed' be less explicit using a closedAt state variable?
83
- * Or even more lighweight? ie. block.timestamp >= expiredAt and no open claims
84
-
85
- Valid state transitions:
86
-
87
- * Applied -> Revoked
88
- * Applied -> Declined
89
- * Applied -> Active
90
- * Active -> Closed (needs to be expired)
91
-
92
- ### Claim State Machine
93
-
94
- Valid states
95
- * Applied (initial state)
96
- * Confirmed
97
- * Declined (final state)
98
- * Closed (final state)
99
-
100
- Valid state transitions:
101
- * Applied -> Confirmed
102
- * Applied -> Declined
103
- * Confirmed -> Closed
104
-
105
- ### Payout State Machine
106
-
107
- Valid states
108
- * Expected
109
- * PaidOut
110
-
111
- Valid state transitions:
112
- * Expected -> PaidOut
@@ -1,165 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // role admin handling of oz doesn't fit nft ownability
5
- // import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
6
- import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
-
8
- import {IAccessModule} from "./IAccess.sol";
9
-
10
- abstract contract AccessModule is IAccessModule {
11
- string public constant PRODUCT_OWNER = "ProductOwner";
12
- string public constant ORACLE_OWNER = "OracleOwner";
13
- string public constant POOL_OWNER = "PoolOwner";
14
-
15
- using EnumerableSet for EnumerableSet.AddressSet;
16
-
17
- event LogAccessRoleGranted(bytes32 role, address member, bool isMember);
18
-
19
- mapping(bytes32 role => RoleInfo info) private _info;
20
- bytes32[] private _roles;
21
-
22
- bytes32 private immutable _productOwnerRole;
23
- bytes32 private immutable _oracleOwnerRole;
24
- bytes32 private immutable _poolOwnerRole;
25
-
26
- mapping(bytes32 role => mapping(address member => bool isMember))
27
- private _isRoleMember;
28
- mapping(bytes32 role => EnumerableSet.AddressSet) private _roleMembers;
29
-
30
- modifier onlyOwner() {
31
- require(msg.sender == this.getOwner(), "ERROR:ACM-001:NOT_OWNER");
32
- _;
33
- }
34
-
35
- constructor() {
36
- _productOwnerRole = _createRole(PRODUCT_OWNER);
37
- _oracleOwnerRole = _createRole(ORACLE_OWNER);
38
- _poolOwnerRole = _createRole(POOL_OWNER);
39
- }
40
-
41
- function PRODUCT_OWNER_ROLE() public view override returns (bytes32 role) {
42
- return _productOwnerRole;
43
- }
44
-
45
- function ORACLE_OWNER_ROLE() public view override returns (bytes32 role) {
46
- return _oracleOwnerRole;
47
- }
48
-
49
- function POOL_OWNER_ROLE() public view override returns (bytes32 role) {
50
- return _poolOwnerRole;
51
- }
52
-
53
- function createRole(
54
- string memory roleName
55
- ) external override onlyOwner returns (bytes32 role) {
56
- return _createRole(roleName);
57
- }
58
-
59
- function _createRole(
60
- string memory roleName
61
- ) internal returns (bytes32 role) {
62
- RoleInfo memory info = RoleInfo(0, roleName, true);
63
-
64
- role = _setRoleInfo(info);
65
- }
66
-
67
- // TODO move to module
68
- function disableRole(bytes32 role) external override onlyOwner {
69
- RoleInfo memory info = _info[role];
70
- require(info.id == role, "ERROR:AOS-001:ROLE_DOES_NOT_EXIST");
71
-
72
- info.isActive = false;
73
- _setRoleInfo(info);
74
- }
75
-
76
- // TODO move to module
77
- function enableRole(bytes32 role) external override onlyOwner {
78
- RoleInfo memory info = _info[role];
79
- require(info.id == role, "ERROR:AOS-002:ROLE_DOES_NOT_EXIST");
80
-
81
- info.isActive = true;
82
- _setRoleInfo(info);
83
- }
84
-
85
- function grantRole(
86
- bytes32 role,
87
- address member
88
- ) external override onlyOwner {
89
- require(_info[role].id == role, "ERROR:ACM-010:ROLE_NOT_EXISTING");
90
- require(_info[role].isActive, "ERROR:ACM-011:ROLE_NOT_ACTIVE");
91
-
92
- _isRoleMember[role][member] = true;
93
- _roleMembers[role].add(member);
94
-
95
- emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
96
- }
97
-
98
- function revokeRole(
99
- bytes32 role,
100
- address member
101
- ) external override onlyOwner {
102
- require(_info[role].id == role, "ERROR:ACM-020:ROLE_NOT_EXISTING");
103
-
104
- _isRoleMember[role][member] = false;
105
- _roleMembers[role].remove(member);
106
- }
107
-
108
- function hasRole(
109
- bytes32 role,
110
- address member
111
- ) external view override returns (bool) {
112
- return _isRoleMember[role][member];
113
- }
114
-
115
- function getRoleInfo(
116
- bytes32 role
117
- ) external view override returns (RoleInfo memory info) {
118
- return _info[role];
119
- }
120
-
121
- function getRole(
122
- uint256 idx
123
- ) external view override returns (bytes32 role) {
124
- return _roles[idx];
125
- }
126
-
127
- function getRoleCount() external view override returns (uint256 roles) {
128
- return _roles.length;
129
- }
130
-
131
- function getRoleMemberCount(
132
- bytes32 role
133
- ) public view override returns (uint256 roleMembers) {
134
- return _roleMembers[role].length();
135
- }
136
-
137
- function getRoleMember(
138
- bytes32 role,
139
- uint256 idx
140
- ) public view override returns (address roleMembers) {
141
- return _roleMembers[role].at(idx);
142
- }
143
-
144
- function getRoleForName(
145
- string memory roleName
146
- ) public pure override returns (bytes32 role) {
147
- return keccak256(abi.encode(roleName));
148
- }
149
-
150
- function _setRoleInfo(
151
- RoleInfo memory info
152
- ) internal returns (bytes32 role) {
153
- role = info.id;
154
-
155
- if (role == bytes32(0)) {
156
- role = getRoleForName(info.name);
157
- // TODO check that this is a new role id
158
-
159
- info.id = role;
160
- _roles.push(role);
161
- }
162
-
163
- _info[role] = info;
164
- }
165
- }
@@ -1,63 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked} from "../../registry/IRegistry.sol";
5
-
6
- interface IAccess {
7
- struct RoleInfo {
8
- bytes32 id;
9
- string name;
10
- bool isActive;
11
- }
12
- }
13
-
14
- interface IAccessCheckRole {
15
- function hasRole(bytes32 role, address member) external view returns (bool);
16
- }
17
-
18
- interface IAccessComponentTypeRoles {
19
- function PRODUCT_OWNER_ROLE() external view returns (bytes32 role);
20
-
21
- function ORACLE_OWNER_ROLE() external view returns (bytes32 role);
22
-
23
- function POOL_OWNER_ROLE() external view returns (bytes32 role);
24
- }
25
-
26
- interface IAccessModule is
27
- IOwnable,
28
- IRegistryLinked,
29
- IAccess,
30
- IAccessComponentTypeRoles,
31
- IAccessCheckRole
32
- {
33
- function createRole(string memory roleName) external returns (bytes32 role);
34
-
35
- function enableRole(bytes32 role) external;
36
-
37
- function disableRole(bytes32 role) external;
38
-
39
- function grantRole(bytes32 role, address member) external;
40
-
41
- function revokeRole(bytes32 role, address member) external;
42
-
43
- function getRole(uint256 idx) external view returns (bytes32 role);
44
-
45
- function getRoleInfo(
46
- bytes32 role
47
- ) external view returns (RoleInfo memory info);
48
-
49
- function getRoleForName(
50
- string memory roleName
51
- ) external pure returns (bytes32 role);
52
-
53
- function getRoleCount() external view returns (uint256 roles);
54
-
55
- function getRoleMemberCount(
56
- bytes32 role
57
- ) external view returns (uint256 roleMembers);
58
-
59
- function getRoleMember(
60
- bytes32 role,
61
- uint256 idx
62
- ) external view returns (address roleMembers);
63
- }