@etherisc/gif-next 0.0.2-c9711ab-345 → 0.0.2-c9ad04b-619

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 (351) hide show
  1. package/README.md +4 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +21 -21
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  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 +42 -248
  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 +0 -222
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -286
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +53 -120
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +0 -37
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
  30. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  31. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  32. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  33. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  34. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  38. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +71 -71
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -68
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +34 -146
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +30 -81
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +220 -102
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
  74. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  76. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
  79. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
  82. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -144
  84. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +29 -80
  86. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -227
  88. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  90. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +76 -235
  92. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +51 -110
  94. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +0 -31
  96. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -42
  98. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +63 -78
  100. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -227
  102. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +101 -332
  104. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +32 -135
  106. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  107. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -162
  108. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -89
  110. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  111. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
  112. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  113. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  114. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +185 -175
  116. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +53 -100
  118. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  120. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +120 -140
  124. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  127. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
  128. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  129. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  130. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +184 -380
  132. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +44 -111
  134. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PricingService.sol/PricingService.json +113 -270
  136. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +52 -123
  138. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  139. package/artifacts/contracts/product/Product.sol/Product.json +3 -225
  140. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  142. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  150. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +229 -114
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -130
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +22 -73
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  166. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  167. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  168. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +84 -212
  170. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +55 -114
  172. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -112
  174. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  176. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
  179. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  181. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  194. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  195. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  204. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Service.sol/Service.json +0 -112
  206. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  208. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  209. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  210. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  212. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  215. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  216. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +42 -89
  221. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  223. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -138
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +26 -77
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  231. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  241. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  243. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  245. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  247. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  249. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  251. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  253. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  255. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  257. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  259. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  263. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  266. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  270. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  271. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  272. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +14 -65
  273. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  274. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  275. package/contracts/authorization/AccessAdmin.sol +1 -3
  276. package/contracts/authorization/Authorization.sol +0 -1
  277. package/contracts/distribution/Distribution.sol +1 -1
  278. package/contracts/distribution/DistributionService.sol +26 -27
  279. package/contracts/distribution/IDistributionService.sol +9 -5
  280. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  281. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  282. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  283. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  284. package/contracts/instance/IInstance.sol +7 -30
  285. package/contracts/instance/Instance.sol +10 -35
  286. package/contracts/instance/InstanceAdmin.sol +23 -4
  287. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  288. package/contracts/instance/InstanceReader.sol +24 -7
  289. package/contracts/instance/InstanceService.sol +60 -36
  290. package/contracts/instance/InstanceStore.sol +11 -1
  291. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  292. package/contracts/instance/module/IComponents.sol +1 -1
  293. package/contracts/instance/module/IPolicy.sol +22 -22
  294. package/contracts/oracle/Oracle.sol +2 -1
  295. package/contracts/oracle/OracleService.sol +4 -3
  296. package/contracts/pool/BundleService.sol +13 -26
  297. package/contracts/pool/IBundleService.sol +2 -3
  298. package/contracts/pool/IPoolService.sol +29 -18
  299. package/contracts/pool/Pool.sol +15 -17
  300. package/contracts/pool/PoolService.sol +45 -98
  301. package/contracts/product/ApplicationService.sol +41 -23
  302. package/contracts/product/BasicProduct.sol +1 -0
  303. package/contracts/product/ClaimService.sol +116 -46
  304. package/contracts/product/IApplicationService.sol +1 -0
  305. package/contracts/product/IClaimService.sol +28 -5
  306. package/contracts/product/IPolicyService.sol +21 -32
  307. package/contracts/product/IPricingService.sol +7 -7
  308. package/contracts/product/IProductComponent.sol +0 -1
  309. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  310. package/contracts/product/PolicyService.sol +230 -186
  311. package/contracts/product/PricingService.sol +44 -43
  312. package/contracts/product/Product.sol +50 -36
  313. package/contracts/product/{ProductService.sol → RiskService.sol} +5 -7
  314. package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
  315. package/contracts/registry/ChainNft.sol +65 -32
  316. package/contracts/registry/IRegistry.sol +49 -15
  317. package/contracts/registry/Registry.sol +321 -195
  318. package/contracts/registry/RegistryAdmin.sol +150 -51
  319. package/contracts/registry/RegistryService.sol +2 -2
  320. package/contracts/registry/ReleaseRegistry.sol +12 -6
  321. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  322. package/contracts/shared/Component.sol +17 -29
  323. package/contracts/shared/ComponentService.sol +16 -26
  324. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  325. package/contracts/shared/IComponent.sol +4 -4
  326. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  327. package/contracts/shared/IPolicyHolder.sol +0 -9
  328. package/contracts/shared/InitializableERC165.sol +2 -2
  329. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  330. package/contracts/shared/NftOwnable.sol +5 -5
  331. package/contracts/shared/PolicyHolder.sol +5 -48
  332. package/contracts/shared/Registerable.sol +4 -4
  333. package/contracts/shared/RegistryLinked.sol +3 -2
  334. package/contracts/shared/Service.sol +5 -5
  335. package/contracts/shared/TokenHandler.sol +100 -19
  336. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  337. package/contracts/staking/IStaking.sol +2 -1
  338. package/contracts/staking/StakeManagerLib.sol +18 -25
  339. package/contracts/staking/Staking.sol +10 -28
  340. package/contracts/staking/StakingService.sol +10 -14
  341. package/contracts/staking/TargetManagerLib.sol +7 -3
  342. package/contracts/type/ObjectType.sol +15 -11
  343. package/contracts/type/Seconds.sol +8 -0
  344. package/contracts/type/StateId.sol +1 -0
  345. package/contracts/upgradeability/ProxyManager.sol +1 -1
  346. package/package.json +1 -1
  347. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  348. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  349. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  350. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  351. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
@@ -7,11 +7,11 @@ import {IRegistry} from "./IRegistry.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
9
  import {IStaking} from "../staking/IStaking.sol";
10
- import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
10
+ import {ObjectType, ObjectTypeLib, ALL, REGISTRY, STAKING, POOL, RELEASE} from "../type/ObjectType.sol";
11
11
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
12
12
  import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
13
  import {StakingStore} from "../staking/StakingStore.sol";
14
- import {STAKING} from "../type/ObjectType.sol";
14
+ import {TokenHandler} from "../shared/TokenHandler.sol";
15
15
  import {TokenRegistry} from "./TokenRegistry.sol";
16
16
  import {VersionPart} from "../type/Version.sol";
17
17
 
@@ -26,37 +26,33 @@ import {VersionPart} from "../type/Version.sol";
26
26
  - MUST have 1 member at any time
27
27
  - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
28
28
  - responsible for creation and activation of releases
29
-
30
- createServiceTarget(type, release)
31
- createServiceRole(type,release)
32
- getServiceRole(type, release)
33
29
  */
34
30
  contract RegistryAdmin is
35
31
  AccessAdmin
36
32
  {
37
- error ErrorRegistryAdminIsAlreadySetUp();
38
-
39
33
  string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
40
34
  string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
41
35
  string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
42
36
  string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
37
+ string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
43
38
  string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
44
39
  string public constant STAKING_ROLE_NAME = "StakingRole";
45
40
 
41
+ string public constant REGISTRY_TARGET_NAME = "Registry";
46
42
  string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
47
43
  string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
48
44
  string public constant STAKING_TARGET_NAME = "Staking";
49
45
  string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
50
46
 
51
47
  uint8 public constant MAX_NUM_RELEASES = 99;
52
-
48
+ // TODO consider deleting this
53
49
  mapping(address service => VersionPart majorVersion) private _ServiceRelease;
54
50
 
51
+ address internal _registry;
55
52
  address private _releaseRegistry;
56
53
  address private _tokenRegistry;
57
54
  address private _staking;
58
55
  address private _stakingStore;
59
- bool private _setupCompleted;
60
56
 
61
57
  constructor() AccessAdmin() { }
62
58
 
@@ -66,11 +62,10 @@ contract RegistryAdmin is
66
62
  address gifManager
67
63
  )
68
64
  external
65
+ initializer
69
66
  onlyDeployer()
70
67
  {
71
- if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
72
- else { _setupCompleted = true; }
73
-
68
+ _registry = address(registry);
74
69
  _releaseRegistry = registry.getReleaseRegistryAddress();
75
70
  _tokenRegistry = registry.getTokenRegistryAddress();
76
71
  _staking = registry.getStakingAddress();
@@ -84,6 +79,7 @@ contract RegistryAdmin is
84
79
  _setupGifManagerRole(gifManager);
85
80
 
86
81
  _setupReleaseRegistry();
82
+ _setupRegistry();
87
83
  _setupStaking();
88
84
  }
89
85
 
@@ -93,15 +89,46 @@ contract RegistryAdmin is
93
89
  /// Permissioned function: Access is restricted to release manager.
94
90
  function authorizeService(
95
91
  IServiceAuthorization serviceAuthorization,
96
- IService service
92
+ IService service,
93
+ ObjectType serviceDomain,
94
+ VersionPart releaseVersion
97
95
  )
98
96
  external
99
97
  restricted()
100
98
  {
101
- _createServiceTargetAndRole(service);
102
- _authorizeServiceFunctions(serviceAuthorization, service);
99
+ _createServiceTargetAndRole(service, serviceDomain, releaseVersion);
100
+ _authorizeServiceFunctions(serviceAuthorization, service, serviceDomain, releaseVersion);
103
101
  }
104
102
 
103
+ function grantServiceRole(
104
+ IService service,
105
+ ObjectType domain,
106
+ VersionPart version
107
+ )
108
+ external
109
+ restricted()
110
+ {
111
+ _grantRoleToAccount(
112
+ RoleIdLib.roleForTypeAndVersion(
113
+ domain,
114
+ version),
115
+ address(service));
116
+ }
117
+
118
+ function revokeServiceRole(
119
+ IService service,
120
+ ObjectType domain,
121
+ VersionPart version
122
+ )
123
+ external
124
+ restricted()
125
+ {
126
+ _revokeRoleFromAccount(
127
+ RoleIdLib.roleForTypeAndVersion(
128
+ domain,
129
+ version),
130
+ address(service));
131
+ }
105
132
 
106
133
  function grantServiceRoleForAllVersions(IService service, ObjectType domain)
107
134
  external
@@ -112,14 +139,44 @@ contract RegistryAdmin is
112
139
  address(service));
113
140
  }
114
141
 
142
+ function revokeServiceRoleForAllVersions(IService service, ObjectType domain)
143
+ external
144
+ restricted()
145
+ {
146
+ _revokeRoleFromAccount(
147
+ RoleIdLib.roleForTypeAndAllVersions(domain),
148
+ address(service));
149
+ }
115
150
 
116
- function _createServiceTargetAndRole(IService service)
151
+ /*function transferAdmin(address to)
152
+ external
153
+ restricted // only with GIF_ADMIN_ROLE or nft owner
154
+ {
155
+ _accessManager.revoke(GIF_ADMIN_ROLE, );
156
+ _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
157
+ }*/
158
+
159
+ //--- view functions ----------------------------------------------------//
160
+
161
+ function getGifAdminRole() external view returns (RoleId) {
162
+ return GIF_ADMIN_ROLE();
163
+ }
164
+
165
+ function getGifManagerRole() external view returns (RoleId) {
166
+ return GIF_MANAGER_ROLE();
167
+ }
168
+
169
+ //--- private functions -------------------------------------------------//
170
+
171
+ function _createServiceTargetAndRole(
172
+ IService service,
173
+ ObjectType serviceDomain,
174
+ VersionPart releaseVersion
175
+ )
117
176
  private
118
177
  {
119
- ObjectType serviceDomain = service.getDomain();
120
178
  string memory baseName = ObjectTypeLib.toName(serviceDomain);
121
- VersionPart version = service.getVersion().toMajorPart();
122
- uint256 versionInt = version.toInt();
179
+ uint256 versionInt = releaseVersion.toInt();
123
180
 
124
181
  // create service target
125
182
  string memory serviceTargetName = ObjectTypeLib.toVersionedName(
@@ -134,7 +191,7 @@ contract RegistryAdmin is
134
191
  // create service role
135
192
  RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
136
193
  serviceDomain,
137
- version);
194
+ releaseVersion);
138
195
 
139
196
  _createRole(
140
197
  serviceRoleId,
@@ -155,15 +212,15 @@ contract RegistryAdmin is
155
212
 
156
213
  function _authorizeServiceFunctions(
157
214
  IServiceAuthorization serviceAuthorization,
158
- IService service
215
+ IService service,
216
+ ObjectType serviceDomain,
217
+ VersionPart releaseVersion
159
218
  )
160
219
  private
161
220
  {
162
- ObjectType serviceDomain = service.getDomain();
163
221
  ObjectType authorizedDomain;
164
222
  RoleId authorizedRoleId;
165
223
 
166
- VersionPart release = service.getVersion().toMajorPart();
167
224
  ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
168
225
 
169
226
  for (uint256 i = 0; i < authorizedDomains.length; i++) {
@@ -175,7 +232,7 @@ contract RegistryAdmin is
175
232
  } else {
176
233
  authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
177
234
  authorizedDomain,
178
- release);
235
+ releaseVersion);
179
236
  }
180
237
 
181
238
  // get authorized functions for authorized domain
@@ -190,27 +247,12 @@ contract RegistryAdmin is
190
247
  }
191
248
  }
192
249
 
193
- /*function transferAdmin(address to)
194
- external
195
- restricted // only with GIF_ADMIN_ROLE or nft owner
196
- {
197
- _accessManager.revoke(GIF_ADMIN_ROLE, );
198
- _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
199
- }*/
200
-
201
- //--- view functions ----------------------------------------------------//
202
-
203
- function getGifAdminRole() external view returns (RoleId) {
204
- return GIF_ADMIN_ROLE();
205
- }
206
-
207
- function getGifManagerRole() external view returns (RoleId) {
208
- return GIF_MANAGER_ROLE();
209
- }
210
-
211
- //--- private functions -------------------------------------------------//
250
+ //--- private initialization functions -------------------------------------------//
212
251
 
213
- function _setupGifAdminRole(address gifAdmin) private {
252
+ function _setupGifAdminRole(address gifAdmin)
253
+ private
254
+ onlyInitializing()
255
+ {
214
256
 
215
257
  _createRole(
216
258
  GIF_ADMIN_ROLE(),
@@ -220,8 +262,13 @@ contract RegistryAdmin is
220
262
  maxMemberCount: 2, // TODO decide on max member count
221
263
  name: GIF_ADMIN_ROLE_NAME}));
222
264
 
223
- // for ReleaseRegistry
265
+ // for Registry
224
266
  FunctionInfo[] memory functions;
267
+ functions = new FunctionInfo[](1);
268
+ functions[0] = toFunction(IRegistry.registerRegistry.selector, "registerRegistry");
269
+ _authorizeTargetFunctions(_registry, GIF_ADMIN_ROLE(), functions);
270
+
271
+ // for ReleaseRegistry
225
272
  functions = new FunctionInfo[](4);
226
273
  functions[0] = toFunction(ReleaseRegistry.createNextRelease.selector, "createNextRelease");
227
274
  functions[1] = toFunction(ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
@@ -232,7 +279,10 @@ contract RegistryAdmin is
232
279
  _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
233
280
  }
234
281
 
235
- function _setupGifManagerRole(address gifManager) private {
282
+ function _setupGifManagerRole(address gifManager)
283
+ private
284
+ onlyInitializing()
285
+ {
236
286
 
237
287
  _createRole(
238
288
  GIF_MANAGER_ROLE(),
@@ -263,7 +313,10 @@ contract RegistryAdmin is
263
313
  }
264
314
 
265
315
 
266
- function _setupReleaseRegistry() private {
316
+ function _setupReleaseRegistry()
317
+ private
318
+ onlyInitializing()
319
+ {
267
320
 
268
321
  _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
269
322
 
@@ -277,16 +330,54 @@ contract RegistryAdmin is
277
330
  name: RELEASE_REGISTRY_ROLE_NAME}));
278
331
 
279
332
  FunctionInfo[] memory functions;
280
- functions = new FunctionInfo[](2);
333
+ functions = new FunctionInfo[](5);
281
334
  functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
282
335
  functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
336
+ functions[2] = toFunction(RegistryAdmin.revokeServiceRoleForAllVersions.selector, "revokeServiceRoleForAllVersions");
337
+ functions[3] = toFunction(RegistryAdmin.grantServiceRole.selector, "grantServiceRole");
338
+ functions[4] = toFunction(RegistryAdmin.revokeServiceRole.selector, "revokeServiceRole");
283
339
  _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
284
340
 
285
341
  _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
286
342
  }
287
343
 
288
344
 
289
- function _setupStaking() private {
345
+ function _setupRegistry()
346
+ internal
347
+ virtual
348
+ onlyInitializing()
349
+ {
350
+ _createTarget(_registry, REGISTRY_TARGET_NAME, true, false);
351
+
352
+ // registry function authorization for registry service
353
+ RoleId registryServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(REGISTRY());
354
+ _createRole(
355
+ registryServiceRoleId,
356
+ toRole({
357
+ adminRoleId: ADMIN_ROLE(),
358
+ roleType: RoleType.Contract,
359
+ maxMemberCount: MAX_NUM_RELEASES,
360
+ name: REGISTRY_SERVICE_ROLE_NAME}));
361
+
362
+ // authorize registry service
363
+ FunctionInfo[] memory functions;
364
+ functions = new FunctionInfo[](2);
365
+ functions[0] = toFunction(IRegistry.register.selector, "register");
366
+ functions[1] = toFunction(IRegistry.registerWithCustomType.selector, "registerWithCustomType");
367
+ _authorizeTargetFunctions(_registry, registryServiceRoleId, functions);
368
+
369
+ // authorize release registry
370
+ RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
371
+ functions = new FunctionInfo[](1);
372
+ functions[0] = toFunction(IRegistry.registerService.selector, "registerService");
373
+ _authorizeTargetFunctions(_registry, releaseRegistryRoleId, functions);
374
+ }
375
+
376
+
377
+ function _setupStaking()
378
+ private
379
+ onlyInitializing()
380
+ {
290
381
  _createTarget(_staking, STAKING_TARGET_NAME, true, false);
291
382
  _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
292
383
 
@@ -359,7 +450,15 @@ contract RegistryAdmin is
359
450
  functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
360
451
  functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
361
452
  _authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
362
-
453
+
363
454
  _grantRoleToAccount(stakingRoleId, _staking);
455
+
456
+ // grant token handler authorizations
457
+ IStaking staking = IStaking(_staking);
458
+ functions = new FunctionInfo[](2);
459
+ functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
460
+ functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
461
+
462
+ _authorizeTargetFunctions(address(staking.getTokenHandler()), stakingRoleId, functions);
364
463
  }
365
464
  }
@@ -39,8 +39,8 @@ contract RegistryService is
39
39
  address initialAuthority
40
40
  ) = abi.decode(data, (address, address));
41
41
 
42
- initializeService(registryAddress, initialAuthority, owner);
43
- registerInterface(type(IRegistryService).interfaceId);
42
+ _initializeService(registryAddress, initialAuthority, owner);
43
+ _registerInterface(type(IRegistryService).interfaceId);
44
44
  }
45
45
 
46
46
 
@@ -194,7 +194,6 @@ contract ReleaseRegistry is
194
194
  emit LogReleaseCreation(version, releaseSalt);
195
195
  }
196
196
 
197
- // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
198
197
  function registerService(IService service)
199
198
  external
200
199
  restricted // GIF_MANAGER_ROLE
@@ -230,19 +229,26 @@ contract ReleaseRegistry is
230
229
  }
231
230
 
232
231
  // register service with registry
232
+ // !!! TODO MUST call registry at the end of this function
233
233
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
234
234
  service.linkToRegisteredNftId();
235
235
  _registeredServices++;
236
236
 
237
237
  // setup service authorization
238
+ // !!! TODO service A can call service B while release is not active
238
239
  _admin.authorizeService(
239
240
  _serviceAuthorization[releaseVersion],
240
- service);
241
+ service,
242
+ serviceDomain,
243
+ serviceVersion);
241
244
 
242
- // TODO consider to extend this to REGISTRY
243
245
  // special roles for registry/staking/pool service
244
- if (serviceDomain == STAKING() || serviceDomain == POOL()) {
245
- // TODO rename to grantServiceDomainRole()
246
+ // !!! TODO registry service allowed to call registry while release is not activated (same for staking/pool service and staking)
247
+ if (
248
+ serviceDomain == REGISTRY() ||
249
+ serviceDomain == STAKING() ||
250
+ serviceDomain == POOL())
251
+ {
246
252
  _admin.grantServiceRoleForAllVersions(service, serviceDomain);
247
253
  }
248
254
  }
@@ -475,7 +481,7 @@ contract ReleaseRegistry is
475
481
  // TODO try catch and return false in case of revert
476
482
  // or just panic
477
483
  // check if contract returns a zero nft id for its own address
478
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
484
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
479
485
  return false;
480
486
  }
481
487
 
@@ -2,14 +2,12 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
5
+ ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {ComponentService} from "../shared/ComponentService.sol";
9
8
  import {IAccess} from "../authorization/IAccess.sol";
10
9
  import {IBundleService} from "../pool/IBundleService.sol";
11
10
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
- import {InstanceService} from "../instance/InstanceService.sol";
13
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
12
  import {IPoolService} from "../pool/IPoolService.sol";
15
13
  import {IStakingService} from "../staking/IStakingService.sol";
@@ -163,6 +161,7 @@ contract ServiceAuthorizationV3
163
161
 
164
162
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
163
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
164
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
166
165
  }
167
166
 
168
167
 
@@ -6,7 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
- import {Amount} from "../type/Amount.sol";
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
10
  import {IComponent} from "./IComponent.sol";
11
11
  import {IComponents} from "../instance/module/IComponents.sol";
12
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
@@ -52,7 +52,7 @@ abstract contract Component is
52
52
  }
53
53
  }
54
54
 
55
- function initializeComponent(
55
+ function _initializeComponent(
56
56
  address authority,
57
57
  address registry,
58
58
  NftId parentNftId,
@@ -64,11 +64,11 @@ abstract contract Component is
64
64
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
65
  bytes memory componentData // other component specific data
66
66
  )
67
- public
67
+ internal
68
68
  virtual
69
69
  onlyInitializing()
70
70
  {
71
- initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
71
+ _initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
72
72
  __AccessManaged_init(authority);
73
73
 
74
74
  if (token == address(0)) {
@@ -87,8 +87,8 @@ abstract contract Component is
87
87
  $._isInterceptor = isInterceptor;
88
88
  $._data = componentData;
89
89
 
90
- registerInterface(type(IAccessManaged).interfaceId);
91
- registerInterface(type(IComponent).interfaceId);
90
+ _registerInterface(type(IAccessManaged).interfaceId);
91
+ _registerInterface(type(IComponent).interfaceId);
92
92
  }
93
93
 
94
94
 
@@ -109,11 +109,11 @@ abstract contract Component is
109
109
  revert ErrorComponentWalletNotComponent();
110
110
  }
111
111
 
112
+ emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
113
+
112
114
  IERC20Metadata(token).approve(
113
115
  address(getTokenHandler()),
114
116
  spendingLimitAmount.toInt());
115
-
116
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
117
117
  }
118
118
 
119
119
  function setWallet(address newWallet)
@@ -124,34 +124,22 @@ abstract contract Component is
124
124
  {
125
125
  // checks
126
126
  address currentWallet = getWallet();
127
- IERC20Metadata token = getToken();
128
- uint256 currentBalance = token.balanceOf(currentWallet);
129
-
130
- if (currentBalance > 0) {
131
- if (currentWallet == address(this)) {
132
- // move tokens from component smart contract to external wallet
133
- } else {
134
- // move tokens from external wallet to component smart contract or another external wallet
135
- uint256 allowance = token.allowance(currentWallet, address(this));
136
- if (allowance < currentBalance) {
137
- revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
138
- }
139
- }
140
- }
127
+ uint256 currentBalance = getToken().balanceOf(currentWallet);
141
128
 
142
129
  // effects
143
130
  _setWallet(newWallet);
144
131
 
145
132
  // interactions
146
133
  if (currentBalance > 0) {
147
- // transfer tokens from current wallet to new wallet
134
+ // move tokens from old to new wallet
135
+ emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
136
+
148
137
  if (currentWallet == address(this)) {
149
- // transferFrom requires self allowance too
150
- token.approve(address(this), currentBalance);
138
+ // transfer from the component requires an allowance
139
+ getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
140
+ } else {
141
+ getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
151
142
  }
152
-
153
- SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
154
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
155
143
  }
156
144
  }
157
145
 
@@ -218,7 +206,7 @@ abstract contract Component is
218
206
 
219
207
 
220
208
  function isRegistered() public virtual view returns (bool) {
221
- return getRegistry().getNftId(address(this)).gtz();
209
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
222
210
  }
223
211
 
224
212
 
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
5
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
8
6
  import {Fee, FeeLib} from "../type/Fee.sol";
@@ -21,7 +19,7 @@ import {KEEP_STATE} from "../type/StateId.sol";
21
19
  import {NftId} from "../type/NftId.sol";
22
20
  import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
23
21
  import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
24
- import {TokenHandler} from "./TokenHandler.sol";
22
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
25
23
 
26
24
  contract ComponentService is
27
25
  ComponentVerifyingService,
@@ -55,12 +53,12 @@ contract ComponentService is
55
53
  address initialOwner;
56
54
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
55
 
58
- initializeService(registryAddress, address(0), owner);
56
+ _initializeService(registryAddress, address(0), owner);
59
57
 
60
58
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
61
59
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
62
60
 
63
- registerInterface(type(IComponentService).interfaceId);
61
+ _registerInterface(type(IComponentService).interfaceId);
64
62
  }
65
63
 
66
64
  //-------- component ----------------------------------------------------//
@@ -115,23 +113,13 @@ contract ComponentService is
115
113
  }
116
114
  }
117
115
 
118
- // check allowance
119
- TokenHandler tokenHandler = info.tokenHandler;
120
- IERC20Metadata token = IERC20Metadata(info.token);
121
- uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
122
- if (tokenAllowance < withdrawnAmount.toInt()) {
123
- revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
124
- }
125
-
126
116
  // decrease fee counters by withdrawnAmount
127
117
  _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
128
118
 
129
119
  // transfer amount to component owner
130
120
  address componentOwner = getRegistry().ownerOf(componentNftId);
131
- // TODO: centralize token handling (issue #471)
132
- tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
133
-
134
- emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
121
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
122
+ info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
135
123
  }
136
124
 
137
125
 
@@ -152,7 +140,7 @@ contract ComponentService is
152
140
  contractAddress,
153
141
  PRODUCT(),
154
142
  PRODUCT_OWNER_ROLE());
155
-
143
+
156
144
  // create product info
157
145
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
158
146
  instanceStore.createProduct(productNftId, productInfo);
@@ -523,22 +511,24 @@ contract ComponentService is
523
511
 
524
512
  component.linkToRegisteredNftId();
525
513
 
526
- // setup initial component authorization
527
- _instanceService.initializeAuthorization(
528
- instance.getNftId(),
529
- component);
530
-
531
514
  // save amended component info with instance
532
515
  instanceReader = instance.getInstanceReader();
533
516
  instanceStore = instance.getInstanceStore();
534
517
 
535
- IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
536
- componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
518
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
519
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
520
+ address(componentInfo.token),
521
+ address(instance.getInstanceAdmin().authority()));
537
522
 
538
523
  instanceStore.createComponent(
539
524
  component.getNftId(),
540
525
  componentInfo);
541
526
 
527
+ // setup initial component authorization
528
+ _instanceService.initializeAuthorization(
529
+ instance.getNftId(),
530
+ component);
531
+
542
532
  // TODO add logging
543
533
  }
544
534
 
@@ -632,7 +622,7 @@ contract ComponentService is
632
622
  }
633
623
 
634
624
  // check component has not already been registered
635
- if (getRegistry().getNftId(componentAddress).gtz()) {
625
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
636
626
  revert ErrorComponentServiceAlreadyRegistered(componentAddress);
637
627
  }
638
628
 
@@ -32,7 +32,7 @@ abstract contract ComponentVerifyingService is
32
32
  IInstance instance
33
33
  )
34
34
  {
35
- componentNftId = getRegistry().getNftId(msg.sender);
35
+ componentNftId = getRegistry().getNftIdForAddress(msg.sender);
36
36
  (componentInfo, instance) = _getAndVerifyComponentInfo(
37
37
  componentNftId,
38
38
  expectedType,