@etherisc/gif-next 0.0.2-98bc1be-984 → 0.0.2-998ff1b-277

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 (494) 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 +1234 -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/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +94 -270
  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/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  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 +1342 -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 -450
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +260 -233
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +152 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +28 -178
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1186 -271
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +57 -224
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -105
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +227 -238
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  69. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  71. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +407 -174
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  139. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  149. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +337 -380
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -185
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -107
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  185. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  186. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  233. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  287. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  295. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  300. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  307. package/contracts/{shared → authorization}/AccessAdmin.sol +158 -325
  308. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  309. package/contracts/authorization/Authorization.sol +217 -0
  310. package/contracts/authorization/IAccess.sol +48 -0
  311. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -55
  312. package/contracts/authorization/IAuthorization.sol +54 -0
  313. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  314. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  315. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  316. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  317. package/contracts/distribution/BasicDistribution.sol +138 -0
  318. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  319. package/contracts/distribution/Distribution.sol +145 -111
  320. package/contracts/distribution/DistributionService.sol +85 -46
  321. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  322. package/contracts/distribution/IDistributionComponent.sol +25 -39
  323. package/contracts/distribution/IDistributionService.sol +23 -3
  324. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  325. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  326. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  327. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  328. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  329. package/contracts/instance/IInstance.sol +14 -38
  330. package/contracts/instance/IInstanceService.sol +13 -18
  331. package/contracts/instance/Instance.sol +68 -102
  332. package/contracts/instance/InstanceAdmin.sol +221 -267
  333. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  334. package/contracts/instance/InstanceReader.sol +54 -16
  335. package/contracts/instance/InstanceService.sol +114 -87
  336. package/contracts/instance/InstanceServiceManager.sol +8 -13
  337. package/contracts/instance/InstanceStore.sol +23 -5
  338. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  339. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  340. package/contracts/instance/module/IBundle.sol +1 -1
  341. package/contracts/instance/module/IComponents.sol +1 -7
  342. package/contracts/instance/module/IDistribution.sol +0 -1
  343. package/contracts/instance/module/IPolicy.sol +22 -22
  344. package/contracts/mock/Dip.sol +1 -1
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +16 -0
  348. package/contracts/oracle/IOracleComponent.sol +2 -1
  349. package/contracts/oracle/Oracle.sol +73 -51
  350. package/contracts/oracle/OracleService.sol +9 -6
  351. package/contracts/oracle/OracleServiceManager.sol +8 -11
  352. package/contracts/pool/BasicPool.sol +166 -0
  353. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  354. package/contracts/pool/BundleService.sol +197 -55
  355. package/contracts/pool/BundleServiceManager.sol +8 -11
  356. package/contracts/pool/IBundleService.sol +33 -5
  357. package/contracts/pool/IPoolComponent.sol +6 -60
  358. package/contracts/pool/IPoolService.sol +36 -26
  359. package/contracts/pool/Pool.sol +165 -138
  360. package/contracts/pool/PoolService.sol +167 -111
  361. package/contracts/pool/PoolServiceManager.sol +6 -9
  362. package/contracts/product/ApplicationService.sol +55 -62
  363. package/contracts/product/ApplicationServiceManager.sol +6 -6
  364. package/contracts/product/BasicProduct.sol +53 -0
  365. package/contracts/product/BasicProductAuthorization.sol +43 -0
  366. package/contracts/product/ClaimService.sol +212 -108
  367. package/contracts/product/ClaimServiceManager.sol +6 -6
  368. package/contracts/product/IApplicationService.sol +1 -0
  369. package/contracts/product/IClaimService.sol +28 -5
  370. package/contracts/product/IPolicyService.sol +31 -32
  371. package/contracts/product/IPricingService.sol +7 -7
  372. package/contracts/product/IProductComponent.sol +7 -10
  373. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  374. package/contracts/product/PolicyService.sol +361 -190
  375. package/contracts/product/PolicyServiceManager.sol +6 -9
  376. package/contracts/product/PricingService.sol +46 -46
  377. package/contracts/product/PricingServiceManager.sol +5 -8
  378. package/contracts/product/Product.sol +162 -114
  379. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  380. package/contracts/product/RiskServiceManager.sol +39 -0
  381. package/contracts/registry/ChainNft.sol +65 -32
  382. package/contracts/registry/IRegistry.sol +63 -19
  383. package/contracts/registry/IRegistryService.sol +6 -6
  384. package/contracts/registry/Registry.sol +333 -213
  385. package/contracts/registry/RegistryAdmin.sol +260 -129
  386. package/contracts/registry/RegistryService.sol +6 -20
  387. package/contracts/registry/RegistryServiceManager.sol +4 -4
  388. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  389. package/contracts/registry/ReleaseRegistry.sol +491 -0
  390. package/contracts/registry/ServiceAuthorizationV3.sol +16 -17
  391. package/contracts/registry/TokenRegistry.sol +2 -2
  392. package/contracts/shared/Component.sol +30 -43
  393. package/contracts/shared/ComponentService.sol +103 -79
  394. package/contracts/shared/ComponentServiceManager.sol +10 -7
  395. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  396. package/contracts/shared/ContractLib.sol +38 -0
  397. package/contracts/shared/IComponent.sol +4 -4
  398. package/contracts/shared/IComponentService.sol +15 -9
  399. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  400. package/contracts/shared/IKeyValueStore.sol +1 -0
  401. package/contracts/shared/ILifecycle.sol +1 -2
  402. package/contracts/shared/IPolicyHolder.sol +12 -22
  403. package/contracts/shared/IService.sol +1 -1
  404. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  405. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  406. package/contracts/shared/KeyValueStore.sol +6 -2
  407. package/contracts/shared/Lifecycle.sol +16 -69
  408. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  409. package/contracts/shared/NftOwnable.sol +7 -7
  410. package/contracts/shared/PolicyHolder.sol +14 -58
  411. package/contracts/shared/Registerable.sol +4 -4
  412. package/contracts/shared/RegistryLinked.sol +3 -2
  413. package/contracts/shared/Service.sol +19 -15
  414. package/contracts/shared/TokenHandler.sol +100 -19
  415. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  416. package/contracts/staking/IStaking.sol +3 -3
  417. package/contracts/staking/IStakingService.sol +12 -5
  418. package/contracts/staking/StakeManagerLib.sol +18 -25
  419. package/contracts/staking/Staking.sol +27 -42
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +10 -12
  422. package/contracts/staking/StakingReader.sol +12 -16
  423. package/contracts/staking/StakingService.sol +10 -14
  424. package/contracts/staking/StakingServiceManager.sol +4 -4
  425. package/contracts/staking/StakingStore.sol +15 -23
  426. package/contracts/staking/TargetManagerLib.sol +7 -3
  427. package/contracts/type/Amount.sol +12 -5
  428. package/contracts/type/Blocknumber.sol +7 -1
  429. package/contracts/type/ObjectType.sol +52 -18
  430. package/contracts/type/Referral.sol +1 -0
  431. package/contracts/type/RoleId.sol +55 -82
  432. package/contracts/type/Seconds.sol +21 -1
  433. package/contracts/type/StateId.sol +1 -0
  434. package/contracts/type/Timestamp.sol +11 -1
  435. package/contracts/type/UFixed.sol +34 -9
  436. package/contracts/type/Version.sol +3 -1
  437. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  438. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  439. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  440. package/package.json +6 -3
  441. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  442. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  443. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  444. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  445. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  447. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  448. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  449. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  450. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  451. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  452. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  454. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  455. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  456. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  457. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  458. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  459. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  460. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  461. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  462. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  463. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  464. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  465. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  467. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  469. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  471. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  472. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  473. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  474. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  475. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  476. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  477. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  478. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  479. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  480. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  481. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  482. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  483. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  484. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  485. package/contracts/product/ProductServiceManager.sol +0 -42
  486. package/contracts/registry/ReleaseManager.sol +0 -527
  487. package/contracts/shared/AccessManagerCustom.sol +0 -741
  488. package/contracts/shared/AccessManagerExtended.sol +0 -481
  489. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  490. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  491. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  492. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  493. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  494. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -122,11 +122,10 @@ contract StakingService is
122
122
 
123
123
  // transfer withdrawal amount to target owner
124
124
  address instanceOwner = getRegistry().ownerOf(instanceNftId);
125
+ emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
125
126
  $._staking.transferDipAmount(
126
127
  instanceOwner,
127
128
  dipAmount);
128
-
129
- emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
130
129
  }
131
130
 
132
131
 
@@ -169,12 +168,12 @@ contract StakingService is
169
168
  targetNftId,
170
169
  dipAmount);
171
170
 
171
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
172
+
172
173
  // collect staked dip by staking
173
174
  $._staking.collectDipAmount(
174
175
  stakeOwner,
175
176
  dipAmount);
176
-
177
- emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
178
177
  }
179
178
 
180
179
 
@@ -197,12 +196,11 @@ contract StakingService is
197
196
 
198
197
  // collect staked dip by staking
199
198
  if (dipAmount.gtz()) {
199
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
200
200
  $._staking.collectDipAmount(
201
201
  stakeOwner,
202
202
  dipAmount);
203
203
  }
204
-
205
- emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
206
204
  }
207
205
 
208
206
 
@@ -247,11 +245,10 @@ contract StakingService is
247
245
  address stakeOwner = msg.sender;
248
246
 
249
247
  Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
248
+ emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
250
249
  $._staking.transferDipAmount(
251
250
  stakeOwner,
252
251
  rewardsClaimedAmount);
253
-
254
- emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
255
252
  }
256
253
 
257
254
 
@@ -270,11 +267,10 @@ contract StakingService is
270
267
  ) = $._staking.unstake(stakeNftId);
271
268
 
272
269
  Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
270
+ emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
273
271
  $._staking.transferDipAmount(
274
272
  stakeOwner,
275
273
  totalAmount);
276
-
277
- emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
278
274
  }
279
275
 
280
276
 
@@ -335,7 +331,7 @@ contract StakingService is
335
331
  address stakingAddress
336
332
  ) = abi.decode(data, (address, address, address));
337
333
 
338
- initializeService(registryAddress, authority, owner);
334
+ _initializeService(registryAddress, authority, owner);
339
335
 
340
336
  StakingServiceStorage storage $ = _getStakingServiceStorage();
341
337
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
@@ -343,7 +339,7 @@ contract StakingService is
343
339
  $._dip = $._staking.getToken();
344
340
  $._tokenHandler = $._staking.getTokenHandler();
345
341
 
346
- registerInterface(type(IStakingService).interfaceId);
342
+ _registerInterface(type(IStakingService).interfaceId);
347
343
  }
348
344
 
349
345
 
@@ -389,12 +385,12 @@ contract StakingService is
389
385
  StakingServiceStorage storage $ = _getStakingServiceStorage();
390
386
  newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
391
387
 
388
+ emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
389
+
392
390
  // collect reward dip from provider
393
391
  $._staking.collectDipAmount(
394
392
  rewardProvider,
395
393
  dipAmount);
396
-
397
- emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
398
394
  }
399
395
 
400
396
 
@@ -2,8 +2,8 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
7
  import {StakingService} from "./StakingService.sol";
8
8
 
9
9
  contract StakingServiceManager is
@@ -18,14 +18,14 @@ contract StakingServiceManager is
18
18
  address registryAddress,
19
19
  bytes32 salt
20
20
  )
21
- ProxyManager(registryAddress)
22
21
  {
23
22
  StakingService svc = new StakingService();
24
23
  bytes memory data = abi.encode(
25
24
  authority,
26
25
  registryAddress,
27
26
  IRegistry(registryAddress).getStakingAddress());
28
- IVersionable versionable = deployDetermenistic(
27
+ IVersionable versionable = initialize(
28
+ registryAddress,
29
29
  address(svc),
30
30
  data,
31
31
  salt);
@@ -3,36 +3,27 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
5
 
6
- import {Amount, AmountLib} from "../type/Amount.sol";
7
- import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
8
- import {ChainNft} from "../registry/ChainNft.sol";
9
- import {Component} from "../shared/Component.sol";
10
6
  import {IRegistry} from "../registry/IRegistry.sol";
11
- import {IRegistryService} from "../registry/IRegistryService.sol";
12
7
  import {IStaking} from "./IStaking.sol";
13
- import {IVersionable} from "../shared/IVersionable.sol";
14
- import {Key32} from "../type/Key32.sol";
8
+
9
+ import {Amount, AmountLib} from "../type/Amount.sol";
10
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
15
11
  import {KeyValueStore} from "../shared/KeyValueStore.sol";
16
12
  import {KEEP_STATE} from "../type/StateId.sol";
17
- import {LibNftIdSet} from "../type/NftIdSet.sol";
18
13
  import {NftId, NftIdLib} from "../type/NftId.sol";
19
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
20
- import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
21
- import {Seconds, SecondsLib} from "../type/Seconds.sol";
14
+ import {NftIdSet} from "../shared/NftIdSet.sol";
15
+ import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
22
16
  import {StakingReader} from "./StakingReader.sol";
23
17
  import {TargetManagerLib} from "./TargetManagerLib.sol";
24
18
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
25
- import {TokenRegistry} from "../registry/TokenRegistry.sol";
26
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
- import {Version, VersionLib} from "../type/Version.sol";
28
- import {Versionable} from "../shared/Versionable.sol";
29
-
30
- import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
19
+ import {StakingLifecycle} from "./StakingLifecycle.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
31
21
 
32
22
 
33
23
  contract StakingStore is
34
24
  AccessManaged,
35
- KeyValueStore
25
+ KeyValueStore,
26
+ StakingLifecycle
36
27
  {
37
28
 
38
29
  event LogStakingStoreReserveBalanceIncreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
@@ -61,7 +52,7 @@ contract StakingStore is
61
52
  error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
62
53
 
63
54
  IRegistry private _registry;
64
- NftIdSetManager private _targetManager;
55
+ NftIdSet private _targetNftIdSet;
65
56
  StakingReader private _reader;
66
57
 
67
58
  // staking rate
@@ -91,7 +82,7 @@ contract StakingStore is
91
82
  // set internal variables
92
83
  _registry = registry; //TODO if keeps registry -> RegistryLinked and checks registry address
93
84
  _reader = reader;
94
- _targetManager = new NftIdSetManager();
85
+ _targetNftIdSet = new NftIdSet();
95
86
 
96
87
  // register protocol target
97
88
  _createTarget(
@@ -426,8 +417,9 @@ contract StakingStore is
426
417
  return _reader;
427
418
  }
428
419
 
429
- function getTargetManager() external view returns (NftIdSetManager targetManager){
430
- return _targetManager;
420
+ // TODO rename
421
+ function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
422
+ return _targetNftIdSet;
431
423
  }
432
424
 
433
425
  function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
@@ -491,7 +483,7 @@ contract StakingStore is
491
483
  _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
492
484
  _createTargetBalance(targetNftId);
493
485
 
494
- _targetManager.add(targetNftId);
486
+ _targetNftIdSet.add(targetNftId);
495
487
  }
496
488
 
497
489
  function _updateReserves(
@@ -132,9 +132,9 @@ library TargetManagerLib {
132
132
  public
133
133
  pure
134
134
  {
135
- // check locking period is > 0
136
- if (lockingPeriod.eqz()) {
137
- revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
135
+ // check locking period is >= min locking period
136
+ if (lockingPeriod.lt(getMinimumLockingPeriod())) {
137
+ revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
138
138
  }
139
139
 
140
140
  // check locking period <= max locking period
@@ -190,6 +190,10 @@ library TargetManagerLib {
190
190
  return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
191
191
  }
192
192
 
193
+ /// @dev the minimum locking period is 24 hours
194
+ function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
195
+ return SecondsLib.toSeconds(24 * 3600);
196
+ }
193
197
 
194
198
  function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
195
199
  return UFixedLib.toUFixed(33, -2);
@@ -12,13 +12,15 @@ using {
12
12
  nqAmount as !=,
13
13
  ltAmount as <,
14
14
  gtAmount as >,
15
+ AmountLib.add,
15
16
  AmountLib.eq,
16
17
  AmountLib.eqz,
17
18
  AmountLib.gtz,
19
+ AmountLib.gt,
20
+ AmountLib.gte,
21
+ AmountLib.multiplyWith,
18
22
  AmountLib.toInt,
19
- AmountLib.add,
20
- AmountLib.toUFixed,
21
- AmountLib.multiplyWith
23
+ AmountLib.toUFixed
22
24
  } for Amount global;
23
25
 
24
26
  function addAmount(Amount a, Amount b) pure returns (Amount) {
@@ -77,16 +79,21 @@ library AmountLib {
77
79
  return Amount.unwrap(amount1) == Amount.unwrap(amount2);
78
80
  }
79
81
 
80
- /// @dev return true if amount a1 is smaller than a2
82
+ /// @dev return true if amount a1 is less than a2
81
83
  function lt(Amount a1, Amount a2) public pure returns (bool) {
82
84
  return Amount.unwrap(a1) < Amount.unwrap(a2);
83
85
  }
84
86
 
85
- /// @dev return true if amount a1 is larger than a2
87
+ /// @dev return true if amount a1 is greater than a2
86
88
  function gt(Amount a1, Amount a2) public pure returns (bool) {
87
89
  return Amount.unwrap(a1) > Amount.unwrap(a2);
88
90
  }
89
91
 
92
+ /// @dev return true if amount a1 is greater or equal than a2
93
+ function gte(Amount a1, Amount a2) public pure returns (bool) {
94
+ return Amount.unwrap(a1) >= Amount.unwrap(a2);
95
+ }
96
+
90
97
  /// @dev return minimum of a1 and a2.
91
98
  function min(Amount a1, Amount a2) public pure returns (Amount) {
92
99
  if (Amount.unwrap(a1) < Amount.unwrap(a2)) {
@@ -11,8 +11,14 @@ using {
11
11
  eqBlocknumber as ==,
12
12
  neBlocknumber as !=,
13
13
  BlocknumberLib.toInt,
14
+ BlocknumberLib.eq,
15
+ BlocknumberLib.ne,
14
16
  BlocknumberLib.eqz,
15
- BlocknumberLib.gtz
17
+ BlocknumberLib.gtz,
18
+ BlocknumberLib.gt,
19
+ BlocknumberLib.gte,
20
+ BlocknumberLib.lt,
21
+ BlocknumberLib.lte
16
22
  } for Blocknumber global;
17
23
 
18
24
  /// @dev return true if Blocknumber a is greater than Blocknumber b
@@ -27,20 +27,16 @@ function STAKING() pure returns (ObjectType) {
27
27
  return ObjectType.wrap(3);
28
28
  }
29
29
 
30
- function TOKEN() pure returns (ObjectType) {
31
- return ObjectType.wrap(6);
32
- }
33
-
34
30
  function RELEASE() pure returns (ObjectType) {
35
- return ObjectType.wrap(7);
31
+ return ObjectType.wrap(6);
36
32
  }
37
33
 
38
34
  function ROLE() pure returns (ObjectType) {
39
- return ObjectType.wrap(8);
35
+ return ObjectType.wrap(7);
40
36
  }
41
37
 
42
38
  function SERVICE() pure returns (ObjectType) {
43
- return ObjectType.wrap(9);
39
+ return ObjectType.wrap(8);
44
40
  }
45
41
 
46
42
  function INSTANCE() pure returns (ObjectType) {
@@ -75,48 +71,52 @@ function POLICY() pure returns (ObjectType) {
75
71
  return ObjectType.wrap(21);
76
72
  }
77
73
 
78
- function CLAIM() pure returns (ObjectType) {
74
+ function PREMIUM() pure returns (ObjectType) {
79
75
  return ObjectType.wrap(22);
80
76
  }
81
77
 
78
+ function CLAIM() pure returns (ObjectType) {
79
+ return ObjectType.wrap(23);
80
+ }
81
+
82
82
  function PAYOUT() pure returns (ObjectType) {
83
- return ObjectType.wrap(23);
83
+ return ObjectType.wrap(24);
84
84
  }
85
85
 
86
86
  function RISK() pure returns (ObjectType) {
87
- return ObjectType.wrap(24);
87
+ return ObjectType.wrap(25);
88
88
  }
89
89
 
90
90
  function PRICE() pure returns (ObjectType) {
91
- return ObjectType.wrap(25);
91
+ return ObjectType.wrap(26);
92
92
  }
93
93
 
94
94
  function REQUEST() pure returns (ObjectType) {
95
- return ObjectType.wrap(26);
95
+ return ObjectType.wrap(27);
96
96
  }
97
97
 
98
98
  function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
99
- return ObjectType.wrap(27);
99
+ return ObjectType.wrap(28);
100
100
  }
101
101
 
102
102
  function DISTRIBUTOR() pure returns (ObjectType) {
103
- return ObjectType.wrap(28);
103
+ return ObjectType.wrap(29);
104
104
  }
105
105
 
106
106
  function REFERRAL() pure returns (ObjectType) {
107
- return ObjectType.wrap(29);
107
+ return ObjectType.wrap(30);
108
108
  }
109
109
 
110
110
  function BUNDLE() pure returns (ObjectType) {
111
- return ObjectType.wrap(30);
111
+ return ObjectType.wrap(31);
112
112
  }
113
113
 
114
114
  function TARGET() pure returns (ObjectType) {
115
- return ObjectType.wrap(31);
115
+ return ObjectType.wrap(32);
116
116
  }
117
117
 
118
118
  function STAKE() pure returns (ObjectType) {
119
- return ObjectType.wrap(32);
119
+ return ObjectType.wrap(33);
120
120
  }
121
121
 
122
122
  /// @dev Object type that includes any other object type.
@@ -137,6 +137,8 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) {
137
137
  // library functions that operate on user defined type
138
138
  library ObjectTypeLib {
139
139
 
140
+ error ErrorVersionTooBig(uint256 version);
141
+
140
142
  function zero() public pure returns (ObjectType) {
141
143
  return ObjectType.wrap(0);
142
144
  }
@@ -209,6 +211,38 @@ library ObjectTypeLib {
209
211
  toInt(objectType))));
210
212
  }
211
213
 
214
+ function toVersionedName(
215
+ string memory name,
216
+ string memory suffix,
217
+ uint256 version
218
+ )
219
+ external
220
+ pure
221
+ returns (string memory versionedName)
222
+ {
223
+ if (version > maxNumReleases()) {
224
+ revert ErrorVersionTooBig(version);
225
+ }
226
+
227
+ string memory versionName = "_v0";
228
+
229
+ if (version >= 10) {
230
+ versionName = "_v";
231
+ }
232
+
233
+ versionedName = string(
234
+ abi.encodePacked(
235
+ name,
236
+ suffix,
237
+ versionName,
238
+ toString(version)));
239
+ }
240
+
241
+ /// @dev returns the max number of releases (major versions) this gif setup can handle.
242
+ function maxNumReleases() public pure returns (uint8) {
243
+ return 99;
244
+ }
245
+
212
246
  /// @dev returns the provied int as a string
213
247
  function toString(uint256 value) public pure returns (string memory name) {
214
248
 
@@ -12,6 +12,7 @@ type ReferralStatus is uint8;
12
12
  using {
13
13
  eqReferralId as ==,
14
14
  neReferralId as !=,
15
+ ReferralLib.eqz,
15
16
  ReferralLib.toKey32
16
17
  } for ReferralId global;
17
18
 
@@ -19,6 +19,16 @@ using {
19
19
 
20
20
  // general pure free functions
21
21
 
22
+ // @dev Returns true iff role ids a and b are identical
23
+ function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
24
+ return RoleId.unwrap(a) == RoleId.unwrap(b);
25
+ }
26
+
27
+ // @dev Returns true iff role ids a and b are different
28
+ function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
29
+ return RoleId.unwrap(a) != RoleId.unwrap(b);
30
+ }
31
+
22
32
  //--- OpenZeppelin provided roles -------------------------------------------//
23
33
 
24
34
  /// @dev Role ID needs to match with oz AccessManager.ADMIN_ROLE
@@ -27,30 +37,22 @@ function ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uin
27
37
  /// @dev Role ID needs to match with oz AccessManager.PUBLIC_ROLE
28
38
  function PUBLIC_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(type(uint64).max); }
29
39
 
30
- /// @dev Default access admin (registry admin, instance admin) role with rights to manage roles
31
- function MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1); }
32
-
33
- //--- Core GIF roles (range: 1-99) ------------------------------------------//
40
+ //--- GIF roles (range: 1-99) ----------------------------------------------//
34
41
 
35
42
  /// @dev cental role for gif release management.
36
43
  /// this role is necessary to call ReleaseManager.createNextRelease/activateNextRelease
37
44
  /// the actual deployment of a release requires the GIF_MANAGER_ROLE.
38
45
  /// GIF_ADMIN_ROLE is the admin of the GIF_MANAGER_ROLE.
39
46
  /// only a single holder may hold this role at any time
40
- function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
47
+ function GIF_ADMIN_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1); }
41
48
 
42
49
  /// @dev role for token whith/blacklisting, deploying and registering the services for a new major release
43
50
  /// registering services for a new major release is only possible after a new initial release has been created by the GIF_ADMIN_ROLE
44
51
  /// token white/blacklisting is possible for any active release
45
- function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
52
+ function GIF_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2); }
46
53
 
47
54
  /// @dev role for registering remote staking targets and reporting remote total value locked amounts.
48
- function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(4); }
49
-
50
- /// @dev required role to own an instance.
51
- /// Role is granted by instance service when cloning a new instance.
52
- /// allows instance specific target, role and access management
53
- function INSTANCE_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(10); }
55
+ function GIF_REMOTE_MANAGER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(3); }
54
56
 
55
57
  /// @dev instance specific role to register/own a product component
56
58
  function PRODUCT_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(11); }
@@ -64,119 +66,90 @@ function DISTRIBUTION_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRo
64
66
  /// @dev instance specific role to register/own a pool component
65
67
  function POOL_OWNER_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(14); }
66
68
 
67
- //--- GIF contract roles (range: 200 - 9900) --------------------------------//
69
+ //--- GIF core contract roles (range: 200 - 9'900) --------------------------//
68
70
  // created and assigned during initial deployment for registry and staking
69
71
  // granting for instances and components in instance service
70
72
  // object type * 100 + 0, examples:
71
73
  // - registry contract role: 200
72
74
  // - staking contract role: 300
73
75
  // - instance contract role: 1000
74
- // - product contract role: 1200
75
76
 
76
- //--- GIF service roles (range 201 - 99xx) ----------------------------------//
77
+ //--- GIF service roles (range 201 - 9'9xx) ---------------------------------//
77
78
  // created and assigned by release manager contract
78
79
  // object type * 100 + 1/major version, examples:
79
- // - registry service role (any version): 201
80
+ // - registry service role (any version): 299
80
81
  // - registry service role (version 3): 203
81
- // - registry service role (any version): 301
82
+ // - registry service role (any version): 399
82
83
  // - staking service role: (version 3): 303
83
84
  // - application service role (version 3): 2003
84
85
 
85
- //--- Custom roles (range > 10000) ------------------------------------------//
86
-
87
- /// @dev role associated with the staking contract
88
- /// this role is the admin role for the INSTANCE_OWNER_ROLE
89
- function STAKING_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1313); }
90
-
91
- /// @dev role associated with an instance contract
92
- /// this role is the admin role for the INSTANCE_OWNER_ROLE
93
- function INSTANCE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2600); }
94
-
95
- function REGISTRY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1800); }
96
-
97
- /// @dev instance specific role for instance service
98
- function INSTANCE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2000); }
99
-
100
- /// @dev role for creating gif target on instance service
101
- function CAN_CREATE_GIF_TARGET__ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(1700); }
102
-
103
- /// @dev role for registering gif components
104
- function COMPONENT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2001); }
105
-
106
- /// @dev instance specific role for distribution service
107
- function DISTRIBUTION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2100); }
108
-
109
- /// @dev instance specific role for oracle service
110
- function ORACLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2150); }
111
-
112
- /// @dev instance specific role for pool service
113
- function POOL_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2200); }
114
-
115
- /// @dev instance specific role for product service
116
- function PRODUCT_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2300); }
86
+ //--- GIF component contract roles (range 12'001 - 19'099) ------------------//
87
+ // assigned at component registration time
88
+ // object type * 1000 + instane specific component counter
89
+ // on any instance a maximum number of 999 components may be deployed
90
+ // examples:
91
+ // - 1st pool on instance: 15001
92
+ // - 1st distribution on instance: 14002
93
+ // - 1st product on instance: 12003
94
+ // - 2nd pool on instance: 15004
95
+ // - 2nd distribution on instance: 14005
96
+ // - 2nd product on instance: 12006
117
97
 
118
- /// @dev instance specific role for application service
119
- function APPLICATION_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2400); }
120
98
 
121
- /// @dev instance specific role for policy service
122
- function POLICY_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2410); }
99
+ //--- Custom roles (range >= 1'000'000) -------------------------------------//
123
100
 
124
- /// @dev instance specific role for claim service
125
- function CLAIM_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2420); }
101
+ function CUSTOM_ROLE_MIN() pure returns (RoleId) { return RoleIdLib.toRoleId(1000000); }
126
102
 
127
- /// @dev instance specific role for bundle service
128
- function BUNDLE_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2500); }
129
-
130
- /// @dev instance specific role for pricing service
131
- function PRICING_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2800); }
103
+ library RoleIdLib {
132
104
 
133
- /// @dev instance specific role for staking service
134
- function STAKING_SERVICE_ROLE() pure returns (RoleId) { return RoleIdLib.toRoleId(2900); }
105
+ uint64 public constant ALL_VERSIONS = 99;
106
+ uint64 public constant SERVICE_DOMAIN_ROLE_FACTOR = 100;
107
+ uint64 public constant COMPONENT_ROLE_FACTOR = 100;
108
+ uint64 public constant CUSTOM_ROLE_MIN = 1000000;
135
109
 
136
- // @dev Returns true iff role ids a and b are identical
137
- function eqRoleId(RoleId a, RoleId b) pure returns (bool isSame) {
138
- return RoleId.unwrap(a) == RoleId.unwrap(b);
139
- }
140
-
141
- // @dev Returns true iff role ids a and b are different
142
- function neRoleId(RoleId a, RoleId b) pure returns (bool isDifferent) {
143
- return RoleId.unwrap(a) != RoleId.unwrap(b);
144
- }
145
-
146
- library RoleIdLib {
147
- /// @dev Converts the RoleId to a uint.
110
+ /// @dev Converts the RoleId to a uint.
148
111
  function zero() public pure returns (RoleId) {
149
112
  return RoleId.wrap(0);
150
113
  }
151
114
 
152
- /// @dev Converts an uint into a RoleId.
153
- function toRoleId(uint256 a) public pure returns (RoleId) {
154
- return RoleId.wrap(uint64(a));
115
+ /// @dev Converts an uint into a role id.
116
+ function toRoleId(uint64 a) public pure returns (RoleId) {
117
+ return RoleId.wrap(a);
155
118
  }
156
119
 
157
- /// @dev Converts the RoleId to a uint.
120
+ /// @dev Converts an uint into a component role id.
121
+ function toComponentRoleId(ObjectType objectType, uint64 index) public pure returns (RoleId) {
122
+ return toRoleId(COMPONENT_ROLE_FACTOR * uint64(objectType.toInt()) + index);
123
+ }
124
+
125
+ /// @dev Converts an uint into a custom role id.
126
+ function toCustomRoleId(uint64 index) public pure returns (RoleId) {
127
+ return toRoleId(CUSTOM_ROLE_MIN + index);
128
+ }
129
+
130
+ /// @dev Converts the role id to a uint.
158
131
  function toInt(RoleId a) public pure returns (uint64) {
159
132
  return uint64(RoleId.unwrap(a));
160
133
  }
161
134
 
162
- /// @dev Converts an uint into a RoleId.
135
+ /// @dev Converts an uint into a role id.
163
136
  /// Used for GIF core contracts.
164
137
  function roleForType(ObjectType objectType) public pure returns (RoleId) {
165
- return RoleId.wrap(100 * uint64(objectType.toInt()));
138
+ return RoleId.wrap(SERVICE_DOMAIN_ROLE_FACTOR * uint64(objectType.toInt()));
166
139
  }
167
140
 
168
141
  /// @dev Converts an uint into a RoleId.
169
142
  /// Used for GIF core contracts.
170
143
  function roleForTypeAndVersion(ObjectType objectType, VersionPart majorVersion) public pure returns (RoleId) {
171
144
  return RoleId.wrap(
172
- uint64(100 * objectType.toInt() + majorVersion.toInt()));
145
+ uint64(SERVICE_DOMAIN_ROLE_FACTOR * objectType.toInt() + majorVersion.toInt()));
173
146
  }
174
147
 
175
148
  /// @dev Converts an uint into a RoleId.
176
149
  /// Used for GIF core contracts.
177
150
  function roleForTypeAndAllVersions(ObjectType objectType) public pure returns (RoleId) {
178
151
  return RoleId.wrap(
179
- uint64(100 * objectType.toInt() + 99));
152
+ uint64(SERVICE_DOMAIN_ROLE_FACTOR * objectType.toInt() + ALL_VERSIONS));
180
153
  }
181
154
 
182
155
  /// @dev Returns true if the value is non-zero (> 0).