@etherisc/gif-next 0.0.2-299fe4a-464 → 0.0.2-2e256e3-524

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 (325) hide show
  1. package/README.md +84 -6
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +166 -39
  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 +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +119 -39
  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 +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +108 -156
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +67 -139
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +417 -88
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +360 -51
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  26. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  40. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  44. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +854 -627
  46. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  48. package/artifacts/contracts/instance/Instance.sol/Instance.json +1121 -726
  49. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  50. package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +230 -62
  51. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  52. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  53. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  54. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  55. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  56. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  57. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +180 -59
  59. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  60. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +544 -0
  61. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  63. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  65. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  66. package/artifacts/contracts/instance/{module/product/ProductModule.sol/ProductModule.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
  67. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  68. package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +226 -58
  69. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
  74. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
  77. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
  79. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
  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 +1 -1
  89. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -51
  91. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -51
  93. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +29 -14
  96. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +28 -13
  98. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  99. package/artifacts/contracts/instance/module/{product/IProductModule.sol/IProductModule.json → risk/IRisk.sol/IRisk.json} +2 -2
  100. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  102. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  104. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +326 -226
  107. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
  109. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +326 -226
  111. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  112. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +368 -93
  113. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  114. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +630 -0
  115. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  116. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +181 -79
  117. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  118. package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +209 -63
  119. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  120. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +240 -55
  121. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  122. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +330 -56
  123. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  124. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +332 -78
  125. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  126. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +473 -90
  127. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  128. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +141 -12
  129. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  130. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +5 -0
  131. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  132. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +298 -39
  133. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  134. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +745 -0
  135. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  136. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  137. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  138. package/artifacts/contracts/registry/Registry.sol/Registry.json +489 -120
  139. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  140. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +997 -0
  141. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +494 -0
  143. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  144. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  145. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  146. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  147. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  148. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  149. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  151. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +60 -19
  153. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  155. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  156. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +370 -0
  157. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +83 -19
  163. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  164. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +557 -0
  165. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestFee.sol/TestFee.json +28 -4
  167. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestPool.sol/TestPool.json +417 -88
  169. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +407 -56
  171. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  173. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +38 -4
  175. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  176. package/artifacts/contracts/test/TestService.sol/TestService.json +262 -85
  177. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  178. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +2 -2
  179. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  180. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +14 -18
  181. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  182. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +93 -53
  183. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  184. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  185. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  186. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  187. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  189. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  191. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  193. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  194. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  195. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  197. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  198. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  199. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  201. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +2 -2
  211. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +34 -8
  213. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Version.sol/VersionLib.json +101 -2
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  217. package/contracts/components/BaseComponent.sol +12 -22
  218. package/contracts/components/Distribution.sol +155 -0
  219. package/contracts/components/IBaseComponent.sol +2 -2
  220. package/contracts/components/IDistributionComponent.sol +46 -0
  221. package/contracts/components/IPoolComponent.sol +15 -8
  222. package/contracts/components/IProductComponent.sol +26 -8
  223. package/contracts/components/Pool.sol +99 -27
  224. package/contracts/components/Product.sol +204 -22
  225. package/contracts/instance/IInstance.sol +20 -16
  226. package/contracts/instance/Instance.sol +37 -12
  227. package/contracts/instance/{service → base}/ComponentServiceBase.sol +13 -5
  228. package/contracts/instance/base/IInstanceBase.sol +23 -0
  229. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  230. package/contracts/instance/base/ILifecycle.sol +30 -0
  231. package/contracts/instance/base/InstanceBase.sol +89 -0
  232. package/contracts/instance/base/KeyValueStore.sol +161 -0
  233. package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
  234. package/contracts/instance/base/ModuleBase.sol +57 -0
  235. package/contracts/instance/base/ServiceBase.sol +44 -0
  236. package/contracts/instance/module/access/Access.sol +6 -6
  237. package/contracts/instance/module/bundle/BundleModule.sol +24 -118
  238. package/contracts/instance/module/bundle/IBundle.sol +9 -9
  239. package/contracts/instance/module/component/ComponentModule.sol +32 -65
  240. package/contracts/instance/module/component/IComponent.sol +7 -32
  241. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  242. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  243. package/contracts/instance/module/policy/IPolicy.sol +13 -10
  244. package/contracts/instance/module/policy/PolicyModule.sol +33 -26
  245. package/contracts/instance/module/pool/IPoolModule.sol +4 -4
  246. package/contracts/instance/module/pool/PoolModule.sol +23 -15
  247. package/contracts/instance/module/risk/IRisk.sol +26 -0
  248. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  249. package/contracts/instance/module/treasury/ITreasury.sol +33 -53
  250. package/contracts/instance/module/treasury/TokenHandler.sol +2 -2
  251. package/contracts/instance/module/treasury/TreasuryModule.sol +72 -89
  252. package/contracts/instance/service/ComponentOwnerService.sol +202 -101
  253. package/contracts/instance/service/DistributionService.sol +54 -0
  254. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  255. package/contracts/instance/service/IDistributionService.sol +12 -0
  256. package/contracts/instance/service/IPoolService.sol +8 -1
  257. package/contracts/instance/service/IProductService.sol +56 -7
  258. package/contracts/instance/service/PoolService.sol +81 -30
  259. package/contracts/instance/service/ProductService.sol +252 -100
  260. package/contracts/registry/ChainNft.sol +43 -15
  261. package/contracts/registry/IChainNft.sol +3 -2
  262. package/contracts/registry/IRegistry.sol +42 -26
  263. package/contracts/registry/IRegistryService.sol +29 -0
  264. package/contracts/registry/ITransferInterceptor.sol +6 -0
  265. package/contracts/registry/Registry.sol +385 -275
  266. package/contracts/registry/RegistryService.sol +368 -0
  267. package/contracts/registry/RegistryServiceManager.sol +52 -0
  268. package/contracts/shared/ContractDeployerLib.sol +72 -0
  269. package/contracts/shared/ERC165.sol +1 -1
  270. package/contracts/shared/INftOwnable.sol +22 -0
  271. package/contracts/shared/IRegisterable.sol +9 -16
  272. package/contracts/shared/IVersionable.sol +56 -12
  273. package/contracts/shared/NftOwnable.sol +122 -0
  274. package/contracts/shared/ProxyManager.sol +103 -0
  275. package/contracts/shared/Registerable.sol +62 -59
  276. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  277. package/contracts/shared/Versionable.sol +111 -56
  278. package/contracts/test/TestDistribution.sol +22 -0
  279. package/contracts/test/TestFee.sol +3 -3
  280. package/contracts/test/TestPool.sol +8 -3
  281. package/contracts/test/TestProduct.sol +38 -8
  282. package/contracts/test/TestRegisterable.sol +5 -6
  283. package/contracts/test/TestRoleId.sol +2 -2
  284. package/contracts/test/TestService.sol +7 -16
  285. package/contracts/test/TestVersion.sol +4 -7
  286. package/contracts/test/TestVersionable.sol +2 -5
  287. package/contracts/test/Usdc.sol +26 -0
  288. package/contracts/types/Fee.sol +44 -20
  289. package/contracts/types/Key32.sol +45 -0
  290. package/contracts/types/NftId.sol +16 -1
  291. package/contracts/types/ObjectType.sol +24 -8
  292. package/contracts/types/ReferralId.sol +48 -0
  293. package/contracts/types/RiskId.sol +43 -0
  294. package/contracts/types/RoleId.sol +12 -10
  295. package/contracts/types/StateId.sol +7 -1
  296. package/contracts/types/UFixed.sol +19 -16
  297. package/contracts/types/Version.sol +38 -25
  298. package/package.json +5 -2
  299. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  300. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  301. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  303. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  304. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  305. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  307. package/artifacts/contracts/instance/module/product/IProductModule.sol/IProductModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/product/ProductModule.sol/ProductModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  310. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  311. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  312. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  313. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  314. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  315. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  316. package/contracts/experiment/statemachine/README.md +0 -112
  317. package/contracts/instance/IServiceLinked.sol +0 -12
  318. package/contracts/instance/InstanceBase.sol +0 -74
  319. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  320. package/contracts/instance/module/product/IProductModule.sol +0 -6
  321. package/contracts/instance/module/product/ProductModule.sol +0 -8
  322. package/contracts/instance/service/ServiceBase.sol +0 -39
  323. package/contracts/registry/IRegistryLinked.sol +0 -8
  324. package/contracts/shared/IOwnable.sol +0 -6
  325. /package/contracts/instance/{service → base}/IService.sol +0 -0
package/README.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # gif-next (Generic Insurance Framework next version)
2
2
 
3
+ ## Add OpenZeppelin V5 Dependencies
4
+
5
+ ```shell
6
+ forge install openzeppelin-contracts-500=OpenZeppelin/openzeppelin-contracts@v5.0.0
7
+ cd cd lib/openzeppelin-contracts-500
8
+ git checkout tags/v5.0.0
9
+ cd ../..
10
+ ```
11
+
12
+ See `remappings.txt` to see how to work with different OpenZeppelin versions in parallel
13
+
14
+ ```
15
+ cat remappings.txt
16
+ @openzeppelin5/contracts/=lib/openzeppelin-contracts-500/contracts/
17
+ @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
18
+ @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
19
+ ```
20
+
21
+
3
22
  ## Submodules checkout
4
23
 
5
24
  This repository uses submodules. To checkout or update to the latest submodules, run the following command after updating to any revision (or checking out the repository)
@@ -23,15 +42,33 @@ npm run coverage
23
42
 
24
43
  ### Deployment
25
44
 
45
+ Install the dependencies before running the script below for the first time.
46
+
47
+ ```bash
48
+ npm install
26
49
  ```
27
- hh run --network <networkname> scripts/deploy.ts
50
+
51
+ The deploy script will deploy all required contracts and create a test instance with a test product and a test pool.
52
+
53
+ ```bash
54
+ # run deployment on a locally created ganache instance
55
+ export SKIP_VERIFICATION=true
56
+ hh run scripts/deploy_all.ts
28
57
  ```
29
58
 
30
- Networks:
31
- - hardhat (dynamically created network - https://hardhat.org/hardhat-network/docs/overview)
32
- - anvil (anvsil chain running in container next when using devcontainer)
33
- - mumbai (polygon testnet, requires WEB3_INFURA_PROJECT_ID)
34
- - mainnet (polygon mainnet, requires WEB3_INFURA_PROJECT_ID)
59
+ ```bash
60
+ # set appropriate values vor env variables (see below)
61
+
62
+ # run deployment on another network
63
+ hh run --network <networkname> scripts/deploy_all.ts
64
+ ```
65
+
66
+ Environment variables:
67
+
68
+ - `SKIP_VERIFICATION` set to `true` to skip etherscan verification (required for ganacht and anvil)
69
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
70
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
71
+ - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
35
72
 
36
73
 
37
74
  ### Console
@@ -183,6 +220,7 @@ sudo apt update
183
220
  sudo apt install python3-pip
184
221
  pip install eth-brownie
185
222
  brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
223
+ brownie pm install OpenZeppelin/openzeppelin-contracts@5.0.0
186
224
  ```
187
225
 
188
226
  ```bash
@@ -234,3 +272,43 @@ pool_id = pool.getNftId()
234
272
  product_id = product.getNftId()
235
273
  ```
236
274
 
275
+ ## Registry and Services
276
+
277
+ ### Principles
278
+
279
+ - 1 service per object type and major version
280
+ - registry service guards write access to registry
281
+ - all other objects registered via registry service
282
+ - root object for the complete tree is the protocol object
283
+ - under the root object a single registry object is registered (= global registry/ethereum mainnet)
284
+
285
+
286
+ ### Service Responsibilities
287
+
288
+ Registry Service
289
+
290
+ - deployed and registered during bootstrapping of registry
291
+ - used to register tokens and other services by registry owner
292
+ - an object may only be registered by the service designated by the type of the object
293
+ - to register an object the parent object needs already be registered
294
+ - the type of the object to be registered needs to match a valid child type/parent type combination
295
+
296
+ Instance Service
297
+
298
+ - deploys master instance during its own bootstrapping (if allowed by contract size)
299
+ - registered via registry service by registry owner
300
+ - registeres master instance during its own registration by regsitry owner
301
+ - deploys and registeres new instances (= instance factory) by instance owner (instance owner is a permissionless role, anybody may creates a new instance)
302
+ - provides upgrade functionality to instance owners
303
+
304
+ Product Service
305
+
306
+ - registered via registry service by registry owner
307
+ - registers products for registered instances via registry service by product owner (product owner role is permissend by the product's instance)
308
+ - registers applications/policies for registered products via registry service
309
+
310
+ Distribution Service
311
+
312
+ - registered via registry service by registry owner
313
+ - registers distribution components for registered products via registry service by distribution owner (distribution owner role is permissend by the product's instance)
314
+ - registers distributors for registered distribution components via registry service
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/7f20a1c1335663e2e20eb70fbac6fce5.json"
3
+ "buildInfo": "../../../build-info/f183973535602b1b5bcb305416d6c761.json"
4
4
  }
@@ -3,10 +3,169 @@
3
3
  "contractName": "BaseComponent",
4
4
  "sourceName": "contracts/components/BaseComponent.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "registry",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "NftId",
15
+ "name": "nftId",
16
+ "type": "uint96"
17
+ }
18
+ ],
19
+ "name": "ErrorAlreadyLinked",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [
24
+ {
25
+ "internalType": "address",
26
+ "name": "contractAddress",
27
+ "type": "address"
28
+ }
29
+ ],
30
+ "name": "ErrorContractNotRegistered",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "account",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "ErrorNotOwner",
42
+ "type": "error"
43
+ },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "registryAddress",
49
+ "type": "address"
50
+ }
51
+ ],
52
+ "name": "ErrorNotRegistry",
53
+ "type": "error"
54
+ },
55
+ {
56
+ "inputs": [
57
+ {
58
+ "internalType": "address",
59
+ "name": "registryAddress",
60
+ "type": "address"
61
+ }
62
+ ],
63
+ "name": "ErrorRegisterableNotRegistry",
64
+ "type": "error"
65
+ },
66
+ {
67
+ "inputs": [],
68
+ "name": "ErrorRegistryAddressZero",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "address",
75
+ "name": "registry",
76
+ "type": "address"
77
+ }
78
+ ],
79
+ "name": "ErrorRegistryAlreadyInitialized",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [],
84
+ "name": "ErrorRegistryNotInitialized",
85
+ "type": "error"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "InvalidInitialization",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [],
94
+ "name": "NotInitializing",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "anonymous": false,
99
+ "inputs": [
100
+ {
101
+ "indexed": false,
102
+ "internalType": "uint64",
103
+ "name": "version",
104
+ "type": "uint64"
105
+ }
106
+ ],
107
+ "name": "Initialized",
108
+ "type": "event"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "REGISTERABLE_LOCATION_V1",
113
+ "outputs": [
114
+ {
115
+ "internalType": "bytes32",
116
+ "name": "",
117
+ "type": "bytes32"
118
+ }
119
+ ],
120
+ "stateMutability": "view",
121
+ "type": "function"
122
+ },
6
123
  {
7
124
  "inputs": [],
8
- "name": "getData",
125
+ "name": "getInitialInfo",
9
126
  "outputs": [
127
+ {
128
+ "components": [
129
+ {
130
+ "internalType": "NftId",
131
+ "name": "nftId",
132
+ "type": "uint96"
133
+ },
134
+ {
135
+ "internalType": "NftId",
136
+ "name": "parentNftId",
137
+ "type": "uint96"
138
+ },
139
+ {
140
+ "internalType": "ObjectType",
141
+ "name": "objectType",
142
+ "type": "uint8"
143
+ },
144
+ {
145
+ "internalType": "bool",
146
+ "name": "isInterceptor",
147
+ "type": "bool"
148
+ },
149
+ {
150
+ "internalType": "address",
151
+ "name": "objectAddress",
152
+ "type": "address"
153
+ },
154
+ {
155
+ "internalType": "address",
156
+ "name": "initialOwner",
157
+ "type": "address"
158
+ },
159
+ {
160
+ "internalType": "bytes",
161
+ "name": "data",
162
+ "type": "bytes"
163
+ }
164
+ ],
165
+ "internalType": "struct IRegistry.ObjectInfo",
166
+ "name": "",
167
+ "type": "tuple"
168
+ },
10
169
  {
11
170
  "internalType": "bytes",
12
171
  "name": "data",
@@ -35,7 +194,7 @@
35
194
  "outputs": [
36
195
  {
37
196
  "internalType": "NftId",
38
- "name": "nftId",
197
+ "name": "",
39
198
  "type": "uint96"
40
199
  }
41
200
  ],
@@ -48,33 +207,20 @@
48
207
  "outputs": [
49
208
  {
50
209
  "internalType": "address",
51
- "name": "owner",
210
+ "name": "",
52
211
  "type": "address"
53
212
  }
54
213
  ],
55
214
  "stateMutability": "view",
56
215
  "type": "function"
57
216
  },
58
- {
59
- "inputs": [],
60
- "name": "getParentNftId",
61
- "outputs": [
62
- {
63
- "internalType": "NftId",
64
- "name": "nftId",
65
- "type": "uint96"
66
- }
67
- ],
68
- "stateMutability": "view",
69
- "type": "function"
70
- },
71
217
  {
72
218
  "inputs": [],
73
219
  "name": "getRegistry",
74
220
  "outputs": [
75
221
  {
76
222
  "internalType": "contract IRegistry",
77
- "name": "registry",
223
+ "name": "",
78
224
  "type": "address"
79
225
  }
80
226
  ],
@@ -94,19 +240,6 @@
94
240
  "stateMutability": "view",
95
241
  "type": "function"
96
242
  },
97
- {
98
- "inputs": [],
99
- "name": "getType",
100
- "outputs": [
101
- {
102
- "internalType": "ObjectType",
103
- "name": "objectType",
104
- "type": "uint8"
105
- }
106
- ],
107
- "stateMutability": "pure",
108
- "type": "function"
109
- },
110
243
  {
111
244
  "inputs": [],
112
245
  "name": "getWallet",
@@ -122,21 +255,15 @@
122
255
  },
123
256
  {
124
257
  "inputs": [],
125
- "name": "lock",
258
+ "name": "linkToRegisteredNftId",
126
259
  "outputs": [],
127
260
  "stateMutability": "nonpayable",
128
261
  "type": "function"
129
262
  },
130
263
  {
131
264
  "inputs": [],
132
- "name": "register",
133
- "outputs": [
134
- {
135
- "internalType": "NftId",
136
- "name": "componentId",
137
- "type": "uint96"
138
- }
139
- ],
265
+ "name": "lock",
266
+ "outputs": [],
140
267
  "stateMutability": "nonpayable",
141
268
  "type": "function"
142
269
  },
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/f183973535602b1b5bcb305416d6c761.json"
4
+ }