@etherisc/gif-next 0.0.2-e6d2794-419 → 0.0.2-e79d227-681

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 (505) hide show
  1. package/README.md +58 -9
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  10. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  17. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  18. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +188 -369
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +141 -314
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +323 -223
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +140 -104
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +132 -115
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +172 -31
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +104 -36
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +56 -91
  61. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  62. package/artifacts/contracts/instance/Instance.sol/Instance.json +130 -130
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +180 -140
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +59 -86
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +697 -146
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +121 -250
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -263
  75. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  76. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  79. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  81. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  86. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  88. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  92. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  93. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +138 -332
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +107 -103
  101. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  103. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +114 -300
  105. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +147 -191
  107. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +119 -83
  109. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +160 -383
  111. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  113. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +430 -204
  115. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +160 -92
  117. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +244 -25
  119. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +118 -168
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +422 -215
  123. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/Pool.sol/Pool.json +126 -366
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -403
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +139 -87
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +124 -181
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +89 -89
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +168 -319
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +311 -187
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +139 -103
  141. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +68 -7
  143. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
  145. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +344 -120
  147. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  149. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +155 -116
  151. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  152. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  153. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +447 -317
  155. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -94
  157. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.json +218 -307
  159. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +117 -117
  161. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  162. package/artifacts/contracts/product/Product.sol/Product.json +166 -317
  163. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  165. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  167. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  169. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +346 -22
  171. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
  173. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  175. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.json +573 -80
  177. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +298 -145
  179. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
  181. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
  183. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  185. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  187. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  189. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  191. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  192. package/artifacts/contracts/shared/Component.sol/Component.json +73 -274
  193. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +606 -258
  195. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +168 -106
  197. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  199. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  202. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  203. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  204. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  205. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -77
  207. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +541 -19
  209. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +96 -103
  211. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  213. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  215. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  217. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  219. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  221. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  224. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  226. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +106 -303
  228. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  229. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  230. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  233. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  237. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  241. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  242. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  243. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
  246. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  248. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  249. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  250. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  251. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +111 -114
  252. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  254. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  256. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  257. package/artifacts/contracts/staking/Staking.sol/Staking.json +190 -379
  258. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  260. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +118 -99
  262. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  264. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
  266. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
  268. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  269. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +177 -131
  270. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  271. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  272. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  273. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  275. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  277. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  279. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  281. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  283. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  285. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  286. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  287. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  289. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  290. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  291. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  293. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  295. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  297. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  299. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
  301. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  303. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  305. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  309. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  312. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  314. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  316. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  318. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  320. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  321. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  322. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  324. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  325. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  326. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  327. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  328. package/contracts/authorization/AccessAdmin.sol +83 -58
  329. package/contracts/authorization/Authorization.sol +111 -40
  330. package/contracts/authorization/IAccess.sol +1 -0
  331. package/contracts/authorization/IAccessAdmin.sol +4 -3
  332. package/contracts/authorization/IAuthorization.sol +13 -7
  333. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  334. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  335. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  336. package/contracts/distribution/BasicDistribution.sol +8 -18
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +6 -2
  338. package/contracts/distribution/Distribution.sol +33 -32
  339. package/contracts/distribution/DistributionService.sol +142 -90
  340. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  341. package/contracts/distribution/IDistributionComponent.sol +9 -5
  342. package/contracts/distribution/IDistributionService.sol +23 -8
  343. package/contracts/examples/fire/DamageLevel.sol +59 -0
  344. package/contracts/examples/fire/FirePool.sol +86 -0
  345. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  346. package/contracts/examples/fire/FireProduct.sol +431 -0
  347. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  348. package/contracts/examples/fire/FireUSD.sol +26 -0
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  350. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  352. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  353. package/contracts/instance/BundleSet.sol +130 -0
  354. package/contracts/instance/IInstance.sol +20 -34
  355. package/contracts/instance/IInstanceService.sol +11 -29
  356. package/contracts/instance/Instance.sol +44 -57
  357. package/contracts/instance/InstanceAdmin.sol +48 -36
  358. package/contracts/instance/InstanceAuthorizationV3.sol +50 -35
  359. package/contracts/instance/InstanceReader.sol +199 -25
  360. package/contracts/instance/InstanceService.sol +96 -115
  361. package/contracts/instance/InstanceServiceManager.sol +8 -13
  362. package/contracts/instance/InstanceStore.sol +12 -1
  363. package/contracts/instance/RiskSet.sol +119 -0
  364. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  365. package/contracts/instance/base/ObjectSet.sol +78 -0
  366. package/contracts/instance/module/IBundle.sol +1 -1
  367. package/contracts/instance/module/IComponents.sol +11 -13
  368. package/contracts/instance/module/IDistribution.sol +0 -1
  369. package/contracts/instance/module/IPolicy.sol +26 -25
  370. package/contracts/instance/module/IRisk.sol +1 -0
  371. package/contracts/mock/Dip.sol +1 -1
  372. package/contracts/oracle/BasicOracle.sol +0 -1
  373. package/contracts/oracle/IOracleComponent.sol +2 -1
  374. package/contracts/oracle/IOracleService.sol +2 -1
  375. package/contracts/oracle/Oracle.sol +21 -22
  376. package/contracts/oracle/OracleService.sol +112 -81
  377. package/contracts/oracle/OracleServiceManager.sol +8 -11
  378. package/contracts/pool/BasicPool.sol +38 -27
  379. package/contracts/pool/BasicPoolAuthorization.sol +22 -3
  380. package/contracts/pool/BundleService.sol +228 -101
  381. package/contracts/pool/BundleServiceManager.sol +8 -11
  382. package/contracts/pool/IBundleService.sol +33 -17
  383. package/contracts/pool/IPoolComponent.sol +20 -10
  384. package/contracts/pool/IPoolService.sol +53 -50
  385. package/contracts/pool/Pool.sol +150 -116
  386. package/contracts/pool/PoolService.sol +335 -175
  387. package/contracts/pool/PoolServiceManager.sol +6 -9
  388. package/contracts/product/ApplicationService.sol +82 -77
  389. package/contracts/product/ApplicationServiceManager.sol +6 -6
  390. package/contracts/product/BasicProduct.sol +11 -44
  391. package/contracts/product/BasicProductAuthorization.sol +2 -0
  392. package/contracts/product/ClaimService.sol +318 -146
  393. package/contracts/product/ClaimServiceManager.sol +6 -6
  394. package/contracts/product/IApplicationService.sol +6 -2
  395. package/contracts/product/IClaimService.sol +31 -7
  396. package/contracts/product/IPolicyService.sol +46 -34
  397. package/contracts/product/IPricingService.sol +10 -10
  398. package/contracts/product/IProductComponent.sol +24 -4
  399. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  400. package/contracts/product/PolicyService.sol +515 -257
  401. package/contracts/product/PolicyServiceManager.sol +6 -9
  402. package/contracts/product/PricingService.sol +54 -54
  403. package/contracts/product/PricingServiceManager.sol +5 -8
  404. package/contracts/product/Product.sol +126 -91
  405. package/contracts/product/{ProductService.sol → RiskService.sol} +27 -44
  406. package/contracts/product/RiskServiceManager.sol +39 -0
  407. package/contracts/registry/ChainNft.sol +68 -38
  408. package/contracts/registry/IRegistry.sol +71 -19
  409. package/contracts/registry/IRegistryService.sol +3 -10
  410. package/contracts/registry/ITransferInterceptor.sol +1 -2
  411. package/contracts/registry/Registry.sol +362 -215
  412. package/contracts/registry/RegistryAdmin.sol +161 -75
  413. package/contracts/registry/RegistryService.sol +39 -64
  414. package/contracts/registry/RegistryServiceManager.sol +4 -4
  415. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  416. package/contracts/registry/ReleaseRegistry.sol +485 -0
  417. package/contracts/registry/ServiceAuthorizationV3.sol +22 -47
  418. package/contracts/registry/TokenRegistry.sol +2 -2
  419. package/contracts/shared/Component.sol +54 -118
  420. package/contracts/shared/ComponentService.sol +399 -174
  421. package/contracts/shared/ComponentServiceManager.sol +10 -7
  422. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  423. package/contracts/shared/ContractLib.sol +224 -0
  424. package/contracts/shared/IComponent.sol +10 -13
  425. package/contracts/shared/IComponentService.sol +50 -22
  426. package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
  427. package/contracts/shared/ILifecycle.sol +3 -1
  428. package/contracts/shared/INftOwnable.sol +2 -0
  429. package/contracts/shared/IPolicyHolder.sol +12 -22
  430. package/contracts/shared/IRegisterable.sol +11 -0
  431. package/contracts/shared/IService.sol +1 -1
  432. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  433. package/contracts/shared/InstanceLinkedComponent.sol +82 -28
  434. package/contracts/shared/KeyValueStore.sol +1 -1
  435. package/contracts/shared/Lifecycle.sol +15 -4
  436. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  437. package/contracts/shared/NftOwnable.sol +29 -9
  438. package/contracts/shared/PolicyHolder.sol +17 -57
  439. package/contracts/shared/Registerable.sol +19 -11
  440. package/contracts/shared/RegistryLinked.sol +9 -14
  441. package/contracts/shared/Service.sol +23 -22
  442. package/contracts/shared/TokenHandler.sol +358 -27
  443. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  444. package/contracts/staking/IStaking.sol +12 -7
  445. package/contracts/staking/IStakingService.sol +12 -8
  446. package/contracts/staking/StakeManagerLib.sol +18 -25
  447. package/contracts/staking/Staking.sol +54 -62
  448. package/contracts/staking/StakingManager.sol +10 -12
  449. package/contracts/staking/StakingReader.sol +23 -20
  450. package/contracts/staking/StakingService.sol +65 -36
  451. package/contracts/staking/StakingServiceManager.sol +4 -4
  452. package/contracts/staking/StakingStore.sol +12 -22
  453. package/contracts/staking/TargetManagerLib.sol +7 -3
  454. package/contracts/type/Amount.sol +27 -5
  455. package/contracts/type/Blocknumber.sol +7 -1
  456. package/contracts/type/ClaimId.sol +6 -1
  457. package/contracts/type/Key32.sol +2 -2
  458. package/contracts/type/Key32Set.sol +62 -0
  459. package/contracts/type/NftId.sol +7 -0
  460. package/contracts/type/ObjectType.sol +21 -18
  461. package/contracts/type/PayoutId.sol +10 -10
  462. package/contracts/type/Referral.sol +1 -0
  463. package/contracts/type/RiskId.sol +30 -4
  464. package/contracts/type/RoleId.sol +0 -12
  465. package/contracts/type/Seconds.sol +21 -1
  466. package/contracts/type/StateId.sol +15 -1
  467. package/contracts/type/Timestamp.sol +11 -1
  468. package/contracts/type/UFixed.sol +33 -10
  469. package/contracts/type/Version.sol +3 -1
  470. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  471. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  472. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  473. package/package.json +6 -5
  474. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  475. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  476. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  477. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  478. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  479. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  480. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  481. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  482. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  483. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  484. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  485. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  486. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  487. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  488. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  489. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  490. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  491. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  492. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  493. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  494. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  495. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  496. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  497. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  498. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  499. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  500. package/contracts/instance/BundleManager.sol +0 -126
  501. package/contracts/instance/base/ObjectManager.sol +0 -79
  502. package/contracts/product/ProductServiceManager.sol +0 -42
  503. package/contracts/registry/ReleaseManager.sol +0 -487
  504. package/contracts/shared/InitializableCustom.sol +0 -177
  505. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,485 @@
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 {ContractLib} from "../shared/ContractLib.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
10
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {StateId, SCHEDULED, DEPLOYING, DEPLOYED, SKIPPED, ACTIVE, PAUSED} from "../type/StateId.sol";
13
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
+
15
+ import {IService} from "../shared/IService.sol";
16
+ import {IRegisterable} from "../shared/IRegisterable.sol";
17
+
18
+ import {IRegistry} from "./IRegistry.sol";
19
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
20
+ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
21
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
22
+ import {Registry} from "./Registry.sol";
23
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
24
+
25
+
26
+ contract ReleaseRegistry is
27
+ AccessManaged,
28
+ ReleaseLifecycle,
29
+ IRegistryLinked
30
+ {
31
+ uint256 public constant INITIAL_GIF_VERSION = 3;// first active version
32
+
33
+ event LogReleaseCreation(VersionPart version, bytes32 salt);
34
+ event LogReleaseActivation(VersionPart version);
35
+ event LogReleaseDisabled(VersionPart version);
36
+ event LogReleaseEnabled(VersionPart version);
37
+
38
+ // constructor
39
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
40
+
41
+ // _verifyServiceAuthorization
42
+ error ErrorReleaseRegistryNotServiceAuth(address notAuth);
43
+ error ErrorReleaseRegistryServiceAuthVersionMismatch(IServiceAuthorization auth, VersionPart expected, VersionPart actual);
44
+ error ErrorReleaseRegistryServiceAuthDomainsZero(IServiceAuthorization auth, VersionPart version);
45
+
46
+ // registerService
47
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
48
+
49
+ // activateNextRelease
50
+ error ErrorReleaseRegistryRegistryServiceMissing(VersionPart releaseVersion);
51
+
52
+ // _verifyService
53
+ error ErrorReleaseRegistryNotService(address notService);
54
+ error ErrorReleaseRegistryServiceAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
55
+ error ErrorReleaseRegistryServiceVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
56
+ error ErrorReleaseRegistryServiceDomainMismatch(IService service, ObjectType expectedDomain, ObjectType actualDomain);
57
+
58
+ // _verifyServiceInfo
59
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
60
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
61
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
62
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
63
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
64
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
65
+
66
+ RegistryAdmin public immutable _admin;
67
+ Registry public immutable _registry;
68
+
69
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
70
+ VersionPart [] internal _release; // array of all created releases
71
+ VersionPart internal _latest; // latest active version
72
+ VersionPart internal _next; // version to create and activate
73
+
74
+ uint256 internal _registeredServices;
75
+ uint256 internal _servicesToRegister;
76
+
77
+ constructor(Registry registry)
78
+ AccessManaged(msg.sender)
79
+ {
80
+ if (!ContractLib.isRegistry(address(registry))) {
81
+ revert ErrorReleaseRegistryNotRegistry(registry);
82
+ }
83
+
84
+ setAuthority(registry.getAuthority());
85
+
86
+ _registry = registry;
87
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
88
+
89
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
90
+ }
91
+
92
+ /// @dev sets previous release into SKIPPED state if it was created but not activated
93
+ /// sets next release into state SCHEDULED
94
+ function createNextRelease()
95
+ external
96
+ restricted() // GIF_ADMIN_ROLE
97
+ returns(VersionPart)
98
+ {
99
+ VersionPart version = _next;
100
+
101
+ if(isValidTransition(RELEASE(), _releaseInfo[version].state, SKIPPED())) {
102
+ _releaseInfo[version].state = SKIPPED();
103
+ }
104
+
105
+ version = VersionPartLib.toVersionPart(version.toInt() + 1);
106
+ _release.push(version);
107
+
108
+ _next = version;
109
+ _releaseInfo[version].version = version;
110
+ _releaseInfo[version].state = getInitialState(RELEASE());
111
+ _servicesToRegister = 0;
112
+ _registeredServices = 0;
113
+
114
+ return _next;
115
+ }
116
+
117
+ function prepareNextRelease(
118
+ IServiceAuthorization serviceAuthorization,
119
+ bytes32 salt
120
+ )
121
+ external
122
+ restricted() // GIF_MANAGER_ROLE
123
+ returns(
124
+ address releaseAuthority,
125
+ VersionPart releaseVersion,
126
+ bytes32 releaseSalt
127
+ )
128
+ {
129
+ releaseVersion = _next;
130
+
131
+ // release can transition into DEPLOYING state
132
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), SCHEDULED(), DEPLOYING());
133
+
134
+ uint256 serviceDomainsCount = _verifyServiceAuthorization(serviceAuthorization, releaseVersion, salt);
135
+
136
+ releaseAuthority = _admin.authority();
137
+ releaseSalt = salt;
138
+ // ensures unique salt
139
+ // TODO CreateX have clones capability also
140
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
141
+ /*releaseSalt = keccak256(
142
+ bytes.concat(
143
+ bytes32(releaseVersion.toInt()),
144
+ salt));*/
145
+
146
+ _servicesToRegister = serviceDomainsCount;
147
+ _releaseInfo[releaseVersion].state = DEPLOYING();
148
+ _releaseInfo[releaseVersion].salt = releaseSalt;
149
+ // TODO allow for the same serviceAuthorization address to be used for multiple releases?
150
+ _releaseInfo[releaseVersion].auth = serviceAuthorization;
151
+ //_releaseInfo[releaseVersion].authority = releaseAuthority;
152
+
153
+ emit LogReleaseCreation(releaseVersion, releaseSalt);
154
+ }
155
+
156
+ function registerService(IService service)
157
+ external
158
+ restricted // GIF_MANAGER_ROLE
159
+ returns(NftId nftId)
160
+ {
161
+ VersionPart releaseVersion = _next;
162
+
163
+ // release can transition to DEPLOYED state
164
+ checkTransition(_releaseInfo[releaseVersion].state, RELEASE(), DEPLOYING(), DEPLOYED());
165
+
166
+ address releaseAuthority = _admin.authority();
167
+ IServiceAuthorization serviceAuth = _releaseInfo[releaseVersion].auth;
168
+ ObjectType expectedDomain = serviceAuth.getServiceDomain(_registeredServices);
169
+
170
+ // service can work with release registry and release version
171
+ (
172
+ IRegistry.ObjectInfo memory info,
173
+ ObjectType serviceDomain,
174
+ VersionPart serviceVersion
175
+ //,string memory serviceName
176
+ ) = _verifyService(
177
+ service,
178
+ releaseAuthority,
179
+ releaseVersion,
180
+ expectedDomain
181
+ );
182
+
183
+ //_releaseInfo[releaseVersion].addresses.push(address(service)); // TODO get this info from auth contract?
184
+ //_releaseInfo[releaseVersion].domains.push(serviceDomain);
185
+ //_releaseInfo[releaseVersion].names.push(serviceName); // TODO if needed read in _verifyService()
186
+
187
+ _registeredServices++; // TODO use releaseInfo.someArray.length instead of _registeredServices
188
+
189
+ // release fully deployed
190
+ if(_servicesToRegister == _registeredServices) {
191
+ _releaseInfo[releaseVersion].state = DEPLOYED();
192
+ }
193
+
194
+ // TODO: service address matches defined in release auth (precalculated one)
195
+ // revert ErrorReleaseRegistryServiceAddressMismatch()
196
+
197
+ // setup service authorization
198
+ _admin.authorizeService(
199
+ serviceAuth,
200
+ service,
201
+ serviceDomain,
202
+ releaseVersion);
203
+
204
+ // register service with registry
205
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
206
+ service.linkToRegisteredNftId();
207
+ }
208
+ // TODO return activated version
209
+ function activateNextRelease()
210
+ external
211
+ restricted // GIF_ADMIN_ROLE
212
+ {
213
+ VersionPart version = _next;
214
+
215
+ // release can transition to ACTIVE state
216
+ checkTransition(_releaseInfo[version].state, RELEASE(), DEPLOYED(), ACTIVE());
217
+
218
+ _latest = version;
219
+ _releaseInfo[version].state = ACTIVE();
220
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
221
+
222
+ // grant special roles for registry/staking/pool services
223
+ // this will enable access to core contracts functions
224
+
225
+ // registry service MUST be registered for each release
226
+ address service = _registry.getServiceAddress(REGISTRY(), version);
227
+ if(service == address(0)) {
228
+ revert ErrorReleaseRegistryRegistryServiceMissing(version);
229
+ }
230
+
231
+ _admin.grantServiceRoleForAllVersions(IService(service), REGISTRY());
232
+
233
+ service = _registry.getServiceAddress(STAKING(), version);
234
+ if(service != address(0)) {
235
+ _admin.grantServiceRoleForAllVersions(IService(service), STAKING());
236
+ }
237
+
238
+ service = _registry.getServiceAddress(POOL(), version);
239
+ if(service != address(0)) {
240
+ _admin.grantServiceRoleForAllVersions(IService(service), POOL());
241
+ }
242
+
243
+ // TODO may run out of gas
244
+ // TODO test how many service can be locked in one transaction
245
+ // -> add to docs + each release must test for this -> add to release version tests (in test call with some gas limit?)
246
+ _setReleaseLocked(version, false);
247
+
248
+ emit LogReleaseActivation(version);
249
+ }
250
+
251
+ /// @dev stop all operations with release services
252
+ function pauseRelease(VersionPart version)
253
+ external
254
+ restricted // GIF_ADMIN_ROLE
255
+ {
256
+ // release can transition to PAUSED state
257
+ checkTransition(_releaseInfo[version].state, RELEASE(), ACTIVE(), PAUSED());
258
+
259
+ _releaseInfo[version].state = PAUSED();
260
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
261
+
262
+ _setReleaseLocked(version, true);
263
+
264
+ emit LogReleaseDisabled(version);
265
+ }
266
+
267
+ /// @dev resume operations with release services
268
+ function unpauseRelease(VersionPart version)
269
+ external
270
+ restricted // GIF_ADMIN_ROLE
271
+ {
272
+ // release can transition to ACTIVE state
273
+ checkTransition(_releaseInfo[version].state, RELEASE(), PAUSED(), ACTIVE());
274
+
275
+ _releaseInfo[version].state = ACTIVE();
276
+ _releaseInfo[version].disabledAt = zeroTimestamp();
277
+
278
+ _setReleaseLocked(version, false);
279
+
280
+ emit LogReleaseEnabled(version);
281
+ }
282
+
283
+ //--- view functions ----------------------------------------------------//
284
+
285
+ function predictDeterministicAddress(
286
+ address implementation,
287
+ bytes32 salt,
288
+ address deployer
289
+ ) external pure returns (address predicted) {
290
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
291
+ }
292
+
293
+ function isActiveRelease(VersionPart version) public view returns(bool) {
294
+ return _releaseInfo[version].state == ACTIVE();
295
+ }
296
+
297
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
298
+ return _releaseInfo[version];
299
+ }
300
+
301
+ /// @dev Returns the number of created releases.
302
+ /// Releases might be in another state than ACTIVE.
303
+ function releases() external view returns (uint) {
304
+ return _release.length;
305
+ }
306
+
307
+ /// @dev Returns the n-th release version.
308
+ /// Valid values for idx [0 .. releases() - 1]
309
+ function getVersion(uint256 idx) external view returns (VersionPart version) {
310
+ // return _releases;
311
+ return _release[idx];
312
+ }
313
+
314
+ function getNextVersion() public view returns(VersionPart) {
315
+ return _next;
316
+ }
317
+
318
+ /// @dev Returns the latest activated relase version.
319
+ /// There is no guarantee that the release is not currently paused.
320
+ function getLatestVersion() external view returns(VersionPart) {
321
+ return _latest;
322
+ }
323
+
324
+ function getState(VersionPart version) external view returns (StateId stateId) {
325
+ return _releaseInfo[version].state;
326
+ }
327
+
328
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
329
+ return _servicesToRegister - _registeredServices;
330
+ }
331
+
332
+ function getServiceAuthorization(VersionPart version)
333
+ external
334
+ view
335
+ returns (IServiceAuthorization serviceAuthorization)
336
+ {
337
+ return _releaseInfo[version].auth;
338
+ }
339
+
340
+ function getRegistryAdmin() external view returns (address) {
341
+ return address(_admin);
342
+ }
343
+
344
+ //--- IRegistryLinked ------------------------------------------------------//
345
+
346
+ function getRegistry() external view returns (IRegistry) {
347
+ return _registry;
348
+ }
349
+
350
+ //--- private functions ----------------------------------------------------//
351
+
352
+ // close / open service targets instead of revoking / granting roles
353
+ function _setReleaseLocked(VersionPart version, bool locked)
354
+ private
355
+ {
356
+ address service;
357
+ ObjectType domain;
358
+ IServiceAuthorization auth = _releaseInfo[version].auth;
359
+
360
+ ObjectType[] memory domains = auth.getServiceDomains();
361
+ for(uint idx = 0; idx < domains.length; idx++)
362
+ {
363
+ domain = domains[idx];
364
+ service = _registry.getServiceAddress(domain, version);
365
+ assert(service != address(0));
366
+
367
+ _admin.setServiceLocked(IService(service), locked);
368
+ }
369
+
370
+ // TODO add check for active/disabled release to core contracts functions interacting with releases
371
+ }
372
+
373
+ function _verifyServiceAuthorization(
374
+ IServiceAuthorization serviceAuthorization,
375
+ VersionPart releaseVersion,
376
+ bytes32 salt
377
+ )
378
+ private
379
+ view
380
+ returns (uint256 serviceDomainsCount)
381
+ {
382
+ // authorization contract supports IServiceAuthorization interface
383
+ if(!serviceAuthorization.supportsInterface(type(IServiceAuthorization).interfaceId)) {
384
+ revert ErrorReleaseRegistryNotServiceAuth(address(serviceAuthorization));
385
+ }
386
+
387
+ // authorizaions contract version matches with release version
388
+ VersionPart authVersion = serviceAuthorization.getRelease();
389
+ if (releaseVersion != authVersion) {
390
+ revert ErrorReleaseRegistryServiceAuthVersionMismatch(serviceAuthorization, releaseVersion, authVersion);
391
+ }
392
+
393
+ // sanity check to ensure service domain list is not empty
394
+ serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
395
+ if (serviceDomainsCount == 0) {
396
+ revert ErrorReleaseRegistryServiceAuthDomainsZero(serviceAuthorization, releaseVersion);
397
+ }
398
+ }
399
+
400
+ // TODO get service names
401
+ function _verifyService(
402
+ IService service,
403
+ address expectedAuthority,
404
+ VersionPart expectedVersion,
405
+ ObjectType expectedDomain
406
+ )
407
+ internal
408
+ view
409
+ returns(
410
+ IRegistry.ObjectInfo memory serviceInfo,
411
+ ObjectType serviceDomain,
412
+ VersionPart serviceVersion
413
+ )
414
+ {
415
+ if(!service.supportsInterface(type(IService).interfaceId)) {
416
+ revert ErrorReleaseRegistryNotService(address(service));
417
+ }
418
+
419
+ address owner = msg.sender;
420
+ address serviceAuthority = service.authority();
421
+ serviceVersion = service.getVersion().toMajorPart();
422
+ serviceDomain = service.getDomain();// checked in registry
423
+ serviceInfo = service.getInitialInfo();
424
+
425
+ _verifyServiceInfo(service, serviceInfo, owner);
426
+
427
+ if(serviceAuthority != expectedAuthority) {
428
+ revert ErrorReleaseRegistryServiceAuthorityMismatch(
429
+ service,
430
+ serviceAuthority,
431
+ expectedAuthority);
432
+ }
433
+
434
+ if(serviceVersion != expectedVersion) {
435
+ revert ErrorReleaseRegistryServiceVersionMismatch(
436
+ service,
437
+ serviceVersion,
438
+ expectedVersion);
439
+ }
440
+
441
+ if(serviceDomain != expectedDomain) {
442
+ revert ErrorReleaseRegistryServiceDomainMismatch(
443
+ service,
444
+ expectedDomain,
445
+ serviceDomain);
446
+ }
447
+ }
448
+
449
+
450
+ function _verifyServiceInfo(
451
+ IService service,
452
+ IRegistry.ObjectInfo memory info,
453
+ address expectedOwner // assume always valid, can not be 0
454
+ )
455
+ internal
456
+ view
457
+ {
458
+ if(info.objectAddress != address(service)) {
459
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, info.objectAddress);
460
+ }
461
+
462
+ if(info.isInterceptor != false) { // service is never interceptor
463
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
464
+ }
465
+
466
+ if(info.objectType != SERVICE()) {
467
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
468
+ }
469
+
470
+ address owner = info.initialOwner;
471
+
472
+ if(owner != expectedOwner) { // registerable owner protection
473
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
474
+ }
475
+
476
+ if(owner == address(service)) {
477
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
478
+ }
479
+
480
+ if(_registry.isRegistered(owner)) {
481
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
482
+ }
483
+ }
484
+ }
485
+
@@ -2,14 +2,12 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
5
+ ALL, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {ComponentService} from "../shared/ComponentService.sol";
9
8
  import {IAccess} from "../authorization/IAccess.sol";
10
9
  import {IBundleService} from "../pool/IBundleService.sol";
11
10
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
- import {InstanceService} from "../instance/InstanceService.sol";
13
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
12
  import {IPoolService} from "../pool/IPoolService.sol";
15
13
  import {IStakingService} from "../staking/IStakingService.sol";
@@ -22,7 +20,7 @@ contract ServiceAuthorizationV3
22
20
  {
23
21
 
24
22
  constructor(string memory commitHash)
25
- ServiceAuthorization(commitHash)
23
+ ServiceAuthorization(commitHash, 3)
26
24
  {}
27
25
 
28
26
  function _setupDomains()
@@ -38,10 +36,10 @@ contract ServiceAuthorizationV3
38
36
  _authorizeDomain(BUNDLE(), address(7));
39
37
  _authorizeDomain(POOL(), address(8));
40
38
  _authorizeDomain(ORACLE(), address(9));
41
- _authorizeDomain(PRODUCT(), address(10));
42
- _authorizeDomain(CLAIM(), address(11));
43
- _authorizeDomain(APPLICATION(), address(12));
44
- _authorizeDomain(POLICY(), address(13));
39
+ _authorizeDomain(RISK(), address(10));
40
+ _authorizeDomain(POLICY(), address(11));
41
+ _authorizeDomain(CLAIM(), address(12));
42
+ _authorizeDomain(APPLICATION(), address(13));
45
43
  }
46
44
 
47
45
 
@@ -69,27 +67,21 @@ contract ServiceAuthorizationV3
69
67
  functions = _authorizeForService(REGISTRY(), APPLICATION());
70
68
  _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
69
 
72
- functions = _authorizeForService(REGISTRY(), POOL());
73
- _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
-
75
70
  functions = _authorizeForService(REGISTRY(), BUNDLE());
76
71
  _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
72
 
73
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
74
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
75
+ _authorize(functions, IRegistryService.registerProductLinkedComponent.selector, "registerProductLinkedComponent");
76
+
78
77
  functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
- _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
78
  _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
79
 
82
- functions = _authorizeForService(REGISTRY(), COMPONENT());
83
- _authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
84
-
85
80
  functions = _authorizeForService(REGISTRY(), INSTANCE());
86
81
  _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
87
82
 
88
83
  functions = _authorizeForService(REGISTRY(), STAKING());
89
84
  _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
-
91
- functions = _authorizeForService(REGISTRY(), PRODUCT());
92
- _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
85
  }
94
86
 
95
87
 
@@ -121,10 +113,6 @@ contract ServiceAuthorizationV3
121
113
  function _setupInstanceServiceAuthorization()
122
114
  internal
123
115
  {
124
- IAccess.FunctionInfo[] storage functions;
125
-
126
- functions = _authorizeForService(INSTANCE(), COMPONENT());
127
- _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
128
116
  }
129
117
 
130
118
 
@@ -132,27 +120,6 @@ contract ServiceAuthorizationV3
132
120
  function _setupComponentServiceAuthorization()
133
121
  internal
134
122
  {
135
- // authz.authorizations = new DomainAuthorization[](4);
136
-
137
- // authz.authorizations[0].domain = POLICY();
138
- // _functions = new IAccessAdmin.Function[](1);
139
- // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
140
- // authz.authorizations[0].functions = _functions;
141
-
142
- // authz.authorizations[1].domain = DISTRIBUTION();
143
- // _functions = new IAccessAdmin.Function[](1);
144
- // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
145
- // authz.authorizations[1].functions = _functions;
146
-
147
- // authz.authorizations[2].domain = POOL();
148
- // _functions = new IAccessAdmin.Function[](1);
149
- // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
150
- // authz.authorizations[2].functions = _functions;
151
-
152
- // authz.authorizations[3].domain = BUNDLE();
153
- // _functions = new IAccessAdmin.Function[](1);
154
- // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
155
- // authz.authorizations[3].functions = _functions;
156
123
  }
157
124
 
158
125
  /// @dev Distribution service function authorization.
@@ -163,6 +130,7 @@ contract ServiceAuthorizationV3
163
130
 
164
131
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
132
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
133
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
166
134
  }
167
135
 
168
136
 
@@ -175,11 +143,10 @@ contract ServiceAuthorizationV3
175
143
  functions = _authorizeForService(POOL(), POLICY());
176
144
  _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
177
145
  _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
178
- _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
179
146
  _authorize(functions, IPoolService.processSale.selector, "processSale");
180
147
 
181
148
  functions = _authorizeForService(POOL(), CLAIM());
182
- _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
149
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
183
150
  }
184
151
 
185
152
 
@@ -190,11 +157,19 @@ contract ServiceAuthorizationV3
190
157
  IAccess.FunctionInfo[] storage functions;
191
158
 
192
159
  functions = _authorizeForService(BUNDLE(), POOL());
193
- _authorize(functions, IBundleService.create.selector, "create");
160
+ _authorize(functions, IBundleService.stake.selector, "stake");
161
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
194
162
  _authorize(functions, IBundleService.close.selector, "close");
195
163
  _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
196
164
  _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
197
- _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
165
+
166
+ functions = _authorizeForService(BUNDLE(), ALL());
167
+ _authorize(functions, IBundleService.create.selector, "create");
168
+ _authorize(functions, IBundleService.extend.selector, "extend");
169
+ _authorize(functions, IBundleService.lock.selector, "lock");
170
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
171
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
172
+ _authorize(functions, IBundleService.withdrawBundleFees.selector, "withdrawBundleFees");
198
173
  }
199
174
  }
200
175
 
@@ -12,7 +12,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
12
12
 
13
13
  import {IRegistry} from "./IRegistry.sol";
14
14
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
- import {ReleaseManager} from "./ReleaseManager.sol";
15
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
16
  import {RegistryAdmin} from "./RegistryAdmin.sol";
17
17
 
18
18
 
@@ -49,7 +49,7 @@ contract TokenRegistry is
49
49
  TokenInfo [] internal _token;
50
50
 
51
51
  IRegistry internal _registry;
52
- ReleaseManager internal _releaseManager;
52
+ ReleaseRegistry internal _releaseRegistry;
53
53
  IERC20Metadata internal _dipToken;
54
54
 
55
55
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)