@etherisc/gif-next 0.0.2-e802d97-251 → 0.0.2-e81f152-917

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 (467) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1500 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -292
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +248 -95
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -57
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -149
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +116 -16
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -146
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +132 -140
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +215 -108
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -49
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +90 -263
  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/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1137 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -26
  82. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +13 -0
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -157
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +66 -29
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +44 -32
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1406 -0
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +424 -63
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -43
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -278
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +171 -54
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -417
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +252 -95
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +58 -38
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +67 -49
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -42
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1254 -0
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +122 -69
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +64 -52
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +29 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +201 -108
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +13 -0
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -68
  132. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -0
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +294 -164
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +69 -41
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +97 -63
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +57 -49
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +32 -217
  144. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.json +54 -25
  146. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +38 -30
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  150. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  152. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  154. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  155. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  157. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1506 -167
  159. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +50 -13
  161. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -25
  163. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  165. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  167. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  169. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  171. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  172. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  173. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +347 -85
  175. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +108 -60
  177. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +13 -0
  179. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  181. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +166 -0
  183. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -26
  185. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  187. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  189. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  195. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  196. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  197. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -117
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  201. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  204. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  205. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  210. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  212. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  214. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Service.sol/Service.json +13 -0
  216. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  218. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  219. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  220. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  221. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +49 -7
  222. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +52 -109
  224. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/Staking.sol/Staking.json +114 -146
  226. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  228. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +78 -58
  230. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  232. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +92 -73
  234. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +39 -47
  236. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +201 -148
  238. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  239. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  240. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  241. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  242. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  244. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  246. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  248. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  250. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  252. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  254. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  256. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  260. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  262. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  264. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  266. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  268. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  270. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  272. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  278. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  280. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  282. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  284. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  286. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  288. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  290. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  291. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  292. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  293. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  294. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  295. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  296. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  298. package/contracts/authorization/AccessAdmin.sol +591 -0
  299. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  300. package/contracts/authorization/Authorization.sol +217 -0
  301. package/contracts/authorization/IAccess.sol +48 -0
  302. package/contracts/authorization/IAccessAdmin.sol +136 -0
  303. package/contracts/authorization/IAuthorization.sol +54 -0
  304. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  305. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  306. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  307. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  308. package/contracts/distribution/BasicDistribution.sol +138 -0
  309. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  310. package/contracts/distribution/Distribution.sol +144 -110
  311. package/contracts/distribution/DistributionService.sol +60 -36
  312. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  313. package/contracts/distribution/IDistributionComponent.sol +25 -39
  314. package/contracts/distribution/IDistributionService.sol +15 -1
  315. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  316. package/contracts/instance/IInstance.sol +16 -12
  317. package/contracts/instance/IInstanceService.sol +34 -23
  318. package/contracts/instance/Instance.sol +106 -88
  319. package/contracts/instance/InstanceAdmin.sol +221 -267
  320. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  321. package/contracts/instance/InstanceReader.sol +34 -16
  322. package/contracts/instance/InstanceService.sol +189 -84
  323. package/contracts/instance/InstanceServiceManager.sol +2 -6
  324. package/contracts/instance/InstanceStore.sol +16 -20
  325. package/contracts/instance/base/BalanceStore.sol +11 -6
  326. package/contracts/instance/base/Cloneable.sol +2 -25
  327. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  328. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  329. package/contracts/instance/module/IBundle.sol +1 -1
  330. package/contracts/instance/module/IComponents.sol +1 -7
  331. package/contracts/instance/module/IDistribution.sol +0 -1
  332. package/contracts/instance/module/IPolicy.sol +1 -1
  333. package/contracts/mock/Dip.sol +1 -1
  334. package/contracts/oracle/BasicOracle.sol +48 -0
  335. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  336. package/contracts/oracle/IOracle.sol +16 -0
  337. package/contracts/oracle/IOracleComponent.sol +2 -1
  338. package/contracts/oracle/Oracle.sol +72 -51
  339. package/contracts/oracle/OracleService.sol +5 -4
  340. package/contracts/oracle/OracleServiceManager.sol +2 -5
  341. package/contracts/pool/BasicPool.sol +166 -0
  342. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  343. package/contracts/pool/BundleService.sol +199 -59
  344. package/contracts/pool/BundleServiceManager.sol +2 -5
  345. package/contracts/pool/IBundleService.sol +33 -5
  346. package/contracts/pool/IPoolComponent.sol +6 -60
  347. package/contracts/pool/IPoolService.sol +14 -17
  348. package/contracts/pool/Pool.sol +166 -137
  349. package/contracts/pool/PoolService.sol +158 -93
  350. package/contracts/pool/PoolServiceManager.sol +2 -5
  351. package/contracts/product/ApplicationService.sol +54 -58
  352. package/contracts/product/ApplicationServiceManager.sol +2 -2
  353. package/contracts/product/BasicProduct.sol +52 -0
  354. package/contracts/product/BasicProductAuthorization.sol +43 -0
  355. package/contracts/product/ClaimService.sol +18 -44
  356. package/contracts/product/ClaimServiceManager.sol +2 -2
  357. package/contracts/product/IApplicationService.sol +1 -0
  358. package/contracts/product/IClaimService.sol +1 -0
  359. package/contracts/product/IPolicyService.sol +23 -17
  360. package/contracts/product/IProductComponent.sol +7 -9
  361. package/contracts/product/IProductService.sol +1 -0
  362. package/contracts/product/PolicyService.sol +247 -136
  363. package/contracts/product/PolicyServiceManager.sol +2 -5
  364. package/contracts/product/PricingService.sol +9 -6
  365. package/contracts/product/PricingServiceManager.sol +2 -5
  366. package/contracts/product/Product.sol +128 -92
  367. package/contracts/product/ProductService.sol +12 -37
  368. package/contracts/product/ProductServiceManager.sol +2 -5
  369. package/contracts/registry/IRegistry.sol +26 -16
  370. package/contracts/registry/IRegistryService.sol +6 -6
  371. package/contracts/registry/Registry.sol +85 -85
  372. package/contracts/registry/RegistryAdmin.sol +292 -155
  373. package/contracts/registry/RegistryService.sol +9 -23
  374. package/contracts/registry/RegistryServiceManager.sol +2 -7
  375. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  376. package/contracts/registry/ReleaseRegistry.sol +485 -0
  377. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  378. package/contracts/registry/TokenRegistry.sol +2 -2
  379. package/contracts/shared/Component.sol +24 -37
  380. package/contracts/shared/ComponentService.sol +99 -76
  381. package/contracts/shared/ComponentServiceManager.sol +2 -2
  382. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  383. package/contracts/shared/IComponent.sol +4 -4
  384. package/contracts/shared/IComponentService.sol +15 -9
  385. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  386. package/contracts/shared/IKeyValueStore.sol +1 -0
  387. package/contracts/shared/ILifecycle.sol +1 -2
  388. package/contracts/shared/IService.sol +8 -1
  389. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  390. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  391. package/contracts/shared/KeyValueStore.sol +6 -2
  392. package/contracts/shared/Lifecycle.sol +16 -69
  393. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  394. package/contracts/shared/NftOwnable.sol +2 -2
  395. package/contracts/shared/PolicyHolder.sol +2 -5
  396. package/contracts/shared/Service.sol +27 -22
  397. package/contracts/shared/TokenHandler.sol +100 -19
  398. package/contracts/staking/IStaking.sol +1 -2
  399. package/contracts/staking/IStakingService.sol +22 -11
  400. package/contracts/staking/StakeManagerLib.sol +52 -25
  401. package/contracts/staking/Staking.sol +77 -132
  402. package/contracts/staking/StakingLifecycle.sol +23 -0
  403. package/contracts/staking/StakingManager.sol +2 -6
  404. package/contracts/staking/StakingReader.sol +12 -16
  405. package/contracts/staking/StakingService.sol +66 -65
  406. package/contracts/staking/StakingServiceManager.sol +2 -3
  407. package/contracts/staking/StakingStore.sol +93 -60
  408. package/contracts/type/Amount.sol +12 -5
  409. package/contracts/type/Blocknumber.sol +7 -1
  410. package/contracts/type/ObjectType.sol +167 -64
  411. package/contracts/type/Referral.sol +1 -0
  412. package/contracts/type/RoleId.sol +103 -75
  413. package/contracts/type/Seconds.sol +13 -1
  414. package/contracts/type/Selector.sol +102 -0
  415. package/contracts/type/String.sol +53 -0
  416. package/contracts/type/Timestamp.sol +11 -1
  417. package/contracts/type/UFixed.sol +34 -9
  418. package/contracts/type/Version.sol +3 -1
  419. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  420. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  421. package/package.json +6 -3
  422. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  423. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  424. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  425. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  426. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  427. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  428. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  429. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  430. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  431. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  432. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  433. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  434. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  435. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  436. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  437. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  438. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  439. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  440. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  441. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  442. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  443. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  444. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  445. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  446. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  447. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  448. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  449. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  450. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  451. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  452. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  453. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  454. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  455. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  456. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  457. package/contracts/registry/ReleaseManager.sol +0 -600
  458. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  459. package/contracts/shared/AccessManagerCustom.sol +0 -736
  460. package/contracts/shared/AccessManagerExtended.sol +0 -470
  461. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  462. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  463. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  464. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  465. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  466. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  467. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,46 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Pool} from "./Pool.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {IInstance} from "../instance/IInstance.sol";
7
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
8
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
10
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
-
11
- import {IVersionable} from "../shared/IVersionable.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
11
+ import {IPoolService} from "./IPoolService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {IRegistryService} from "../registry/IRegistryService.sol";
14
+ import {IStaking} from "../staking/IStaking.sol";
14
15
 
15
16
  import {Amount, AmountLib} from "../type/Amount.sol";
16
17
  import {Fee, FeeLib} from "../type/Fee.sol";
17
- import {NftId, NftIdLib} from "../type/NftId.sol";
18
- import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
19
- import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../type/RoleId.sol";
18
+ import {NftId} from "../type/NftId.sol";
19
+ import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
20
+ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
20
21
  import {Fee, FeeLib} from "../type/Fee.sol";
21
- import {Version, VersionLib} from "../type/Version.sol";
22
- import {KEEP_STATE, StateId} from "../type/StateId.sol";
22
+ import {KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Seconds} from "../type/Seconds.sol";
24
- import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
25
24
  import {TokenHandler} from "../shared/TokenHandler.sol";
26
25
  import {UFixed} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
-
29
- import {IService} from "../shared/IService.sol";
30
- import {Service} from "../shared/Service.sol";
31
- import {BundleManager} from "../instance/BundleManager.sol";
32
26
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
33
- import {IBundleService} from "./IBundleService.sol";
34
- import {IComponentService} from "../shared/IComponentService.sol";
35
- import {IInstanceService} from "../instance/IInstanceService.sol";
36
- import {IPoolService} from "./IPoolService.sol";
37
- import {IRegistryService} from "../registry/IRegistryService.sol";
38
- import {IStaking} from "../staking/IStaking.sol";
39
- import {InstanceService} from "../instance/InstanceService.sol";
40
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
41
28
  import {InstanceStore} from "../instance/InstanceStore.sol";
42
- import {IComponent} from "../shared/IComponent.sol";
43
- import {IPoolComponent} from "./IPoolComponent.sol";
44
29
 
45
30
  string constant POOL_SERVICE_NAME = "PoolService";
46
31
 
@@ -48,9 +33,6 @@ contract PoolService is
48
33
  ComponentVerifyingService,
49
34
  IPoolService
50
35
  {
51
- using NftIdLib for NftId;
52
- using AmountLib for Amount;
53
-
54
36
  IBundleService internal _bundleService;
55
37
  IComponentService internal _componentService;
56
38
  IInstanceService private _instanceService;
@@ -84,28 +66,20 @@ contract PoolService is
84
66
  registerInterface(type(IPoolService).interfaceId);
85
67
  }
86
68
 
87
- function getDomain() public pure override returns(ObjectType) {
88
- return POOL();
89
- }
90
-
91
-
92
- function setMaxCapitalAmount(Amount maxCapitalAmount)
69
+ /// @inheritdoc IPoolService
70
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
93
71
  external
94
72
  virtual
95
73
  {
96
- /*
97
74
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
75
  InstanceReader instanceReader = instance.getInstanceReader();
76
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
99
77
 
100
- IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
101
- IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
102
- Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
103
-
104
- poolInfo.maxCapitalAmount = maxCapitalAmount;
78
+ Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
79
+ poolInfo.maxBalanceAmount = maxBalanceAmount;
105
80
  instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
106
81
 
107
- emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
108
- */
82
+ emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
109
83
  }
110
84
 
111
85
  function setBundleOwnerRole(RoleId bundleOwnerRole)
@@ -129,27 +103,7 @@ contract PoolService is
129
103
  emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
130
104
  }
131
105
 
132
-
133
- function setFees(
134
- Fee memory poolFee,
135
- Fee memory stakingFee,
136
- Fee memory performanceFee
137
- )
138
- external
139
- virtual
140
- {
141
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
142
-
143
- IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
144
- poolInfo.poolFee = poolFee;
145
- poolInfo.stakingFee = stakingFee;
146
- poolInfo.performanceFee = performanceFee;
147
-
148
- instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
149
-
150
- // TODO add logging
151
- }
152
-
106
+ /// @inheritdoc IPoolService
153
107
  function createBundle(
154
108
  address bundleOwner, // initial bundle owner
155
109
  Fee memory fee, // fees deducted from premium that go to bundle owner
@@ -159,24 +113,32 @@ contract PoolService is
159
113
  )
160
114
  external
161
115
  virtual
162
- returns(NftId bundleNftId)
116
+ returns(NftId bundleNftId, Amount netStakedAmount)
163
117
  {
164
118
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
165
- InstanceReader instanceReader = instance.getInstanceReader();
166
119
 
167
- (
168
- Amount stakingFeeAmount,
169
- Amount stakingNetAmount
170
- ) = FeeLib.calculateFee(
171
- _getStakingFee(instanceReader, poolNftId),
120
+ {
121
+ InstanceReader instanceReader = instance.getInstanceReader();
122
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
123
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
124
+ if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
125
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
126
+ }
127
+ }
128
+
129
+
130
+ Amount stakingFeeAmount;
131
+ (stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
132
+ _getStakingFee(instance.getInstanceReader(), poolNftId),
172
133
  stakingAmount);
173
134
 
135
+
174
136
  bundleNftId = _bundleService.create(
175
137
  instance,
176
138
  poolNftId,
177
139
  bundleOwner,
178
140
  fee,
179
- stakingNetAmount,
141
+ netStakedAmount,
180
142
  lifetime,
181
143
  filter);
182
144
 
@@ -184,12 +146,12 @@ contract PoolService is
184
146
  _componentService.increasePoolBalance(
185
147
  instance.getInstanceStore(),
186
148
  poolNftId,
187
- stakingAmount,
149
+ netStakedAmount,
188
150
  stakingFeeAmount);
189
151
 
190
152
  // pool bookkeeping and collect tokens from bundle owner
191
153
  _collectStakingAmount(
192
- instanceReader,
154
+ instance.getInstanceReader(),
193
155
  poolNftId,
194
156
  bundleOwner,
195
157
  stakingAmount);
@@ -203,8 +165,8 @@ contract PoolService is
203
165
  view
204
166
  returns (Fee memory stakingFee)
205
167
  {
206
- NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
207
- return instanceReader.getPoolInfo(productNftId).stakingFee;
168
+ NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
169
+ return instanceReader.getProductInfo(productNftId).stakingFee;
208
170
  }
209
171
 
210
172
  function closeBundle(NftId bundleNftId)
@@ -213,16 +175,121 @@ contract PoolService is
213
175
  {
214
176
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
215
177
 
216
- // TODO book keeping for pool collateral released outside of retention level
178
+ // TODO get performance fee for pool (#477)
217
179
 
218
180
  // releasing collateral in bundle
219
- _bundleService.close(instance, bundleNftId);
220
-
221
- // TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
181
+ (Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
222
182
 
183
+ _componentService.decreasePoolBalance(
184
+ instance.getInstanceStore(),
185
+ poolNftId,
186
+ unstakedAmount + feeAmount,
187
+ AmountLib.zero());
188
+
223
189
  emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
190
+
191
+ if ((unstakedAmount + feeAmount).gtz()){
192
+ IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
193
+ poolComponentInfo.tokenHandler.distributeTokens(
194
+ poolComponentInfo.wallet,
195
+ getRegistry().ownerOf(bundleNftId),
196
+ unstakedAmount + feeAmount);
197
+ }
198
+ }
199
+
200
+ /// @inheritdoc IPoolService
201
+ function stake(NftId bundleNftId, Amount amount)
202
+ external
203
+ virtual
204
+ // TODO: restricted() (once #462 is done)
205
+ returns(Amount netAmount)
206
+ {
207
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
208
+ InstanceReader instanceReader = instance.getInstanceReader();
209
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
210
+ IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
211
+
212
+ if (bundleInfo.poolNftId != poolNftId) {
213
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
214
+ }
215
+
216
+ {
217
+ Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
218
+ if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
219
+ revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
220
+ }
221
+ }
222
+
223
+ // calculate fees
224
+ Amount feeAmount;
225
+ (
226
+ feeAmount,
227
+ netAmount
228
+ ) = FeeLib.calculateFee(
229
+ _getStakingFee(instanceReader, poolNftId),
230
+ amount);
231
+
232
+ // do all the bookkeeping
233
+ _componentService.increasePoolBalance(
234
+ instance.getInstanceStore(),
235
+ poolNftId,
236
+ netAmount,
237
+ feeAmount);
238
+
239
+ _bundleService.stake(instance, bundleNftId, netAmount);
240
+
241
+ // collect tokens from bundle owner
242
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
243
+ emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
244
+ _collectStakingAmount(
245
+ instanceReader,
246
+ poolNftId,
247
+ bundleOwner,
248
+ amount);
224
249
  }
225
250
 
251
+ /// @inheritdoc IPoolService
252
+ function unstake(NftId bundleNftId, Amount amount)
253
+ external
254
+ virtual
255
+ // TODO: restricted() (once #462 is done)
256
+ returns(Amount netAmount)
257
+ {
258
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
259
+ InstanceReader instanceReader = instance.getInstanceReader();
260
+ InstanceStore instanceStore = instance.getInstanceStore();
261
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
262
+
263
+ if (bundleInfo.poolNftId != poolNftId) {
264
+ revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
265
+ }
266
+
267
+ // call bundle service for bookkeeping and additional checks
268
+ Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
269
+
270
+ // Important: from now on work only with unstakedAmount as it is the only reliable amount.
271
+ // if amount was max, this was set to the available amount
272
+
273
+ // TODO: handle performance fees (issue #477)
274
+
275
+ // update pool bookkeeping - performance fees stay in the pool, but as fees
276
+ _componentService.decreasePoolBalance(
277
+ instanceStore,
278
+ poolNftId,
279
+ unstakedAmount,
280
+ AmountLib.zero());
281
+
282
+ IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
283
+ address poolWallet = poolComponentInfo.wallet;
284
+ // transfer amount to bundle owner
285
+ address owner = getRegistry().ownerOf(bundleNftId);
286
+ emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
287
+ poolComponentInfo.tokenHandler.distributeTokens(
288
+ poolWallet,
289
+ owner,
290
+ unstakedAmount);
291
+ return unstakedAmount;
292
+ }
226
293
 
227
294
  function processSale(
228
295
  NftId bundleNftId,
@@ -230,7 +297,7 @@ contract PoolService is
230
297
  )
231
298
  external
232
299
  virtual
233
- restricted
300
+ restricted()
234
301
  {
235
302
  IRegistry registry = getRegistry();
236
303
  IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
@@ -311,7 +378,7 @@ contract PoolService is
311
378
  )
312
379
  external
313
380
  virtual
314
- restricted
381
+ restricted()
315
382
  {
316
383
  _bundleService.releaseCollateral(
317
384
  instance,
@@ -337,7 +404,7 @@ contract PoolService is
337
404
  )
338
405
  external
339
406
  virtual
340
- restricted
407
+ restricted()
341
408
  {
342
409
  Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
343
410
 
@@ -426,7 +493,6 @@ contract PoolService is
426
493
  }
427
494
 
428
495
 
429
- // TODO create (I)TreasuryService that deals with all gif related token transfers
430
496
  /// @dev transfers the specified amount from the bundle owner to the pool's wallet
431
497
  function _collectStakingAmount(
432
498
  InstanceReader instanceReader,
@@ -439,15 +505,14 @@ contract PoolService is
439
505
 
440
506
  // collecting investor token
441
507
  IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
442
- TokenHandler tokenHandler = componentInfo.tokenHandler;
443
508
  address poolWallet = componentInfo.wallet;
444
-
445
- if(amount.gtz()) {
446
- tokenHandler.transfer(
447
- bundleOwner,
448
- poolWallet,
449
- amount);
450
- }
509
+ componentInfo.tokenHandler.collectTokens(
510
+ bundleOwner,
511
+ poolWallet,
512
+ amount);
451
513
  }
452
514
 
515
+ function _getDomain() internal pure override returns(ObjectType) {
516
+ return POOL();
517
+ }
453
518
  }
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PoolService} from "./PoolService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PoolServiceManager is ProxyManager {
12
9
 
@@ -1,51 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IApplicationService} from "./IApplicationService.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IPolicy} from "../instance/module/IPolicy.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {IPricingService} from "./IPricingService.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+
4
13
  import {AmountLib} from "../type/Amount.sol";
5
14
  import {Seconds} from "../type/Seconds.sol";
6
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
7
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
8
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
9
- import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, REGISTRY, APPLICATION, POLICY, BUNDLE, PRICE} from "../type/ObjectType.sol";
10
- import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
15
+ import {zeroTimestamp} from "../type/Timestamp.sol";
16
+ import {ObjectType, DISTRIBUTION, PRODUCT, REGISTRY, APPLICATION, POLICY, PRICE} from "../type/ObjectType.sol";
17
+ import {REVOKED} from "../type/StateId.sol";
11
18
  import {NftId, NftIdLib} from "../type/NftId.sol";
12
- import {Fee, FeeLib} from "../type/Fee.sol";
13
19
  import {ReferralId} from "../type/Referral.sol";
14
20
  import {RiskId} from "../type/RiskId.sol";
15
- import {StateId} from "../type/StateId.sol";
16
- import {Version, VersionLib} from "../type/Version.sol";
17
21
  import {Amount, AmountLib} from "../type/Amount.sol";
18
-
19
- import {TokenHandler} from "../shared/TokenHandler.sol";
20
- import {IVersionable} from "../shared/IVersionable.sol";
21
- import {Versionable} from "../shared/Versionable.sol";
22
- import {IService} from "../shared/IService.sol";
23
- import {Service} from "../shared/Service.sol";
24
-
25
- import {IRegistry} from "../registry/IRegistry.sol";
26
-
27
- import {IProductComponent} from "./IProductComponent.sol";
28
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
- import {Product} from "./Product.sol";
31
-
32
- import {IComponents} from "../instance/module/IComponents.sol";
33
- import {IPolicy} from "../instance/module/IPolicy.sol";
34
- import {IRisk} from "../instance/module/IRisk.sol";
35
- import {IBundle} from "../instance/module/IBundle.sol";
36
- import {IProductService} from "./IProductService.sol";
37
-
38
22
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
39
-
40
- import {IInstance} from "../instance/IInstance.sol";
41
23
  import {InstanceReader} from "../instance/InstanceReader.sol";
42
24
 
43
- import {IApplicationService} from "./IApplicationService.sol";
44
- import {IBundleService} from "../pool/IBundleService.sol";
45
- import {IDistributionService} from "../distribution/IDistributionService.sol";
46
- import {IPoolService} from "../pool/IPoolService.sol";
47
- import {IPricingService} from "./IPricingService.sol";
48
- import {IRegistryService} from "../registry/IRegistryService.sol";
49
25
 
50
26
 
51
27
  contract ApplicationService is
@@ -80,11 +56,6 @@ contract ApplicationService is
80
56
  }
81
57
 
82
58
 
83
- function getDomain() public pure override returns(ObjectType) {
84
- return APPLICATION();
85
- }
86
-
87
-
88
59
  function _checkLinkedpplicationParameters(
89
60
  InstanceReader instanceReader,
90
61
  NftId productNftId,
@@ -157,6 +128,7 @@ contract ApplicationService is
157
128
  address applicationOwner,
158
129
  RiskId riskId,
159
130
  Amount sumInsuredAmount,
131
+ Amount premiumAmount,
160
132
  Seconds lifetime,
161
133
  NftId bundleNftId,
162
134
  ReferralId referralId,
@@ -181,13 +153,45 @@ contract ApplicationService is
181
153
  applicationNftId = _registerApplication(productNftId, applicationOwner);
182
154
 
183
155
  // create policy info for application
184
- IPolicy.PolicyInfo memory applicationInfo = IPolicy.PolicyInfo({
156
+ IPolicy.PolicyInfo memory applicationInfo = _createApplicationInfo(
157
+ productNftId,
158
+ riskId,
159
+ sumInsuredAmount,
160
+ premiumAmount,
161
+ lifetime,
162
+ bundleNftId,
163
+ referralId,
164
+ applicationData);
165
+
166
+ // register application with instance
167
+ instance.getInstanceStore().createApplication(
168
+ applicationNftId,
169
+ applicationInfo);
170
+
171
+ // TODO: add logging
172
+ }
173
+
174
+ function _createApplicationInfo(
175
+ NftId productNftId,
176
+ RiskId riskId,
177
+ Amount sumInsuredAmount,
178
+ Amount premiumAmount,
179
+ Seconds lifetime,
180
+ NftId bundleNftId,
181
+ ReferralId referralId,
182
+ bytes memory applicationData
183
+ )
184
+ internal
185
+ virtual
186
+ returns (IPolicy.PolicyInfo memory applicationInfo)
187
+ {
188
+ return IPolicy.PolicyInfo({
185
189
  productNftId: productNftId,
186
190
  bundleNftId: bundleNftId,
187
191
  referralId: referralId,
188
192
  riskId: riskId,
189
193
  sumInsuredAmount: sumInsuredAmount,
190
- premiumAmount: AmountLib.zero(),
194
+ premiumAmount: premiumAmount,
191
195
  premiumPaidAmount: AmountLib.zero(),
192
196
  lifetime: lifetime,
193
197
  applicationData: applicationData,
@@ -200,21 +204,8 @@ contract ApplicationService is
200
204
  expiredAt: zeroTimestamp(),
201
205
  closedAt: zeroTimestamp()
202
206
  });
203
-
204
- // TODO consider to provide this amount externally
205
- // actual calculation is done 2nd time anyway for premium collection
206
- // calculate premium amount
207
- applicationInfo.premiumAmount = _calculatePremiumAmount(applicationInfo);
208
-
209
- // register application with instance
210
- instance.getInstanceStore().createApplication(
211
- applicationNftId,
212
- applicationInfo);
213
-
214
- // TODO: add logging
215
207
  }
216
208
 
217
-
218
209
  function renew(
219
210
  NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
220
211
  NftId bundleNftId // will likely need a newer bundle for underwriting
@@ -223,7 +214,7 @@ contract ApplicationService is
223
214
  virtual override
224
215
  returns (NftId applicationNftId)
225
216
  {
226
-
217
+ // TODO implement
227
218
  }
228
219
 
229
220
 
@@ -239,7 +230,7 @@ contract ApplicationService is
239
230
  external
240
231
  virtual override
241
232
  {
242
-
233
+ // TODO implement
243
234
  }
244
235
 
245
236
  function revoke(NftId applicationNftId)
@@ -251,4 +242,9 @@ contract ApplicationService is
251
242
  }
252
243
 
253
244
  // internal functions
245
+
246
+
247
+ function _getDomain() internal pure override returns(ObjectType) {
248
+ return APPLICATION();
249
+ }
254
250
  }
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ApplicationService} from "./ApplicationService.sol";
7
7
 
8
8
  contract ApplicationServiceManager is ProxyManager {
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {Product} from "../product/Product.sol";
8
+
9
+ abstract contract BasicProduct is
10
+ Product
11
+ {
12
+
13
+ function setFees(
14
+ Fee memory productFee,
15
+ Fee memory processingFee
16
+ )
17
+ external
18
+ virtual
19
+ onlyOwner()
20
+ restricted()
21
+ {
22
+ _setFees(productFee, processingFee);
23
+ }
24
+ function _initializeBasicProduct(
25
+ address registry,
26
+ NftId instanceNftId,
27
+ IAuthorization authorization,
28
+ address initialOwner,
29
+ string memory name,
30
+ address token,
31
+ bool isInterceptor,
32
+ address pool,
33
+ address distribution
34
+ )
35
+ internal
36
+ virtual
37
+ onlyInitializing()
38
+ {
39
+ _initializeProduct(
40
+ registry,
41
+ instanceNftId,
42
+ authorization,
43
+ initialOwner,
44
+ name,
45
+ token,
46
+ isInterceptor,
47
+ pool,
48
+ distribution,
49
+ "", //registryData,
50
+ ""); // componentData
51
+ }
52
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicProduct} from "./BasicProduct.sol";
6
+ import {PRODUCT} from "../type/ObjectType.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+
12
+
13
+ contract BasicProductAuthorization
14
+ is Authorization
15
+ {
16
+
17
+ constructor(string memory componentName)
18
+ Authorization(componentName)
19
+ {}
20
+
21
+ function _setupTargets()
22
+ internal
23
+ virtual override
24
+ {
25
+ // basic component target
26
+ _addComponentTargetWithRole(PRODUCT());
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
38
+ _authorize(functions, BasicProduct.setFees.selector, "setFees");
39
+
40
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
41
+ }
42
+ }
43
+