@etherisc/gif-next 0.0.2-c4efd5e → 0.0.2-c5049d4-401

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 (621) hide show
  1. package/README.md +393 -21
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1013 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1405 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1936 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +289 -529
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +374 -626
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +714 -0
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  76. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  78. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  86. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  88. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IBundle.sol/IBundle.json} +2 -2
  90. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  99. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  104. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  106. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +927 -0
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +710 -0
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1367 -0
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +802 -0
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1474 -0
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +726 -0
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +737 -0
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +698 -0
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  142. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  143. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  144. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  145. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1346 -0
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +814 -0
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +517 -0
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +867 -0
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +400 -0
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1239 -0
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +770 -0
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +865 -0
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +746 -0
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  169. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +295 -2
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +943 -112
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  180. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  181. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  182. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  183. package/artifacts/contracts/registry/Registry.sol/Registry.json +1426 -178
  184. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1858 -0
  186. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1345 -0
  188. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +701 -0
  190. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  192. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  194. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  195. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  196. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  197. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  198. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  199. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  200. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1573 -0
  202. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +794 -0
  204. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +432 -0
  206. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  207. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  208. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  210. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  212. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  214. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  216. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  218. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  220. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  222. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  224. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  226. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  228. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  230. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  231. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  233. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  234. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  235. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  236. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  238. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  239. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  240. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  241. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  242. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  244. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  245. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +264 -0
  246. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  248. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  249. package/artifacts/contracts/shared/Service.sol/Service.json +400 -0
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  251. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  252. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  253. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  254. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  255. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  256. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  257. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  258. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  260. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  261. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  262. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  264. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  266. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  268. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  270. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  272. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  274. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  275. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  276. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  278. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  280. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  282. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  284. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  286. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  288. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  290. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  292. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  293. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  294. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  296. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  298. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  300. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  302. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  304. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  306. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  308. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  310. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  312. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  314. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  316. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  318. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  320. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  322. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  324. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  326. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  328. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  330. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  332. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  333. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  334. package/contracts/authorization/AccessAdmin.sol +592 -0
  335. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  336. package/contracts/authorization/Authorization.sol +217 -0
  337. package/contracts/authorization/IAccess.sol +48 -0
  338. package/contracts/authorization/IAccessAdmin.sol +135 -0
  339. package/contracts/authorization/IAuthorization.sol +54 -0
  340. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  341. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  342. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  343. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  344. package/contracts/distribution/BasicDistribution.sol +138 -0
  345. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  346. package/contracts/distribution/Distribution.sol +295 -0
  347. package/contracts/distribution/DistributionService.sol +336 -0
  348. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  349. package/contracts/distribution/IDistributionComponent.sol +52 -0
  350. package/contracts/distribution/IDistributionService.sol +101 -0
  351. package/contracts/examples/fire/DamageLevel.sol +56 -0
  352. package/contracts/examples/fire/FirePool.sol +75 -0
  353. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  354. package/contracts/examples/fire/FireProduct.sol +390 -0
  355. package/contracts/examples/fire/FireProductAuthorization.sol +39 -0
  356. package/contracts/examples/fire/FireUSD.sol +26 -0
  357. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  358. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  359. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  360. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  361. package/contracts/instance/BundleSet.sol +126 -0
  362. package/contracts/instance/IInstance.sol +62 -17
  363. package/contracts/instance/IInstanceService.sol +92 -0
  364. package/contracts/instance/Instance.sol +222 -57
  365. package/contracts/instance/InstanceAdmin.sol +285 -0
  366. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  367. package/contracts/instance/InstanceReader.sol +430 -0
  368. package/contracts/instance/InstanceService.sol +466 -0
  369. package/contracts/instance/InstanceServiceManager.sol +39 -0
  370. package/contracts/instance/InstanceStore.sol +287 -0
  371. package/contracts/instance/base/BalanceStore.sol +123 -0
  372. package/contracts/instance/base/Cloneable.sol +28 -0
  373. package/contracts/instance/base/ObjectCounter.sol +21 -0
  374. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  375. package/contracts/instance/base/ObjectSet.sol +79 -0
  376. package/contracts/instance/module/IAccess.sol +46 -0
  377. package/contracts/instance/module/IBundle.sol +20 -0
  378. package/contracts/instance/module/IComponents.sol +46 -0
  379. package/contracts/instance/module/IDistribution.sol +41 -0
  380. package/contracts/instance/module/IPolicy.sol +84 -0
  381. package/contracts/instance/module/IRisk.sol +11 -0
  382. package/contracts/mock/Dip.sol +26 -0
  383. package/contracts/oracle/BasicOracle.sol +48 -0
  384. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  385. package/contracts/oracle/IOracle.sol +36 -0
  386. package/contracts/oracle/IOracleComponent.sol +33 -0
  387. package/contracts/oracle/IOracleService.sol +65 -0
  388. package/contracts/oracle/Oracle.sol +167 -0
  389. package/contracts/oracle/OracleService.sol +281 -0
  390. package/contracts/oracle/OracleServiceManager.sol +39 -0
  391. package/contracts/pool/BasicPool.sol +166 -0
  392. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  393. package/contracts/pool/BundleService.sol +438 -0
  394. package/contracts/pool/BundleServiceManager.sol +39 -0
  395. package/contracts/pool/IBundleService.sol +134 -0
  396. package/contracts/pool/IPoolComponent.sol +58 -0
  397. package/contracts/pool/IPoolService.sol +160 -0
  398. package/contracts/pool/Pool.sol +326 -0
  399. package/contracts/pool/PoolService.sol +508 -0
  400. package/contracts/pool/PoolServiceManager.sol +39 -0
  401. package/contracts/product/ApplicationService.sol +247 -0
  402. package/contracts/product/ApplicationServiceManager.sol +38 -0
  403. package/contracts/product/BasicProduct.sol +53 -0
  404. package/contracts/product/BasicProductAuthorization.sol +43 -0
  405. package/contracts/product/ClaimService.sol +546 -0
  406. package/contracts/product/ClaimServiceManager.sol +38 -0
  407. package/contracts/product/IApplicationService.sol +63 -0
  408. package/contracts/product/IClaimService.sol +122 -0
  409. package/contracts/product/IPolicyService.sol +77 -0
  410. package/contracts/product/IPricingService.sol +39 -0
  411. package/contracts/product/IProductComponent.sol +39 -0
  412. package/contracts/product/IRiskService.sol +33 -0
  413. package/contracts/product/PolicyService.sol +651 -0
  414. package/contracts/product/PolicyServiceManager.sol +39 -0
  415. package/contracts/product/PricingService.sol +300 -0
  416. package/contracts/product/PricingServiceManager.sol +39 -0
  417. package/contracts/product/Product.sol +425 -0
  418. package/contracts/product/RiskService.sol +96 -0
  419. package/contracts/product/RiskServiceManager.sol +39 -0
  420. package/contracts/registry/ChainNft.sol +176 -61
  421. package/contracts/registry/IRegistry.sol +139 -51
  422. package/contracts/registry/IRegistryService.sol +69 -0
  423. package/contracts/registry/ITransferInterceptor.sol +7 -0
  424. package/contracts/registry/Registry.sol +633 -140
  425. package/contracts/registry/RegistryAdmin.sol +464 -0
  426. package/contracts/registry/RegistryService.sol +252 -0
  427. package/contracts/registry/RegistryServiceManager.sol +53 -0
  428. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  429. package/contracts/registry/ReleaseRegistry.sol +491 -0
  430. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  431. package/contracts/registry/TokenRegistry.sol +315 -0
  432. package/contracts/shared/Component.sol +268 -0
  433. package/contracts/shared/ComponentService.sol +641 -0
  434. package/contracts/shared/ComponentServiceManager.sol +38 -0
  435. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  436. package/contracts/shared/ContractLib.sol +38 -0
  437. package/contracts/shared/IComponent.sol +70 -0
  438. package/contracts/shared/IComponentService.sol +108 -0
  439. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  440. package/contracts/shared/IKeyValueStore.sol +54 -0
  441. package/contracts/shared/ILifecycle.sol +29 -0
  442. package/contracts/shared/INftOwnable.sol +23 -0
  443. package/contracts/shared/IPolicyHolder.sol +35 -0
  444. package/contracts/shared/IRegisterable.sol +15 -0
  445. package/contracts/shared/IRegistryLinked.sol +11 -0
  446. package/contracts/shared/IService.sol +25 -0
  447. package/contracts/shared/InitializableCustom.sol +177 -0
  448. package/contracts/shared/InitializableERC165.sol +27 -0
  449. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  450. package/contracts/shared/KeyValueStore.sol +131 -0
  451. package/contracts/shared/Lifecycle.sol +77 -0
  452. package/contracts/shared/NftIdSet.sol +65 -0
  453. package/contracts/shared/NftOwnable.sol +107 -0
  454. package/contracts/shared/PolicyHolder.sol +58 -0
  455. package/contracts/shared/Registerable.sol +75 -0
  456. package/contracts/shared/RegistryLinked.sol +44 -0
  457. package/contracts/shared/Service.sol +87 -0
  458. package/contracts/shared/TokenHandler.sol +139 -0
  459. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  460. package/contracts/staking/IStaking.sol +168 -0
  461. package/contracts/staking/IStakingService.sol +160 -0
  462. package/contracts/staking/StakeManagerLib.sol +224 -0
  463. package/contracts/staking/Staking.sol +498 -0
  464. package/contracts/staking/StakingLifecycle.sol +23 -0
  465. package/contracts/staking/StakingManager.sol +52 -0
  466. package/contracts/staking/StakingReader.sol +183 -0
  467. package/contracts/staking/StakingService.sol +407 -0
  468. package/contracts/staking/StakingServiceManager.sol +44 -0
  469. package/contracts/staking/StakingStore.sol +605 -0
  470. package/contracts/staking/TargetManagerLib.sol +211 -0
  471. package/contracts/type/AddressSet.sol +58 -0
  472. package/contracts/type/Amount.sol +135 -0
  473. package/contracts/{types → type}/Blocknumber.sol +27 -3
  474. package/contracts/type/ClaimId.sol +75 -0
  475. package/contracts/type/DistributorType.sol +55 -0
  476. package/contracts/type/Fee.sol +66 -0
  477. package/contracts/type/Key32.sol +50 -0
  478. package/contracts/type/NftId.sol +79 -0
  479. package/contracts/type/NftIdSet.sol +62 -0
  480. package/contracts/type/ObjectType.sol +275 -0
  481. package/contracts/type/PayoutId.sol +82 -0
  482. package/contracts/type/Referral.sol +90 -0
  483. package/contracts/type/RequestId.sol +75 -0
  484. package/contracts/type/RiskId.sol +57 -0
  485. package/contracts/type/RoleId.sol +174 -0
  486. package/contracts/type/Seconds.sol +101 -0
  487. package/contracts/type/Selector.sol +102 -0
  488. package/contracts/type/StateId.sol +136 -0
  489. package/contracts/type/String.sol +53 -0
  490. package/contracts/{types → type}/Timestamp.sol +52 -8
  491. package/contracts/type/UFixed.sol +351 -0
  492. package/contracts/type/Version.sol +110 -0
  493. package/contracts/upgradeability/IVersionable.sol +53 -0
  494. package/contracts/upgradeability/ProxyManager.sol +231 -0
  495. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  496. package/contracts/upgradeability/Versionable.sol +59 -0
  497. package/package.json +23 -9
  498. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  499. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  500. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  501. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  502. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  503. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  504. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  505. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  506. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  507. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  508. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  509. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  526. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  528. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  530. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  532. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  534. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  536. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  537. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  538. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  539. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  540. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  542. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  543. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  544. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  546. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  547. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  548. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  549. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  550. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  551. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  553. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  554. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  555. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  556. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  558. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  560. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  561. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  563. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  566. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  568. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  570. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  572. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  573. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  574. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  575. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  576. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  577. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  578. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  579. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  580. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  581. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  582. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  583. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  585. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  587. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  589. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  591. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  592. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  593. package/contracts/components/Component.sol +0 -60
  594. package/contracts/components/IPool.sol +0 -9
  595. package/contracts/components/IProduct.sol +0 -9
  596. package/contracts/components/Pool.sol +0 -22
  597. package/contracts/components/Product.sol +0 -55
  598. package/contracts/experiment/errors/Require.sol +0 -38
  599. package/contracts/experiment/errors/Revert.sol +0 -44
  600. package/contracts/experiment/inheritance/A.sol +0 -53
  601. package/contracts/experiment/inheritance/B.sol +0 -28
  602. package/contracts/experiment/inheritance/C.sol +0 -34
  603. package/contracts/experiment/inheritance/IA.sol +0 -13
  604. package/contracts/experiment/inheritance/IB.sol +0 -10
  605. package/contracts/experiment/inheritance/IC.sol +0 -12
  606. package/contracts/experiment/types/TypeA.sol +0 -47
  607. package/contracts/experiment/types/TypeB.sol +0 -29
  608. package/contracts/instance/access/Access.sol +0 -165
  609. package/contracts/instance/access/IAccess.sol +0 -63
  610. package/contracts/instance/component/ComponentModule.sol +0 -213
  611. package/contracts/instance/component/IComponent.sol +0 -73
  612. package/contracts/instance/policy/IPolicy.sol +0 -51
  613. package/contracts/instance/policy/PolicyModule.sol +0 -91
  614. package/contracts/instance/pool/IPoolModule.sol +0 -29
  615. package/contracts/instance/pool/PoolModule.sol +0 -73
  616. package/contracts/instance/product/IProductService.sol +0 -36
  617. package/contracts/instance/product/ProductService.sol +0 -112
  618. package/contracts/registry/IChainNft.sol +0 -21
  619. package/contracts/types/ChainId.sol +0 -38
  620. package/contracts/types/NftId.sol +0 -51
  621. package/contracts/types/UFixed.sol +0 -205
@@ -0,0 +1,92 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {BundleSet} from "./BundleSet.sol";
6
+ import {Instance} from "./Instance.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {RoleId} from "../type/RoleId.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+ import {VersionPart} from "../type/Version.sol";
15
+
16
+ interface IInstanceService is IService {
17
+
18
+ // onlyInstance
19
+ error ErrorInstanceServiceNotRegistered(address instance);
20
+ error ErrorInstanceServiceNotInstance(address instance, ObjectType objectType);
21
+ error ErrorInstanceServiceInstanceVersionMismatch(address instance, VersionPart instanceVersion);
22
+
23
+ error ErrorInstanceServiceComponentNotInstanceLinked(address component);
24
+
25
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
26
+ error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
27
+ error ErrorInstanceServiceMasterBundleSetAlreadySet();
28
+ error ErrorInstanceServiceInstanceAddressZero();
29
+
30
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
31
+ error ErrorInstanceServiceInstanceReaderAddressZero();
32
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
33
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
34
+
35
+ error ErrorInstanceServiceAccessManagerZero();
36
+ error ErrorInstanceServiceInstanceAdminZero();
37
+ error ErrorInstanceServiceInstanceReaderZero();
38
+ error ErrorInstanceServiceBundleSetZero();
39
+ error ErrorInstanceServiceInstanceStoreZero();
40
+
41
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
42
+ error ErrorInstanceServiceBundleSetAuthorityMismatch();
43
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
44
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
45
+ error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
46
+
47
+ error ErrorInstanceServiceRequestUnauhorized(address caller);
48
+ error ErrorInstanceServiceNotInstanceNftId(NftId nftId);
49
+ error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
50
+ error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
51
+ error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
52
+
53
+ event LogInstanceCloned(NftId instanceNftId, address instance);
54
+
55
+ function createInstance()
56
+ external
57
+ returns (
58
+ // TODO check if Instance can be changed to IInstance
59
+ Instance clonedInstance,
60
+ NftId instanceNftId
61
+ );
62
+
63
+
64
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
65
+ function setStakingRewardRate(UFixed rewardRate) external;
66
+ function refillStakingRewardReserves(address rewardProvider, Amount dipAmount) external;
67
+
68
+ /// @dev Defunds the staking reward reserves for the specified target.
69
+ function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
70
+
71
+ /// @dev Sets up the component authorization for the specified instance.
72
+ /// The authorization is based on the authz specification provided by the component via getAuthorization.
73
+ function initializeAuthorization(NftId instanceNftId, IInstanceLinkedComponent component) external;
74
+
75
+ function createComponentTarget(
76
+ NftId instanceNftId,
77
+ address targetAddress,
78
+ string memory targetName,
79
+ bytes4[][] memory selectors,
80
+ RoleId[] memory roles
81
+ ) external;
82
+
83
+ function createGifTarget(
84
+ NftId instanceNftId,
85
+ address targetAddress,
86
+ string memory targetName,
87
+ bytes4[][] memory selectors,
88
+ RoleId[] memory roles
89
+ ) external;
90
+
91
+ function setComponentLocked(bool locked) external;
92
+ }
@@ -1,64 +1,229 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {Registerable} from "../registry/Registry.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
-
7
- import {IAccessModule, AccessModule} from "./access/Access.sol";
8
- import {ComponentModule} from "./component/ComponentModule.sol";
9
- import {ProductModule} from "./product/ProductService.sol";
10
- import {PolicyModule} from "./policy/PolicyModule.sol";
11
- import {PoolModule} from "./pool/PoolModule.sol";
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
12
5
 
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {BundleSet} from "./BundleSet.sol";
13
8
  import {IInstance} from "./IInstance.sol";
14
- import {NftId, toNftId} from "../types/NftId.sol";
9
+ import {IInstanceService} from "./IInstanceService.sol";
10
+ import {InstanceReader} from "./InstanceReader.sol";
11
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
12
+ import {InstanceStore} from "./InstanceStore.sol";
13
+ import {INSTANCE} from "../type/ObjectType.sol";
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+ import {Registerable} from "../shared/Registerable.sol";
16
+ import {RoleId} from "../type/RoleId.sol";
17
+ import {Seconds} from "../type/Seconds.sol";
18
+ import {UFixed} from "../type/UFixed.sol";
19
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
15
20
 
16
21
  contract Instance is
17
- Registerable,
18
- AccessModule,
19
- ComponentModule,
20
- PolicyModule,
21
- PoolModule,
22
- ProductModule,
23
- IInstance
22
+ IInstance,
23
+ AccessManagedUpgradeable,
24
+ Registerable
24
25
  {
25
- constructor(
26
- address registry,
27
- address componentOwnerService,
28
- address productService
29
- )
30
- Registerable(registry)
31
- AccessModule()
32
- ComponentModule(componentOwnerService)
33
- PolicyModule(productService)
34
- ProductModule(productService)
35
- PoolModule(productService)
36
- {}
37
-
38
- // from registerable
39
- function register() external override returns (NftId nftId) {
40
- require(
41
- address(_registry) != address(0),
42
- "ERROR:PRD-001:REGISTRY_ZERO"
43
- );
44
- return _registry.register(address(this));
45
- }
46
-
47
- // from registerable
48
- function getParentNftId() public view override returns (NftId) {
49
- // TODO add self registry and exchange 0 for_registry.getNftId();
50
- // define parent tree for all registerables
51
- // eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
52
- return toNftId(0);
53
- }
54
-
55
- // from registerable
56
- function getType() external view override returns (uint256 objectType) {
57
- return _registry.INSTANCE();
58
- }
59
-
60
- // from registerable
61
- function getData() external view override returns (bytes memory data) {
62
- return bytes(abi.encode(0));
63
- }
64
- }
26
+ uint256 public constant GIF_MAJOR_VERSION = 3;
27
+
28
+ bool private _initialized;
29
+
30
+ IInstanceService internal _instanceService;
31
+ InstanceAdmin internal _instanceAdmin;
32
+ InstanceReader internal _instanceReader;
33
+ BundleSet internal _bundleManager;
34
+ InstanceStore internal _instanceStore;
35
+
36
+ modifier onlyChainNft() {
37
+ if(msg.sender != getRegistry().getChainNftAddress()) {
38
+ revert();
39
+ }
40
+ _;
41
+ }
42
+
43
+ function initialize(
44
+ InstanceAdmin instanceAdmin,
45
+ InstanceStore instanceStore,
46
+ BundleSet bundleManager,
47
+ InstanceReader instanceReader,
48
+ IRegistry registry,
49
+ address initialOwner
50
+ )
51
+ external
52
+ initializer()
53
+ {
54
+ _instanceAdmin = instanceAdmin;
55
+ if(_instanceAdmin.authority() == address(0)) {
56
+ // TODO rename error
57
+ revert ErrorInstanceInstanceAdminZero();
58
+ }
59
+
60
+ // set authority to instance admin authority
61
+ __AccessManaged_init(_instanceAdmin.authority());
62
+
63
+ // setup instance object info
64
+ _initializeRegisterable(
65
+ address(registry),
66
+ registry.getNftId(),
67
+ INSTANCE(),
68
+ true,
69
+ initialOwner,
70
+ "");
71
+
72
+ // store instance supporting contracts
73
+ _instanceStore = instanceStore;
74
+ _bundleManager = bundleManager;
75
+ _instanceReader = instanceReader;
76
+
77
+ // initialize instance supporting contracts
78
+ _instanceStore.initialize();
79
+ _bundleManager.initialize();
80
+ _instanceReader.initialize();
81
+
82
+ _instanceService = IInstanceService(
83
+ getRegistry().getServiceAddress(
84
+ INSTANCE(),
85
+ getMajorVersion()));
86
+
87
+ _registerInterface(type(IInstance).interfaceId);
88
+ }
89
+
90
+ //--- Staking ----------------------------------------------------------//
91
+
92
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
93
+ external
94
+ // TODO decide if onlyOwner or restricted to instance owner role is better
95
+ onlyOwner()
96
+ {
97
+ _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
98
+ }
99
+
100
+ function setStakingRewardRate(UFixed rewardRate)
101
+ external
102
+ onlyOwner()
103
+ {
104
+ _instanceService.setStakingRewardRate(rewardRate);
105
+ }
106
+
107
+ function refillStakingRewardReserves(Amount dipAmount)
108
+ external
109
+ onlyOwner()
110
+ {
111
+ address instanceOwner = msg.sender;
112
+ _instanceService.refillStakingRewardReserves(instanceOwner, dipAmount);
113
+ }
114
+
115
+ function withdrawStakingRewardReserves(Amount dipAmount)
116
+ external
117
+ onlyOwner()
118
+ returns (Amount newBalance)
119
+ {
120
+ return _instanceService.withdrawStakingRewardReserves(dipAmount);
121
+ }
122
+
123
+ //--- Roles ------------------------------------------------------------//
124
+
125
+ function createRole(string memory roleName, string memory adminName)
126
+ external
127
+ onlyOwner()
128
+ returns (RoleId roleId, RoleId admin)
129
+ {
130
+ // TODO refactor
131
+ // (roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
132
+ }
133
+
134
+ function grantRole(RoleId roleId, address account)
135
+ external
136
+ onlyOwner()
137
+ {
138
+ _instanceAdmin.grantRole(roleId, account);
139
+ }
140
+
141
+ function revokeRole(RoleId roleId, address account)
142
+ external
143
+ onlyOwner()
144
+ {
145
+ // TODO refactor
146
+ // AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
147
+ }
148
+
149
+ //--- Targets ------------------------------------------------------------//
150
+
151
+ function createTarget(address target, string memory name)
152
+ external
153
+ onlyOwner()
154
+ {
155
+ // TODO refactor
156
+ // _instanceAdmin.createTarget(target, name);
157
+ }
158
+
159
+ function setTargetFunctionRole(
160
+ string memory targetName,
161
+ bytes4[] calldata selectors,
162
+ RoleId roleId
163
+ )
164
+ external
165
+ onlyOwner()
166
+ {
167
+ // TODO refactor
168
+ // _instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
169
+ }
170
+
171
+ function setTargetLocked(address target, bool locked)
172
+ external
173
+ onlyOwner()
174
+ {
175
+ // TODO refactor
176
+ // _instanceAdmin.setTargetLockedByInstance(target, locked);
177
+ }
178
+
179
+ //--- ITransferInterceptor ----------------------------------------------//
180
+
181
+ // TODO interception of child components nfts
182
+ function nftMint(address to, uint256 tokenId) external onlyChainNft {
183
+ // TODO refactor
184
+ // _instanceAdmin.transferInstanceOwnerRole(address(0), to);
185
+ }
186
+
187
+ function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
188
+ // TODO refactor
189
+ // _instanceAdmin.transferInstanceOwnerRole(from, to);
190
+ }
191
+
192
+ //--- initial setup functions -------------------------------------------//
193
+
194
+
195
+ function setInstanceReader(InstanceReader instanceReader)
196
+ external
197
+ restricted()
198
+ {
199
+ if(instanceReader.getInstance() != Instance(this)) {
200
+ revert ErrorInstanceInstanceReaderInstanceMismatch(address(this));
201
+ }
202
+
203
+ _instanceReader = instanceReader;
204
+ }
205
+
206
+ //--- external view functions -------------------------------------------//
207
+
208
+ function getInstanceReader() external view returns (InstanceReader) {
209
+ return _instanceReader;
210
+ }
211
+
212
+ function getBundleSet() external view returns (BundleSet) {
213
+ return _bundleManager;
214
+ }
215
+
216
+ function getInstanceAdmin() external view returns (InstanceAdmin) {
217
+ return _instanceAdmin;
218
+ }
219
+
220
+ function getInstanceStore() external view returns (InstanceStore) {
221
+ return _instanceStore;
222
+ }
223
+
224
+ function getMajorVersion() public pure returns (VersionPart majorVersion) {
225
+ return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
226
+ }
227
+
228
+ //--- internal view/pure functions --------------------------------------//
229
+ }
@@ -0,0 +1,285 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
+
6
+ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
+ import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
9
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
10
+ import {IComponent} from "../shared/IComponent.sol";
11
+ import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IInstance} from "./IInstance.sol";
14
+ import {IService} from "../shared/IService.sol";
15
+ import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
16
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
17
+ import {Str, StrLib} from "../type/String.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {VersionPart} from "../type/Version.sol";
20
+
21
+
22
+ contract InstanceAdmin is
23
+ AccessAdmin
24
+ {
25
+ string public constant INSTANCE_TARGET_NAME = "Instance";
26
+ string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
27
+ string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
28
+ string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
29
+
30
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
31
+
32
+ error ErrorInstanceAdminNotRegistered(address target);
33
+ error ErrorInstanceAdminAlreadyAuthorized(address target);
34
+ error ErrorInstanceAdminReleaseMismatch();
35
+ error ErrorInstanceAdminExpectedTargetMissing(string targetName);
36
+
37
+ IInstance _instance;
38
+ IRegistry internal _registry;
39
+ uint64 _idNext;
40
+
41
+ IModuleAuthorization _instanceAuthorization;
42
+
43
+ /// @dev Only used for master instance admin.
44
+ /// Contracts created via constructor come with disabled initializers.
45
+ constructor(
46
+ IModuleAuthorization instanceAuthorization
47
+ )
48
+ AccessAdmin()
49
+ {
50
+ _instanceAuthorization = instanceAuthorization;
51
+ }
52
+
53
+ /// @dev Initializes this instance admin with the provided instances authorization specification.
54
+ /// Internally the function creates an instance specific OpenZeppelin AccessManager that is used as the authority
55
+ /// for the inststance authorizatios.
56
+ /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
57
+ function initialize(
58
+ AccessManagerCloneable accessManager,
59
+ IModuleAuthorization instanceAuthorization
60
+ )
61
+ external
62
+ initializer()
63
+ {
64
+ // create new access manager for this instance admin
65
+ _initializeAuthority(address(accessManager));
66
+
67
+ // create basic instance independent setup
68
+ _createAdminAndPublicRoles();
69
+
70
+ // store instance authorization specification
71
+ _instanceAuthorization = IModuleAuthorization(instanceAuthorization);
72
+ }
73
+
74
+ function _checkTargetIsReadyForAuthorization(address target)
75
+ internal
76
+ view
77
+ {
78
+ if (address(_registry) != address(0) && !_registry.isRegistered(target)) {
79
+ revert ErrorInstanceAdminNotRegistered(target);
80
+ }
81
+
82
+ if (targetExists(target)) {
83
+ revert ErrorInstanceAdminAlreadyAuthorized(target);
84
+ }
85
+ }
86
+
87
+ /// @dev Completes the initialization of this instance admin using the provided instance.
88
+ /// Important: The instance MUST be registered and all instance supporting contracts must be wired to this instance.
89
+ function initializeInstanceAuthorization(address instanceAddress)
90
+ external
91
+ {
92
+ _checkTargetIsReadyForAuthorization(instanceAddress);
93
+
94
+ _idNext = CUSTOM_ROLE_ID_MIN;
95
+ _instance = IInstance(instanceAddress);
96
+ _registry = _instance.getRegistry();
97
+
98
+ // check matching releases
99
+ if (_instanceAuthorization.getRelease() != _instance.getMajorVersion()) {
100
+ revert ErrorInstanceAdminReleaseMismatch();
101
+ }
102
+
103
+ // add instance authorization
104
+ _createRoles(_instanceAuthorization);
105
+ _createModuleTargetsWithRoles();
106
+ _createTargetAuthorizations(_instanceAuthorization);
107
+
108
+ // grant component owner roles to instance owner
109
+ _grantComponentOwnerRoles();
110
+ }
111
+
112
+
113
+ /// @dev Initializes the authorization for the specified component.
114
+ /// Important: The component MUST be registered.
115
+ function initializeComponentAuthorization(
116
+ IComponent component,
117
+ IAuthorization authorization
118
+ )
119
+ external
120
+ {
121
+ _checkTargetIsReadyForAuthorization(address(component));
122
+
123
+ _createRoles(authorization);
124
+
125
+ // create component target
126
+ _createTarget(
127
+ address(component),
128
+ authorization.getTargetName(),
129
+ true, // checkAuthority
130
+ false); // custom
131
+
132
+ _createTarget(
133
+ address(component.getTokenHandler()),
134
+ string(abi.encodePacked(authorization.getTargetName(), "TH")),
135
+ true,
136
+ false);
137
+
138
+ // FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
139
+ FunctionInfo[] memory functions = new FunctionInfo[](3);
140
+ functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
141
+ functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
142
+ functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
143
+
144
+ _authorizeTargetFunctions(
145
+ address(component.getTokenHandler()),
146
+ getPublicRole(),
147
+ functions);
148
+
149
+ _grantRoleToAccount(
150
+ authorization.getTargetRole(
151
+ authorization.getTarget()),
152
+ address(component));
153
+
154
+ _createTargetAuthorizations(authorization);
155
+ }
156
+
157
+
158
+ function _grantComponentOwnerRoles()
159
+ internal
160
+ {
161
+ address instanceOwner = _registry.ownerOf(_instance.getNftId());
162
+ _grantRoleToAccount(DISTRIBUTION_OWNER_ROLE(), instanceOwner);
163
+ _grantRoleToAccount(ORACLE_OWNER_ROLE(), instanceOwner);
164
+ _grantRoleToAccount(POOL_OWNER_ROLE(), instanceOwner);
165
+ _grantRoleToAccount(PRODUCT_OWNER_ROLE(), instanceOwner);
166
+ }
167
+
168
+ /// @dev Creates a custom role
169
+ // TODO implement
170
+ // function createRole()
171
+ // external
172
+ // restricted()
173
+ // {
174
+
175
+ // }
176
+
177
+ /// @dev Grants the provided role to the specified account
178
+ function grantRole(
179
+ RoleId roleId,
180
+ address account)
181
+ external
182
+ restricted()
183
+ {
184
+ _grantRoleToAccount(roleId, account);
185
+ }
186
+
187
+ /// @dev Returns the instance authorization specification used to set up this instance admin.
188
+ function getInstanceAuthorization()
189
+ external
190
+ view
191
+ returns (IModuleAuthorization instanceAuthorizaion)
192
+ {
193
+ return _instanceAuthorization;
194
+ }
195
+
196
+
197
+ function _createRoles(IAuthorization authorization)
198
+ internal
199
+ {
200
+ RoleId[] memory roles = authorization.getRoles();
201
+ RoleId roleId;
202
+ RoleInfo memory roleInfo;
203
+
204
+ for(uint256 i = 0; i < roles.length; i++) {
205
+ roleId = roles[i];
206
+ _createRole(
207
+ roleId,
208
+ authorization.getRoleInfo(roleId));
209
+ }
210
+ }
211
+
212
+
213
+ function _createTargetAuthorizations(IAuthorization authorization)
214
+ internal
215
+ {
216
+ Str[] memory targets = authorization.getTargets();
217
+ Str target;
218
+
219
+ for(uint256 i = 0; i < targets.length; i++) {
220
+ target = targets[i];
221
+ RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
222
+ RoleId authorizedRole;
223
+
224
+ for(uint256 j = 0; j < authorizedRoles.length; j++) {
225
+ authorizedRole = authorizedRoles[j];
226
+
227
+ _authorizeTargetFunctions(
228
+ getTargetForName(target),
229
+ authorizedRole,
230
+ authorization.getAuthorizedFunctions(
231
+ target,
232
+ authorizedRole));
233
+ }
234
+ }
235
+ }
236
+
237
+ function _checkAndCreateTargetWithRole(
238
+ address target,
239
+ string memory targetName
240
+ )
241
+ internal
242
+ {
243
+ // check that target name is defined in authorization specification
244
+ Str name = StrLib.toStr(targetName);
245
+ if (!_instanceAuthorization.targetExists(name)) {
246
+ revert ErrorInstanceAdminExpectedTargetMissing(targetName);
247
+ }
248
+
249
+ // create named target
250
+ _createTarget(
251
+ target,
252
+ targetName,
253
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with registry admin)
254
+ false);
255
+
256
+ // assign target role if defined
257
+ RoleId targetRoleId = _instanceAuthorization.getTargetRole(name);
258
+ if (targetRoleId != RoleIdLib.zero()) {
259
+ _grantRoleToAccount(targetRoleId, target);
260
+ }
261
+ }
262
+
263
+ function _createModuleTargetsWithRoles()
264
+ internal
265
+ {
266
+ // create module targets
267
+ _checkAndCreateTargetWithRole(address(_instance), INSTANCE_TARGET_NAME);
268
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
269
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
270
+ _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
271
+
272
+ // create targets for services that need to access the module targets
273
+ ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
274
+ VersionPart release = _instanceAuthorization.getRelease();
275
+ ObjectType serviceDomain;
276
+
277
+ for (uint256 i = 0; i < serviceDomains.length; i++) {
278
+ serviceDomain = serviceDomains[i];
279
+
280
+ _checkAndCreateTargetWithRole(
281
+ _registry.getServiceAddress(serviceDomain, release),
282
+ _instanceAuthorization.getServiceTarget(serviceDomain).toString());
283
+ }
284
+ }
285
+ }