@etherisc/gif-next 0.0.2-f62dcdf-553 → 0.0.2-f634e5c-828

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 (363) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  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/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -147
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +8 -52
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +121 -82
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +72 -48
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -37
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
  30. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +37 -160
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +93 -200
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  40. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +79 -121
  42. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -101
  44. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -155
  46. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -219
  48. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -18
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -17
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +96 -29
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +103 -72
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +71 -48
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +59 -69
  68. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  70. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  72. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  85. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +22 -114
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  90. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +11 -37
  93. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -52
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -67
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -76
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  114. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -91
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +154 -160
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +58 -23
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -52
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -66
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -37
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.json +50 -34
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  149. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  150. package/artifacts/contracts/product/Product.sol/Product.json +13 -52
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +256 -116
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +78 -42
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  186. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  188. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +146 -14
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -37
  196. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -52
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  208. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  210. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  212. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  218. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +13 -13
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  258. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  284. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  286. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  288. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  289. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  290. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  291. package/contracts/authorization/AccessAdmin.sol +21 -2
  292. package/contracts/authorization/ReleaseAccessManager.sol +1 -1
  293. package/contracts/distribution/BasicDistribution.sol +2 -2
  294. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  295. package/contracts/distribution/Distribution.sol +5 -6
  296. package/contracts/distribution/DistributionService.sol +18 -19
  297. package/contracts/distribution/IDistributionService.sol +5 -6
  298. package/contracts/examples/fire/FirePool.sol +16 -3
  299. package/contracts/examples/fire/FireProduct.sol +24 -8
  300. package/contracts/examples/unpermissioned/SimpleDistribution.sol +15 -0
  301. package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
  302. package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
  303. package/contracts/instance/BundleSet.sol +38 -34
  304. package/contracts/instance/IInstance.sol +7 -2
  305. package/contracts/instance/IInstanceService.sol +7 -9
  306. package/contracts/instance/Instance.sol +16 -9
  307. package/contracts/instance/InstanceAdmin.sol +41 -30
  308. package/contracts/instance/InstanceAuthorizationV3.sol +33 -9
  309. package/contracts/instance/InstanceReader.sol +88 -2
  310. package/contracts/instance/InstanceService.sol +39 -58
  311. package/contracts/instance/RiskSet.sol +119 -0
  312. package/contracts/instance/base/ObjectCounter.sol +1 -2
  313. package/contracts/instance/base/ObjectSet.sol +24 -25
  314. package/contracts/instance/module/IComponents.sol +1 -2
  315. package/contracts/instance/module/IPolicy.sol +2 -1
  316. package/contracts/instance/module/IRisk.sol +1 -0
  317. package/contracts/oracle/OracleService.sol +87 -69
  318. package/contracts/pool/BasicPool.sol +24 -3
  319. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  320. package/contracts/pool/BundleService.sol +14 -84
  321. package/contracts/pool/IBundleService.sol +2 -23
  322. package/contracts/pool/IPoolComponent.sol +1 -7
  323. package/contracts/pool/IPoolService.sol +12 -26
  324. package/contracts/pool/Pool.sol +112 -102
  325. package/contracts/pool/PoolService.sol +156 -88
  326. package/contracts/product/ApplicationService.sol +12 -12
  327. package/contracts/product/BasicProduct.sol +7 -11
  328. package/contracts/product/ClaimService.sol +3 -1
  329. package/contracts/product/IApplicationService.sol +5 -2
  330. package/contracts/product/IPolicyService.sol +17 -7
  331. package/contracts/product/PolicyService.sol +237 -195
  332. package/contracts/product/Product.sol +12 -40
  333. package/contracts/product/RiskService.sol +14 -3
  334. package/contracts/registry/ChainNft.sol +4 -2
  335. package/contracts/registry/IRegistry.sol +2 -0
  336. package/contracts/registry/Registry.sol +9 -1
  337. package/contracts/registry/RegistryAdmin.sol +15 -12
  338. package/contracts/registry/ReleaseRegistry.sol +5 -20
  339. package/contracts/registry/ServiceAuthorizationV3.sol +13 -31
  340. package/contracts/shared/Component.sol +43 -86
  341. package/contracts/shared/ComponentService.sol +160 -36
  342. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  343. package/contracts/shared/ContractLib.sol +196 -10
  344. package/contracts/shared/IComponent.sol +5 -12
  345. package/contracts/shared/IComponentService.sol +19 -5
  346. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  347. package/contracts/shared/InstanceLinkedComponent.sol +1 -17
  348. package/contracts/shared/Registerable.sol +0 -2
  349. package/contracts/shared/RegistryLinked.sol +6 -12
  350. package/contracts/shared/TokenHandler.sol +316 -66
  351. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  352. package/contracts/staking/IStaking.sol +9 -4
  353. package/contracts/staking/Staking.sol +29 -21
  354. package/contracts/staking/StakingService.sol +41 -8
  355. package/contracts/type/Key32.sol +2 -2
  356. package/contracts/type/Key32Set.sol +62 -0
  357. package/contracts/type/NftId.sol +6 -0
  358. package/contracts/type/ObjectType.sol +2 -0
  359. package/contracts/type/RiskId.sol +18 -6
  360. package/contracts/type/UFixed.sol +9 -119
  361. package/package.json +3 -3
  362. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  363. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
@@ -19,7 +19,7 @@ import {IProductComponent} from "./IProductComponent.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
20
  import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
21
21
  import {PayoutId} from "../type/PayoutId.sol";
22
- import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
22
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
23
23
  import {ReferralId} from "../type/Referral.sol";
24
24
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
25
25
  import {Seconds} from "../type/Seconds.sol";
@@ -40,15 +40,13 @@ abstract contract Product is
40
40
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
41
41
 
42
42
  struct ProductStorage {
43
- bool _isProcessingFundedClaims;
44
- bool _hasDistribution;
45
- uint8 _numberOfOracles;
43
+ IComponents.ProductInfo _productInfo;
44
+ IComponentService _componentService;
46
45
  IRiskService _riskService;
47
46
  IApplicationService _applicationService;
48
47
  IPolicyService _policyService;
49
48
  IClaimService _claimService;
50
49
  IPricingService _pricingService;
51
- IComponentService _componentService;
52
50
  }
53
51
 
54
52
 
@@ -125,38 +123,18 @@ abstract contract Product is
125
123
  view
126
124
  returns (IComponents.ProductInfo memory poolInfo)
127
125
  {
128
- ProductStorage storage $ = _getProductStorage();
129
-
130
- return IComponents.ProductInfo({
131
- isProcessingFundedClaims: false,
132
- hasDistribution: $._hasDistribution,
133
- expectedNumberOfOracles: $._numberOfOracles,
134
- numberOfOracles: 0,
135
- poolNftId: NftIdLib.zero(),
136
- distributionNftId: NftIdLib.zero(),
137
- oracleNftId: new NftId[]($._numberOfOracles),
138
- productFee: FeeLib.zero(),
139
- processingFee: FeeLib.zero(),
140
- distributionFee: FeeLib.zero(),
141
- minDistributionOwnerFee: FeeLib.zero(),
142
- poolFee: FeeLib.zero(),
143
- stakingFee: FeeLib.zero(),
144
- performanceFee: FeeLib.zero()
145
- });
126
+ return _getProductStorage()._productInfo;
146
127
  }
147
128
 
148
129
 
149
130
  function _initializeProduct(
150
131
  address registry,
151
132
  NftId instanceNftId,
152
- IAuthorization authorization,
153
- address initialOwner,
154
133
  string memory name,
155
134
  address token,
156
- bool isInterceptor,
157
- bool isProcessingFundedClaims,
158
- bool hasDistribution,
159
- uint8 numberOfOracles,
135
+ IComponents.ProductInfo memory productInfo,
136
+ IAuthorization authorization,
137
+ address initialOwner,
160
138
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
161
139
  )
162
140
  internal
@@ -170,15 +148,13 @@ abstract contract Product is
170
148
  token,
171
149
  PRODUCT(),
172
150
  authorization,
173
- isInterceptor,
151
+ productInfo.isInterceptingPolicyTransfers,
174
152
  initialOwner,
175
153
  componentData);
176
154
 
177
155
  ProductStorage storage $ = _getProductStorage();
178
- $._isProcessingFundedClaims = isProcessingFundedClaims;
179
- $._hasDistribution = hasDistribution;
180
- $._numberOfOracles = numberOfOracles;
181
- $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
156
+ $._productInfo = productInfo;
157
+ $._riskService = IRiskService(_getServiceAddress(RISK()));
182
158
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
183
159
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
184
160
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
@@ -240,11 +216,6 @@ abstract contract Product is
240
216
  }
241
217
 
242
218
 
243
- function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
244
- return getInstance().getInstanceReader().getRiskInfo(id);
245
- }
246
-
247
-
248
219
  function _createApplication(
249
220
  address applicationOwner,
250
221
  RiskId riskId,
@@ -277,8 +248,9 @@ abstract contract Product is
277
248
  )
278
249
  internal
279
250
  virtual
251
+ returns (Amount premiumAmount)
280
252
  {
281
- _getProductStorage()._policyService.createPolicy(
253
+ premiumAmount = _getProductStorage()._policyService.createPolicy(
282
254
  applicationNftId,
283
255
  activateAt);
284
256
  }
@@ -9,11 +9,12 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
9
9
  import {IRisk} from "../instance/module/IRisk.sol";
10
10
 
11
11
  import {InstanceReader} from "../instance/InstanceReader.sol";
12
- import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
13
- import {KEEP_STATE} from "../type/StateId.sol";
12
+ import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY, RISK} from "../type/ObjectType.sol";
13
+ import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
14
14
  import {NftId} from "../type/NftId.sol";
15
15
  import {RiskId} from "../type/RiskId.sol";
16
16
  import {StateId} from "../type/StateId.sol";
17
+ import {RiskSet} from "../instance/RiskSet.sol";
17
18
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
18
19
 
19
20
  contract RiskService is
@@ -61,6 +62,10 @@ contract RiskService is
61
62
  riskId,
62
63
  riskInfo
63
64
  );
65
+
66
+ // add risk to RiskSet
67
+ RiskSet riskSet = instance.getRiskSet();
68
+ riskSet.add(riskId);
64
69
  }
65
70
 
66
71
 
@@ -87,10 +92,16 @@ contract RiskService is
87
92
  {
88
93
  (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
89
94
  instance.getInstanceStore().updateRiskState(riskId, state);
95
+
96
+ if (state == ACTIVE()) {
97
+ instance.getRiskSet().activate(riskId);
98
+ } else if (state == PAUSED()) {
99
+ instance.getRiskSet().pause(riskId);
100
+ }
90
101
  }
91
102
 
92
103
 
93
104
  function _getDomain() internal pure override returns(ObjectType) {
94
- return PRODUCT();
105
+ return RISK();
95
106
  }
96
107
  }
@@ -62,6 +62,7 @@ contract ChainNft is ERC721Enumerable {
62
62
  // 3 -> staking
63
63
  // >= 4 -> all other objects
64
64
  _idNext = 4;
65
+ _totalMinted = 0;
65
66
  }
66
67
 
67
68
  /**
@@ -108,10 +109,11 @@ contract ChainNft is ERC721Enumerable {
108
109
 
109
110
 
110
111
  /**
111
- * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
112
- * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
112
+ * @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
113
+ * This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
113
114
  */
114
115
  function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
116
+ // default open zeppelin implementation of transferFrom
115
117
  super.transferFrom(from, to, tokenId);
116
118
 
117
119
  if (_interceptor[tokenId] != address(0)) {
@@ -129,6 +129,8 @@ interface IRegistry is IERC165 {
129
129
 
130
130
  function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
131
131
 
132
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
133
+
132
134
  function getObjectAddress(NftId nftId) external view returns (address objectAddress);
133
135
 
134
136
  /// @dev Returns the object info for the specified object address.
@@ -13,6 +13,7 @@ import {ObjectType, ObjectTypeLib, PROTOCOL, REGISTRY, SERVICE, INSTANCE, STAKE,
13
13
  import {ChainNft} from "./ChainNft.sol";
14
14
  import {IRegistry} from "./IRegistry.sol";
15
15
  import {IRegisterable} from "../shared/IRegisterable.sol";
16
+ import {IStaking} from "../staking/IStaking.sol";
16
17
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
17
18
  import {TokenRegistry} from "./TokenRegistry.sol";
18
19
  import {RegistryAdmin} from "./RegistryAdmin.sol";
@@ -354,7 +355,12 @@ contract Registry is
354
355
  return _info[nftId];
355
356
  }
356
357
 
357
- function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool) {
358
+ function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool) {
359
+ NftId nftId = _nftIdByAddress[contractAddress];
360
+ return isObjectType(nftId, expectedObjectType);
361
+ }
362
+
363
+ function isObjectType(NftId nftId, ObjectType expectedObjectType) public view returns (bool) {
358
364
  return _info[nftId].objectType == expectedObjectType;
359
365
  }
360
366
 
@@ -635,6 +641,8 @@ contract Registry is
635
641
  initialOwner: stakingOwner,
636
642
  data: ""}),
637
643
  true);
644
+
645
+ IStaking(_stakingAddress).initializeTokenHandler();
638
646
  }
639
647
 
640
648
  /// @dev Register the provided object info for the specified NFT ID.
@@ -42,6 +42,7 @@ contract RegistryAdmin is
42
42
  string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
43
43
  string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
44
44
  string public constant STAKING_TARGET_NAME = "Staking";
45
+ string public constant STAKING_TH_TARGET_NAME = "StakingTH";
45
46
  string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
46
47
 
47
48
  uint8 public constant MAX_NUM_RELEASES = 99;
@@ -62,7 +63,7 @@ contract RegistryAdmin is
62
63
  address gifManager
63
64
  )
64
65
  external
65
- initializer
66
+ initializer()
66
67
  onlyDeployer()
67
68
  {
68
69
  _registry = address(registry);
@@ -363,6 +364,7 @@ contract RegistryAdmin is
363
364
  onlyInitializing()
364
365
  {
365
366
  _createTarget(_staking, STAKING_TARGET_NAME, true, false);
367
+ _createTarget(address(IStaking(_staking).getTokenHandler()), STAKING_TH_TARGET_NAME, true, false);
366
368
  _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
367
369
 
368
370
  // staking function authorization for staking service
@@ -376,7 +378,7 @@ contract RegistryAdmin is
376
378
  name: STAKING_SERVICE_ROLE_NAME}));
377
379
 
378
380
  FunctionInfo[] memory functions;
379
- functions = new FunctionInfo[](13);
381
+ functions = new FunctionInfo[](12);
380
382
  functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
381
383
  functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
382
384
  functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
@@ -388,9 +390,18 @@ contract RegistryAdmin is
388
390
  functions[8] = toFunction(IStaking.restake.selector, "restake");
389
391
  functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
390
392
  functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
391
- functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
392
- functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
393
393
  _authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
394
+
395
+ // grant token handler authorizations
396
+ IStaking staking = IStaking(_staking);
397
+ functions = new FunctionInfo[](2);
398
+ functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
399
+ functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
400
+
401
+ _authorizeTargetFunctions(
402
+ address(staking.getTokenHandler()),
403
+ stakingServiceRoleId,
404
+ functions);
394
405
 
395
406
  // staking function authorization for pool service
396
407
  RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
@@ -436,13 +447,5 @@ contract RegistryAdmin is
436
447
  _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
437
448
 
438
449
  _grantRoleToAccount(stakingRoleId, _staking);
439
-
440
- // grant token handler authorizations
441
- IStaking staking = IStaking(_staking);
442
- functions = new FunctionInfo[](2);
443
- functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
444
- functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
445
-
446
- _authorizeTargetFunctions(address(staking.getTokenHandler()), stakingRoleId, functions);
447
450
  }
448
451
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
6
 
7
+ import {ContractLib} from "../shared/ContractLib.sol";
7
8
  import {NftId} from "../type/NftId.sol";
8
9
  import {ObjectType, ObjectTypeLib, POOL, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
9
10
  import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -70,14 +71,14 @@ contract ReleaseRegistry is
70
71
  VersionPart internal _latest; // latest active version
71
72
  VersionPart internal _next; // version to create and activate
72
73
 
73
- uint256 internal _registeredServices;
74
- uint256 internal _servicesToRegister;
74
+ // counters per release
75
+ uint256 internal _registeredServices = 0;
76
+ uint256 internal _servicesToRegister = 0;
75
77
 
76
78
  constructor(Registry registry)
77
79
  AccessManaged(msg.sender)
78
80
  {
79
- // TODO move this part to RegistryLinked constructor
80
- if(!_isRegistry(address(registry))) {
81
+ if (!ContractLib.isRegistry(address(registry))) {
81
82
  revert ErrorReleaseRegistryNotRegistry(registry);
82
83
  }
83
84
 
@@ -481,21 +482,5 @@ contract ReleaseRegistry is
481
482
  revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
482
483
  }
483
484
  }
484
-
485
- /// @dev returns true iff a the address passes some simple proxy tests.
486
- function _isRegistry(address registryAddress) internal view returns (bool) {
487
-
488
- // zero address is certainly not registry
489
- if (registryAddress == address(0)) {
490
- return false;
491
- }
492
- // TODO try catch and return false in case of revert or just panic
493
- // check if contract returns a zero nft id for its own address
494
- if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
495
- return false;
496
- }
497
-
498
- return true;
499
- }
500
485
  }
501
486
 
@@ -2,13 +2,14 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, 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
8
  import {IAccess} from "../authorization/IAccess.sol";
9
9
  import {IBundleService} from "../pool/IBundleService.sol";
10
10
  import {IDistributionService} from "../distribution/IDistributionService.sol";
11
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
12
13
  import {IPoolService} from "../pool/IPoolService.sol";
13
14
  import {IStakingService} from "../staking/IStakingService.sol";
14
15
  import {IRegistryService} from "./IRegistryService.sol";
@@ -36,7 +37,7 @@ contract ServiceAuthorizationV3
36
37
  _authorizeDomain(BUNDLE(), address(7));
37
38
  _authorizeDomain(POOL(), address(8));
38
39
  _authorizeDomain(ORACLE(), address(9));
39
- _authorizeDomain(PRODUCT(), address(10));
40
+ _authorizeDomain(RISK(), address(10));
40
41
  _authorizeDomain(POLICY(), address(11));
41
42
  _authorizeDomain(CLAIM(), address(12));
42
43
  _authorizeDomain(APPLICATION(), address(13));
@@ -113,11 +114,6 @@ contract ServiceAuthorizationV3
113
114
  function _setupInstanceServiceAuthorization()
114
115
  internal
115
116
  {
116
- // TODO cleanup
117
- // IAccess.FunctionInfo[] storage functions;
118
-
119
- // functions = _authorizeForService(INSTANCE(), COMPONENT());
120
- // _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
121
117
  }
122
118
 
123
119
 
@@ -125,28 +121,6 @@ contract ServiceAuthorizationV3
125
121
  function _setupComponentServiceAuthorization()
126
122
  internal
127
123
  {
128
- // TODO cleanup
129
- // authz.authorizations = new DomainAuthorization[](4);
130
-
131
- // authz.authorizations[0].domain = POLICY();
132
- // _functions = new IAccessAdmin.Function[](1);
133
- // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
134
- // authz.authorizations[0].functions = _functions;
135
-
136
- // authz.authorizations[1].domain = DISTRIBUTION();
137
- // _functions = new IAccessAdmin.Function[](1);
138
- // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
139
- // authz.authorizations[1].functions = _functions;
140
-
141
- // authz.authorizations[2].domain = POOL();
142
- // _functions = new IAccessAdmin.Function[](1);
143
- // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
144
- // authz.authorizations[2].functions = _functions;
145
-
146
- // authz.authorizations[3].domain = BUNDLE();
147
- // _functions = new IAccessAdmin.Function[](1);
148
- // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
149
- // authz.authorizations[3].functions = _functions;
150
124
  }
151
125
 
152
126
  /// @dev Distribution service function authorization.
@@ -184,11 +158,19 @@ contract ServiceAuthorizationV3
184
158
  IAccess.FunctionInfo[] storage functions;
185
159
 
186
160
  functions = _authorizeForService(BUNDLE(), POOL());
187
- _authorize(functions, IBundleService.create.selector, "create");
161
+ _authorize(functions, IBundleService.stake.selector, "stake");
162
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
188
163
  _authorize(functions, IBundleService.close.selector, "close");
189
164
  _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
190
165
  _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
191
- _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
166
+
167
+ functions = _authorizeForService(BUNDLE(), ALL());
168
+ _authorize(functions, IBundleService.create.selector, "create");
169
+ _authorize(functions, IBundleService.extend.selector, "extend");
170
+ _authorize(functions, IBundleService.lock.selector, "lock");
171
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
172
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
173
+ _authorize(functions, IBundleService.withdrawBundleFees.selector, "withdrawBundleFees");
192
174
  }
193
175
  }
194
176
 
@@ -4,16 +4,15 @@ pragma solidity ^0.8.20;
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
7
 
9
- import {Amount, AmountLib} from "../type/Amount.sol";
8
+ import {Amount} from "../type/Amount.sol";
10
9
  import {IComponent} from "./IComponent.sol";
11
10
  import {IComponents} from "../instance/module/IComponents.sol";
12
- import {NftId, NftIdLib} from "../type/NftId.sol";
13
- import {ObjectType, PRODUCT} from "../type/ObjectType.sol";
11
+ import {IComponentService} from "./IComponentService.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
14
14
  import {Registerable} from "../shared/Registerable.sol";
15
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
- import {VersionPartLib} from "../type/Version.sol";
17
16
 
18
17
  abstract contract Component is
19
18
  AccessManagedUpgradeable,
@@ -26,9 +25,9 @@ abstract contract Component is
26
25
  struct ComponentStorage {
27
26
  string _name; // unique (per instance) component name
28
27
  IERC20Metadata _token; // token for this component
29
- address _wallet;
30
28
  bool _isInterceptor;
31
29
  bytes _data;
30
+ IComponentService _componentService;
32
31
  }
33
32
 
34
33
 
@@ -83,74 +82,31 @@ abstract contract Component is
83
82
  ComponentStorage storage $ = _getComponentStorage();
84
83
  $._name = name;
85
84
  $._token = IERC20Metadata(token);
86
- $._wallet = address(this);
87
85
  $._isInterceptor = isInterceptor;
88
86
  $._data = componentData;
87
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
89
88
 
90
89
  _registerInterface(type(IAccessManaged).interfaceId);
91
90
  _registerInterface(type(IComponent).interfaceId);
92
91
  }
93
92
 
94
93
 
95
- function approveTokenHandler(Amount spendingLimitAmount)
96
- external
97
- virtual
98
- onlyOwner
99
- {
100
- approveTokenHandler(address(getToken()), spendingLimitAmount);
101
- }
102
-
103
- /// @dev Approves the component's token hander to spend tokens up to the specified limit.
104
- /// When the spending limit amount equals AmountLib.max it is set to type(uint256).max.
105
- function approveTokenHandler(address token, Amount spendingLimitAmount)
94
+ function approveTokenHandler(IERC20Metadata token, Amount amount)
106
95
  public
107
- virtual
108
- onlyOwner
96
+ onlyOwner()
109
97
  {
110
- if(getWallet() != address(this)) {
111
- revert ErrorComponentWalletNotComponent();
112
- }
113
-
114
- uint256 spendingLimit = spendingLimitAmount.toInt();
115
- bool isMaxAmount = false;
116
- if (spendingLimitAmount == AmountLib.max()) {
117
- spendingLimit = type(uint256).max;
118
- isMaxAmount = true;
119
- }
120
-
121
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount, isMaxAmount);
122
-
123
- IERC20Metadata(token).approve(
124
- address(getTokenHandler()),
125
- spendingLimit);
98
+ _approveTokenHandler(token, amount);
126
99
  }
127
100
 
128
- function setWallet(address newWallet)
129
- external
130
- virtual
131
- override
132
- onlyOwner
133
- {
134
- // checks
135
- address currentWallet = getWallet();
136
- uint256 currentBalance = getToken().balanceOf(currentWallet);
137
-
138
- // effects
139
- _setWallet(newWallet);
140
-
141
- // interactions
142
- if (currentBalance > 0) {
143
- // move tokens from old to new wallet
144
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
145
-
146
- if (currentWallet == address(this)) {
147
- // transfer from the component requires an allowance
148
- getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
149
- } else {
150
- getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
151
- }
152
- }
153
- }
101
+
102
+ // function setWallet(address newWallet)
103
+ // external
104
+ // virtual
105
+ // override
106
+ // onlyOwner
107
+ // {
108
+ // _setWallet(newWallet);
109
+ // }
154
110
 
155
111
  /// @dev callback function for nft transfers
156
112
  /// may only be called by chain nft contract.
@@ -164,7 +120,7 @@ abstract contract Component is
164
120
 
165
121
 
166
122
  function getWallet() public view virtual returns (address walletAddress) {
167
- return getComponentInfo().wallet;
123
+ return getTokenHandler().getWallet();
168
124
  }
169
125
 
170
126
  function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
@@ -208,12 +164,15 @@ abstract contract Component is
208
164
  }
209
165
 
210
166
 
211
- /// @dev internal function for nft transfers.
212
- /// handling logic that deals with nft transfers need to overwrite this function
213
- function _nftMint(address to, uint256 tokenId)
167
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
214
168
  internal
215
169
  virtual
216
- { }
170
+ {
171
+ _getComponentStorage()._componentService.approveTokenHandler(
172
+ token,
173
+ amount);
174
+ }
175
+
217
176
 
218
177
  /// @dev internal function for nft transfers.
219
178
  /// handling logic that deals with nft transfers need to overwrite this function
@@ -225,21 +184,20 @@ abstract contract Component is
225
184
 
226
185
  /// @dev depending on the source of the component information this function needs to be overwritten.
227
186
  /// eg for instance linked components that externally store this information with the instance store contract
228
- function _setWallet(address newWallet) internal virtual {
229
- ComponentStorage storage $ = _getComponentStorage();
230
- address currentWallet = $._wallet;
231
-
232
- if (newWallet == address(0)) {
233
- revert ErrorComponentWalletAddressZero();
234
- }
235
-
236
- if (newWallet == currentWallet) {
237
- revert ErrorComponentWalletAddressIsSameAsCurrent();
238
- }
239
-
240
- $._wallet = newWallet;
241
- emit LogComponentWalletAddressChanged(currentWallet, newWallet);
187
+ function _setWallet(
188
+ address newWallet
189
+ )
190
+ internal
191
+ virtual
192
+ {
193
+ _getComponentStorage()._componentService.setWallet(newWallet);
194
+ }
242
195
 
196
+ function _setLocked(bool locked)
197
+ internal
198
+ virtual
199
+ {
200
+ _getComponentStorage()._componentService.setLockedFromComponent(address(this), locked);
243
201
  }
244
202
 
245
203
 
@@ -252,14 +210,13 @@ abstract contract Component is
252
210
  name: $._name,
253
211
  token: $._token,
254
212
  tokenHandler: TokenHandler(address(0)),
255
- wallet: $._wallet, // initial wallet address
256
213
  data: $._data // user specific component data
257
214
  });
258
215
  }
259
216
 
260
- function _approveTokenHandler(uint256 amount) internal {
261
- ComponentStorage storage $ = _getComponentStorage();
262
- $._token.approve(address(getComponentInfo().tokenHandler), amount);
217
+ /// @dev returns the service address for the specified domain
218
+ /// gets address via lookup from registry using the major version form the linked instance
219
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
220
+ return getRegistry().getServiceAddress(domain, getRelease());
263
221
  }
264
-
265
222
  }