@etherisc/gif-next 0.0.2-d5522f6-712 → 0.0.2-d5fac82-078

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 (536) hide show
  1. package/README.md +10 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1395 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +278 -1362
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +459 -2530
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +415 -380
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +362 -95
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -159
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -276
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -195
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1426 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +218 -191
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +182 -302
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +241 -230
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +254 -168
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1217 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +209 -17
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -230
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +235 -43
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +341 -254
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +351 -84
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +540 -83
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +148 -62
  123. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  125. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
  133. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  134. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  136. package/artifacts/contracts/shared/Component.sol/Component.json +892 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  138. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/ComponentService.sol/ComponentService.json} +294 -126
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
  145. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  146. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +173 -212
  147. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  149. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  150. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  151. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  153. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  155. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
  157. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  159. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -47
  161. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  162. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  163. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +342 -61
  165. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  166. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -53
  167. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  168. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  169. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  170. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  171. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  172. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  173. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  174. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  175. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  177. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  178. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +198 -207
  179. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  180. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  181. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  182. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  183. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  184. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  185. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  186. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  187. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  189. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  191. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  192. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  193. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  194. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  195. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  197. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  199. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  201. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  203. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  205. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  206. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  207. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  209. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  211. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  212. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  213. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  215. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  217. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  219. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  220. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  221. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  222. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  223. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  224. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  225. package/contracts/distribution/Distribution.sol +285 -0
  226. package/contracts/distribution/DistributionService.sol +351 -0
  227. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  228. package/contracts/distribution/IDistributionComponent.sol +71 -0
  229. package/contracts/distribution/IDistributionService.sol +87 -0
  230. package/contracts/instance/BundleManager.sol +22 -25
  231. package/contracts/instance/IInstance.sol +56 -41
  232. package/contracts/instance/IInstanceService.sol +50 -17
  233. package/contracts/instance/Instance.sol +151 -197
  234. package/contracts/instance/InstanceAdmin.sol +354 -0
  235. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  236. package/contracts/instance/InstanceReader.sol +102 -49
  237. package/contracts/instance/InstanceService.sol +200 -247
  238. package/contracts/instance/InstanceServiceManager.sol +12 -22
  239. package/contracts/instance/InstanceStore.sol +211 -0
  240. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  241. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +44 -47
  244. package/contracts/instance/base/Lifecycle.sol +28 -7
  245. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  246. package/contracts/instance/module/IAccess.sol +17 -21
  247. package/contracts/instance/module/IBundle.sol +11 -8
  248. package/contracts/instance/module/IComponents.sol +41 -0
  249. package/contracts/instance/module/IDistribution.sol +7 -4
  250. package/contracts/instance/module/IPolicy.sol +50 -17
  251. package/contracts/instance/module/IRisk.sol +1 -1
  252. package/contracts/instance/module/ISetup.sol +9 -22
  253. package/contracts/instance/module/ITreasury.sol +2 -2
  254. package/contracts/pool/BundleService.sol +384 -0
  255. package/contracts/pool/BundleServiceManager.sol +42 -0
  256. package/contracts/pool/IBundleService.sol +118 -0
  257. package/contracts/pool/IPoolComponent.sol +114 -0
  258. package/contracts/pool/IPoolService.sol +114 -0
  259. package/contracts/pool/Pool.sol +302 -0
  260. package/contracts/pool/PoolService.sol +404 -0
  261. package/contracts/pool/PoolServiceManager.sol +42 -0
  262. package/contracts/product/ApplicationService.sol +187 -0
  263. package/contracts/product/ApplicationServiceManager.sol +38 -0
  264. package/contracts/product/ClaimService.sol +443 -0
  265. package/contracts/product/ClaimServiceManager.sol +38 -0
  266. package/contracts/product/IApplicationService.sol +62 -0
  267. package/contracts/product/IClaimService.sol +93 -0
  268. package/contracts/product/IPolicyService.sol +80 -0
  269. package/contracts/product/IPricingService.sol +37 -0
  270. package/contracts/product/IProductComponent.sol +41 -0
  271. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  272. package/contracts/product/PolicyService.sol +378 -0
  273. package/contracts/product/PolicyServiceManager.sol +42 -0
  274. package/contracts/product/PricingService.sol +276 -0
  275. package/contracts/product/PricingServiceManager.sol +42 -0
  276. package/contracts/product/Product.sol +379 -0
  277. package/contracts/product/ProductService.sol +212 -0
  278. package/contracts/product/ProductServiceManager.sol +42 -0
  279. package/contracts/registry/ChainNft.sol +8 -0
  280. package/contracts/registry/IRegistry.sol +42 -21
  281. package/contracts/registry/IRegistryService.sol +42 -41
  282. package/contracts/registry/ITransferInterceptor.sol +1 -0
  283. package/contracts/registry/Registry.sol +165 -96
  284. package/contracts/registry/RegistryAdmin.sol +143 -0
  285. package/contracts/registry/RegistryService.sol +84 -171
  286. package/contracts/registry/RegistryServiceManager.sol +22 -24
  287. package/contracts/registry/ReleaseManager.sol +317 -202
  288. package/contracts/registry/TokenRegistry.sol +23 -15
  289. package/contracts/shared/AccessManagerCustom.sol +736 -0
  290. package/contracts/shared/AccessManagerExtended.sol +469 -0
  291. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  292. package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
  293. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  294. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  295. package/contracts/shared/Component.sol +271 -0
  296. package/contracts/shared/ComponentService.sol +141 -0
  297. package/contracts/shared/ERC165.sol +14 -12
  298. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  299. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
  300. package/contracts/shared/IComponent.sol +90 -0
  301. package/contracts/shared/INftOwnable.sol +12 -11
  302. package/contracts/shared/IPolicyHolder.sol +40 -0
  303. package/contracts/shared/IRegisterable.sol +4 -6
  304. package/contracts/shared/IRegistryLinked.sol +11 -0
  305. package/contracts/shared/IService.sol +6 -4
  306. package/contracts/shared/IVersionable.sol +5 -48
  307. package/contracts/shared/NftOwnable.sol +68 -85
  308. package/contracts/shared/PolicyHolder.sol +94 -0
  309. package/contracts/shared/ProxyManager.sol +131 -25
  310. package/contracts/shared/Registerable.sol +26 -41
  311. package/contracts/shared/RegistryLinked.sol +43 -0
  312. package/contracts/shared/Service.sol +37 -23
  313. package/contracts/shared/TokenHandler.sol +14 -6
  314. package/contracts/shared/Versionable.sol +4 -92
  315. package/contracts/staking/IStakingService.sol +102 -0
  316. package/contracts/staking/StakingService.sol +169 -0
  317. package/contracts/staking/StakingServiceManager.sol +40 -0
  318. package/contracts/type/Amount.sol +109 -0
  319. package/contracts/{types → type}/Blocknumber.sol +1 -0
  320. package/contracts/type/ClaimId.sol +75 -0
  321. package/contracts/{types → type}/DistributorType.sol +2 -2
  322. package/contracts/{types → type}/Fee.sol +17 -8
  323. package/contracts/{types → type}/NftId.sol +8 -0
  324. package/contracts/{types → type}/NftIdSet.sol +1 -1
  325. package/contracts/{types → type}/ObjectType.sol +17 -7
  326. package/contracts/type/PayoutId.sol +82 -0
  327. package/contracts/{types → type}/Referral.sol +4 -0
  328. package/contracts/type/RoleId.sol +139 -0
  329. package/contracts/type/Seconds.sol +54 -0
  330. package/contracts/{types → type}/StateId.sol +7 -2
  331. package/contracts/{types → type}/Timestamp.sol +18 -13
  332. package/contracts/{types → type}/UFixed.sol +1 -0
  333. package/contracts/{types → type}/Version.sol +1 -0
  334. package/package.json +3 -3
  335. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  336. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  337. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -397
  339. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  340. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  341. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  342. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  343. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  344. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  345. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  346. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  349. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  351. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  387. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  388. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  389. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  390. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  391. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  392. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  393. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  394. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  395. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  396. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  397. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  398. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  399. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  400. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  402. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  403. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  404. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  405. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  406. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  407. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  408. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  410. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  411. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  414. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  419. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  420. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  421. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  422. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  423. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  424. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  425. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  426. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  427. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  428. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  429. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  430. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  431. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  432. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  433. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  434. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  435. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  437. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  438. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  439. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  440. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  441. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  442. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  443. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  444. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  445. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  446. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  447. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  448. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  449. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  450. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  451. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  452. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  455. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  456. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  458. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  459. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  461. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  462. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  463. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  464. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  465. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  466. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  467. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  468. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  469. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  470. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  471. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  472. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  474. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  475. package/contracts/components/BaseComponent.sol +0 -159
  476. package/contracts/components/Distribution.sol +0 -164
  477. package/contracts/components/IBaseComponent.sol +0 -34
  478. package/contracts/components/IDistributionComponent.sol +0 -44
  479. package/contracts/components/IPoolComponent.sol +0 -66
  480. package/contracts/components/IProductComponent.sol +0 -35
  481. package/contracts/components/Pool.sol +0 -272
  482. package/contracts/components/Product.sol +0 -301
  483. package/contracts/experiment/cloning/Cloner.sol +0 -47
  484. package/contracts/experiment/errors/Require.sol +0 -38
  485. package/contracts/experiment/errors/Revert.sol +0 -44
  486. package/contracts/experiment/inheritance/A.sol +0 -53
  487. package/contracts/experiment/inheritance/B.sol +0 -28
  488. package/contracts/experiment/inheritance/C.sol +0 -34
  489. package/contracts/experiment/inheritance/IA.sol +0 -13
  490. package/contracts/experiment/inheritance/IB.sol +0 -10
  491. package/contracts/experiment/inheritance/IC.sol +0 -12
  492. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  493. package/contracts/experiment/statemachine/ISM.sol +0 -25
  494. package/contracts/experiment/statemachine/SM.sol +0 -57
  495. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  496. package/contracts/experiment/types/TypeA.sol +0 -47
  497. package/contracts/experiment/types/TypeB.sol +0 -29
  498. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  499. package/contracts/instance/IInstanceBase.sol +0 -26
  500. package/contracts/instance/InstanceAccessManager.sol +0 -303
  501. package/contracts/instance/InstanceBase.sol +0 -41
  502. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  503. package/contracts/instance/base/IInstanceBase.sol +0 -23
  504. package/contracts/instance/service/BundleService.sol +0 -294
  505. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  506. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  507. package/contracts/instance/service/DistributionService.sol +0 -120
  508. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  509. package/contracts/instance/service/IBundleService.sol +0 -44
  510. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  511. package/contracts/instance/service/IDistributionService.sol +0 -12
  512. package/contracts/instance/service/IPolicyService.sol +0 -94
  513. package/contracts/instance/service/IPoolService.sol +0 -20
  514. package/contracts/instance/service/PolicyService.sol +0 -539
  515. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  516. package/contracts/instance/service/PoolService.sol +0 -145
  517. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  518. package/contracts/instance/service/ProductService.sol +0 -213
  519. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  520. package/contracts/registry/RegistryAccessManager.sol +0 -210
  521. package/contracts/shared/ContractDeployerLib.sol +0 -72
  522. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  523. package/contracts/test/TestFee.sol +0 -25
  524. package/contracts/test/TestRegisterable.sol +0 -18
  525. package/contracts/test/TestRoleId.sol +0 -14
  526. package/contracts/test/TestService.sol +0 -25
  527. package/contracts/test/TestToken.sol +0 -26
  528. package/contracts/test/TestVersion.sol +0 -44
  529. package/contracts/test/TestVersionable.sol +0 -17
  530. package/contracts/test/Usdc.sol +0 -26
  531. package/contracts/types/ChainId.sol +0 -38
  532. package/contracts/types/NumberId.sol +0 -52
  533. package/contracts/types/RoleId.sol +0 -90
  534. /package/contracts/{types → type}/AddressSet.sol +0 -0
  535. /package/contracts/{types → type}/Key32.sol +0 -0
  536. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,354 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
6
+
7
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
8
+ import {TimestampLib} from "../type/Timestamp.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+
11
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
12
+
13
+ import {IRegistry} from "../registry/IRegistry.sol";
14
+
15
+ import {IInstance} from "./IInstance.sol";
16
+ import {IAccess} from "./module/IAccess.sol";
17
+
18
+ contract InstanceAdmin is
19
+ AccessManagedUpgradeable
20
+ {
21
+ using RoleIdLib for RoleId;
22
+
23
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
24
+ string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
25
+
26
+ string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
27
+
28
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
29
+ uint32 public constant EXECUTION_DELAY = 0;
30
+
31
+ mapping(address target => IAccess.Type) _targetType;
32
+ mapping(RoleId roleId => IAccess.Type) _roleType;
33
+ uint64 _idNext;
34
+
35
+ AccessManagerExtendedInitializeable internal _accessManager;
36
+ IInstance _instance;
37
+ IRegistry internal _registry;
38
+
39
+ // instance owner role is granted upon instance nft minting in callback function
40
+ // assume this contract is already a member of ADMIN_ROLE, the only member
41
+ function initialize(address instanceAddress) external initializer
42
+ {
43
+ IInstance instance = IInstance(instanceAddress);
44
+ IRegistry registry = instance.getRegistry();
45
+ address authority = instance.authority();
46
+
47
+ __AccessManaged_init(authority);
48
+
49
+ _accessManager = AccessManagerExtendedInitializeable(authority);
50
+ _instance = instance;
51
+ _registry = registry;
52
+ _idNext = CUSTOM_ROLE_ID_MIN;
53
+
54
+ // minimum configuration required for nft interception
55
+ _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
56
+ _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
57
+ _grantRole(INSTANCE_ROLE(), address(instance));
58
+
59
+ _createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
60
+ bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
61
+ instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
62
+ _setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
63
+ }
64
+
65
+ //--- Role ------------------------------------------------------//
66
+ // ADMIN_ROLE
67
+ // assume all core roles are known at deployment time
68
+ // assume core roles are set and granted only during instance cloning
69
+ // assume core roles are never revoked -> core roles admin is never active after intialization
70
+ function createCoreRole(RoleId roleId, string memory name)
71
+ external
72
+ restricted()
73
+ {
74
+ _createRole(roleId, name, IAccess.Type.Core);
75
+ }
76
+
77
+ // ADMIN_ROLE
78
+ // assume gif roles can be revoked
79
+ // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
80
+ function createGifRole(RoleId roleId, string memory name, RoleId admin)
81
+ external
82
+ restricted()
83
+ {
84
+ _createRole(roleId, name, IAccess.Type.Gif);
85
+ _setRoleAdmin(roleId, admin);
86
+ }
87
+
88
+ // INSTANCE_OWNER_ROLE
89
+ // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
90
+ function createRole(string memory roleName, string memory adminName)
91
+ external
92
+ restricted()
93
+ returns(RoleId roleId, RoleId admin)
94
+ {
95
+ (roleId, admin) = _getNextCustomRoleId();
96
+
97
+ _createRole(roleId, roleName, IAccess.Type.Custom);
98
+ _createRole(admin, adminName, IAccess.Type.Custom);
99
+
100
+ _setRoleAdmin(roleId, admin);
101
+ _setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
102
+ }
103
+
104
+ // ADMIN_ROLE
105
+ // assume used by instance service only during instance cloning
106
+ // assume used only by this.createRole(), this.createGifRole() afterwards
107
+ function setRoleAdmin(RoleId roleId, RoleId admin)
108
+ public
109
+ restricted()
110
+ {
111
+ _setRoleAdmin(roleId, admin);
112
+ }
113
+
114
+ // INSTANCE_ROLE
115
+ function transferInstanceOwnerRole(address from, address to) external restricted() {
116
+ // temp pre transfer checks
117
+ assert(_accessManager.getRoleMembers(INSTANCE_ROLE().toInt()) == 1);
118
+ (bool hasRole, uint executionDelay) = _accessManager.hasRole(INSTANCE_ROLE().toInt(), address(_instance));
119
+ assert(hasRole);
120
+ assert(executionDelay == 0);
121
+ assert(_accessManager.getRoleAdmin(INSTANCE_OWNER_ROLE().toInt()) == ADMIN_ROLE().toInt());
122
+ if(from != address(0)) { // nft transfer
123
+ assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 1);
124
+ } else { // nft minting
125
+ assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 0);
126
+ }
127
+
128
+ // transfer
129
+ assert(from != to);
130
+ _grantRole(INSTANCE_OWNER_ROLE(), to);
131
+ if(from != address(0)) { // nft transfer
132
+ _revokeRole(INSTANCE_OWNER_ROLE(), from);
133
+ }
134
+
135
+ // temp post transfer checks
136
+ assert(_accessManager.getRoleMembers(INSTANCE_OWNER_ROLE().toInt()) == 1);// temp
137
+ (hasRole, executionDelay) = _accessManager.hasRole(INSTANCE_OWNER_ROLE().toInt(), to);
138
+ assert(hasRole);
139
+ assert(executionDelay == 0);
140
+ }
141
+
142
+ function hasRole(RoleId roleId, address account)
143
+ external
144
+ view
145
+ returns (bool accountHasRole)
146
+ {
147
+ (accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
148
+ }
149
+
150
+ //--- Target ------------------------------------------------------//
151
+ // ADMIN_ROLE
152
+ // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
153
+ function createCoreTarget(address target, string memory name) external restricted() {
154
+ _createTarget(target, name, IAccess.Type.Core);
155
+ }
156
+ // INSTANCE_SERVICE_ROLE
157
+ // TODO check for instance mismatch?
158
+ function createGifTarget(address target, string memory name) external restricted()
159
+ {
160
+ if(!_registry.isRegistered(target)) {
161
+ revert IAccess.ErrorIAccessTargetNotRegistered(target);
162
+ }
163
+
164
+ _createTarget(target, name, IAccess.Type.Gif);
165
+ }
166
+ // INSTANCE_OWNER_ROLE
167
+ // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
168
+ // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
169
+ // assume custom target can not be registered as instance or service -> why?
170
+ // TODO check target associated with instance owner or instance or instance components or components helpers
171
+ function createTarget(address target, string memory name) external restricted()
172
+ {
173
+ _createTarget(target, name, IAccess.Type.Custom);
174
+ }
175
+
176
+ // TODO instance owner locks component instead of revoking it access to the instance...
177
+ function setTargetLockedByService(address target, bool locked)
178
+ external
179
+ restricted // INSTANCE_SERVICE_ROLE
180
+ {
181
+ _setTargetLocked(target, locked);
182
+ }
183
+
184
+ function setTargetLockedByInstance(address target, bool locked)
185
+ external
186
+ restricted // INSTANCE_ROLE
187
+ {
188
+ _setTargetLocked(target, locked);
189
+ }
190
+
191
+
192
+ // allowed combinations of roles and targets:
193
+ //1) set core role for core target
194
+ //2) set gif role for gif target
195
+ //3) set custom role for gif target
196
+ //4) set custom role for custom target
197
+
198
+ // ADMIN_ROLE if used only during initialization, works with:
199
+ // any roles for any targets
200
+ // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
201
+ // core roles for core targets
202
+ // gif roles for gif targets
203
+ function setCoreTargetFunctionRole(
204
+ string memory targetName,
205
+ bytes4[] calldata selectors,
206
+ RoleId roleId
207
+ )
208
+ public
209
+ virtual
210
+ restricted
211
+ {
212
+ address target = _accessManager.getTargetAddress(targetName);
213
+ // not custom target
214
+ if(_targetType[target] == IAccess.Type.Custom) {
215
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
216
+ }
217
+
218
+ // not custom role
219
+ if(_roleType[roleId] == IAccess.Type.Custom) {
220
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
221
+ }
222
+
223
+ _setTargetFunctionRole(target, selectors, roleId);
224
+ }
225
+
226
+ // INSTANCE_OWNER_ROLE
227
+ // gif role for gif target
228
+ // gif role for custom target
229
+ // custom role for gif target -> need to prohibit
230
+ // custom role for custom target
231
+ // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
232
+ function setTargetFunctionRole(
233
+ string memory targetName,
234
+ bytes4[] calldata selectors,
235
+ RoleId roleId// string memory roleName
236
+ )
237
+ public
238
+ virtual
239
+ restricted()
240
+ {
241
+ address target = _accessManager.getTargetAddress(targetName);
242
+
243
+ // not core target
244
+ if(_targetType[target] == IAccess.Type.Core) {
245
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
246
+ }
247
+
248
+ // not core role
249
+ if(_roleType[roleId] == IAccess.Type.Core) {
250
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
251
+ }
252
+
253
+ _setTargetFunctionRole(target, selectors, roleId);
254
+ }
255
+
256
+ function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
257
+ _accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
258
+ }
259
+
260
+ function isTargetLocked(address target) public view returns (bool locked) {
261
+ return _accessManager.isTargetClosed(target);
262
+ }
263
+
264
+ //--- Role internal view/pure functions --------------------------------------//
265
+ function _createRole(RoleId roleId, string memory name, IAccess.Type rtype)
266
+ internal
267
+ {
268
+ _validateRole(roleId, rtype);
269
+
270
+ _roleType[roleId] = rtype;
271
+ _accessManager.createRole(roleId.toInt(), name);
272
+ //emit LogRoleCreation(roleId, name, rtype);
273
+ }
274
+
275
+ function _validateRole(RoleId roleId, IAccess.Type rtype)
276
+ internal
277
+ view
278
+ {
279
+ uint roleIdInt = roleId.toInt();
280
+ if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
281
+ revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
282
+ }
283
+
284
+ if(
285
+ rtype != IAccess.Type.Custom &&
286
+ roleIdInt >= CUSTOM_ROLE_ID_MIN &&
287
+ roleIdInt != PUBLIC_ROLE().toInt())
288
+ {
289
+ revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
290
+ }
291
+ }
292
+
293
+ function _grantRole(RoleId roleId, address account) internal {
294
+ _accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
295
+ }
296
+
297
+ function _revokeRole(RoleId roleId, address member)
298
+ internal
299
+ returns(bool revoked)
300
+ {
301
+ _accessManager.revokeRole(roleId.toInt(), member);
302
+ }
303
+
304
+ function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
305
+ if(_roleType[roleId] == IAccess.Type.Core) {
306
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
307
+ }
308
+
309
+ _accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
310
+ }
311
+
312
+ function _getNextCustomRoleId()
313
+ internal
314
+ returns(RoleId roleId, RoleId admin)
315
+ {
316
+ uint64 roleIdInt = _idNext;
317
+ uint64 adminInt = roleIdInt + 1;
318
+
319
+ _idNext = roleIdInt + 2;
320
+
321
+ roleId = RoleIdLib.toRoleId(roleIdInt);
322
+ admin = RoleIdLib.toRoleId(adminInt);
323
+ }
324
+
325
+ //--- Target internal view/pure functions --------------------------------------//
326
+ function _createTarget(address target, string memory name, IAccess.Type ttype)
327
+ internal
328
+ {
329
+ _validateTarget(target, ttype);
330
+ _targetType[target] = ttype;
331
+ _accessManager.createTarget(target, name);
332
+ //emit LogTargetCreation(target, name, ttype, isLocked);
333
+ }
334
+
335
+ function _validateTarget(address target, IAccess.Type ttype)
336
+ internal
337
+ view
338
+ {}
339
+
340
+ // IMPORTANT: instance access manager MUST be of Core type -> otherwise can be locked forever
341
+ function _setTargetLocked(address target, bool locked) internal
342
+ {
343
+ IAccess.Type targetType = _targetType[target];
344
+
345
+ if(
346
+ targetType == IAccess.Type.NotInitialized ||
347
+ targetType == IAccess.Type.Core
348
+ ) {
349
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
350
+ }
351
+
352
+ _accessManager.setTargetClosed(target, locked);
353
+ }
354
+ }
@@ -0,0 +1,320 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
5
+ import {INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../type/ObjectType.sol";
6
+ import {VersionPart} from "../type/Version.sol";
7
+
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+
10
+ import {Instance} from "./Instance.sol";
11
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
12
+ import {InstanceReader} from "./InstanceReader.sol";
13
+ import {BundleManager} from "./BundleManager.sol";
14
+ import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
15
+ import {InstanceStore} from "./InstanceStore.sol";
16
+
17
+
18
+ library InstanceAuthorizationsLib
19
+ {
20
+ function grantInitialAuthorizations(
21
+ AccessManagerExtendedInitializeable accessManager,
22
+ InstanceAdmin instanceAdmin,
23
+ Instance instance,
24
+ BundleManager bundleManager,
25
+ InstanceStore instanceStore,
26
+ address instanceOwner,
27
+ IRegistry registry,
28
+ VersionPart majorVersion)
29
+ external
30
+ {
31
+ _createRoles(instanceAdmin);
32
+ _createTargets(instanceAdmin, instance, bundleManager, instanceStore);
33
+ _grantDistributionServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
34
+ _grantPoolServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
35
+ _grantProductServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
36
+ _grantApplicationServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
37
+ _grantPolicyServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
38
+ _grantClaimServiceAuthorizations(accessManager, instanceAdmin, instanceStore, registry, majorVersion);
39
+ _grantBundleServiceAuthorizations(accessManager, instanceAdmin, instanceStore, bundleManager, registry, majorVersion);
40
+ _grantInstanceServiceAuthorizations(accessManager, instanceAdmin, instance, registry, majorVersion);
41
+ _grantInstanceAuthorizations(accessManager, instanceAdmin, instance, registry, majorVersion);
42
+ _grantInstanceOwnerAuthorizations(instanceAdmin, instance, registry, majorVersion);
43
+ }
44
+
45
+ function _createRoles(InstanceAdmin instanceAdmin) private {
46
+ // default roles controlled by ADMIN_ROLE -> core roles
47
+ // all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
48
+ instanceAdmin.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
49
+ instanceAdmin.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
50
+ instanceAdmin.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
51
+ instanceAdmin.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
52
+ instanceAdmin.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
53
+ instanceAdmin.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
54
+ instanceAdmin.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
55
+ instanceAdmin.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
56
+ // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
57
+ instanceAdmin.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
58
+ instanceAdmin.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
59
+ instanceAdmin.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
60
+ }
61
+
62
+ function _createTargets(
63
+ InstanceAdmin instanceAdmin,
64
+ Instance instance,
65
+ BundleManager bundleManager,
66
+ InstanceStore instanceStore)
67
+ private
68
+ {
69
+ instanceAdmin.createCoreTarget(address(instance), "Instance");
70
+ //instanceAdmin.createCoreTarget(address(instanceAdmin), "InstanceAdmin");
71
+ instanceAdmin.createCoreTarget(address(bundleManager), "BundleManager");
72
+ instanceAdmin.createCoreTarget(address(instanceStore), "InstanceStore");
73
+ }
74
+
75
+ function _grantDistributionServiceAuthorizations(
76
+ AccessManagerExtendedInitializeable accessManager,
77
+ InstanceAdmin instanceAdmin,
78
+ InstanceStore instanceStore,
79
+ IRegistry registry,
80
+ VersionPart majorVersion)
81
+ private
82
+ {
83
+ // configure authorization for distribution service on instance
84
+ address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), majorVersion);
85
+ accessManager.grantRole(DISTRIBUTION_SERVICE_ROLE().toInt(), distributionServiceAddress, 0);
86
+ bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
87
+ instanceDistributionServiceSelectors[0] = instanceStore.createDistributionSetup.selector;
88
+ instanceDistributionServiceSelectors[1] = instanceStore.updateDistributionSetup.selector;
89
+ instanceDistributionServiceSelectors[2] = instanceStore.createDistributorType.selector;
90
+ instanceDistributionServiceSelectors[3] = instanceStore.updateDistributorType.selector;
91
+ instanceDistributionServiceSelectors[4] = instanceStore.updateDistributorTypeState.selector;
92
+ instanceDistributionServiceSelectors[5] = instanceStore.createDistributor.selector;
93
+ instanceDistributionServiceSelectors[6] = instanceStore.updateDistributor.selector;
94
+ instanceDistributionServiceSelectors[7] = instanceStore.updateDistributorState.selector;
95
+ instanceDistributionServiceSelectors[8] = instanceStore.createReferral.selector;
96
+ instanceDistributionServiceSelectors[9] = instanceStore.updateReferral.selector;
97
+ instanceDistributionServiceSelectors[10] = instanceStore.updateReferralState.selector;
98
+ instanceAdmin.setCoreTargetFunctionRole(
99
+ "InstanceStore",
100
+ instanceDistributionServiceSelectors,
101
+ DISTRIBUTION_SERVICE_ROLE());
102
+ }
103
+
104
+ function _grantPoolServiceAuthorizations(
105
+ AccessManagerExtendedInitializeable accessManager,
106
+ InstanceAdmin instanceAdmin,
107
+ InstanceStore instanceStore,
108
+ IRegistry registry,
109
+ VersionPart majorVersion)
110
+ private
111
+ {
112
+ // configure authorization for pool service on instance
113
+ address poolServiceAddress = registry.getServiceAddress(POOL(), majorVersion);
114
+ accessManager.grantRole(POOL_SERVICE_ROLE().toInt(), address(poolServiceAddress), 0);
115
+ bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
116
+ instancePoolServiceSelectors[0] = instanceStore.createPoolSetup.selector;
117
+ instancePoolServiceSelectors[1] = instanceStore.updatePoolSetup.selector;
118
+ instanceAdmin.setCoreTargetFunctionRole(
119
+ "InstanceStore",
120
+ instancePoolServiceSelectors,
121
+ POOL_SERVICE_ROLE());
122
+ }
123
+
124
+ function _grantProductServiceAuthorizations(
125
+ AccessManagerExtendedInitializeable accessManager,
126
+ InstanceAdmin instanceAdmin,
127
+ InstanceStore instanceStore,
128
+ IRegistry registry,
129
+ VersionPart majorVersion)
130
+ private
131
+ {
132
+ // configure authorization for product service on instance
133
+ address productServiceAddress = registry.getServiceAddress(PRODUCT(), majorVersion);
134
+ accessManager.grantRole(PRODUCT_SERVICE_ROLE().toInt(), address(productServiceAddress), 0);
135
+ bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
136
+ instanceProductServiceSelectors[0] = instanceStore.createProductSetup.selector;
137
+ instanceProductServiceSelectors[1] = instanceStore.updateProductSetup.selector;
138
+ instanceProductServiceSelectors[2] = instanceStore.createRisk.selector;
139
+ instanceProductServiceSelectors[3] = instanceStore.updateRisk.selector;
140
+ instanceProductServiceSelectors[4] = instanceStore.updateRiskState.selector;
141
+ instanceAdmin.setCoreTargetFunctionRole(
142
+ "InstanceStore",
143
+ instanceProductServiceSelectors,
144
+ PRODUCT_SERVICE_ROLE());
145
+ }
146
+
147
+ function _grantApplicationServiceAuthorizations(
148
+ AccessManagerExtendedInitializeable accessManager,
149
+ InstanceAdmin instanceAdmin,
150
+ InstanceStore instanceStore,
151
+ IRegistry registry,
152
+ VersionPart majorVersion)
153
+ private
154
+ {
155
+ // configure authorization for application services on instance
156
+ address applicationServiceAddress = registry.getServiceAddress(APPLICATION(), majorVersion);
157
+ accessManager.grantRole(APPLICATION_SERVICE_ROLE().toInt(), applicationServiceAddress, 0);
158
+ bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
159
+ instanceApplicationServiceSelectors[0] = instanceStore.createApplication.selector;
160
+ instanceApplicationServiceSelectors[1] = instanceStore.updateApplication.selector;
161
+ instanceApplicationServiceSelectors[2] = instanceStore.updateApplicationState.selector;
162
+ instanceAdmin.setCoreTargetFunctionRole(
163
+ "InstanceStore",
164
+ instanceApplicationServiceSelectors,
165
+ APPLICATION_SERVICE_ROLE());
166
+ }
167
+
168
+ function _grantPolicyServiceAuthorizations(
169
+ AccessManagerExtendedInitializeable accessManager,
170
+ InstanceAdmin instanceAdmin,
171
+ InstanceStore instanceStore,
172
+ IRegistry registry,
173
+ VersionPart majorVersion)
174
+ private
175
+ {
176
+ // configure authorization for policy services on instance
177
+ address policyServiceAddress = registry.getServiceAddress(POLICY(), majorVersion);
178
+ accessManager.grantRole(POLICY_SERVICE_ROLE().toInt(), policyServiceAddress, 0);
179
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
180
+ instancePolicyServiceSelectors[0] = instanceStore.updatePolicy.selector;
181
+ instancePolicyServiceSelectors[1] = instanceStore.updatePolicyState.selector;
182
+ instanceAdmin.setCoreTargetFunctionRole(
183
+ "InstanceStore",
184
+ instancePolicyServiceSelectors,
185
+ POLICY_SERVICE_ROLE());
186
+ }
187
+
188
+ function _grantClaimServiceAuthorizations(
189
+ AccessManagerExtendedInitializeable accessManager,
190
+ InstanceAdmin instanceAdmin,
191
+ InstanceStore instanceStore,
192
+ IRegistry registry,
193
+ VersionPart majorVersion)
194
+ private
195
+ {
196
+ // configure authorization for claim/payout services on instance
197
+ address claimServiceAddress = registry.getServiceAddress(CLAIM(), majorVersion);
198
+ accessManager.grantRole(CLAIM_SERVICE_ROLE().toInt(), claimServiceAddress, 0);
199
+
200
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](1);
201
+ instancePolicyServiceSelectors[0] = instanceStore.updatePolicyClaims.selector;
202
+ instanceAdmin.setCoreTargetFunctionRole(
203
+ "InstanceStore",
204
+ instancePolicyServiceSelectors,
205
+ CLAIM_SERVICE_ROLE());
206
+
207
+ bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
208
+ instanceClaimServiceSelectors[0] = instanceStore.createClaim.selector;
209
+ instanceClaimServiceSelectors[1] = instanceStore.updateClaim.selector;
210
+ instanceClaimServiceSelectors[2] = instanceStore.createPayout.selector;
211
+ instanceClaimServiceSelectors[3] = instanceStore.updatePayout.selector;
212
+ instanceAdmin.setCoreTargetFunctionRole(
213
+ "InstanceStore",
214
+ instanceClaimServiceSelectors,
215
+ CLAIM_SERVICE_ROLE());
216
+ }
217
+
218
+ function _grantBundleServiceAuthorizations(
219
+ AccessManagerExtendedInitializeable accessManager,
220
+ InstanceAdmin instanceAdmin,
221
+ InstanceStore instanceStore,
222
+ BundleManager bundleManager,
223
+ IRegistry registry,
224
+ VersionPart majorVersion)
225
+ private
226
+ {
227
+ // configure authorization for bundle service on instance
228
+ address bundleServiceAddress = registry.getServiceAddress(BUNDLE(), majorVersion);
229
+ accessManager.grantRole(BUNDLE_SERVICE_ROLE().toInt(), address(bundleServiceAddress), 0);
230
+ bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
231
+ instanceBundleServiceSelectors[0] = instanceStore.createBundle.selector;
232
+ instanceBundleServiceSelectors[1] = instanceStore.updateBundle.selector;
233
+ instanceBundleServiceSelectors[2] = instanceStore.updateBundleState.selector;
234
+ instanceAdmin.setCoreTargetFunctionRole(
235
+ "InstanceStore",
236
+ instanceBundleServiceSelectors,
237
+ BUNDLE_SERVICE_ROLE());
238
+
239
+ // configure authorization for bundle service on bundle manager
240
+ bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
241
+ bundleManagerBundleServiceSelectors[0] = bundleManager.linkPolicy.selector;
242
+ bundleManagerBundleServiceSelectors[1] = bundleManager.unlinkPolicy.selector;
243
+ bundleManagerBundleServiceSelectors[2] = bundleManager.add.selector;
244
+ bundleManagerBundleServiceSelectors[3] = bundleManager.lock.selector;
245
+ bundleManagerBundleServiceSelectors[4] = bundleManager.unlock.selector;
246
+ instanceAdmin.setCoreTargetFunctionRole(
247
+ "BundleManager",
248
+ bundleManagerBundleServiceSelectors,
249
+ BUNDLE_SERVICE_ROLE());
250
+ }
251
+
252
+ function _grantInstanceServiceAuthorizations(
253
+ AccessManagerExtendedInitializeable accessManager,
254
+ InstanceAdmin instanceAdmin,
255
+ Instance instance,
256
+ IRegistry registry,
257
+ VersionPart majorVersion)
258
+ private
259
+ {
260
+ // configure authorization for instance service on instance
261
+ address instanceServiceAddress = registry.getServiceAddress(INSTANCE(), majorVersion);
262
+ accessManager.grantRole(INSTANCE_SERVICE_ROLE().toInt(), instanceServiceAddress, 0);
263
+ bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
264
+ instanceInstanceServiceSelectors[0] = instance.setInstanceReader.selector;
265
+ instanceAdmin.setCoreTargetFunctionRole(
266
+ "Instance",
267
+ instanceInstanceServiceSelectors,
268
+ INSTANCE_SERVICE_ROLE());
269
+
270
+ // configure authorizations for instance service on instance access manager
271
+ bytes4[] memory instanceAdminInstanceServiceSelectors = new bytes4[](3);
272
+ instanceAdminInstanceServiceSelectors[0] = instanceAdmin.createGifTarget.selector;
273
+ instanceAdminInstanceServiceSelectors[1] = instanceAdmin.setTargetLockedByService.selector;
274
+ instanceAdminInstanceServiceSelectors[2] = instanceAdmin.setCoreTargetFunctionRole.selector;
275
+ instanceAdmin.setCoreTargetFunctionRole(
276
+ "InstanceAdmin",
277
+ instanceAdminInstanceServiceSelectors,
278
+ INSTANCE_SERVICE_ROLE());
279
+ }
280
+
281
+ function _grantInstanceAuthorizations(
282
+ AccessManagerExtendedInitializeable accessManager,
283
+ InstanceAdmin instanceAdmin,
284
+ Instance instance,
285
+ IRegistry registry,
286
+ VersionPart majorVersion)
287
+ private
288
+ {
289
+ // configure authorizations for instance on instance admin
290
+ bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](4);
291
+ instanceAdminInstanceSelectors[0] = instanceAdmin.createRole.selector;
292
+ instanceAdminInstanceSelectors[1] = instanceAdmin.createTarget.selector;
293
+ instanceAdminInstanceSelectors[2] = instanceAdmin.setTargetFunctionRole.selector;
294
+ instanceAdminInstanceSelectors[3] = instanceAdmin.setTargetLockedByInstance.selector;
295
+ instanceAdmin.setCoreTargetFunctionRole(
296
+ "InstanceAdmin",
297
+ instanceAdminInstanceSelectors,
298
+ INSTANCE_ROLE());
299
+ }
300
+
301
+ function _grantInstanceOwnerAuthorizations(
302
+ InstanceAdmin instanceAdmin,
303
+ Instance instance,
304
+ IRegistry registry,
305
+ VersionPart majorVersion)
306
+ private
307
+ {
308
+ // configure authorization for instance owner on instance access manager
309
+ // instance owner role is granted/revoked ONLY by INSTANCE_ROLE
310
+ bytes4[] memory instanceInstanceOwnerSelectors = new bytes4[](4);
311
+ instanceInstanceOwnerSelectors[0] = instance.createRole.selector;
312
+ instanceInstanceOwnerSelectors[1] = instance.createTarget.selector;
313
+ instanceInstanceOwnerSelectors[2] = instance.setTargetFunctionRole.selector;
314
+ instanceInstanceOwnerSelectors[3] = instance.setTargetLocked.selector;
315
+ instanceAdmin.setCoreTargetFunctionRole(
316
+ "Instance",
317
+ instanceInstanceOwnerSelectors,
318
+ INSTANCE_OWNER_ROLE());
319
+ }
320
+ }