@etherisc/gif-next 0.0.2-d5522f6-712 → 0.0.2-d59d51e-694

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 (572) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +275 -1359
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +306 -216
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +446 -2536
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +479 -178
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +485 -337
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +466 -366
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +348 -93
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +257 -293
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +218 -191
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +237 -307
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IPricingService.sol/IPricingService.json} +251 -257
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +442 -228
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +123 -139
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +269 -15
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +343 -226
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +396 -35
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +95 -58
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +491 -288
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +334 -80
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +699 -94
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +354 -98
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +409 -361
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +188 -200
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +268 -125
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +239 -215
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -21
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +173 -153
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -12
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +22 -25
  252. package/contracts/instance/IInstance.sol +60 -45
  253. package/contracts/instance/IInstanceService.sol +58 -15
  254. package/contracts/instance/Instance.sol +148 -196
  255. package/contracts/instance/InstanceAccessManager.sol +406 -166
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +136 -85
  258. package/contracts/instance/InstanceService.sol +259 -237
  259. package/contracts/instance/InstanceServiceManager.sol +12 -22
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  263. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  264. package/contracts/instance/module/IAccess.sol +24 -18
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +15 -1
  297. package/contracts/registry/IRegistry.sol +57 -23
  298. package/contracts/registry/IRegistryService.sol +44 -34
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +295 -113
  301. package/contracts/registry/RegistryAccessManager.sol +105 -119
  302. package/contracts/registry/RegistryService.sol +115 -168
  303. package/contracts/registry/RegistryServiceManager.sol +28 -18
  304. package/contracts/registry/ReleaseManager.sol +419 -204
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +302 -58
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +14 -12
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +6 -4
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +64 -80
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +41 -22
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/type/Amount.sol +114 -0
  349. package/contracts/{types → type}/Blocknumber.sol +20 -2
  350. package/contracts/type/ClaimId.sol +75 -0
  351. package/contracts/{types → type}/DistributorType.sol +2 -2
  352. package/contracts/{types → type}/Fee.sol +32 -22
  353. package/contracts/{types → type}/NftId.sol +17 -11
  354. package/contracts/{types → type}/NftIdSet.sol +1 -1
  355. package/contracts/{types → type}/ObjectType.sol +26 -9
  356. package/contracts/type/PayoutId.sol +82 -0
  357. package/contracts/{types → type}/Referral.sol +4 -0
  358. package/contracts/type/RoleId.sol +143 -0
  359. package/contracts/type/Seconds.sol +71 -0
  360. package/contracts/{types → type}/StateId.sol +24 -6
  361. package/contracts/{types → type}/Timestamp.sol +18 -13
  362. package/contracts/{types → type}/UFixed.sol +1 -0
  363. package/contracts/{types → type}/Version.sol +1 -0
  364. package/package.json +3 -3
  365. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  366. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  367. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  368. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  370. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  371. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  372. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  373. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  374. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  375. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  376. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  378. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  380. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  382. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  384. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  386. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  388. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  390. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  392. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  394. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  396. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  398. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  399. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  400. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  401. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  403. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  405. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  407. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  409. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  411. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  413. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  415. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  416. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  417. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  418. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  419. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  420. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  421. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  422. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  423. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  424. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  425. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  426. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  427. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  428. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  429. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  431. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  433. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  434. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  435. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  436. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  438. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  440. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  442. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  444. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  445. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  446. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  450. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  452. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -499
  453. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  454. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  456. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  458. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  460. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  462. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  464. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  466. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  467. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  468. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  469. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  470. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  471. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  472. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  473. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  474. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  475. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  476. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  477. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  478. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  479. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  480. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  481. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  482. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  483. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  484. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  485. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  486. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  487. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  488. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  489. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  491. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  494. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  495. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  497. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  498. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  499. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  500. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  502. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  503. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  504. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  511. package/contracts/components/BaseComponent.sol +0 -159
  512. package/contracts/components/Distribution.sol +0 -164
  513. package/contracts/components/IBaseComponent.sol +0 -34
  514. package/contracts/components/IDistributionComponent.sol +0 -44
  515. package/contracts/components/IPoolComponent.sol +0 -66
  516. package/contracts/components/IProductComponent.sol +0 -35
  517. package/contracts/components/Pool.sol +0 -272
  518. package/contracts/components/Product.sol +0 -301
  519. package/contracts/experiment/cloning/Cloner.sol +0 -47
  520. package/contracts/experiment/errors/Require.sol +0 -38
  521. package/contracts/experiment/errors/Revert.sol +0 -44
  522. package/contracts/experiment/inheritance/A.sol +0 -53
  523. package/contracts/experiment/inheritance/B.sol +0 -28
  524. package/contracts/experiment/inheritance/C.sol +0 -34
  525. package/contracts/experiment/inheritance/IA.sol +0 -13
  526. package/contracts/experiment/inheritance/IB.sol +0 -10
  527. package/contracts/experiment/inheritance/IC.sol +0 -12
  528. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  529. package/contracts/experiment/statemachine/ISM.sol +0 -25
  530. package/contracts/experiment/statemachine/SM.sol +0 -57
  531. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  532. package/contracts/experiment/types/TypeA.sol +0 -47
  533. package/contracts/experiment/types/TypeB.sol +0 -29
  534. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  535. package/contracts/instance/IInstanceBase.sol +0 -26
  536. package/contracts/instance/InstanceBase.sol +0 -41
  537. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  538. package/contracts/instance/base/IInstanceBase.sol +0 -23
  539. package/contracts/instance/base/KeyValueStore.sol +0 -172
  540. package/contracts/instance/module/ISetup.sol +0 -46
  541. package/contracts/instance/module/ITreasury.sol +0 -23
  542. package/contracts/instance/service/BundleService.sol +0 -294
  543. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  544. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  545. package/contracts/instance/service/DistributionService.sol +0 -120
  546. package/contracts/instance/service/IBundleService.sol +0 -44
  547. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  548. package/contracts/instance/service/IDistributionService.sol +0 -12
  549. package/contracts/instance/service/IPolicyService.sol +0 -94
  550. package/contracts/instance/service/IPoolService.sol +0 -20
  551. package/contracts/instance/service/IProductService.sol +0 -40
  552. package/contracts/instance/service/PolicyService.sol +0 -539
  553. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  554. package/contracts/instance/service/PoolService.sol +0 -145
  555. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  556. package/contracts/instance/service/ProductService.sol +0 -213
  557. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  558. package/contracts/shared/ContractDeployerLib.sol +0 -72
  559. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  560. package/contracts/test/TestFee.sol +0 -25
  561. package/contracts/test/TestRegisterable.sol +0 -18
  562. package/contracts/test/TestRoleId.sol +0 -14
  563. package/contracts/test/TestService.sol +0 -25
  564. package/contracts/test/TestToken.sol +0 -26
  565. package/contracts/test/TestVersion.sol +0 -44
  566. package/contracts/test/TestVersionable.sol +0 -17
  567. package/contracts/types/ChainId.sol +0 -38
  568. package/contracts/types/NumberId.sol +0 -52
  569. package/contracts/types/RoleId.sol +0 -90
  570. /package/contracts/{types → type}/AddressSet.sol +0 -0
  571. /package/contracts/{types → type}/Key32.sol +0 -0
  572. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -2,48 +2,68 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {BundleManager} from "./BundleManager.sol";
8
+ import {ChainNft} from "../registry/ChainNft.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+ import {SecondsLib} from "../type/Seconds.sol";
12
+ import {UFixedLib} from "../type/UFixed.sol";
13
+ 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";
14
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
15
+
16
+ import {Service} from "../shared/Service.sol";
17
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
18
+ import {IService} from "../shared/IService.sol";
19
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
20
+
21
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
22
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
+ import {IProductComponent} from "../product/IProductComponent.sol";
24
+
25
+ import {IRegistry} from "../registry/IRegistry.sol";
26
+ import {IRegistryService} from "../registry/IRegistryService.sol";
27
+ import {IStakingService} from "../staking/IStakingService.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
5
29
 
6
30
  import {Instance} from "./Instance.sol";
7
31
  import {IInstance} from "./IInstance.sol";
8
32
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
33
  import {IInstanceService} from "./IInstanceService.sol";
10
34
  import {InstanceReader} from "./InstanceReader.sol";
11
- import {BundleManager} from "./BundleManager.sol";
12
- import {IRegistry} from "../registry/IRegistry.sol";
13
- import {RegistryService} from "../registry/RegistryService.sol";
14
- import {ChainNft} from "../registry/ChainNft.sol";
15
- import {Service} from "../../contracts/shared/Service.sol";
16
- import {IService} from "../shared/IService.sol";
17
- import {NftId} from "../../contracts/types/NftId.sol";
18
- import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
35
+ import {InstanceStore} from "./InstanceStore.sol";
36
+ import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
37
+
38
+ contract InstanceService is
39
+ Service,
40
+ IInstanceService
41
+ {
21
42
 
22
- contract InstanceService is Service, IInstanceService {
43
+ // TODO update to real hash when instance is stable
44
+ bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
45
+
46
+ IRegistryService internal _registryService;
47
+ IStakingService internal _stakingService;
23
48
 
49
+ address internal _masterOzAccessManager;
24
50
  address internal _masterInstanceAccessManager;
25
51
  address internal _masterInstance;
26
52
  address internal _masterInstanceReader;
27
53
  address internal _masterInstanceBundleManager;
54
+ address internal _masterInstanceStore;
28
55
 
29
- // TODO update to real hash when instance is stable
30
- bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
31
- string public constant NAME = "InstanceService";
32
-
33
- modifier onlyInstanceOwner(NftId instanceNftId) {
34
- IRegistry registry = getRegistry();
35
- ChainNft chainNft = registry.getChainNft();
36
-
37
- if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
38
- revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
56
+ modifier onlyInstanceOwner(NftId instanceNftId) {
57
+ if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
58
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
39
59
  }
40
60
  _;
41
61
  }
42
62
 
43
- modifier onlyRegisteredService() {
44
- address caller = msg.sender;
45
- if (! getRegistry().isRegisteredService(caller)) {
46
- revert ErrorInstanceServiceRequestUnauhorized(caller);
63
+ // TODO check component - service - instance version match
64
+ modifier onlyComponent() {
65
+ if (! getRegistry().isRegisteredComponent(msg.sender)) {
66
+ revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
47
67
  }
48
68
  _;
49
69
  }
@@ -51,243 +71,254 @@ contract InstanceService is Service, IInstanceService {
51
71
  function createInstanceClone()
52
72
  external
53
73
  returns (
54
- InstanceAccessManager clonedAccessManager,
55
74
  Instance clonedInstance,
56
- NftId clonedInstanceNftId,
57
- InstanceReader clonedInstanceReader,
58
- BundleManager clonedBundleManager
75
+ NftId clonedInstanceNftId
59
76
  )
60
77
  {
61
78
  address instanceOwner = msg.sender;
62
- IRegistry registry = getRegistry();
63
- address registryAddress = address(registry);
64
- NftId registryNftId = registry.getNftId(registryAddress);
65
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
66
- RegistryService registryService = RegistryService(registryServiceAddress);
79
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
80
+ Clones.clone(_masterOzAccessManager));
67
81
 
68
- // initially set the authority of the access managar to this (being the instance service).
69
- // This will allow the instance service to bootstrap the authorizations of the instance
70
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
71
- clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
72
- clonedAccessManager.__InstanceAccessManager_initialize(address(this));
82
+ // initially grants ADMIN_ROLE to this (being the instance service).
83
+ // This will allow the instance service to bootstrap the authorizations of the instance.
84
+ // Instance service will not use oz access manager directlly but through instance access manager instead
85
+ // Instance service will renounce ADMIN_ROLE when bootstraping is finished
86
+ clonedOzAccessManager.initialize(address(this));
73
87
 
74
88
  clonedInstance = Instance(Clones.clone(_masterInstance));
75
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
76
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
77
- clonedInstanceNftId = info.nftId;
89
+ clonedInstance.initialize(
90
+ address(clonedOzAccessManager),
91
+ address(getRegistry()),
92
+ instanceOwner);
93
+ // initialize and set before instance reader
94
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
95
+ clonedInstanceStore.initialize(address(clonedInstance));
96
+ clonedInstance.setInstanceStore(clonedInstanceStore);
78
97
 
79
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
80
- clonedInstanceReader.initialize(registryAddress, clonedInstanceNftId);
98
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
99
+ clonedInstanceReader.initialize(address(clonedInstance));
81
100
  clonedInstance.setInstanceReader(clonedInstanceReader);
82
101
 
83
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
84
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, clonedInstanceNftId);
102
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
103
+ clonedBundleManager.initialize(address(clonedInstance));
85
104
  clonedInstance.setBundleManager(clonedBundleManager);
86
105
 
106
+ InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
107
+ clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
108
+ clonedInstanceAccessManager.initialize(address(clonedInstance));
109
+ clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
110
+
87
111
  // TODO amend setters with instance specific , policy manager ...
88
112
 
89
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
113
+ // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
114
+ InstanceAuthorizationsLib.grantInitialAuthorizations(
115
+ clonedInstanceAccessManager,
116
+ clonedInstance,
117
+ clonedBundleManager,
118
+ clonedInstanceStore,
119
+ instanceOwner,
120
+ getRegistry(),
121
+ getVersion().toMajorPart());
90
122
 
91
- // to complete setup switch instance ownership to the instance owner
92
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
93
- clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
94
- clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
123
+ clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
95
124
 
96
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
97
- }
125
+ // register new instance with registry
126
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
127
+ clonedInstanceNftId = info.nftId;
98
128
 
99
- function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
100
- _createGifRoles(clonedAccessManager);
101
- _createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
102
- _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
103
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
104
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
105
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
106
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
107
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
129
+ // create corresponding staking target
130
+ _stakingService.createInstanceTarget(
131
+ clonedInstanceNftId,
132
+ TargetManagerLib.getDefaultLockingPeriod(),
133
+ TargetManagerLib.getDefaultRewardRate());
134
+
135
+ emit LogInstanceCloned(
136
+ address(clonedOzAccessManager),
137
+ address(clonedInstanceAccessManager),
138
+ address(clonedInstance),
139
+ address(clonedInstanceStore),
140
+ address(clonedBundleManager),
141
+ address(clonedInstanceReader),
142
+ clonedInstanceNftId);
108
143
  }
109
144
 
110
- function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
111
- clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
112
- clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
113
- clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
114
-
115
- clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
116
- clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
117
- clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
118
- clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
119
- clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
120
- clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
121
- }
122
145
 
123
- function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
124
- clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
125
- clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
126
- }
146
+ function setComponentLocked(bool locked)
147
+ external
148
+ virtual
149
+ onlyComponent()
150
+ {
151
+ // checks
152
+ address componentAddress = msg.sender;
153
+
154
+ if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
155
+ revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
156
+ }
127
157
 
128
- function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
129
- // configure authorization for distribution service on instance
130
158
  IRegistry registry = getRegistry();
131
- address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
132
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
133
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
134
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
135
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
136
- clonedAccessManager.setTargetFunctionRole(
137
- "Instance",
138
- instanceDistributionServiceSelectors,
139
- DISTRIBUTION_SERVICE_ROLE());
140
- }
159
+ NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
141
160
 
142
- function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
143
- // configure authorization for pool service on instance
144
- address poolServiceAddress = _registry.getServiceAddress(POOL(), getMajorVersion());
145
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
146
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
147
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
148
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
149
- clonedAccessManager.setTargetFunctionRole(
150
- "Instance",
151
- instancePoolServiceSelectors,
152
- POOL_SERVICE_ROLE());
153
- }
161
+ if (instanceNftId.eqz()) {
162
+ revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
163
+ }
154
164
 
155
- function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
156
- // configure authorization for product service on instance
157
- address productServiceAddress = _registry.getServiceAddress(PRODUCT(), getMajorVersion());
158
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
159
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
160
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
161
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
162
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
163
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
164
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
165
- clonedAccessManager.setTargetFunctionRole(
166
- "Instance",
167
- instanceProductServiceSelectors,
168
- PRODUCT_SERVICE_ROLE());
169
- }
165
+ IInstance instance = IInstance(
166
+ registry.getObjectInfo(
167
+ instanceNftId).objectAddress);
170
168
 
171
- function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
172
- // configure authorization for policy service on instance
173
- address policyServiceAddress = _registry.getServiceAddress(POLICY(), getMajorVersion());
174
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
175
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
176
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
177
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
178
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
179
- clonedAccessManager.setTargetFunctionRole(
180
- "Instance",
181
- instancePolicyServiceSelectors,
182
- POLICY_SERVICE_ROLE());
169
+ // interaction
170
+ instance.getInstanceAccessManager().setTargetLockedByService(
171
+ componentAddress,
172
+ locked);
183
173
  }
184
174
 
185
- function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
186
- // configure authorization for bundle service on instance
187
- address bundleServiceAddress = _registry.getServiceAddress(BUNDLE(), getMajorVersion());
188
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
189
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
190
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
191
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
192
- clonedAccessManager.setTargetFunctionRole(
193
- "Instance",
194
- instanceBundleServiceSelectors,
195
- BUNDLE_SERVICE_ROLE());
196
-
197
- // configure authorization for bundle service on bundle manager
198
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
199
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
200
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
201
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
202
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
203
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
204
- clonedAccessManager.setTargetFunctionRole(
205
- "BundleManager",
206
- bundleManagerBundleServiceSelectors,
207
- BUNDLE_SERVICE_ROLE());
208
- }
209
175
 
210
- function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
211
- // configure authorization for instance service on instance
212
- address instanceServiceAddress = _registry.getServiceAddress(INSTANCE(), getMajorVersion());
213
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
214
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
215
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
216
- clonedAccessManager.setTargetFunctionRole(
217
- "Instance",
218
- instanceInstanceServiceSelectors,
219
- INSTANCE_SERVICE_ROLE());
176
+ function getMasterInstanceReader() external view returns (address) {
177
+ return _masterInstanceReader;
220
178
  }
221
179
 
222
- function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
223
- require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
224
- require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
225
- require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
226
-
227
- require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
228
- require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
229
- require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
230
- require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
180
+ // From IService
181
+ function getDomain() public pure override returns(ObjectType) {
182
+ return INSTANCE();
183
+ }
231
184
 
232
- Instance instance = Instance(instanceAddress);
233
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
234
- BundleManager bundleManager = BundleManager(bundleManagerAddress);
185
+ function setAndRegisterMasterInstance(address instanceAddress)
186
+ external
187
+ onlyOwner
188
+ returns(NftId masterInstanceNftId)
189
+ {
190
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
191
+ if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
192
+ if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
193
+ if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
235
194
 
236
- require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
237
- require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
238
- require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
195
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
239
196
 
240
- _masterInstanceAccessManager = accessManagerAddress;
197
+ IInstance instance = IInstance(instanceAddress);
198
+ InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
199
+ address instanceAccessManagerAddress = address(instanceAccessManager);
200
+ InstanceReader instanceReader = instance.getInstanceReader();
201
+ address instanceReaderAddress = address(instanceReader);
202
+ BundleManager bundleManager = instance.getBundleManager();
203
+ address bundleManagerAddress = address(bundleManager);
204
+ InstanceStore instanceStore = instance.getInstanceStore();
205
+ address instanceStoreAddress = address(instanceStore);
206
+
207
+ if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
208
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
209
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
210
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
211
+
212
+ if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
213
+ if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
214
+ if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
215
+ if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
216
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
217
+
218
+ _masterOzAccessManager = instance.authority();
219
+ _masterInstanceAccessManager = instanceAccessManagerAddress;
241
220
  _masterInstance = instanceAddress;
242
221
  _masterInstanceReader = instanceReaderAddress;
243
222
  _masterInstanceBundleManager = bundleManagerAddress;
223
+ _masterInstanceStore = instanceStoreAddress;
224
+
225
+ IInstance masterInstance = IInstance(_masterInstance);
226
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
227
+ masterInstanceNftId = info.nftId;
244
228
  }
245
229
 
246
230
  function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
247
- require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
248
- require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
249
- require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
231
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
232
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
233
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
250
234
 
251
235
  InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
252
- require(instanceReader.getInstanceNftId() == Instance(_masterInstance).getNftId(), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
236
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
253
237
 
254
238
  _masterInstanceReader = instanceReaderAddress;
255
239
  }
256
240
 
257
- function upgradeInstanceReader(NftId instanceNftId) external {
241
+ function upgradeInstanceReader(NftId instanceNftId)
242
+ external
243
+ onlyInstanceOwner(instanceNftId)
244
+ {
258
245
  IRegistry registry = getRegistry();
259
246
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
260
247
  Instance instance = Instance(instanceInfo.objectAddress);
261
- address owner = instance.getOwner();
262
-
263
- if (msg.sender != owner) {
264
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
265
- }
266
248
 
267
249
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
268
- upgradedInstanceReaderClone.initialize(address(registry), instanceNftId);
250
+ upgradedInstanceReaderClone.initialize(address(instance));
269
251
  instance.setInstanceReader(upgradedInstanceReaderClone);
270
252
  }
271
253
 
272
- function getMasterInstanceReader() external view returns (address) {
273
- return _masterInstanceReader;
274
- }
275
254
 
276
- function getMasterInstance() external view returns (address) {
277
- return _masterInstance;
255
+ function createGifTarget(
256
+ NftId instanceNftId,
257
+ address targetAddress,
258
+ string memory targetName,
259
+ bytes4[][] memory selectors,
260
+ RoleId[] memory roles
261
+ )
262
+ external
263
+ virtual
264
+ restricted()
265
+ {
266
+ _createGifTarget(
267
+ instanceNftId,
268
+ targetAddress,
269
+ targetName,
270
+ roles,
271
+ selectors
272
+ );
278
273
  }
279
274
 
280
- function getMasterInstanceAccessManager() external view returns (address) {
281
- return _masterInstanceAccessManager;
282
- }
283
275
 
284
- function getMasterInstanceBundleManager() external view returns (address) {
285
- return _masterInstanceBundleManager;
276
+ function createComponentTarget(
277
+ NftId instanceNftId,
278
+ address targetAddress,
279
+ string memory targetName,
280
+ bytes4[][] memory selectors,
281
+ RoleId[] memory roles
282
+ )
283
+ external
284
+ virtual
285
+ // TODO re-enable once role - contract association is fixed
286
+ // restricted()
287
+ {
288
+ _createGifTarget(
289
+ instanceNftId,
290
+ targetAddress,
291
+ targetName,
292
+ roles,
293
+ selectors
294
+ );
286
295
  }
287
296
 
288
- // From IService
289
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
290
- return INSTANCE();
297
+
298
+ /// all gif targets MUST be children of instanceNftId
299
+ function _createGifTarget(
300
+ NftId instanceNftId,
301
+ address targetAddress,
302
+ string memory targetName,
303
+ RoleId[] memory roles,
304
+ bytes4[][] memory selectors
305
+ )
306
+ internal
307
+ virtual
308
+ {
309
+ (
310
+ IInstance instance, // or instanceInfo
311
+ // or targetInfo
312
+ ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
313
+
314
+ InstanceAccessManager accessManager = instance.getInstanceAccessManager();
315
+ accessManager.createGifTarget(targetAddress, targetName);
316
+ // set proposed target config
317
+ // TODO restriction: gif targets are set only once and only here?
318
+ // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
319
+ for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
320
+ accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
321
+ }
291
322
  }
292
323
 
293
324
  /// @dev top level initializer
@@ -299,47 +330,38 @@ contract InstanceService is Service, IInstanceService {
299
330
  initializer
300
331
  virtual override
301
332
  {
302
- address initialOwner;
303
- address registryAddress;
304
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
305
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
306
- // owner is InstanceServiceManager deployer
307
- _initializeService(registryAddress, owner);
308
-
309
- _registerInterface(type(IInstanceService).interfaceId);
310
- }
333
+ (
334
+ address registryAddress,,
335
+ //address managerAddress
336
+ address authority
337
+ ) = abi.decode(data, (address, address, address));
311
338
 
312
- function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
313
- Instance instance = Instance(instanceAddress);
314
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
315
- return accessManager.hasRole(role, account);
339
+ initializeService(registryAddress, authority, owner);
340
+
341
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
342
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
343
+
344
+ registerInterface(type(IInstanceService).interfaceId);
316
345
  }
317
346
 
318
- function createTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
347
+
348
+ function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
349
+ internal
350
+ view
351
+ returns (IInstance instance, NftId componentNftId)
352
+ {
319
353
  IRegistry registry = getRegistry();
320
354
  IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
321
- Instance instance = Instance(instanceInfo.objectAddress);
322
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
323
- accessManager.createTarget(targetAddress, targetName);
324
- }
355
+ if(instanceInfo.objectType != INSTANCE()) {
356
+ revert ErrorInstanceServiceNotInstance(instanceNftId);
357
+ }
325
358
 
326
- function setTargetLocked(string memory targetName, bool locked) external {
327
- address componentAddress = msg.sender;
328
- IRegistry registry = getRegistry();
329
359
  IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
330
- if (componentInfo.nftId.eqz()) {
331
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
360
+ if(componentInfo.parentNftId != instanceNftId) {
361
+ revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
332
362
  }
333
363
 
334
- // TODO validate component type
335
-
336
-
337
- address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
338
- IInstance instance = IInstance(instanceAddress);
339
-
340
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
341
- accessManager.setTargetClosed(targetName, locked);
364
+ instance = Instance(instanceInfo.objectAddress);
365
+ componentNftId = componentInfo.nftId;
342
366
  }
343
-
344
- }
345
-
367
+ }
@@ -7,39 +7,29 @@ import {ProxyManager} from "../shared/ProxyManager.sol";
7
7
  import {InstanceService} from "./InstanceService.sol";
8
8
  import {Registry} from "../registry/Registry.sol";
9
9
  import {RegistryService} from "../registry/RegistryService.sol";
10
- import {REGISTRY} from "../types/ObjectType.sol";
10
+ import {REGISTRY} from "../type/ObjectType.sol";
11
11
 
12
12
  contract InstanceServiceManager is ProxyManager {
13
13
 
14
14
  InstanceService private _instanceService;
15
15
 
16
- /// @dev initializes proxy manager with instance service implementation and deploys instance
16
+ /// @dev initializes proxy manager with instance service implementation
17
17
  constructor(
18
- address registryAddress
19
- )
20
- ProxyManager()
18
+ address authority,
19
+ address registryAddress,
20
+ bytes32 salt
21
+ )
22
+ ProxyManager(registryAddress)
21
23
  {
22
- InstanceService instSrv = new InstanceService();
24
+ InstanceService instSrv = new InstanceService{salt: salt}();
23
25
  // bytes memory initCode = type(InstanceService).creationCode;
24
- bytes memory data = abi.encode(registryAddress, address(this));
25
- IVersionable versionable = deploy(
26
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
27
+ IVersionable versionable = deployDetermenistic(
26
28
  address(instSrv),
27
- data);
29
+ data,
30
+ salt);
28
31
 
29
32
  _instanceService = InstanceService(address(versionable));
30
-
31
- // TODO `this` must have a role or own nft to register service
32
- //Registry registry = Registry(registryAddress);
33
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _instanceService.getMajorVersion());
34
- //RegistryService registryService = RegistryService(registryServiceAddress);
35
- //registryService.registerService(_instanceService);
36
- // RegistryService registryService = _instanceService.getRegistryService();
37
-
38
- // TODO no nft to link yet
39
- // link ownership of instance service manager ot nft owner of instance service
40
- //_linkToNftOwnable(
41
- // address(registryAddress),
42
- // address(_instanceService));
43
33
  }
44
34
 
45
35
  //--- view functions ----------------------------------------------------//