@etherisc/gif-next 0.0.2-b8776f3-780 → 0.0.2-b8da656-306

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 (656) hide show
  1. package/README.md +384 -20
  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 +1491 -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 +1946 -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 +1545 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1980 -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 +293 -1120
  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 +380 -1290
  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 +2043 -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 +3607 -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/module/IComponents.sol/IComponents.json +10 -0
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  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/{treasury/ITreasury.sol/ITreasury.json → module/IRisk.sol/IRisk.json} +2 -2
  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 +1276 -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 +1431 -0
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +931 -0
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +937 -0
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1267 -0
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +1062 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1612 -0
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +758 -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 +1098 -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 +1397 -0
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -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 +913 -0
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +896 -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 +950 -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 +1268 -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 +1056 -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 +966 -25
  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 +1471 -113
  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 +1162 -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/{experiment/statemachine/ISM.sol/ISM.json → shared/ILifecycle.sol/ILifecycle.json} +37 -51
  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/shared/IRegisterable.sol/IRegisterable.json +181 -0
  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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  229. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  230. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  232. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/Lifecycle.sol/Lifecycle.json} +19 -68
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  237. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  239. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  241. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +264 -0
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  245. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  246. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  247. package/artifacts/contracts/shared/Service.sol/Service.json +400 -0
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  250. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  251. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  252. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  254. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  256. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  258. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  259. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  260. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  262. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +750 -0
  264. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  266. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  267. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1236 -0
  268. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  270. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  272. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  274. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  275. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  276. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  278. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  280. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  282. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  284. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  286. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  288. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  290. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  292. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  294. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  296. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  298. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  300. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  302. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  304. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  306. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  308. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  310. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  312. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  314. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  316. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  318. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  320. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  322. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  324. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  326. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  327. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  328. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  329. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  330. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  331. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  332. package/contracts/authorization/AccessAdmin.sol +592 -0
  333. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  334. package/contracts/authorization/Authorization.sol +221 -0
  335. package/contracts/authorization/IAccess.sol +48 -0
  336. package/contracts/authorization/IAccessAdmin.sol +135 -0
  337. package/contracts/authorization/IAuthorization.sol +54 -0
  338. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  339. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  340. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  341. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  342. package/contracts/distribution/BasicDistribution.sol +138 -0
  343. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  344. package/contracts/distribution/Distribution.sol +295 -0
  345. package/contracts/distribution/DistributionService.sol +336 -0
  346. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  347. package/contracts/distribution/IDistributionComponent.sol +52 -0
  348. package/contracts/distribution/IDistributionService.sol +101 -0
  349. package/contracts/examples/fire/DamageLevel.sol +59 -0
  350. package/contracts/examples/fire/FirePool.sol +75 -0
  351. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  352. package/contracts/examples/fire/FireProduct.sol +410 -0
  353. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  354. package/contracts/examples/fire/FireUSD.sol +26 -0
  355. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  356. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  357. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  358. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  359. package/contracts/instance/BundleSet.sol +126 -0
  360. package/contracts/instance/IInstance.sol +60 -22
  361. package/contracts/instance/IInstanceService.sol +92 -0
  362. package/contracts/instance/Instance.sol +211 -54
  363. package/contracts/instance/InstanceAdmin.sol +288 -0
  364. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  365. package/contracts/instance/InstanceReader.sol +495 -0
  366. package/contracts/instance/InstanceService.sol +465 -0
  367. package/contracts/instance/InstanceServiceManager.sol +39 -0
  368. package/contracts/instance/InstanceStore.sol +287 -0
  369. package/contracts/instance/base/BalanceStore.sol +123 -0
  370. package/contracts/instance/base/Cloneable.sol +28 -0
  371. package/contracts/instance/base/ObjectCounter.sol +21 -0
  372. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  373. package/contracts/instance/base/ObjectSet.sol +79 -0
  374. package/contracts/instance/module/IAccess.sol +46 -0
  375. package/contracts/instance/module/IBundle.sol +20 -0
  376. package/contracts/instance/module/IComponents.sol +48 -0
  377. package/contracts/instance/module/IDistribution.sol +41 -0
  378. package/contracts/instance/module/IPolicy.sol +84 -0
  379. package/contracts/instance/module/IRisk.sol +11 -0
  380. package/contracts/mock/Dip.sol +26 -0
  381. package/contracts/oracle/BasicOracle.sol +48 -0
  382. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  383. package/contracts/oracle/IOracle.sol +36 -0
  384. package/contracts/oracle/IOracleComponent.sol +33 -0
  385. package/contracts/oracle/IOracleService.sol +65 -0
  386. package/contracts/oracle/Oracle.sol +167 -0
  387. package/contracts/oracle/OracleService.sol +281 -0
  388. package/contracts/oracle/OracleServiceManager.sol +39 -0
  389. package/contracts/pool/BasicPool.sol +166 -0
  390. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  391. package/contracts/pool/BundleService.sol +461 -0
  392. package/contracts/pool/BundleServiceManager.sol +39 -0
  393. package/contracts/pool/IBundleService.sol +143 -0
  394. package/contracts/pool/IPoolComponent.sol +68 -0
  395. package/contracts/pool/IPoolService.sol +171 -0
  396. package/contracts/pool/Pool.sol +353 -0
  397. package/contracts/pool/PoolService.sol +563 -0
  398. package/contracts/pool/PoolServiceManager.sol +39 -0
  399. package/contracts/product/ApplicationService.sol +251 -0
  400. package/contracts/product/ApplicationServiceManager.sol +38 -0
  401. package/contracts/product/BasicProduct.sol +53 -0
  402. package/contracts/product/BasicProductAuthorization.sol +43 -0
  403. package/contracts/product/ClaimService.sol +581 -0
  404. package/contracts/product/ClaimServiceManager.sol +38 -0
  405. package/contracts/product/IApplicationService.sol +63 -0
  406. package/contracts/product/IClaimService.sol +123 -0
  407. package/contracts/product/IPolicyService.sol +80 -0
  408. package/contracts/product/IPricingService.sol +39 -0
  409. package/contracts/product/IProductComponent.sol +53 -0
  410. package/contracts/product/IRiskService.sol +33 -0
  411. package/contracts/product/PolicyService.sol +686 -0
  412. package/contracts/product/PolicyServiceManager.sol +39 -0
  413. package/contracts/product/PricingService.sol +300 -0
  414. package/contracts/product/PricingServiceManager.sol +39 -0
  415. package/contracts/product/Product.sol +432 -0
  416. package/contracts/product/RiskService.sol +96 -0
  417. package/contracts/product/RiskServiceManager.sol +39 -0
  418. package/contracts/registry/ChainNft.sol +176 -61
  419. package/contracts/registry/IRegistry.sol +148 -45
  420. package/contracts/registry/IRegistryService.sol +60 -0
  421. package/contracts/registry/ITransferInterceptor.sol +7 -0
  422. package/contracts/registry/Registry.sol +658 -133
  423. package/contracts/registry/RegistryAdmin.sol +464 -0
  424. package/contracts/registry/RegistryService.sol +259 -0
  425. package/contracts/registry/RegistryServiceManager.sol +53 -0
  426. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  427. package/contracts/registry/ReleaseRegistry.sol +491 -0
  428. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  429. package/contracts/registry/TokenRegistry.sol +315 -0
  430. package/contracts/shared/Component.sol +268 -0
  431. package/contracts/shared/ComponentService.sol +641 -0
  432. package/contracts/shared/ComponentServiceManager.sol +38 -0
  433. package/contracts/shared/ComponentVerifyingService.sol +116 -0
  434. package/contracts/shared/ContractLib.sol +38 -0
  435. package/contracts/shared/IComponent.sol +70 -0
  436. package/contracts/shared/IComponentService.sol +108 -0
  437. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  438. package/contracts/shared/IKeyValueStore.sol +54 -0
  439. package/contracts/shared/ILifecycle.sol +29 -0
  440. package/contracts/shared/INftOwnable.sol +23 -0
  441. package/contracts/shared/IPolicyHolder.sol +35 -0
  442. package/contracts/shared/IRegisterable.sol +15 -0
  443. package/contracts/shared/IRegistryLinked.sol +11 -0
  444. package/contracts/shared/IService.sol +25 -0
  445. package/contracts/shared/InitializableERC165.sol +27 -0
  446. package/contracts/shared/InstanceLinkedComponent.sol +171 -0
  447. package/contracts/shared/KeyValueStore.sol +131 -0
  448. package/contracts/shared/Lifecycle.sol +77 -0
  449. package/contracts/shared/NftIdSet.sol +65 -0
  450. package/contracts/shared/NftOwnable.sol +107 -0
  451. package/contracts/shared/PolicyHolder.sol +62 -0
  452. package/contracts/shared/Registerable.sol +75 -0
  453. package/contracts/shared/RegistryLinked.sol +44 -0
  454. package/contracts/shared/Service.sol +87 -0
  455. package/contracts/shared/TokenHandler.sol +139 -0
  456. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  457. package/contracts/staking/IStaking.sol +168 -0
  458. package/contracts/staking/IStakingService.sol +160 -0
  459. package/contracts/staking/StakeManagerLib.sol +224 -0
  460. package/contracts/staking/Staking.sol +498 -0
  461. package/contracts/staking/StakingLifecycle.sol +23 -0
  462. package/contracts/staking/StakingManager.sol +52 -0
  463. package/contracts/staking/StakingReader.sol +190 -0
  464. package/contracts/staking/StakingService.sol +407 -0
  465. package/contracts/staking/StakingServiceManager.sol +44 -0
  466. package/contracts/staking/StakingStore.sol +605 -0
  467. package/contracts/staking/TargetManagerLib.sol +211 -0
  468. package/contracts/type/AddressSet.sol +58 -0
  469. package/contracts/type/Amount.sol +150 -0
  470. package/contracts/{types → type}/Blocknumber.sol +27 -3
  471. package/contracts/type/ClaimId.sol +80 -0
  472. package/contracts/type/DistributorType.sol +55 -0
  473. package/contracts/type/Fee.sol +66 -0
  474. package/contracts/type/Key32.sol +50 -0
  475. package/contracts/type/NftId.sol +79 -0
  476. package/contracts/type/NftIdSet.sol +62 -0
  477. package/contracts/type/ObjectType.sol +275 -0
  478. package/contracts/type/PayoutId.sol +82 -0
  479. package/contracts/type/Referral.sol +90 -0
  480. package/contracts/type/RequestId.sol +75 -0
  481. package/contracts/type/RiskId.sol +57 -0
  482. package/contracts/type/RoleId.sol +174 -0
  483. package/contracts/type/Seconds.sol +101 -0
  484. package/contracts/type/Selector.sol +102 -0
  485. package/contracts/{types → type}/StateId.sol +51 -6
  486. package/contracts/type/String.sol +53 -0
  487. package/contracts/{types → type}/Timestamp.sol +52 -8
  488. package/contracts/type/UFixed.sol +355 -0
  489. package/contracts/type/Version.sol +110 -0
  490. package/contracts/upgradeability/IVersionable.sol +53 -0
  491. package/contracts/upgradeability/ProxyManager.sol +231 -0
  492. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  493. package/contracts/upgradeability/Versionable.sol +59 -0
  494. package/package.json +19 -7
  495. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  496. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  497. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  498. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  499. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  500. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  501. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  502. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  503. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  504. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  505. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  506. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  507. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  509. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  511. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  513. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  515. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  517. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  519. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  521. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  523. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  525. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  527. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  529. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  532. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  534. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  536. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  538. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  540. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  542. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  543. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  544. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  545. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  546. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  548. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  550. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  552. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  553. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  554. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  555. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  557. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  558. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  559. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  560. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  561. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  562. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  563. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  566. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  567. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  569. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  571. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  572. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  573. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  574. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  575. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  576. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  578. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  580. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  581. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  582. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  584. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  585. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  586. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  587. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  588. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  589. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  590. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  591. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  592. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  593. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  594. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  595. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  596. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  597. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  598. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  599. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  600. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  601. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  602. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  604. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  606. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  608. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  610. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  612. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  614. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  616. package/contracts/components/Component.sol +0 -77
  617. package/contracts/components/IPool.sol +0 -15
  618. package/contracts/components/IProduct.sol +0 -16
  619. package/contracts/components/Pool.sol +0 -52
  620. package/contracts/components/Product.sol +0 -89
  621. package/contracts/experiment/errors/Require.sol +0 -38
  622. package/contracts/experiment/errors/Revert.sol +0 -44
  623. package/contracts/experiment/inheritance/A.sol +0 -53
  624. package/contracts/experiment/inheritance/B.sol +0 -28
  625. package/contracts/experiment/inheritance/C.sol +0 -34
  626. package/contracts/experiment/inheritance/IA.sol +0 -13
  627. package/contracts/experiment/inheritance/IB.sol +0 -10
  628. package/contracts/experiment/inheritance/IC.sol +0 -12
  629. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  630. package/contracts/experiment/statemachine/ISM.sol +0 -25
  631. package/contracts/experiment/statemachine/README.md +0 -112
  632. package/contracts/experiment/statemachine/SM.sol +0 -57
  633. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  634. package/contracts/experiment/types/TypeA.sol +0 -47
  635. package/contracts/experiment/types/TypeB.sol +0 -29
  636. package/contracts/instance/access/Access.sol +0 -165
  637. package/contracts/instance/access/IAccess.sol +0 -63
  638. package/contracts/instance/component/ComponentModule.sol +0 -274
  639. package/contracts/instance/component/IComponent.sol +0 -74
  640. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  641. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  642. package/contracts/instance/policy/IPolicy.sol +0 -50
  643. package/contracts/instance/policy/PolicyModule.sol +0 -114
  644. package/contracts/instance/pool/IPoolModule.sol +0 -23
  645. package/contracts/instance/pool/PoolModule.sol +0 -81
  646. package/contracts/instance/product/IProductService.sol +0 -36
  647. package/contracts/instance/product/ProductService.sol +0 -136
  648. package/contracts/instance/treasury/ITreasury.sol +0 -91
  649. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  650. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  651. package/contracts/registry/IChainNft.sol +0 -21
  652. package/contracts/types/ChainId.sol +0 -38
  653. package/contracts/types/Fee.sol +0 -32
  654. package/contracts/types/NftId.sol +0 -51
  655. package/contracts/types/ObjectType.sol +0 -107
  656. package/contracts/types/UFixed.sol +0 -206
@@ -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,72 +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 {LifecycleModule} from "./lifecycle/LifecycleModule.sol";
9
- import {ComponentModule} from "./component/ComponentModule.sol";
10
- import {ProductModule} from "./product/ProductService.sol";
11
- import {PolicyModule} from "./policy/PolicyModule.sol";
12
- import {PoolModule} from "./pool/PoolModule.sol";
13
- import {TreasuryModule} from "./treasury/TreasuryModule.sol";
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
14
5
 
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {BundleSet} from "./BundleSet.sol";
15
8
  import {IInstance} from "./IInstance.sol";
16
- import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
17
- 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";
18
20
 
19
21
  contract Instance is
20
- Registerable,
21
- AccessModule,
22
- LifecycleModule,
23
- ComponentModule,
24
- PolicyModule,
25
- PoolModule,
26
- ProductModule,
27
- TreasuryModule,
28
- IInstance
22
+ IInstance,
23
+ AccessManagedUpgradeable,
24
+ Registerable
29
25
  {
30
- constructor(
31
- address registry,
32
- address componentOwnerService,
33
- address productService
34
- )
35
- Registerable(registry)
36
- AccessModule()
37
- ComponentModule(componentOwnerService)
38
- PolicyModule(productService)
39
- ProductModule(productService)
40
- PoolModule(productService)
41
- // solhint-disable-next-line no-empty-blocks
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()
42
53
  {
54
+ _instanceAdmin = instanceAdmin;
55
+ if(_instanceAdmin.authority() == address(0)) {
56
+ // TODO rename error
57
+ revert ErrorInstanceInstanceAdminZero();
58
+ }
43
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);
44
88
  }
45
89
 
46
- // from registerable
47
- function register() external override returns (NftId nftId) {
48
- require(
49
- address(_registry) != address(0),
50
- "ERROR:PRD-001:REGISTRY_ZERO"
51
- );
52
- return _registry.register(address(this));
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);
53
98
  }
54
99
 
55
- // from registerable
56
- function getParentNftId() public pure override returns (NftId) {
57
- // TODO add self registry and exchange 0 for_registry.getNftId();
58
- // define parent tree for all registerables
59
- // eg 0 <- chain(mainnet) <- global registry <- chain registry <- instance <- component <- policy/bundle
60
- return toNftId(0);
100
+ function setStakingRewardRate(UFixed rewardRate)
101
+ external
102
+ onlyOwner()
103
+ {
104
+ _instanceService.setStakingRewardRate(rewardRate);
61
105
  }
62
106
 
63
- // from registerable
64
- function getType() external pure override returns (ObjectType objectType) {
65
- return INSTANCE();
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);
66
121
  }
67
122
 
68
- // from registerable
69
- function getData() external pure override returns (bytes memory data) {
70
- return bytes(abi.encode(0));
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);
71
132
  }
72
- }
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,288 @@
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
+
207
+ if (!roleExists(roleId)) {
208
+ _createRole(
209
+ roleId,
210
+ authorization.getRoleInfo(roleId));
211
+ }
212
+ }
213
+ }
214
+
215
+
216
+ function _createTargetAuthorizations(IAuthorization authorization)
217
+ internal
218
+ {
219
+ Str[] memory targets = authorization.getTargets();
220
+ Str target;
221
+
222
+ for(uint256 i = 0; i < targets.length; i++) {
223
+ target = targets[i];
224
+ RoleId[] memory authorizedRoles = authorization.getAuthorizedRoles(target);
225
+ RoleId authorizedRole;
226
+
227
+ for(uint256 j = 0; j < authorizedRoles.length; j++) {
228
+ authorizedRole = authorizedRoles[j];
229
+
230
+ _authorizeTargetFunctions(
231
+ getTargetForName(target),
232
+ authorizedRole,
233
+ authorization.getAuthorizedFunctions(
234
+ target,
235
+ authorizedRole));
236
+ }
237
+ }
238
+ }
239
+
240
+ function _checkAndCreateTargetWithRole(
241
+ address target,
242
+ string memory targetName
243
+ )
244
+ internal
245
+ {
246
+ // check that target name is defined in authorization specification
247
+ Str name = StrLib.toStr(targetName);
248
+ if (!_instanceAuthorization.targetExists(name)) {
249
+ revert ErrorInstanceAdminExpectedTargetMissing(targetName);
250
+ }
251
+
252
+ // create named target
253
+ _createTarget(
254
+ target,
255
+ targetName,
256
+ false, // check authority TODO check normal targets, don't check service targets (they share authority with registry admin)
257
+ false);
258
+
259
+ // assign target role if defined
260
+ RoleId targetRoleId = _instanceAuthorization.getTargetRole(name);
261
+ if (targetRoleId != RoleIdLib.zero()) {
262
+ _grantRoleToAccount(targetRoleId, target);
263
+ }
264
+ }
265
+
266
+ function _createModuleTargetsWithRoles()
267
+ internal
268
+ {
269
+ // create module targets
270
+ _checkAndCreateTargetWithRole(address(_instance), INSTANCE_TARGET_NAME);
271
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
272
+ _checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
273
+ _checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
274
+
275
+ // create targets for services that need to access the module targets
276
+ ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
277
+ VersionPart release = _instanceAuthorization.getRelease();
278
+ ObjectType serviceDomain;
279
+
280
+ for (uint256 i = 0; i < serviceDomains.length; i++) {
281
+ serviceDomain = serviceDomains[i];
282
+
283
+ _checkAndCreateTargetWithRole(
284
+ _registry.getServiceAddress(serviceDomain, release),
285
+ _instanceAuthorization.getServiceTarget(serviceDomain).toString());
286
+ }
287
+ }
288
+ }