@etherisc/gif-next 0.0.2-a84e908-436 → 0.0.2-a8814be-836

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 (769) hide show
  1. package/README.md +267 -42
  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/module/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 +1358 -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 +1028 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1421 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +834 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +922 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +948 -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 +1507 -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 +1978 -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 +1427 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -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 +290 -1670
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +773 -0
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +448 -2070
  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 +1069 -0
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -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/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  90. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.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/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → 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/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  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 +995 -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 +781 -0
  108. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +691 -0
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +887 -0
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +943 -0
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +726 -0
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1292 -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 +1447 -0
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +838 -0
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +947 -0
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +953 -0
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +1078 -0
  132. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1628 -0
  134. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  136. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  137. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +753 -0
  138. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +714 -0
  140. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  141. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1114 -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 +1413 -0
  146. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +842 -0
  148. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +243 -381
  150. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  151. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +929 -0
  152. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +912 -0
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +565 -0
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +200 -189
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1284 -0
  162. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +786 -0
  164. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/PricingService.sol/PricingService.json +889 -0
  166. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  168. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  169. package/artifacts/contracts/product/Product.sol/Product.json +1072 -0
  170. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  171. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  172. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  174. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  176. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +984 -114
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  179. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +956 -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 +1214 -283
  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 +1178 -0
  188. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +717 -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 +1048 -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 +701 -0
  200. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1589 -0
  202. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +810 -0
  204. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +221 -213
  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 +621 -0
  210. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1049 -0
  212. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +716 -0
  214. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +122 -172
  216. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  218. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +47 -74
  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 +1 -1
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +104 -28
  224. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  226. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +169 -171
  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 +809 -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 +209 -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 +1 -1
  243. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +186 -27
  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/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +209 -157
  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 +1454 -0
  254. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1030 -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 +1844 -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 +766 -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 +1231 -0
  268. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +714 -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 +602 -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 +140 -0
  343. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  344. package/contracts/distribution/Distribution.sol +296 -0
  345. package/contracts/distribution/DistributionService.sol +348 -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 +57 -47
  361. package/contracts/instance/IInstanceService.sol +92 -0
  362. package/contracts/instance/Instance.sol +216 -61
  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/{test/Usdc.sol → mock/Dip.sol} +6 -6
  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 +286 -0
  388. package/contracts/oracle/OracleServiceManager.sol +39 -0
  389. package/contracts/pool/BasicPool.sol +165 -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 +357 -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 +434 -0
  416. package/contracts/product/RiskService.sol +96 -0
  417. package/contracts/product/RiskServiceManager.sol +39 -0
  418. package/contracts/registry/ChainNft.sol +131 -40
  419. package/contracts/registry/IRegistry.sol +139 -22
  420. package/contracts/registry/IRegistryService.sol +60 -0
  421. package/contracts/registry/ITransferInterceptor.sol +7 -0
  422. package/contracts/registry/Registry.sol +600 -341
  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 +493 -0
  428. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  429. package/contracts/registry/TokenRegistry.sol +315 -0
  430. package/contracts/shared/Component.sol +261 -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/{instance/base → shared}/ILifecycle.sol +6 -5
  440. package/contracts/shared/INftOwnable.sol +25 -0
  441. package/contracts/shared/IPolicyHolder.sol +35 -0
  442. package/contracts/shared/IRegisterable.sol +10 -19
  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 +123 -0
  451. package/contracts/shared/PolicyHolder.sol +62 -0
  452. package/contracts/shared/Registerable.sol +54 -65
  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 +157 -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 +393 -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/{types → type}/AddressSet.sol +1 -1
  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/{types → type}/Key32.sol +8 -3
  475. package/contracts/{types → type}/NftId.sol +22 -15
  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/{types → type}/RiskId.sol +16 -2
  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 +53 -5
  486. package/contracts/type/String.sol +53 -0
  487. package/contracts/{types → type}/Timestamp.sol +38 -15
  488. package/contracts/type/UFixed.sol +355 -0
  489. package/contracts/{types → type}/Version.sol +9 -2
  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 +12 -7
  495. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  497. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  498. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  499. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  500. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  501. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  502. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  503. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  504. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  505. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  506. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  507. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  508. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  509. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  524. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  526. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  528. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  530. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  534. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  536. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  538. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  540. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  542. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  544. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  545. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  546. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  548. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  549. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  550. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  551. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -341
  553. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  554. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  555. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  556. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  557. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  558. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  559. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  562. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  565. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  567. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  570. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  571. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  572. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  574. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  575. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  576. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  578. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  579. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  581. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  582. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  583. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  584. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  585. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  586. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  587. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  588. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  590. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  591. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  592. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  593. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  594. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  595. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  596. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  597. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  598. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  599. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  600. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  601. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  602. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  603. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  604. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  605. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  606. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -595
  607. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -484
  609. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  610. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -366
  612. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -481
  614. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  615. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -607
  617. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -922
  619. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  620. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  621. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  622. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  623. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  624. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  625. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  626. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  628. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  629. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  630. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  631. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +0 -129
  632. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  633. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  634. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  635. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  636. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  637. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  638. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  639. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  640. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  642. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  643. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  644. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  646. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -443
  648. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  650. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  651. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  652. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  653. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  654. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  655. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  656. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  657. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  658. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  660. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  662. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  664. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  666. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  668. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  669. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  670. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  672. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  674. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  676. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  678. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  680. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  682. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  684. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  686. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  688. package/contracts/components/BaseComponent.sol +0 -94
  689. package/contracts/components/Distribution.sol +0 -132
  690. package/contracts/components/IBaseComponent.sol +0 -19
  691. package/contracts/components/IDistributionComponent.sol +0 -47
  692. package/contracts/components/IPoolComponent.sol +0 -71
  693. package/contracts/components/IProductComponent.sol +0 -38
  694. package/contracts/components/Pool.sol +0 -235
  695. package/contracts/components/Product.sol +0 -227
  696. package/contracts/experiment/errors/Require.sol +0 -38
  697. package/contracts/experiment/errors/Revert.sol +0 -44
  698. package/contracts/experiment/inheritance/A.sol +0 -53
  699. package/contracts/experiment/inheritance/B.sol +0 -28
  700. package/contracts/experiment/inheritance/C.sol +0 -34
  701. package/contracts/experiment/inheritance/IA.sol +0 -13
  702. package/contracts/experiment/inheritance/IB.sol +0 -10
  703. package/contracts/experiment/inheritance/IC.sol +0 -12
  704. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  705. package/contracts/experiment/statemachine/ISM.sol +0 -25
  706. package/contracts/experiment/statemachine/README.md +0 -112
  707. package/contracts/experiment/statemachine/SM.sol +0 -57
  708. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  709. package/contracts/experiment/types/TypeA.sol +0 -47
  710. package/contracts/experiment/types/TypeB.sol +0 -29
  711. package/contracts/instance/IInstanceLinked.sol +0 -8
  712. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  713. package/contracts/instance/base/IInstanceBase.sol +0 -22
  714. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  715. package/contracts/instance/base/IService.sol +0 -15
  716. package/contracts/instance/base/InstanceBase.sol +0 -91
  717. package/contracts/instance/base/KeyValueStore.sol +0 -161
  718. package/contracts/instance/base/Lifecycle.sol +0 -100
  719. package/contracts/instance/base/ModuleBase.sol +0 -57
  720. package/contracts/instance/base/ServiceBase.sol +0 -37
  721. package/contracts/instance/module/access/Access.sol +0 -149
  722. package/contracts/instance/module/access/IAccess.sol +0 -53
  723. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  724. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  725. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  726. package/contracts/instance/module/component/IComponent.sol +0 -28
  727. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  728. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  729. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  730. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  731. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  732. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  733. package/contracts/instance/module/risk/IRisk.sol +0 -26
  734. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  735. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  736. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  737. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  738. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  739. package/contracts/instance/service/DistributionService.sol +0 -59
  740. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  741. package/contracts/instance/service/IDistributionService.sol +0 -12
  742. package/contracts/instance/service/IPoolService.sol +0 -37
  743. package/contracts/instance/service/IProductService.sol +0 -107
  744. package/contracts/instance/service/PoolService.sol +0 -149
  745. package/contracts/instance/service/ProductService.sol +0 -509
  746. package/contracts/registry/IChainNft.sol +0 -21
  747. package/contracts/registry/IRegistryLinked.sol +0 -8
  748. package/contracts/shared/ERC165.sol +0 -21
  749. package/contracts/shared/IOwnable.sol +0 -6
  750. package/contracts/shared/IVersionable.sol +0 -94
  751. package/contracts/shared/Proxy.sol +0 -94
  752. package/contracts/shared/Versionable.sol +0 -145
  753. package/contracts/test/TestDistribution.sol +0 -21
  754. package/contracts/test/TestFee.sol +0 -25
  755. package/contracts/test/TestPool.sol +0 -25
  756. package/contracts/test/TestProduct.sol +0 -72
  757. package/contracts/test/TestRegisterable.sol +0 -19
  758. package/contracts/test/TestRoleId.sol +0 -14
  759. package/contracts/test/TestService.sol +0 -32
  760. package/contracts/test/TestToken.sol +0 -26
  761. package/contracts/test/TestVersion.sol +0 -44
  762. package/contracts/test/TestVersionable.sol +0 -17
  763. package/contracts/types/ChainId.sol +0 -38
  764. package/contracts/types/Fee.sol +0 -56
  765. package/contracts/types/NftIdSet.sol +0 -60
  766. package/contracts/types/ObjectType.sol +0 -131
  767. package/contracts/types/ReferralId.sol +0 -48
  768. package/contracts/types/RoleId.sol +0 -38
  769. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,493 @@
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
+
25
+ contract ReleaseRegistry is
26
+ AccessManaged,
27
+ ReleaseLifecycle,
28
+ IRegistryLinked
29
+ {
30
+ using ObjectTypeLib for ObjectType;
31
+
32
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
33
+
34
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
35
+ event LogReleaseActivation(VersionPart version);
36
+ event LogReleaseDisabled(VersionPart version);
37
+ event LogReleaseEnabled(VersionPart version);
38
+
39
+ // constructor
40
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
41
+
42
+ // _verifyServiceAuthorization
43
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
44
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
45
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
46
+
47
+ // registerService
48
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
49
+
50
+ // activateNextRelease
51
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
52
+
53
+ // _verifyService
54
+ error ErrorReleaseRegistryNotService(address notService);
55
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
56
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
57
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
58
+
59
+ // _verifyServiceInfo
60
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
61
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
62
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
63
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
64
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
65
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
66
+
67
+ RegistryAdmin public immutable _admin;
68
+ Registry public immutable _registry;
69
+
70
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
71
+ uint256 _releases;
72
+
73
+ VersionPart internal _latest; // latest active version
74
+ VersionPart internal _next; // version to create and activate
75
+
76
+ uint256 internal _registeredServices;
77
+ uint256 internal _servicesToRegister;
78
+
79
+ constructor(Registry registry)
80
+ AccessManaged(msg.sender)
81
+ {
82
+ // TODO move this part to RegistryLinked constructor
83
+ if(!_isRegistry(address(registry))) {
84
+ revert ErrorReleaseRegistryNotRegistry(registry);
85
+ }
86
+
87
+ setAuthority(registry.getAuthority());
88
+
89
+ _registry = registry;
90
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
91
+
92
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
93
+ }
94
+
95
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
96
+ /// sets next release into state SCHEDULED
97
+ function createNextRelease()
98
+ external
99
+ restricted() // GIF_ADMIN_ROLE
100
+ returns(VersionPart)
101
+ {
102
+ VersionPart version = _next;
103
+
104
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
105
+ _releaseInfo[version].state = SKIPPED();
106
+ }
107
+
108
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
109
+
110
+ _next = version;
111
+ _releaseInfo[version].version = version;
112
+ _releaseInfo[version].state = getInitialState(RELEASE());
113
+ _servicesToRegister = 0;
114
+ _registeredServices = 0;
115
+
116
+ return _next;
117
+ }
118
+
119
+ function prepareNextRelease(
120
+ IServiceAuthorization serviceAuthorization,
121
+ bytes32 salt
122
+ )
123
+ external
124
+ restricted() // GIF_MANAGER_ROLE
125
+ returns(
126
+ address releaseAuthority,
127
+ VersionPart releaseVersion,
128
+ bytes32 releaseSalt
129
+ )
130
+ {
131
+ releaseVersion = _next;
132
+
133
+ // release can transition into DEPLOYING state
134
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
135
+
136
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
137
+
138
+ releaseAuthority = _admin.authority();
139
+ releaseSalt = salt;
140
+ // ensures unique salt
141
+ // TODO CreateX have clones capability also
142
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
143
+ /*releaseSalt = keccak256(
144
+ bytes.concat(
145
+ bytes32(releaseVersion.toInt()),
146
+ salt));*/
147
+
148
+ _servicesToRegister = serviceDomainsCount;
149
+ _releaseInfo[releaseVersion].state = DEPLOYING();
150
+ _releaseInfo[releaseVersion].salt = releaseSalt;
151
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
152
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
153
+ //_releaseInfo[releaseVersion].authority = releaseAuthority;
154
+
155
+ emit LogReleaseCreation(releaseVersion, releaseSalt);
156
+ }
157
+
158
+ function registerService(IService service)
159
+ external
160
+ restricted // GIF_MANAGER_ROLE
161
+ returns(NftId nftId)
162
+ {
163
+ VersionPart releaseVersion = _next;
164
+
165
+ // release can transition to DEPLOYED state
166
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
167
+
168
+ address releaseAuthority = _admin.authority();
169
+ IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
170
+ ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
171
+
172
+ // service can work with release registry and release version
173
+ (
174
+ IRegistry.ObjectInfo memory info,
175
+ ObjectType serviceDomain,
176
+ VersionPart serviceVersion
177
+ //,string memory serviceName
178
+ ) = _verifyService(
179
+ service,
180
+ releaseAuthority,
181
+ releaseVersion,
182
+ expectedDomain
183
+ );
184
+
185
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
186
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
187
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
188
+
189
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
190
+
191
+ // release fully deployed
192
+ if(_servicesToRegister == _registeredServices) {
193
+ _releaseInfo[releaseVersion].state = DEPLOYED();
194
+ }
195
+
196
+ // TODO: service address matches defined in release auth (precalculated one)
197
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
198
+
199
+ // setup service authorization
200
+ _admin.authorizeService(
201
+ serviceAuth,
202
+ service,
203
+ serviceDomain,
204
+ releaseVersion);
205
+
206
+ // register service with registry
207
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
208
+ service.linkToRegisteredNftId();
209
+ }
210
+ // TODO return activated version
211
+ function activateNextRelease()
212
+ external
213
+ restricted // GIF_ADMIN_ROLE
214
+ {
215
+ VersionPart version = _next;
216
+
217
+ // release can transition to ACTIVE state
218
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
219
+
220
+ _latest = version;
221
+ _releases++;
222
+ _releaseInfo[version].state = ACTIVE();
223
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
224
+
225
+ // grant special roles for registry/staking/pool services
226
+ // this will enable access to core contracts functions
227
+
228
+ // registry service MUST be registered for each release
229
+ address service = _registry.getServiceAddress(REGISTRY(), version);
230
+ if(service == address(0)) {
231
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
232
+ }
233
+
234
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
235
+
236
+ service = _registry.getServiceAddress(STAKING(), version);
237
+ if(service != address(0)) {
238
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
239
+ }
240
+
241
+ service = _registry.getServiceAddress(POOL(), version);
242
+ if(service != address(0)) {
243
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
244
+ }
245
+
246
+ // TODO may run out of gas
247
+ // TODO test how many service can be locked in one transaction
248
+ // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
249
+ _setReleaseLocked(version, false);
250
+
251
+ emit LogReleaseActivation(version);
252
+ }
253
+
254
+ /// @dev stop all operations with release services
255
+ function pauseRelease(VersionPart version)
256
+ external
257
+ restricted // GIF_ADMIN_ROLE
258
+ {
259
+ // release can transition to PAUSED state
260
+ checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
261
+
262
+ _releaseInfo[version].state = PAUSED();
263
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
264
+
265
+ _setReleaseLocked(version, true);
266
+
267
+ emit LogReleaseDisabled(version);
268
+ }
269
+
270
+ /// @dev resume operations with release services
271
+ function unpauseRelease(VersionPart version)
272
+ external
273
+ restricted // GIF_ADMIN_ROLE
274
+ {
275
+ // release can transition to ACTIVE state
276
+ checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
277
+
278
+ _releaseInfo[version].state = ACTIVE();
279
+ _releaseInfo[version].disabledAt = zeroTimestamp();
280
+
281
+ _setReleaseLocked(version, false);
282
+
283
+ emit LogReleaseEnabled(version);
284
+ }
285
+
286
+ //--- view functions ----------------------------------------------------//
287
+
288
+ function predictDeterministicAddress(
289
+ address implementation,
290
+ bytes32 salt,
291
+ address deployer
292
+ ) external pure returns (address predicted) {
293
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
294
+ }
295
+
296
+ function isActiveRelease(VersionPart version) public view returns(bool) {
297
+ return _releaseInfo[version].state == ACTIVE();
298
+ }
299
+
300
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
301
+ return _releaseInfo[version];
302
+ }
303
+
304
+ function releases() external view returns (uint) {
305
+ return _releases;
306
+ }
307
+
308
+ function getNextVersion() public view returns(VersionPart) {
309
+ return _next;
310
+ }
311
+
312
+ function getLatestVersion() external view returns(VersionPart) {
313
+ return _latest;
314
+ }
315
+
316
+ function getState(VersionPart version) external view returns (StateId stateId) {
317
+ return _releaseInfo[version].state;
318
+ }
319
+
320
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
321
+ return _servicesToRegister - _registeredServices;
322
+ }
323
+
324
+ function getServiceAuthorization(VersionPart version)
325
+ external
326
+ view
327
+ returns (IServiceAuthorization serviceAuthorization)
328
+ {
329
+ return _releaseInfo[version].auth;
330
+ }
331
+
332
+ function getRegistryAdmin() external view returns (address) {
333
+ return address(_admin);
334
+ }
335
+
336
+ //--- IRegistryLinked ------------------------------------------------------//
337
+
338
+ function getRegistry() external view returns (IRegistry) {
339
+ return _registry;
340
+ }
341
+
342
+ //--- private functions ----------------------------------------------------//
343
+
344
+ // close / open service targets instead of revoking / granting roles
345
+ function _setReleaseLocked(VersionPart version, bool locked)
346
+ private
347
+ {
348
+ address service;
349
+ ObjectType domain;
350
+ IServiceAuthorization auth = _releaseInfo[version].auth;
351
+
352
+ ObjectType[] memory domains = auth.getServiceDomains();
353
+ for(uint idx = 0; idx < domains.length; idx++)
354
+ {
355
+ domain = domains[idx];
356
+ service = _registry.getServiceAddress(domain, version);
357
+ assert(service != address(0));
358
+
359
+ _admin.setServiceLocked(IService(service), locked);
360
+ }
361
+
362
+ // TODO add check for active/disabled release to core contracts functions interacting with releases
363
+ }
364
+
365
+ function _verifyServiceAuthorization(
366
+ IServiceAuthorization serviceAuthorization,
367
+ VersionPart releaseVersion,
368
+ bytes32 salt
369
+ )
370
+ private
371
+ view
372
+ returns (uint256 serviceDomainsCount)
373
+ {
374
+ // authorization contract supports IServiceAuthorization interface
375
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
376
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
377
+ }
378
+
379
+ // authorizaions contract version matches with release version
380
+ VersionPart authVersion = serviceAuthorization.getRelease();
381
+ if (releaseVersion != authVersion) {
382
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
383
+ }
384
+
385
+ // sanity check to ensure service domain list is not empty
386
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
387
+ if (serviceDomainsCount == 0) {
388
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
389
+ }
390
+ }
391
+
392
+ // TODO get service names
393
+ function _verifyService(
394
+ IService service,
395
+ address expectedAuthority,
396
+ VersionPart expectedVersion,
397
+ ObjectType expectedDomain
398
+ )
399
+ internal
400
+ view
401
+ returns(
402
+ IRegistry.ObjectInfo memory serviceInfo,
403
+ ObjectType serviceDomain,
404
+ VersionPart serviceVersion
405
+ )
406
+ {
407
+ if(!service.supportsInterface(type(IService).interfaceId)) {
408
+ revert ErrorReleaseRegistryNotService(address(service));
409
+ }
410
+
411
+ address owner = msg.sender;
412
+ address serviceAuthority = service.authority();
413
+ serviceVersion = service.getVersion().toMajorPart();
414
+ serviceDomain = service.getDomain();// checked in registry
415
+ serviceInfo = service.getInitialInfo();
416
+
417
+ _verifyServiceInfo(service, serviceInfo, owner);
418
+
419
+ if(serviceAuthority != expectedAuthority) {
420
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
421
+ service,
422
+ serviceAuthority,
423
+ expectedAuthority);
424
+ }
425
+
426
+ if(serviceVersion != expectedVersion) {
427
+ revert ErrorReleaseRegistryServiceVersionMismatch(
428
+ service,
429
+ serviceVersion,
430
+ expectedVersion);
431
+ }
432
+
433
+ if(serviceDomain != expectedDomain) {
434
+ revert ErrorReleaseRegistryServiceDomainMismatch(
435
+ service,
436
+ expectedDomain,
437
+ serviceDomain);
438
+ }
439
+ }
440
+
441
+
442
+ function _verifyServiceInfo(
443
+ IService service,
444
+ IRegistry.ObjectInfo memory info,
445
+ address expectedOwner // assume always valid, can not be 0
446
+ )
447
+ internal
448
+ view
449
+ {
450
+ if(info.objectAddress != address(service)) {
451
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
452
+ }
453
+
454
+ if(info.isInterceptor != false) { // service is never interceptor
455
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
456
+ }
457
+
458
+ if(info.objectType != SERVICE()) {
459
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
460
+ }
461
+
462
+ address owner = info.initialOwner;
463
+
464
+ if(owner != expectedOwner) { // registerable owner protection
465
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
466
+ }
467
+
468
+ if(owner == address(service)) {
469
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
470
+ }
471
+
472
+ if(_registry.isRegistered(owner)) {
473
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
474
+ }
475
+ }
476
+
477
+ /// @dev returns true iff a the address passes some simple proxy tests.
478
+ function _isRegistry(address registryAddress) internal view returns (bool) {
479
+
480
+ // zero address is certainly not registry
481
+ if (registryAddress == address(0)) {
482
+ return false;
483
+ }
484
+ // TODO try catch and return false in case of revert or just panic
485
+ // check if contract returns a zero nft id for its own address
486
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
487
+ return false;
488
+ }
489
+
490
+ return true;
491
+ }
492
+ }
493
+
@@ -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
+