@etherisc/gif-next 0.0.2-ad36bbd → 0.0.2-ad3cf8f-433

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 (613) hide show
  1. package/README.md +406 -9
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1271 -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 +1050 -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 +167 -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 +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1363 -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 +1033 -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 +927 -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 +1512 -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 +1999 -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 +1432 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -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 +295 -535
  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 +410 -604
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1660 -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 +3648 -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 +223 -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 +1000 -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 +786 -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 +892 -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 +1297 -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 +958 -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 +1083 -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 +1119 -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 +971 -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 +1077 -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 +942 -107
  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 +1455 -161
  184. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  185. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1864 -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 +205 -0
  192. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  193. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1061 -0
  194. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  195. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -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 +706 -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 +626 -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 +721 -0
  214. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +510 -0
  216. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +146 -0
  218. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
  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 +814 -0
  232. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  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 +1459 -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 +1849 -0
  260. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -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 +2283 -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 +105 -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 +598 -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 +137 -0
  337. package/contracts/authorization/IAuthorization.sol +54 -0
  338. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  339. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  340. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  341. package/contracts/authorization/ServiceAuthorization.sol +106 -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 +411 -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 +58 -15
  361. package/contracts/instance/IInstanceService.sol +92 -0
  362. package/contracts/instance/Instance.sol +211 -45
  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 +177 -100
  419. package/contracts/registry/IRegistry.sol +150 -51
  420. package/contracts/registry/IRegistryService.sol +60 -0
  421. package/contracts/registry/ITransferInterceptor.sol +7 -0
  422. package/contracts/registry/Registry.sol +642 -111
  423. package/contracts/registry/RegistryAdmin.sol +448 -0
  424. package/contracts/registry/RegistryService.sol +259 -0
  425. package/contracts/registry/RegistryServiceManager.sol +53 -0
  426. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  427. package/contracts/registry/ReleaseRegistry.sol +496 -0
  428. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  429. package/contracts/registry/TokenRegistry.sol +315 -0
  430. package/contracts/shared/Component.sol +276 -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 +73 -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 +31 -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 +88 -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/type/Blocknumber.sol +142 -0
  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 +276 -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/type/StateId.sol +149 -0
  486. package/contracts/type/String.sol +53 -0
  487. package/contracts/type/Timestamp.sol +146 -0
  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 +26 -7
  495. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  496. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  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 -179
  501. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  502. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  503. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  504. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
  505. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  506. package/artifacts/contracts/components/Product.sol/Product.json +0 -213
  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/types/TypeA.sol/TypeALib.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  529. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  530. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  531. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  532. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  533. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  534. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  535. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  536. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  537. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  539. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  540. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  541. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  543. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  544. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  545. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  546. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  548. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  550. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  551. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  552. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  553. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  555. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  557. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  558. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  560. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  562. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  563. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  564. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  566. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  567. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  568. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  570. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  571. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  572. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  573. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  574. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  575. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  576. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  577. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  578. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  579. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  580. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  581. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -10
  586. package/contracts/components/Component.sol +0 -62
  587. package/contracts/components/IPool.sol +0 -9
  588. package/contracts/components/IProduct.sol +0 -11
  589. package/contracts/components/Pool.sol +0 -29
  590. package/contracts/components/Product.sol +0 -65
  591. package/contracts/experiment/errors/Require.sol +0 -33
  592. package/contracts/experiment/errors/Revert.sol +0 -39
  593. package/contracts/experiment/inheritance/A.sol +0 -56
  594. package/contracts/experiment/inheritance/B.sol +0 -23
  595. package/contracts/experiment/inheritance/C.sol +0 -28
  596. package/contracts/experiment/inheritance/IA.sol +0 -18
  597. package/contracts/experiment/inheritance/IB.sol +0 -9
  598. package/contracts/experiment/inheritance/IC.sol +0 -11
  599. package/contracts/experiment/types/TypeA.sol +0 -42
  600. package/contracts/experiment/types/TypeB.sol +0 -24
  601. package/contracts/instance/access/Access.sol +0 -218
  602. package/contracts/instance/access/IAccess.sol +0 -83
  603. package/contracts/instance/component/ComponentModule.sol +0 -259
  604. package/contracts/instance/component/IComponent.sol +0 -94
  605. package/contracts/instance/policy/IPolicy.sol +0 -66
  606. package/contracts/instance/policy/PolicyModule.sol +0 -106
  607. package/contracts/instance/pool/IPoolModule.sol +0 -40
  608. package/contracts/instance/pool/PoolModule.sol +0 -83
  609. package/contracts/instance/product/IProductService.sol +0 -45
  610. package/contracts/instance/product/ProductService.sol +0 -105
  611. package/contracts/registry/IChainNft.sol +0 -18
  612. package/contracts/types/ChainId.sol +0 -24
  613. package/contracts/types/NftId.sol +0 -25
@@ -0,0 +1,496 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
+
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
9
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
12
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
13
+
14
+ import {IService} from "../shared/IService.sol";
15
+ import {IRegisterable} from "../shared/IRegisterable.sol";
16
+
17
+ import {IRegistry} from "./IRegistry.sol";
18
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
19
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
20
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
21
+ import {Registry} from "./Registry.sol";
22
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
23
+
24
+ // TODO rename to something that does not end with 'Manager'
25
+ // everywhere else *Manager points to an upgradeable contract
26
+ contract ReleaseRegistry is
27
+ AccessManaged,
28
+ ReleaseLifecycle,
29
+ IRegistryLinked
30
+ {
31
+ using ObjectTypeLib for ObjectType;
32
+
33
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
34
+
35
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
36
+ event LogReleaseActivation(VersionPart version);
37
+ event LogReleaseDisabled(VersionPart version);
38
+ event LogReleaseEnabled(VersionPart version);
39
+
40
+ // constructor
41
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
42
+
43
+ // _verifyServiceAuthorization
44
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
45
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
46
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
47
+
48
+ // registerService
49
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
50
+
51
+ // activateNextRelease
52
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
53
+
54
+ // _verifyService
55
+ error ErrorReleaseRegistryNotService(address notService);
56
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
57
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
58
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
59
+
60
+ // _verifyServiceInfo
61
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
62
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
63
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
64
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
65
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
66
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
67
+
68
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
69
+
70
+ RegistryAdmin public immutable _admin;
71
+ Registry public immutable _registry;
72
+
73
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
74
+ uint256 _releases;
75
+
76
+ VersionPart internal _latest; // latest active version
77
+ VersionPart internal _next; // version to create and activate
78
+
79
+ uint256 internal _registeredServices;
80
+ uint256 internal _servicesToRegister;
81
+
82
+ constructor(Registry registry)
83
+ AccessManaged(msg.sender)
84
+ {
85
+ // TODO move this part to RegistryLinked constructor
86
+ if(!_isRegistry(address(registry))) {
87
+ revert ErrorReleaseRegistryNotRegistry(registry);
88
+ }
89
+
90
+ setAuthority(registry.getAuthority());
91
+
92
+ _registry = registry;
93
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
94
+
95
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
96
+ }
97
+
98
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
99
+ /// sets next release into state SCHEDULED
100
+ function createNextRelease()
101
+ external
102
+ restricted() // GIF_ADMIN_ROLE
103
+ returns(VersionPart)
104
+ {
105
+ VersionPart version = _next;
106
+
107
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
108
+ _releaseInfo[version].state = SKIPPED();
109
+ }
110
+
111
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
112
+
113
+ _next = version;
114
+ _releaseInfo[version].version = version;
115
+ _releaseInfo[version].state = getInitialState(RELEASE());
116
+ _servicesToRegister = 0;
117
+ _registeredServices = 0;
118
+
119
+ return _next;
120
+ }
121
+
122
+ function prepareNextRelease(
123
+ IServiceAuthorization serviceAuthorization,
124
+ bytes32 salt
125
+ )
126
+ external
127
+ restricted() // GIF_MANAGER_ROLE
128
+ returns(
129
+ address releaseAuthority,
130
+ VersionPart releaseVersion,
131
+ bytes32 releaseSalt
132
+ )
133
+ {
134
+ releaseVersion = _next;
135
+
136
+ // release can transition into DEPLOYING state
137
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
138
+
139
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
140
+
141
+ releaseAuthority = _admin.authority();
142
+ releaseSalt = salt;
143
+ // ensures unique salt
144
+ // TODO CreateX have clones capability also
145
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
146
+ /*releaseSalt = keccak256(
147
+ bytes.concat(
148
+ bytes32(releaseVersion.toInt()),
149
+ salt));*/
150
+
151
+ _servicesToRegister = serviceDomainsCount;
152
+ _releaseInfo[releaseVersion].state = DEPLOYING();
153
+ _releaseInfo[releaseVersion].salt = releaseSalt;
154
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
155
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
156
+ //_releaseInfo[releaseVersion].authority = releaseAuthority;
157
+
158
+ emit LogReleaseCreation(releaseVersion, releaseSalt);
159
+ }
160
+
161
+ function registerService(IService service)
162
+ external
163
+ restricted // GIF_MANAGER_ROLE
164
+ returns(NftId nftId)
165
+ {
166
+ VersionPart releaseVersion = _next;
167
+
168
+ // release can transition to DEPLOYED state
169
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
170
+
171
+ address releaseAuthority = _admin.authority();
172
+ IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
173
+ ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
174
+
175
+ // service can work with release registry and release version
176
+ (
177
+ IRegistry.ObjectInfo memory info,
178
+ ObjectType serviceDomain,
179
+ VersionPart serviceVersion
180
+ //,string memory serviceName
181
+ ) = _verifyService(
182
+ service,
183
+ releaseAuthority,
184
+ releaseVersion,
185
+ expectedDomain
186
+ );
187
+
188
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
189
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
190
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
191
+
192
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
193
+
194
+ // release fully deployed
195
+ if(_servicesToRegister == _registeredServices) {
196
+ _releaseInfo[releaseVersion].state = DEPLOYED();
197
+ }
198
+
199
+ // TODO: service address matches defined in release auth (precalculated one)
200
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
201
+
202
+ // setup service authorization
203
+ _admin.authorizeService(
204
+ serviceAuth,
205
+ service,
206
+ serviceDomain,
207
+ releaseVersion);
208
+
209
+ // register service with registry
210
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
211
+ service.linkToRegisteredNftId();
212
+ }
213
+ // TODO return activated version
214
+ function activateNextRelease()
215
+ external
216
+ restricted // GIF_ADMIN_ROLE
217
+ {
218
+ VersionPart version = _next;
219
+
220
+ // release can transition to ACTIVE state
221
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
222
+
223
+ _latest = version;
224
+ _releases++;
225
+ _releaseInfo[version].state = ACTIVE();
226
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
227
+
228
+ // grant special roles for registry/staking/pool services
229
+ // this will enable access to core contracts functions
230
+
231
+ // registry service MUST be registered for each release
232
+ address service = _registry.getServiceAddress(REGISTRY(), version);
233
+ if(service == address(0)) {
234
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
235
+ }
236
+
237
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
238
+
239
+ service = _registry.getServiceAddress(STAKING(), version);
240
+ if(service != address(0)) {
241
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
242
+ }
243
+
244
+ service = _registry.getServiceAddress(POOL(), version);
245
+ if(service != address(0)) {
246
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
247
+ }
248
+
249
+ // TODO may run out of gas
250
+ // TODO test how many service can be locked in one transaction
251
+ // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
252
+ _setReleaseLocked(version, false);
253
+
254
+ emit LogReleaseActivation(version);
255
+ }
256
+
257
+ /// @dev stop all operations with release services
258
+ function pauseRelease(VersionPart version)
259
+ external
260
+ restricted // GIF_ADMIN_ROLE
261
+ {
262
+ // release can transition to PAUSED state
263
+ checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
264
+
265
+ _releaseInfo[version].state = PAUSED();
266
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
267
+
268
+ _setReleaseLocked(version, true);
269
+
270
+ emit LogReleaseDisabled(version);
271
+ }
272
+
273
+ /// @dev resume operations with release services
274
+ function unpauseRelease(VersionPart version)
275
+ external
276
+ restricted // GIF_ADMIN_ROLE
277
+ {
278
+ // release can transition to ACTIVE state
279
+ checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
280
+
281
+ _releaseInfo[version].state = ACTIVE();
282
+ _releaseInfo[version].disabledAt = zeroTimestamp();
283
+
284
+ _setReleaseLocked(version, false);
285
+
286
+ emit LogReleaseEnabled(version);
287
+ }
288
+
289
+ //--- view functions ----------------------------------------------------//
290
+
291
+ function predictDeterministicAddress(
292
+ address implementation,
293
+ bytes32 salt,
294
+ address deployer
295
+ ) external pure returns (address predicted) {
296
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
297
+ }
298
+
299
+ function isActiveRelease(VersionPart version) public view returns(bool) {
300
+ return _releaseInfo[version].state == ACTIVE();
301
+ }
302
+
303
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
304
+ return _releaseInfo[version];
305
+ }
306
+
307
+ function releases() external view returns (uint) {
308
+ return _releases;
309
+ }
310
+
311
+ function getNextVersion() public view returns(VersionPart) {
312
+ return _next;
313
+ }
314
+
315
+ function getLatestVersion() external view returns(VersionPart) {
316
+ return _latest;
317
+ }
318
+
319
+ function getState(VersionPart version) external view returns (StateId stateId) {
320
+ return _releaseInfo[version].state;
321
+ }
322
+
323
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
324
+ return _servicesToRegister - _registeredServices;
325
+ }
326
+
327
+ function getServiceAuthorization(VersionPart version)
328
+ external
329
+ view
330
+ returns (IServiceAuthorization serviceAuthorization)
331
+ {
332
+ return _releaseInfo[version].auth;
333
+ }
334
+
335
+ function getRegistryAdmin() external view returns (address) {
336
+ return address(_admin);
337
+ }
338
+
339
+ //--- IRegistryLinked ------------------------------------------------------//
340
+
341
+ function getRegistry() external view returns (IRegistry) {
342
+ return _registry;
343
+ }
344
+
345
+ //--- private functions ----------------------------------------------------//
346
+
347
+ // close / open service targets instead of revoking / granting roles
348
+ function _setReleaseLocked(VersionPart version, bool locked)
349
+ private
350
+ {
351
+ address service;
352
+ ObjectType domain;
353
+ IServiceAuthorization auth = _releaseInfo[version].auth;
354
+
355
+ ObjectType[] memory domains = auth.getServiceDomains();
356
+ for(uint idx = 0; idx < domains.length; idx++)
357
+ {
358
+ domain = domains[idx];
359
+ service = _registry.getServiceAddress(domain, version);
360
+ assert(service != address(0));
361
+
362
+ _admin.setServiceLocked(IService(service), locked);
363
+ }
364
+
365
+ // TODO add check for active/disabled release to core contracts functions interacting with releases
366
+ }
367
+
368
+ function _verifyServiceAuthorization(
369
+ IServiceAuthorization serviceAuthorization,
370
+ VersionPart releaseVersion,
371
+ bytes32 salt
372
+ )
373
+ private
374
+ view
375
+ returns (uint256 serviceDomainsCount)
376
+ {
377
+ // authorization contract supports IServiceAuthorization interface
378
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
379
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
380
+ }
381
+
382
+ // authorizaions contract version matches with release version
383
+ VersionPart authVersion = serviceAuthorization.getRelease();
384
+ if (releaseVersion != authVersion) {
385
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
386
+ }
387
+
388
+ // sanity check to ensure service domain list is not empty
389
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
390
+ if (serviceDomainsCount == 0) {
391
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
392
+ }
393
+ }
394
+
395
+ // TODO get service names
396
+ function _verifyService(
397
+ IService service,
398
+ address expectedAuthority,
399
+ VersionPart expectedVersion,
400
+ ObjectType expectedDomain
401
+ )
402
+ internal
403
+ view
404
+ returns(
405
+ IRegistry.ObjectInfo memory serviceInfo,
406
+ ObjectType serviceDomain,
407
+ VersionPart serviceVersion
408
+ )
409
+ {
410
+ if(!service.supportsInterface(type(IService).interfaceId)) {
411
+ revert ErrorReleaseRegistryNotService(address(service));
412
+ }
413
+
414
+ address owner = msg.sender;
415
+ address serviceAuthority = service.authority();
416
+ serviceVersion = service.getVersion().toMajorPart();
417
+ serviceDomain = service.getDomain();// checked in registry
418
+ serviceInfo = service.getInitialInfo();
419
+
420
+ _verifyServiceInfo(service, serviceInfo, owner);
421
+
422
+ if(serviceAuthority != expectedAuthority) {
423
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
424
+ service,
425
+ serviceAuthority,
426
+ expectedAuthority);
427
+ }
428
+
429
+ if(serviceVersion != expectedVersion) {
430
+ revert ErrorReleaseRegistryServiceVersionMismatch(
431
+ service,
432
+ serviceVersion,
433
+ expectedVersion);
434
+ }
435
+
436
+ if(serviceDomain != expectedDomain) {
437
+ revert ErrorReleaseRegistryServiceDomainMismatch(
438
+ service,
439
+ expectedDomain,
440
+ serviceDomain);
441
+ }
442
+ }
443
+
444
+
445
+ function _verifyServiceInfo(
446
+ IService service,
447
+ IRegistry.ObjectInfo memory info,
448
+ address expectedOwner // assume always valid, can not be 0
449
+ )
450
+ internal
451
+ view
452
+ {
453
+ if(info.objectAddress != address(service)) {
454
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
455
+ }
456
+
457
+ if(info.isInterceptor != false) { // service is never interceptor
458
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
459
+ }
460
+
461
+ if(info.objectType != SERVICE()) {
462
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
463
+ }
464
+
465
+ address owner = info.initialOwner;
466
+
467
+ if(owner != expectedOwner) { // registerable owner protection
468
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
469
+ }
470
+
471
+ if(owner == address(service)) {
472
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
473
+ }
474
+
475
+ if(_registry.isRegistered(owner)) {
476
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
477
+ }
478
+ }
479
+
480
+ /// @dev returns true iff a the address passes some simple proxy tests.
481
+ function _isRegistry(address registryAddress) internal view returns (bool) {
482
+
483
+ // zero address is certainly not registry
484
+ if (registryAddress == address(0)) {
485
+ return false;
486
+ }
487
+ // TODO try catch and return false in case of revert or just panic
488
+ // check if contract returns a zero nft id for its own address
489
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
490
+ return false;
491
+ }
492
+
493
+ return true;
494
+ }
495
+ }
496
+
@@ -0,0 +1,198 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IBundleService} from "../pool/IBundleService.sol";
10
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
11
+ import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {IPoolService} from "../pool/IPoolService.sol";
13
+ import {IStakingService} from "../staking/IStakingService.sol";
14
+ import {IRegistryService} from "./IRegistryService.sol";
15
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
16
+
17
+
18
+ contract ServiceAuthorizationV3
19
+ is ServiceAuthorization
20
+ {
21
+
22
+ constructor(string memory commitHash)
23
+ ServiceAuthorization(commitHash, 3)
24
+ {}
25
+
26
+ function _setupDomains()
27
+ internal
28
+ override
29
+ {
30
+ _authorizeDomain(REGISTRY(), address(1));
31
+ _authorizeDomain(STAKING(), address(2));
32
+ _authorizeDomain(INSTANCE(), address(3));
33
+ _authorizeDomain(COMPONENT(), address(4));
34
+ _authorizeDomain(DISTRIBUTION(), address(5));
35
+ _authorizeDomain(PRICE(), address(6));
36
+ _authorizeDomain(BUNDLE(), address(7));
37
+ _authorizeDomain(POOL(), address(8));
38
+ _authorizeDomain(ORACLE(), address(9));
39
+ _authorizeDomain(PRODUCT(), address(10));
40
+ _authorizeDomain(POLICY(), address(11));
41
+ _authorizeDomain(CLAIM(), address(12));
42
+ _authorizeDomain(APPLICATION(), address(13));
43
+ }
44
+
45
+
46
+ function _setupDomainAuthorizations()
47
+ internal
48
+ override
49
+ {
50
+ _setupIRegistryServiceAuthorization();
51
+ _setupStakingServiceAuthorization();
52
+ _setupInstanceServiceAuthorization();
53
+ _setupComponentServiceAuthorization();
54
+ _setupDistributionServiceAuthorization();
55
+ _setupPoolServiceAuthorization();
56
+ _setupBundleServiceAuthorization();
57
+ }
58
+
59
+
60
+ /// @dev registry service authorization.
61
+ /// authorized functions MUST be implemented with a restricted modifier
62
+ function _setupIRegistryServiceAuthorization()
63
+ internal
64
+ {
65
+ IAccess.FunctionInfo[] storage functions;
66
+
67
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
68
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
69
+
70
+ // functions = _authorizeForService(REGISTRY(), POOL());
71
+ // _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
72
+
73
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
74
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
75
+
76
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
77
+ // _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
78
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
79
+
80
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
81
+ _authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
82
+
83
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
84
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
85
+
86
+ functions = _authorizeForService(REGISTRY(), STAKING());
87
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
88
+
89
+ // functions = _authorizeForService(REGISTRY(), PRODUCT());
90
+ // _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
91
+ }
92
+
93
+
94
+ /// @dev staking service authorization.
95
+ /// authorized functions MUST be implemented with a restricted modifier
96
+ function _setupStakingServiceAuthorization()
97
+ internal
98
+ {
99
+ IAccess.FunctionInfo[] storage functions;
100
+
101
+ functions = _authorizeForService(STAKING(), INSTANCE());
102
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
103
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
104
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
105
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
106
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
107
+
108
+ functions = _authorizeForService(STAKING(), ALL());
109
+ _authorize(functions, IStakingService.create.selector, "create");
110
+ _authorize(functions, IStakingService.stake.selector, "stake");
111
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
112
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
113
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
114
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
115
+ }
116
+
117
+
118
+ /// @dev Instance service function authorization.
119
+ function _setupInstanceServiceAuthorization()
120
+ internal
121
+ {
122
+ IAccess.FunctionInfo[] storage functions;
123
+
124
+ functions = _authorizeForService(INSTANCE(), COMPONENT());
125
+ _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
126
+ }
127
+
128
+
129
+ /// @dev Component service function authorization.
130
+ function _setupComponentServiceAuthorization()
131
+ internal
132
+ {
133
+ // authz.authorizations = new DomainAuthorization[](4);
134
+
135
+ // authz.authorizations[0].domain = POLICY();
136
+ // _functions = new IAccessAdmin.Function[](1);
137
+ // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
138
+ // authz.authorizations[0].functions = _functions;
139
+
140
+ // authz.authorizations[1].domain = DISTRIBUTION();
141
+ // _functions = new IAccessAdmin.Function[](1);
142
+ // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
143
+ // authz.authorizations[1].functions = _functions;
144
+
145
+ // authz.authorizations[2].domain = POOL();
146
+ // _functions = new IAccessAdmin.Function[](1);
147
+ // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
148
+ // authz.authorizations[2].functions = _functions;
149
+
150
+ // authz.authorizations[3].domain = BUNDLE();
151
+ // _functions = new IAccessAdmin.Function[](1);
152
+ // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
153
+ // authz.authorizations[3].functions = _functions;
154
+ }
155
+
156
+ /// @dev Distribution service function authorization.
157
+ function _setupDistributionServiceAuthorization()
158
+ internal
159
+ {
160
+ IAccess.FunctionInfo[] storage functions;
161
+
162
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
163
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
164
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
165
+ }
166
+
167
+
168
+ /// @dev Pool service function authorization.
169
+ function _setupPoolServiceAuthorization()
170
+ internal
171
+ {
172
+ IAccess.FunctionInfo[] storage functions;
173
+
174
+ functions = _authorizeForService(POOL(), POLICY());
175
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
176
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
177
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
178
+
179
+ functions = _authorizeForService(POOL(), CLAIM());
180
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
181
+ }
182
+
183
+
184
+ /// @dev Instance service function authorization.
185
+ function _setupBundleServiceAuthorization()
186
+ internal
187
+ {
188
+ IAccess.FunctionInfo[] storage functions;
189
+
190
+ functions = _authorizeForService(BUNDLE(), POOL());
191
+ _authorize(functions, IBundleService.create.selector, "create");
192
+ _authorize(functions, IBundleService.close.selector, "close");
193
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
194
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
195
+ _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
196
+ }
197
+ }
198
+