@etherisc/gif-next 0.0.2-f15b559-661 → 0.0.2-f1b01e0-214

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 (396) hide show
  1. package/README.md +43 -0
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +38 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +26 -26
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +6 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +366 -251
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  12. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +101 -28
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +283 -189
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +37 -5
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +32 -145
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +101 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1 -87
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +160 -89
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +56 -52
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1 -87
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +68 -5
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +44 -74
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +101 -46
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +94 -124
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +101 -46
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +82 -173
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +101 -46
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +20 -63
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +69 -112
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +101 -46
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +95 -138
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +101 -46
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +104 -8
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +62 -13
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +119 -26
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +520 -413
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +101 -46
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -196
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +94 -65
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -36
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +356 -346
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +14 -35
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +98 -35
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -21
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -21
  112. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +42 -42
  114. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +31 -31
  116. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +22 -43
  118. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +101 -46
  120. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +64 -64
  122. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +39 -39
  124. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +6 -6
  126. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +10 -31
  128. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +18 -18
  130. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  131. package/artifacts/contracts/pool/Pool.sol/Pool.json +10 -31
  132. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +34 -34
  134. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +80 -80
  136. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +41 -41
  138. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +90 -24
  140. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -22
  142. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +27 -48
  144. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +101 -46
  146. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +78 -78
  148. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +50 -50
  150. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +42 -0
  152. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +21 -0
  156. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  157. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +21 -42
  158. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +21 -0
  160. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +62 -62
  162. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  163. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +32 -32
  164. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +41 -41
  166. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -82
  168. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +31 -51
  170. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  171. package/artifacts/contracts/product/Product.sol/Product.json +21 -42
  172. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  173. package/artifacts/contracts/product/RiskService.sol/RiskService.json +55 -26
  174. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +27 -23
  176. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  179. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +445 -355
  185. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  186. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  187. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  189. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +19 -19
  191. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +481 -376
  193. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  195. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +128 -124
  197. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  198. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  199. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  200. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  201. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Component.sol/Component.json +0 -21
  203. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +114 -129
  205. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +45 -49
  207. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  209. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +60 -4
  210. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  214. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -21
  215. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +44 -51
  217. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -21
  219. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  222. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  223. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  226. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  227. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  228. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -21
  230. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  234. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  236. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  237. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  238. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  240. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  241. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  244. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  245. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  246. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  247. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  248. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  249. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +83 -39
  250. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  251. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +75 -4
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +133 -94
  254. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  256. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  258. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +41 -37
  260. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  261. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +34 -61
  262. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  263. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +109 -30
  264. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  265. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +27 -23
  266. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  267. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +148 -134
  268. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  269. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +47 -37
  270. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  282. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  283. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  284. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  286. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  288. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  290. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  292. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  294. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  296. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  298. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  300. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  308. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  310. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  312. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  313. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  314. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +4 -4
  315. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  316. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  317. package/contracts/accounting/IAccountingService.sol +2 -2
  318. package/contracts/authorization/AccessAdmin.sol +201 -186
  319. package/contracts/authorization/AccessAdminLib.sol +183 -0
  320. package/contracts/authorization/AccessManagerCloneable.sol +40 -31
  321. package/contracts/authorization/Authorization.sol +61 -33
  322. package/contracts/authorization/IAccess.sol +13 -5
  323. package/contracts/authorization/IAccessAdmin.sol +63 -36
  324. package/contracts/authorization/IAuthorization.sol +6 -0
  325. package/contracts/distribution/BasicDistribution.sol +6 -6
  326. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  327. package/contracts/distribution/Distribution.sol +3 -48
  328. package/contracts/distribution/DistributionService.sol +57 -30
  329. package/contracts/distribution/IDistributionComponent.sol +0 -9
  330. package/contracts/distribution/IDistributionService.sol +4 -2
  331. package/contracts/examples/fire/FirePool.sol +0 -4
  332. package/contracts/examples/fire/FireProduct.sol +0 -4
  333. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  334. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  335. package/contracts/examples/unpermissioned/SimplePool.sol +0 -4
  336. package/contracts/examples/unpermissioned/SimpleProduct.sol +0 -4
  337. package/contracts/instance/IInstance.sol +45 -9
  338. package/contracts/instance/IInstanceService.sol +19 -3
  339. package/contracts/instance/Instance.sol +73 -16
  340. package/contracts/instance/InstanceAdmin.sol +120 -107
  341. package/contracts/instance/InstanceAuthorizationV3.sol +43 -21
  342. package/contracts/instance/InstanceReader.sol +13 -0
  343. package/contracts/instance/InstanceService.sol +128 -73
  344. package/contracts/instance/module/IBundle.sol +6 -5
  345. package/contracts/instance/module/IComponents.sol +16 -5
  346. package/contracts/instance/module/IDistribution.sol +19 -7
  347. package/contracts/instance/module/IPolicy.sol +28 -8
  348. package/contracts/instance/module/IRisk.sol +2 -0
  349. package/contracts/oracle/BasicOracle.sol +1 -3
  350. package/contracts/oracle/BasicOracleAuthorization.sol +1 -1
  351. package/contracts/oracle/IOracle.sol +9 -4
  352. package/contracts/oracle/Oracle.sol +0 -2
  353. package/contracts/pool/BasicPool.sol +0 -2
  354. package/contracts/pool/BasicPoolAuthorization.sol +1 -1
  355. package/contracts/pool/Pool.sol +0 -2
  356. package/contracts/pool/PoolService.sol +1 -3
  357. package/contracts/product/ApplicationService.sol +21 -6
  358. package/contracts/product/BasicProduct.sol +0 -2
  359. package/contracts/product/BasicProductAuthorization.sol +1 -1
  360. package/contracts/product/IApplicationService.sol +3 -0
  361. package/contracts/product/IPricingService.sol +1 -0
  362. package/contracts/product/IRiskService.sol +3 -0
  363. package/contracts/product/PolicyService.sol +0 -18
  364. package/contracts/product/PricingService.sol +11 -6
  365. package/contracts/product/Product.sol +0 -2
  366. package/contracts/product/RiskService.sol +10 -0
  367. package/contracts/registry/IRegistry.sol +4 -0
  368. package/contracts/registry/RegistryAdmin.sol +133 -229
  369. package/contracts/registry/RegistryAuthorization.sol +267 -0
  370. package/contracts/registry/ReleaseAdmin.sol +30 -22
  371. package/contracts/registry/ReleaseRegistry.sol +39 -33
  372. package/contracts/registry/ServiceAuthorizationV3.sol +87 -3
  373. package/contracts/shared/Component.sol +13 -30
  374. package/contracts/shared/ComponentService.sol +58 -42
  375. package/contracts/shared/ContractLib.sol +28 -0
  376. package/contracts/shared/IComponent.sol +0 -3
  377. package/contracts/shared/IComponentService.sol +9 -9
  378. package/contracts/shared/InitializableERC165.sol +9 -1
  379. package/contracts/shared/InstanceLinkedComponent.sol +0 -2
  380. package/contracts/shared/NftOwnable.sol +1 -1
  381. package/contracts/shared/Registerable.sol +1 -4
  382. package/contracts/shared/TokenHandler.sol +5 -4
  383. package/contracts/staking/IStaking.sol +12 -2
  384. package/contracts/staking/IStakingService.sol +8 -1
  385. package/contracts/staking/Staking.sol +35 -15
  386. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +79 -22
  387. package/contracts/staking/StakingReader.sol +5 -15
  388. package/contracts/staking/StakingService.sol +36 -2
  389. package/contracts/staking/StakingStore.sol +2 -1
  390. package/contracts/type/Fee.sol +8 -8
  391. package/contracts/type/ObjectType.sol +5 -14
  392. package/contracts/type/UFixed.sol +27 -10
  393. package/contracts/type/Version.sol +39 -0
  394. package/package.json +2 -2
  395. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  396. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
@@ -7,10 +7,14 @@ import {
7
7
 
8
8
  import {IAccess} from "../authorization/IAccess.sol";
9
9
  import {IAccountingService} from "../accounting/IAccountingService.sol";
10
+ import {IApplicationService} from "../product/IApplicationService.sol";
10
11
  import {IBundleService} from "../pool/IBundleService.sol";
11
12
  import {IClaimService} from "../product/IClaimService.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
12
14
  import {IDistributionService} from "../distribution/IDistributionService.sol";
13
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IOracleService} from "../oracle/IOracleService.sol";
17
+ import {IPolicyService} from "../product/IPolicyService.sol";
14
18
  import {IPoolService} from "../pool/IPoolService.sol";
15
19
  import {IStakingService} from "../staking/IStakingService.sol";
16
20
  import {IRegistryService} from "./IRegistryService.sol";
@@ -62,6 +66,9 @@ contract ServiceAuthorizationV3
62
66
  _setupDistributionServiceAuthorization();
63
67
  _setupPoolServiceAuthorization();
64
68
  _setupBundleServiceAuthorization();
69
+ _setupOracleServiceAuthorization();
70
+ _setupApplicationServiceAuthorization();
71
+ _setupPolicyServiceAuthorization();
65
72
  }
66
73
 
67
74
 
@@ -104,6 +111,7 @@ contract ServiceAuthorizationV3
104
111
  _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
105
112
  _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
106
113
  _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
114
+ _authorize(functions, IStakingService.setInstanceMaxStakedAmount.selector, "setInstanceMaxStakedAmount");
107
115
  _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
108
116
  _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
109
117
 
@@ -123,12 +131,16 @@ contract ServiceAuthorizationV3
123
131
  {
124
132
  IAccess.FunctionInfo[] storage functions;
125
133
  functions = _authorizeForService(INSTANCE(), ALL());
134
+ _authorize(functions, IInstanceService.setInstanceLocked.selector, "setInstanceLocked");
135
+ _authorize(functions, IInstanceService.setTargetLocked.selector, "setTargetLocked");
136
+
126
137
  _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
127
138
  _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
128
139
  _authorize(functions, IInstanceService.upgradeMasterInstanceReader.selector, "upgradeMasterInstanceReader");
129
140
 
130
141
  _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
131
142
  _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
143
+ _authorize(functions, IInstanceService.setStakingMaxAmount.selector, "setStakingMaxAmount");
132
144
  _authorize(functions, IInstanceService.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
133
145
  _authorize(functions, IInstanceService.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
134
146
  }
@@ -143,9 +155,6 @@ contract ServiceAuthorizationV3
143
155
  _authorize(functions, IAccountingService.increaseBundleBalance.selector, "increaseBundleBalance");
144
156
  _authorize(functions, IAccountingService.decreaseBundleBalance.selector, "decreaseBundleBalance");
145
157
 
146
- functions = _authorizeForService(ACCOUNTING(), POOL());
147
- _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
148
-
149
158
  functions = _authorizeForService(ACCOUNTING(), COMPONENT());
150
159
  _authorize(functions, IAccountingService.decreaseComponentFees.selector, "decreaseComponentFees");
151
160
 
@@ -171,6 +180,19 @@ contract ServiceAuthorizationV3
171
180
  function _setupComponentServiceAuthorization()
172
181
  internal
173
182
  {
183
+ IAccess.FunctionInfo[] storage functions;
184
+
185
+ functions = _authorizeForService(COMPONENT(), ALL());
186
+ _authorize(functions, IComponentService.registerComponent.selector, "registerComponent");
187
+ _authorize(functions, IComponentService.approveTokenHandler.selector, "approveTokenHandler");
188
+ _authorize(functions, IComponentService.setWallet.selector, "setWallet");
189
+ _authorize(functions, IComponentService.setLocked.selector, "setLocked");
190
+ _authorize(functions, IComponentService.withdrawFees.selector, "withdrawFees");
191
+ _authorize(functions, IComponentService.registerProduct.selector, "registerProduct");
192
+ _authorize(functions, IComponentService.setProductFees.selector, "setProductFees");
193
+ _authorize(functions, IComponentService.setDistributionFees.selector, "setDistributionFees");
194
+ _authorize(functions, IComponentService.setPoolFees.selector, "setPoolFees");
195
+
174
196
  }
175
197
 
176
198
  /// @dev Distribution service function authorization.
@@ -191,6 +213,14 @@ contract ServiceAuthorizationV3
191
213
  IAccess.FunctionInfo[] storage functions;
192
214
  functions = _authorizeForService(CLAIM(), ALL());
193
215
  _authorize(functions, IClaimService.submit.selector, "submit");
216
+ _authorize(functions, IClaimService.confirm.selector, "confirm");
217
+ _authorize(functions, IClaimService.decline.selector, "decline");
218
+ _authorize(functions, IClaimService.revoke.selector, "revoke");
219
+ _authorize(functions, IClaimService.close.selector, "close");
220
+ _authorize(functions, IClaimService.createPayoutForBeneficiary.selector, "createPayoutForBeneficiary");
221
+ _authorize(functions, IClaimService.createPayout.selector, "createPayout");
222
+ _authorize(functions, IClaimService.processPayout.selector, "processPayout");
223
+ _authorize(functions, IClaimService.cancelPayout.selector, "cancelPayout");
194
224
  }
195
225
 
196
226
  /// @dev Distribution service function authorization.
@@ -201,6 +231,13 @@ contract ServiceAuthorizationV3
201
231
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
202
232
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
203
233
  _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
234
+
235
+ functions = _authorizeForService(DISTRIBUTION(), ALL());
236
+ _authorize(functions, IDistributionService.createDistributorType.selector, "createDistributorType");
237
+ _authorize(functions, IDistributionService.createDistributor.selector, "createDistributor");
238
+ _authorize(functions, IDistributionService.changeDistributorType.selector, "changeDistributorType");
239
+ _authorize(functions, IDistributionService.createReferral.selector, "createReferral");
240
+ _authorize(functions, IDistributionService.withdrawCommission.selector, "withdrawCommission");
204
241
  }
205
242
 
206
243
 
@@ -219,6 +256,13 @@ contract ServiceAuthorizationV3
219
256
  _authorize(functions, IPoolService.processPayout.selector, "processPayout");
220
257
 
221
258
  functions = _authorizeForService(POOL(), ALL());
259
+ _authorize(functions, IPoolService.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
260
+ _authorize(functions, IPoolService.closeBundle.selector, "closeBundle");
261
+ _authorize(functions, IPoolService.processFundedClaim.selector, "processFundedClaim");
262
+ _authorize(functions, IPoolService.stake.selector, "stake");
263
+ _authorize(functions, IPoolService.unstake.selector, "unstake");
264
+ _authorize(functions, IPoolService.fundPoolWallet.selector, "fundPoolWallet");
265
+ _authorize(functions, IPoolService.defundPoolWallet.selector, "defundPoolWallet");
222
266
  _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
223
267
  }
224
268
 
@@ -243,5 +287,45 @@ contract ServiceAuthorizationV3
243
287
  _authorize(functions, IBundleService.unlock.selector, "unlock");
244
288
  _authorize(functions, IBundleService.setFee.selector, "setFee");
245
289
  }
290
+
291
+ function _setupOracleServiceAuthorization()
292
+ internal
293
+ {
294
+ IAccess.FunctionInfo[] storage functions;
295
+
296
+ functions = _authorizeForService(ORACLE(), ALL());
297
+ _authorize(functions, IOracleService.request.selector, "request");
298
+ _authorize(functions, IOracleService.respond.selector, "respond");
299
+ _authorize(functions, IOracleService.resend.selector, "resend");
300
+ _authorize(functions, IOracleService.cancel.selector, "cancel");
301
+ }
302
+
303
+ function _setupApplicationServiceAuthorization()
304
+ internal
305
+ {
306
+ IAccess.FunctionInfo[] storage functions;
307
+
308
+ functions = _authorizeForService(APPLICATION(), ALL());
309
+ _authorize(functions, IApplicationService.create.selector, "create");
310
+ _authorize(functions, IApplicationService.renew.selector, "renew");
311
+ _authorize(functions, IApplicationService.adjust.selector, "adjust");
312
+ _authorize(functions, IApplicationService.revoke.selector, "revoke");
313
+ }
314
+
315
+ function _setupPolicyServiceAuthorization()
316
+ internal
317
+ {
318
+ IAccess.FunctionInfo[] storage functions;
319
+
320
+ functions = _authorizeForService(POLICY(), ALL());
321
+ _authorize(functions, IPolicyService.decline.selector, "decline");
322
+ _authorize(functions, IPolicyService.createPolicy.selector, "createPolicy");
323
+ _authorize(functions, IPolicyService.collectPremium.selector, "collectPremium");
324
+ _authorize(functions, IPolicyService.activate.selector, "activate");
325
+ _authorize(functions, IPolicyService.expire.selector, "expire");
326
+ _authorize(functions, IPolicyService.expirePolicy.selector, "expirePolicy");
327
+ _authorize(functions, IPolicyService.close.selector, "close");
328
+
329
+ }
246
330
  }
247
331
 
@@ -4,19 +4,15 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponent} from "./IComponent.sol";
8
9
  import {IComponents} from "../instance/module/IComponents.sol";
9
10
  import {IComponentService} from "./IComponentService.sol";
10
- import {IRegistry} from "../registry/IRegistry.sol";
11
- import {IRelease} from "../registry/IRelease.sol";
12
-
13
- import {Amount, AmountLib} from "../type/Amount.sol";
14
- import {ContractLib} from "./ContractLib.sol";
15
11
  import {NftId} from "../type/NftId.sol";
16
- import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
12
+ import {ObjectType, COMPONENT} from "../type/ObjectType.sol";
17
13
  import {Registerable} from "../shared/Registerable.sol";
18
14
  import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {Version, VersionLib, VersionPart} from "../type/Version.sol";
15
+ import {Version, VersionLib} from "../type/Version.sol";
20
16
 
21
17
 
22
18
  abstract contract Component is
@@ -28,7 +24,6 @@ abstract contract Component is
28
24
 
29
25
  struct ComponentStorage {
30
26
  string _name; // unique (per instance) component name
31
- IERC20Metadata _token; // token for this component
32
27
  bool _isInterceptor;
33
28
  bytes _data;
34
29
  IComponentService _componentService;
@@ -44,6 +39,7 @@ abstract contract Component is
44
39
 
45
40
 
46
41
  function _getComponentStorage() private pure returns (ComponentStorage storage $) {
42
+ // solhint-disable-next-line no-inline-assembly
47
43
  assembly {
48
44
  $.slot := COMPONENT_LOCATION_V1
49
45
  }
@@ -55,7 +51,6 @@ abstract contract Component is
55
51
  address registry,
56
52
  NftId parentNftId,
57
53
  string memory name,
58
- address token,
59
54
  ObjectType componentType,
60
55
  bool isInterceptor,
61
56
  address initialOwner,
@@ -66,20 +61,6 @@ abstract contract Component is
66
61
  virtual
67
62
  onlyInitializing()
68
63
  {
69
- address tokenRegistry = IRegistry(registry).getTokenRegistryAddress();
70
- VersionPart release = IRelease(authority).getRelease();
71
-
72
- // special case for staking: component intitialization happens before
73
- // GIF core contract setup is complete. at that time token registry
74
- // is not yet available. therefore we skip the check for staking.
75
- if (componentType != STAKING()) {
76
-
77
- // check if provided token is whitelisted and active
78
- if (!ContractLib.isActiveToken(tokenRegistry, token, block.chainid, release)) {
79
- revert ErrorComponentTokenInvalid(token);
80
- }
81
- }
82
-
83
64
  if (bytes(name).length == 0) {
84
65
  revert ErrorComponentNameLengthZero();
85
66
  }
@@ -96,7 +77,6 @@ abstract contract Component is
96
77
  // set component state
97
78
  ComponentStorage storage $ = _getComponentStorage();
98
79
  $._name = name;
99
- $._token = IERC20Metadata(token);
100
80
  $._isInterceptor = isInterceptor;
101
81
  $._data = componentData;
102
82
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
@@ -111,7 +91,7 @@ abstract contract Component is
111
91
  /// override internal function _nftTransferFrom to implement custom behaviour
112
92
  function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
113
93
  external
114
- onlyChainNft()
94
+ onlyChainNft
115
95
  {
116
96
  _nftTransferFrom(from, to, tokenId, operator);
117
97
  }
@@ -126,7 +106,7 @@ abstract contract Component is
126
106
  }
127
107
 
128
108
  function getToken() public view virtual returns (IERC20Metadata token) {
129
- return getComponentInfo().token;
109
+ return getTokenHandler().TOKEN();
130
110
  }
131
111
 
132
112
  function getName() public view override returns(string memory name) {
@@ -184,10 +164,14 @@ abstract contract Component is
184
164
  function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
185
165
  internal
186
166
  virtual
187
- { }
167
+ // solhint-disable-next-line no-empty-blocks
168
+ {
169
+ // empty default implementation
170
+ }
188
171
 
189
172
 
190
- /// @dev depending on the source of the component information this function needs to be overwritten.
173
+ /// @dev Sets the components wallet to the specified address.
174
+ /// Depending on the source of the component information this function needs to be overwritten.
191
175
  /// eg for instance linked components that externally store this information with the instance store contract
192
176
  function _setWallet(
193
177
  address newWallet
@@ -202,7 +186,7 @@ abstract contract Component is
202
186
  internal
203
187
  virtual
204
188
  {
205
- _getComponentStorage()._componentService.setLockedFromComponent(address(this), locked);
189
+ _getComponentStorage()._componentService.setLocked(locked);
206
190
  }
207
191
 
208
192
 
@@ -213,7 +197,6 @@ abstract contract Component is
213
197
 
214
198
  return IComponents.ComponentInfo({
215
199
  name: $._name,
216
- token: $._token,
217
200
  tokenHandler: TokenHandler(address(0)),
218
201
  data: $._data // user specific component data
219
202
  });
@@ -19,6 +19,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
19
19
  import {IRegistry} from "../registry/IRegistry.sol";
20
20
  import {IRegistryService} from "../registry/IRegistryService.sol";
21
21
 
22
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
22
23
  import {Amount, AmountLib} from "../type/Amount.sol";
23
24
  import {ContractLib} from "../shared/ContractLib.sol";
24
25
  import {Fee, FeeLib} from "../type/Fee.sol";
@@ -98,15 +99,18 @@ contract ComponentService is
98
99
  returns (NftId componentNftId)
99
100
  {
100
101
  // type specific registration
101
- ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
102
+ IRegistry.ObjectInfo memory componentObjectInfo = IInstanceLinkedComponent(component).getInitialInfo();
103
+ ObjectType componentType = componentObjectInfo.objectType;
104
+ IComponent productComponent = IComponent(getRegistry().getObjectAddress(componentObjectInfo.parentNftId));
105
+
102
106
  if (componentType == POOL()) {
103
- return _registerPool(component);
107
+ return _registerPool(component, address(productComponent.getToken()));
104
108
  }
105
109
  if (componentType == DISTRIBUTION()) {
106
- return _registerDistribution(component);
110
+ return _registerDistribution(component, address(productComponent.getToken()));
107
111
  }
108
112
  if (componentType == ORACLE()) {
109
- return _registerOracle(component);
113
+ return _registerOracle(component, address(productComponent.getToken()));
110
114
  }
111
115
 
112
116
  // fail
@@ -144,31 +148,24 @@ contract ComponentService is
144
148
  }
145
149
 
146
150
  /// @inheritdoc IComponentService
147
- function setLockedFromInstance(address componentAddress, bool locked)
151
+ function setLocked(bool locked)
148
152
  external
149
153
  virtual
150
- onlyInstance()
151
- {
152
- address instanceAddress = msg.sender;
153
- // NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
154
- IInstance instance = IInstance(instanceAddress);
155
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
156
- }
157
-
158
- /// @inheritdoc IComponentService
159
- function setLockedFromComponent(address componentAddress, bool locked)
160
- external
161
- virtual
162
- onlyComponent(msg.sender)
154
+ restricted()
163
155
  {
164
156
  (, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
165
- _setLocked(instance.getInstanceAdmin(), componentAddress, locked);
157
+
158
+ address component = msg.sender;
159
+ instance.getInstanceAdmin().setComponentLocked(
160
+ component,
161
+ locked);
166
162
  }
167
163
 
168
164
  /// @inheritdoc IComponentService
169
165
  function withdrawFees(Amount amount)
170
166
  external
171
167
  virtual
168
+ restricted()
172
169
  returns (Amount withdrawnAmount)
173
170
  {
174
171
  // checks
@@ -198,6 +195,7 @@ contract ComponentService is
198
195
  componentNftId,
199
196
  withdrawnAmount);
200
197
 
198
+ // transfer amount to component owner
201
199
  address componentOwner = getRegistry().ownerOf(componentNftId);
202
200
  TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
203
201
  emit LogComponentServiceComponentFeesWithdrawn(
@@ -216,7 +214,7 @@ contract ComponentService is
216
214
 
217
215
  //-------- product ------------------------------------------------------//
218
216
 
219
- function registerProduct(address productAddress)
217
+ function registerProduct(address productAddress, address token)
220
218
  external
221
219
  virtual
222
220
  nonReentrant()
@@ -228,7 +226,8 @@ contract ComponentService is
228
226
  InstanceStore instanceStore;
229
227
  (, instanceAdmin, instanceStore,, productNftId) = _register(
230
228
  productAddress,
231
- PRODUCT());
229
+ PRODUCT(),
230
+ token);
232
231
 
233
232
  // get product
234
233
  IProductComponent product = IProductComponent(productAddress);
@@ -286,7 +285,7 @@ contract ComponentService is
286
285
  //-------- distribution -------------------------------------------------//
287
286
 
288
287
  /// @dev registers the sending component as a distribution component
289
- function _registerDistribution(address distributioAddress)
288
+ function _registerDistribution(address distributioAddress, address token)
290
289
  internal
291
290
  virtual
292
291
  nonReentrant()
@@ -299,7 +298,8 @@ contract ComponentService is
299
298
  NftId productNftId;
300
299
  (instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
301
300
  distributioAddress,
302
- DISTRIBUTION());
301
+ DISTRIBUTION(),
302
+ token);
303
303
 
304
304
  // check product is still expecting a distribution registration
305
305
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
@@ -350,7 +350,7 @@ contract ComponentService is
350
350
 
351
351
  //-------- oracle -------------------------------------------------------//
352
352
 
353
- function _registerOracle(address oracleAddress)
353
+ function _registerOracle(address oracleAddress, address token)
354
354
  internal
355
355
  virtual
356
356
  returns (NftId oracleNftId)
@@ -363,7 +363,8 @@ contract ComponentService is
363
363
 
364
364
  (instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
365
365
  oracleAddress,
366
- ORACLE());
366
+ ORACLE(),
367
+ token);
367
368
 
368
369
  // check product is still expecting an oracle registration
369
370
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
@@ -382,7 +383,7 @@ contract ComponentService is
382
383
 
383
384
  //-------- pool ---------------------------------------------------------//
384
385
 
385
- function _registerPool(address poolAddress)
386
+ function _registerPool(address poolAddress, address token)
386
387
  internal
387
388
  virtual
388
389
  returns (NftId poolNftId)
@@ -395,7 +396,8 @@ contract ComponentService is
395
396
 
396
397
  (instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
397
398
  poolAddress,
398
- POOL());
399
+ POOL(),
400
+ token);
399
401
 
400
402
  // check product is still expecting a pool registration
401
403
  IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
@@ -459,7 +461,8 @@ contract ComponentService is
459
461
  /// @dev Registers the component represented by the provided address.
460
462
  function _register(
461
463
  address componentAddress, // address of component to register
462
- ObjectType requiredType // required type for component for registration
464
+ ObjectType requiredType, // required type for component for registration
465
+ address token
463
466
  )
464
467
  internal
465
468
  virtual
@@ -487,6 +490,18 @@ contract ComponentService is
487
490
  componentAddress,
488
491
  requiredType);
489
492
 
493
+ if (! instance.isTokenRegistryDisabled()) {
494
+ // check if provided token is whitelisted and active
495
+ if (!ContractLib.isActiveToken(
496
+ getRegistry().getTokenRegistryAddress(),
497
+ token,
498
+ block.chainid,
499
+ AccessManagerCloneable(authority()).getRelease())
500
+ ) {
501
+ revert ErrorComponentServiceTokenInvalid(token);
502
+ }
503
+ }
504
+
490
505
  // get instance supporting contracts (as function return values)
491
506
  instanceReader = instance.getInstanceReader();
492
507
  instanceAdmin = instance.getInstanceAdmin();
@@ -502,26 +517,27 @@ contract ComponentService is
502
517
  }
503
518
 
504
519
  // deploy and wire token handler
505
- IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
506
- IERC20Metadata token = componentInfo.token;
507
- componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
508
- address(getRegistry()),
509
- address(component), // initially, component is its own wallet
510
- address(token),
511
- address(instanceAdmin.authority()));
512
-
513
- // register component with instance
514
- instanceStore.createComponent(
515
- componentNftId,
516
- componentInfo);
520
+ {
521
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
522
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
523
+ address(getRegistry()),
524
+ componentAddress, // initially, component is its own wallet
525
+ token,
526
+ address(instanceAdmin.authority()));
527
+
528
+ // register component with instance
529
+ instanceStore.createComponent(
530
+ componentNftId,
531
+ componentInfo);
532
+ }
517
533
 
518
534
  // link component contract to nft id
519
535
  component.linkToRegisteredNftId();
520
536
 
521
537
  // authorize
522
- instanceAdmin.initializeComponentAuthorization(component);
538
+ instanceAdmin.initializeComponentAuthorization(componentAddress, requiredType);
523
539
 
524
- emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
540
+ emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, componentAddress, token, initialOwner);
525
541
  }
526
542
 
527
543
 
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
5
  import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
7
 
7
8
  // import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
8
9
  import {IRegistry} from "../registry/IRegistry.sol";
@@ -170,6 +171,33 @@ library ContractLib {
170
171
  }
171
172
 
172
173
 
174
+ function isAccessManaged(address target)
175
+ public
176
+ view
177
+ returns (bool)
178
+ {
179
+ if (!isContract(target)) {
180
+ return false;
181
+ }
182
+
183
+ (bool success, ) = target.staticcall(
184
+ abi.encodeWithSelector(
185
+ IAccessManaged.authority.selector));
186
+
187
+ return success;
188
+ }
189
+
190
+
191
+ function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
192
+ NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
193
+ if (nftId.eqz()) {
194
+ return false;
195
+ }
196
+
197
+ return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
198
+ }
199
+
200
+
173
201
  function isRegistry(address registry) public view returns (bool) {
174
202
  if (!isContract(registry)) {
175
203
  return false;
@@ -15,9 +15,6 @@ interface IComponent is
15
15
  IRegisterable,
16
16
  ITransferInterceptor
17
17
  {
18
-
19
- error ErrorComponentTokenInvalid(address token);
20
-
21
18
  error ErrorComponentProductNftIdZero();
22
19
  error ErrorComponentProductNftIdNonzero();
23
20
  error ErrorComponentNameLengthZero();
@@ -16,6 +16,8 @@ import {VersionPart} from "../type/Version.sol";
16
16
  interface IComponentService is
17
17
  IService
18
18
  {
19
+ error ErrorComponentServiceTokenInvalid(address token);
20
+
19
21
  error ErrorComponentServiceNotInstanceLinkedComponent(address component);
20
22
  error ErrorComponentServiceSenderNotRegistered(address sender);
21
23
  error ErrorComponentServiceNotComponent(address component);
@@ -56,9 +58,9 @@ interface IComponentService is
56
58
  NftId nftId,
57
59
  string feeName,
58
60
  UFixed previousFractionalFee,
59
- uint256 previousFixedFee,
61
+ Amount previousFixedFee,
60
62
  UFixed newFractionalFee,
61
- uint256 newFixedFee
63
+ Amount newFixedFee
62
64
  );
63
65
 
64
66
  //-------- component ----------------------------------------------------//
@@ -67,14 +69,12 @@ interface IComponentService is
67
69
  /// Reverts if the component's token handler wallet is not the token handler itself.
68
70
  function approveTokenHandler(IERC20Metadata token, Amount amount) external;
69
71
 
70
- /// @dev Sets the components associated wallet address
72
+ /// @dev Sets the components associated wallet address.
73
+ /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
71
74
  function setWallet(address newWallet) external;
72
75
 
73
- /// @dev Locks/Unlocks the given component - call from instanceService
74
- function setLockedFromInstance(address componentAddress, bool locked) external;
75
-
76
- /// @dev Locks/Unlocks the given component - call from component
77
- function setLockedFromComponent(address componentAddress, bool locked) external;
76
+ /// @dev Locks/Unlocks the calling component.
77
+ function setLocked(bool locked) external;
78
78
 
79
79
  /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
80
80
  /// @param withdrawAmount the amount to withdraw
@@ -87,7 +87,7 @@ interface IComponentService is
87
87
  //-------- product ------------------------------------------------------//
88
88
 
89
89
  /// @dev Registers the specified product component for the instance (sender)
90
- function registerProduct(address product) external returns (NftId productNftId);
90
+ function registerProduct(address product, address token) external returns (NftId productNftId);
91
91
 
92
92
  function setProductFees(
93
93
  Fee memory productFee, // product fee on net premium
@@ -11,13 +11,21 @@ contract InitializableERC165 is
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function _initializeERC165() internal onlyInitializing() {
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
15
19
  _isSupported[type(IERC165).interfaceId] = true;
16
20
  }
17
21
 
18
22
  // @dev register support for provided interfaceId
19
23
  // includes initialization for ERC165_ID if not yet done
20
24
  function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
21
29
  _isSupported[interfaceId] = true;
22
30
  }
23
31
 
@@ -71,7 +71,6 @@ abstract contract InstanceLinkedComponent is
71
71
  address registry,
72
72
  NftId parentNftId,
73
73
  string memory name,
74
- address token,
75
74
  ObjectType componentType,
76
75
  IAuthorization authorization,
77
76
  bool isInterceptor,
@@ -99,7 +98,6 @@ abstract contract InstanceLinkedComponent is
99
98
  registry,
100
99
  parentNftId,
101
100
  name,
102
- token,
103
101
  componentType,
104
102
  isInterceptor,
105
103
  initialOwner,
@@ -57,8 +57,8 @@ contract NftOwnable is
57
57
  virtual
58
58
  onlyInitializing()
59
59
  {
60
+ __ERC165_init();
60
61
  __RegistryLinked_init(registry);
61
- _initializeERC165();
62
62
 
63
63
  if(initialOwner == address(0)) {
64
64
  revert ErrorNftOwnableInitialOwnerZero();