@etherisc/gif-next 0.0.2-9682fee-392 → 0.0.2-96b5b72-170

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 (437) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +82 -14
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +156 -14
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +110 -283
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +101 -52
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +430 -2762
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +99 -62
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +366 -71
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +157 -211
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +45 -90
  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 +1 -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 +61 -12
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +8 -8
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +234 -129
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +173 -21
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +83 -21
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1630 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +712 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +184 -100
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +211 -100
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +120 -166
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +163 -21
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +86 -28
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/{components → product}/Product.sol/Product.json +74 -22
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +48 -0
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +66 -37
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.json +77 -16
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +20 -20
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +87 -53
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -40
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +95 -22
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  123. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.json +723 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/base → shared}/ComponentService.sol/ComponentService.json +114 -35
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +177 -142
  130. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  131. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +647 -0
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  144. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +60 -8
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +8 -21
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +20 -33
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -21
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  163. package/artifacts/contracts/{components/IComponent.sol/IComponent.json → staking/IStaking.sol/IStaking.json} +123 -121
  164. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  165. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
  166. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  167. package/artifacts/contracts/staking/Staking.sol/Staking.json +854 -0
  168. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  169. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +640 -0
  170. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  171. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
  172. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -0
  174. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  175. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  176. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  177. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  178. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  179. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  180. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  181. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  182. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  183. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  184. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  185. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  186. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  188. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/{types → type}/NftId.sol/NftIdLib.json +5 -5
  190. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  192. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  194. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  196. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  198. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  200. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  202. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  203. package/artifacts/contracts/{types → type}/Seconds.sol/SecondsLib.json +3 -3
  204. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  206. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  207. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  208. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  209. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  210. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  211. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  212. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  214. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  215. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  216. package/contracts/{components → distribution}/Distribution.sol +22 -17
  217. package/contracts/distribution/DistributionService.sol +349 -0
  218. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +5 -5
  219. package/contracts/{components → distribution}/IDistributionComponent.sol +8 -8
  220. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -30
  221. package/contracts/instance/BundleManager.sol +8 -9
  222. package/contracts/instance/IInstance.sol +43 -64
  223. package/contracts/instance/IInstanceService.sol +18 -17
  224. package/contracts/instance/Instance.sol +116 -214
  225. package/contracts/instance/InstanceAccessManager.sol +49 -28
  226. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  227. package/contracts/instance/InstanceReader.sol +96 -18
  228. package/contracts/instance/InstanceService.sol +103 -290
  229. package/contracts/instance/InstanceServiceManager.sol +1 -1
  230. package/contracts/instance/InstanceStore.sol +211 -0
  231. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  232. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  233. package/contracts/instance/base/ILifecycle.sol +3 -3
  234. package/contracts/instance/base/KeyValueStore.sol +39 -45
  235. package/contracts/instance/base/Lifecycle.sol +17 -5
  236. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  237. package/contracts/instance/module/IAccess.sol +4 -4
  238. package/contracts/instance/module/IBundle.sol +10 -8
  239. package/contracts/instance/module/IComponents.sol +11 -5
  240. package/contracts/instance/module/IDistribution.sol +7 -6
  241. package/contracts/instance/module/IPolicy.sol +22 -16
  242. package/contracts/instance/module/IRisk.sol +1 -1
  243. package/contracts/instance/module/ISetup.sol +4 -4
  244. package/contracts/instance/module/ITreasury.sol +2 -2
  245. package/contracts/pool/BundleService.sol +382 -0
  246. package/contracts/{instance/service → pool}/BundleServiceManager.sol +5 -5
  247. package/contracts/pool/IBundleService.sol +118 -0
  248. package/contracts/{components → pool}/IPoolComponent.sol +15 -14
  249. package/contracts/pool/IPoolService.sol +114 -0
  250. package/contracts/{components → pool}/Pool.sol +26 -23
  251. package/contracts/pool/PoolService.sol +403 -0
  252. package/contracts/{instance/service → pool}/PoolServiceManager.sol +5 -5
  253. package/contracts/product/ApplicationService.sol +186 -0
  254. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +2 -2
  255. package/contracts/product/ClaimService.sol +442 -0
  256. package/contracts/{instance/service → product}/ClaimServiceManager.sol +2 -2
  257. package/contracts/{instance/service → product}/IApplicationService.sol +14 -34
  258. package/contracts/product/IClaimService.sol +93 -0
  259. package/contracts/{instance/service → product}/IPolicyService.sol +34 -26
  260. package/contracts/product/IPricingService.sol +37 -0
  261. package/contracts/{components → product}/IProductComponent.sol +12 -11
  262. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  263. package/contracts/product/PolicyService.sol +376 -0
  264. package/contracts/{instance/service → product}/PolicyServiceManager.sol +5 -5
  265. package/contracts/product/PricingService.sol +275 -0
  266. package/contracts/product/PricingServiceManager.sol +51 -0
  267. package/contracts/{components → product}/Product.sol +161 -75
  268. package/contracts/product/ProductService.sol +210 -0
  269. package/contracts/{instance/service → product}/ProductServiceManager.sol +5 -5
  270. package/contracts/registry/ChainNft.sol +7 -1
  271. package/contracts/registry/IRegistry.sol +15 -6
  272. package/contracts/registry/IRegistryService.sol +10 -8
  273. package/contracts/registry/Registry.sol +45 -7
  274. package/contracts/registry/RegistryAccessManager.sol +6 -15
  275. package/contracts/registry/RegistryService.sol +52 -31
  276. package/contracts/registry/RegistryServiceManager.sol +0 -2
  277. package/contracts/registry/ReleaseManager.sol +78 -40
  278. package/contracts/registry/TokenRegistry.sol +2 -2
  279. package/contracts/shared/Component.sol +177 -0
  280. package/contracts/shared/ComponentService.sol +150 -0
  281. package/contracts/shared/IComponent.sol +58 -0
  282. package/contracts/{components/IComponent.sol → shared/IInstanceLinkedComponent.sol} +9 -31
  283. package/contracts/shared/INftOwnable.sol +1 -1
  284. package/contracts/shared/IPolicyHolder.sol +24 -10
  285. package/contracts/shared/IRegistryLinked.sol +0 -1
  286. package/contracts/shared/IService.sol +6 -6
  287. package/contracts/shared/IVersionable.sol +1 -1
  288. package/contracts/{components/Component.sol → shared/InstanceLinkedComponent.sol} +35 -15
  289. package/contracts/shared/NftOwnable.sol +1 -3
  290. package/contracts/shared/PolicyHolder.sol +31 -18
  291. package/contracts/shared/ProxyManager.sol +3 -3
  292. package/contracts/shared/Registerable.sol +12 -11
  293. package/contracts/shared/RegistryLinked.sol +0 -5
  294. package/contracts/shared/Service.sol +23 -9
  295. package/contracts/shared/TokenHandler.sol +27 -2
  296. package/contracts/shared/Versionable.sol +1 -1
  297. package/contracts/staking/IStaking.sol +30 -0
  298. package/contracts/staking/IStakingService.sol +105 -0
  299. package/contracts/staking/Staking.sol +65 -0
  300. package/contracts/staking/StakingManager.sol +46 -0
  301. package/contracts/staking/StakingService.sol +204 -0
  302. package/contracts/staking/StakingServiceManager.sol +41 -0
  303. package/contracts/type/Amount.sol +109 -0
  304. package/contracts/{types → type}/ClaimId.sol +25 -2
  305. package/contracts/{types → type}/Fee.sol +16 -8
  306. package/contracts/{types → type}/NftIdSet.sol +1 -1
  307. package/contracts/{types → type}/ObjectType.sol +14 -5
  308. package/contracts/{types → type}/PayoutId.sol +33 -5
  309. package/contracts/{types → type}/RoleId.sol +44 -9
  310. package/contracts/{types → type}/StateId.sol +6 -2
  311. package/contracts/{types → type}/Timestamp.sol +5 -0
  312. package/package.json +1 -1
  313. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  314. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  315. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  316. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  317. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  318. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  320. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  321. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  322. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  323. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  324. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  327. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  328. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  329. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  330. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  331. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  332. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  333. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  334. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  335. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  337. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  339. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  340. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  341. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  342. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  343. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  344. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  345. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  346. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  347. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  348. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  350. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  351. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  352. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  353. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  354. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  355. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  356. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  357. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  358. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  359. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  360. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  361. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  362. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  363. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  364. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  365. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  366. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  367. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  368. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  369. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  370. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  371. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  372. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  373. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  374. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  375. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  376. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  377. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  378. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  379. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  380. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  381. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  382. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  383. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  384. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  385. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  386. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  387. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  388. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  389. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  390. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  391. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  392. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  393. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  394. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  395. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  396. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  397. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  398. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  399. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  400. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  401. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  402. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  403. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  404. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  405. package/contracts/instance/base/ComponentService.sol +0 -134
  406. package/contracts/instance/service/ApplicationService.sol +0 -350
  407. package/contracts/instance/service/BundleService.sol +0 -336
  408. package/contracts/instance/service/ClaimService.sol +0 -151
  409. package/contracts/instance/service/DistributionService.sol +0 -467
  410. package/contracts/instance/service/IBundleService.sol +0 -62
  411. package/contracts/instance/service/IClaimService.sol +0 -61
  412. package/contracts/instance/service/IPoolService.sol +0 -35
  413. package/contracts/instance/service/PolicyService.sol +0 -403
  414. package/contracts/instance/service/PoolService.sol +0 -220
  415. package/contracts/instance/service/ProductService.sol +0 -241
  416. package/contracts/shared/ContractDeployerLib.sol +0 -72
  417. package/contracts/test/TestFee.sol +0 -25
  418. package/contracts/test/TestRegisterable.sol +0 -18
  419. package/contracts/test/TestRoleId.sol +0 -14
  420. package/contracts/test/TestService.sol +0 -25
  421. package/contracts/test/TestToken.sol +0 -26
  422. package/contracts/test/TestVersion.sol +0 -44
  423. package/contracts/test/TestVersionable.sol +0 -17
  424. package/contracts/test/Usdc.sol +0 -26
  425. package/contracts/types/ChainId.sol +0 -38
  426. package/contracts/types/NumberId.sol +0 -52
  427. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
  428. /package/contracts/{types → type}/AddressSet.sol +0 -0
  429. /package/contracts/{types → type}/Blocknumber.sol +0 -0
  430. /package/contracts/{types → type}/DistributorType.sol +0 -0
  431. /package/contracts/{types → type}/Key32.sol +0 -0
  432. /package/contracts/{types → type}/NftId.sol +0 -0
  433. /package/contracts/{types → type}/Referral.sol +0 -0
  434. /package/contracts/{types → type}/RiskId.sol +0 -0
  435. /package/contracts/{types → type}/Seconds.sol +0 -0
  436. /package/contracts/{types → type}/UFixed.sol +0 -0
  437. /package/contracts/{types → type}/Version.sol +0 -0
@@ -0,0 +1,210 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IProductComponent} from "./IProductComponent.sol";
6
+ import {Product} from "./Product.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IRisk} from "../instance/module/IRisk.sol";
13
+ import {IBundle} from "../instance/module/IBundle.sol";
14
+ import {IProductService} from "./IProductService.sol";
15
+ import {ITreasury} from "../instance/module/ITreasury.sol";
16
+ import {ISetup} from "../instance/module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+
20
+ import {IVersionable} from "../shared/IVersionable.sol";
21
+ import {Versionable} from "../shared/Versionable.sol";
22
+
23
+ import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
25
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../type/ObjectType.sol";
27
+ import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
29
+ import {Fee, FeeLib} from "../type/Fee.sol";
30
+ import {ReferralId} from "../type/Referral.sol";
31
+ import {RiskId} from "../type/RiskId.sol";
32
+ import {StateId} from "../type/StateId.sol";
33
+ import {Version, VersionLib} from "../type/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
35
+
36
+ import {IService} from "../shared/IService.sol";
37
+ import {Service} from "../shared/Service.sol";
38
+ import {ComponentService} from "../shared/ComponentService.sol";
39
+ import {IProductService} from "./IProductService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IPoolService} from "../pool/PoolService.sol";
42
+
43
+ // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
44
+ contract ProductService is ComponentService, IProductService {
45
+ using NftIdLib for NftId;
46
+
47
+ IPoolService internal _poolService;
48
+
49
+ event LogProductServiceSender(address sender);
50
+
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ initializer
57
+ virtual override
58
+ {
59
+ address registryAddress;
60
+ address initialOwner;
61
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
62
+
63
+ initializeService(registryAddress, address(0), owner);
64
+
65
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
66
+
67
+ registerInterface(type(IProductService).interfaceId);
68
+ }
69
+
70
+
71
+ function register(address productAddress)
72
+ external
73
+ returns(NftId productNftId)
74
+ {
75
+ (
76
+ IInstanceLinkedComponent component,
77
+ address owner,
78
+ IInstance instance,
79
+ NftId instanceNftId
80
+ ) = _checkComponentForRegistration(
81
+ productAddress,
82
+ PRODUCT(),
83
+ PRODUCT_OWNER_ROLE());
84
+
85
+ IProductComponent product = IProductComponent(productAddress);
86
+ IRegistry.ObjectInfo memory productInfo = getRegistryService().registerProduct(product, owner);
87
+ productNftId = productInfo.nftId;
88
+ _createProductSetup(
89
+ instance,
90
+ product,
91
+ productNftId);
92
+ }
93
+
94
+
95
+ function _createProductSetup(
96
+ IInstance instance,
97
+ IProductComponent product,
98
+ NftId productNftId
99
+ )
100
+ internal
101
+ returns (string memory name)
102
+ {
103
+ // wire distribution and pool components to product component
104
+ ISetup.ProductSetupInfo memory setup = product.getSetupInfo();
105
+ IInstanceLinkedComponent distribution = IInstanceLinkedComponent(getRegistry().getObjectInfo(setup.distributionNftId).objectAddress);
106
+ IInstanceLinkedComponent pool = IInstanceLinkedComponent(getRegistry().getObjectInfo(setup.poolNftId).objectAddress);
107
+
108
+ distribution.setProductNftId(productNftId);
109
+ pool.setProductNftId(productNftId);
110
+ product.setProductNftId(productNftId);
111
+ product.linkToRegisteredNftId();
112
+
113
+ // create product setup in instance
114
+ instance.getInstanceStore().createProductSetup(productNftId, product.getSetupInfo());
115
+
116
+ bytes4[][] memory selectors = new bytes4[][](1);
117
+ selectors[0] = new bytes4[](1);
118
+ selectors[0][0] = IProductComponent.setFees.selector;
119
+
120
+ RoleId[] memory roles = new RoleId[](1);
121
+ roles[0] = PRODUCT_OWNER_ROLE();
122
+
123
+ // create target for instane access manager
124
+ getInstanceService().createGifTarget(
125
+ getRegistry().getNftId(address(instance)),
126
+ address(product),
127
+ product.getName(),
128
+ selectors,
129
+ roles);
130
+ }
131
+
132
+ function getDomain() public pure override returns(ObjectType) {
133
+ return PRODUCT();
134
+ }
135
+
136
+
137
+ function _decodeAndVerifyProductData(bytes memory data)
138
+ internal
139
+ returns(string memory name, ISetup.ProductSetupInfo memory setup)
140
+ {
141
+ (name, setup) = abi.decode(
142
+ data,
143
+ (string, ISetup.ProductSetupInfo)
144
+ );
145
+
146
+ // TODO add checks
147
+ // if(wallet == address(0)) {
148
+ // revert WalletIsZero();
149
+ // }
150
+ }
151
+
152
+ function setFees(
153
+ Fee memory productFee,
154
+ Fee memory processingFee
155
+ )
156
+ external
157
+ {
158
+ // TODO check args
159
+
160
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
161
+ InstanceReader instanceReader = instance.getInstanceReader();
162
+
163
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
164
+
165
+ productSetupInfo.productFee = productFee;
166
+ productSetupInfo.processingFee = processingFee;
167
+
168
+ instance.getInstanceStore().updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
169
+ }
170
+
171
+ function createRisk(
172
+ RiskId riskId,
173
+ bytes memory data
174
+ )
175
+ external
176
+ override
177
+ {
178
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
179
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
180
+
181
+ instance.getInstanceStore().createRisk(
182
+ riskId,
183
+ riskInfo
184
+ );
185
+ }
186
+
187
+ function updateRisk(
188
+ RiskId riskId,
189
+ bytes memory data
190
+ )
191
+ external
192
+ {
193
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
194
+ InstanceReader instanceReader = instance.getInstanceReader();
195
+
196
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
197
+ riskInfo.data = data;
198
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
199
+ }
200
+
201
+ function updateRiskState(
202
+ RiskId riskId,
203
+ StateId state
204
+ )
205
+ external
206
+ {
207
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
208
+ instance.getInstanceStore().updateRiskState(riskId, state);
209
+ }
210
+ }
@@ -1,12 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../../shared/IVersionable.sol";
5
- import {ProxyManager} from "../../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
6
  import {ProductService} from "./ProductService.sol";
7
- import {Registry} from "../../registry/Registry.sol";
8
- import {RegistryService} from "../../registry/RegistryService.sol";
9
- import {VersionLib} from "../../types/Version.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {VersionLib} from "../type/Version.sol";
10
10
 
11
11
  contract ProductServiceManager is ProxyManager {
12
12
 
@@ -59,7 +59,13 @@ contract ChainNft is ERC721Enumerable {
59
59
  }
60
60
 
61
61
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
- _idNext = 3;
62
+
63
+ // the first object registered through normal registration starts with id 4
64
+ // 1 -> protocol
65
+ // 2 -> registry
66
+ // 3 -> staking
67
+ // >= 4 -> all other objects
68
+ _idNext = 4;
63
69
  }
64
70
 
65
71
  /**
@@ -3,10 +3,10 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {VersionPart} from "../types/Version.sol";
9
- import {Timestamp} from "../types/Timestamp.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+ import {Timestamp} from "../type/Timestamp.sol";
10
10
 
11
11
  interface IRegistry is IERC165 {
12
12
 
@@ -29,6 +29,9 @@ interface IRegistry is IERC165 {
29
29
  error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
30
30
  error ContractAlreadyRegistered(address objectAddress);
31
31
 
32
+ // _registerStaking()
33
+ error StakingAlreadyRegistered(address stakingAddress);
34
+
32
35
  struct ObjectInfo {
33
36
  NftId nftId;
34
37
  NftId parentNftId;
@@ -37,8 +40,7 @@ interface IRegistry is IERC165 {
37
40
  address objectAddress;
38
41
  address initialOwner;
39
42
  bytes data;
40
- }// TODO delete nftId and initialOwner(if not used) from struct
41
- // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
43
+ }
42
44
 
43
45
  struct ReleaseInfo {
44
46
  ObjectType[] domains;
@@ -46,6 +48,11 @@ interface IRegistry is IERC165 {
46
48
  //Timestamp updatedAt;
47
49
  }
48
50
 
51
+ function registerStaking(
52
+ address stakingAddress,
53
+ address stakingOwner
54
+ ) external returns(NftId nftId);
55
+
49
56
  function registerService(
50
57
  ObjectInfo memory serviceInfo,
51
58
  VersionPart serviceVersion,
@@ -93,6 +100,8 @@ interface IRegistry is IERC165 {
93
100
  VersionPart releaseVersion
94
101
  ) external view returns (address serviceAddress);
95
102
 
103
+ function getStakingAddress() external view returns (address staking);
104
+
96
105
  function getReleaseManagerAddress() external view returns (address);
97
106
 
98
107
  function getChainNftAddress() external view returns (address);
@@ -1,20 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
8
- import {RoleId} from "../types/RoleId.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
9
  import {IService} from "../shared/IService.sol";
10
10
  import {IRegistry} from "./IRegistry.sol";
11
11
 
12
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
13
- import {IComponent} from "../components/IComponent.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
14
 
15
15
  interface IRegistryService is
16
- IService,
17
- IAccessManaged
16
+ IService
18
17
  {
19
18
  error SelfRegistration();
20
19
  error NotRegistryOwner();
@@ -45,7 +44,9 @@ interface IRegistryService is
45
44
  FunctionConfig[] memory config
46
45
  );
47
46
 
48
- // TODO used by service -> add owner arg
47
+ function registerStaking(IRegisterable staking, address owner)
48
+ external returns(IRegistry.ObjectInfo memory info);
49
+
49
50
  function registerInstance(IRegisterable instance, address owner)
50
51
  external returns(IRegistry.ObjectInfo memory info);
51
52
 
@@ -63,5 +64,6 @@ interface IRegistryService is
63
64
  function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
64
65
 
65
66
  function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
67
+
66
68
  }
67
69
 
@@ -3,9 +3,9 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {NftId, toNftId, zeroNftId} from "../types/NftId.sol";
7
- import {VersionPart} from "../types/Version.sol";
8
- import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../types/ObjectType.sol";
6
+ import {NftId, toNftId, zeroNftId} from "../type/NftId.sol";
7
+ import {VersionPart} from "../type/Version.sol";
8
+ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING, PRODUCT, DISTRIBUTION, DISTRIBUTOR, ORACLE, POOL, POLICY, BUNDLE} from "../type/ObjectType.sol";
9
9
 
10
10
  import {ChainNft} from "./ChainNft.sol";
11
11
  import {IRegistry} from "./IRegistry.sol";
@@ -26,6 +26,7 @@ contract Registry is
26
26
  {
27
27
  address public constant NFT_LOCK_ADDRESS = address(0x1);
28
28
  uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
29
+ uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
29
30
  string public constant EMPTY_URI = "";
30
31
 
31
32
  mapping(NftId nftId => ObjectInfo info) private _info;
@@ -45,6 +46,7 @@ contract Registry is
45
46
  ChainNft private _chainNft;
46
47
 
47
48
  ReleaseManager private _releaseManager;
49
+ address private _stakingAddress;
48
50
 
49
51
  modifier onlyRegistryService() {
50
52
  if(!_releaseManager.isActiveRegistryService(msg.sender)) {
@@ -60,8 +62,7 @@ contract Registry is
60
62
  _;
61
63
  }
62
64
 
63
- constructor()
64
- {
65
+ constructor() {
65
66
  _releaseManager = ReleaseManager(msg.sender);
66
67
 
67
68
  // deploy NFT
@@ -75,6 +76,38 @@ contract Registry is
75
76
  _setupValidCoreTypesAndCombinations();
76
77
  }
77
78
 
79
+
80
+ function registerStaking(
81
+ address stakingAddress,
82
+ address stakingOwner
83
+ )
84
+ external
85
+ onlyReleaseManager
86
+ returns(NftId stakingNftId)
87
+ {
88
+ // staking contract for same chain may only be registered once
89
+ if (_stakingAddress != address(0)) {
90
+ revert StakingAlreadyRegistered(_stakingAddress);
91
+ }
92
+
93
+ _stakingAddress = stakingAddress;
94
+ uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
95
+ stakingNftId = toNftId(stakingId);
96
+
97
+ _nftIdByAddress[_stakingAddress] = stakingNftId;
98
+ _info[stakingNftId] = ObjectInfo({
99
+ nftId: stakingNftId,
100
+ parentNftId: _registryNftId,
101
+ objectType: STAKING(),
102
+ isInterceptor: false,
103
+ objectAddress: _stakingAddress,
104
+ initialOwner: stakingOwner,
105
+ data: ""
106
+ });
107
+
108
+ _chainNft.mint(stakingOwner, stakingId);
109
+ }
110
+
78
111
  function registerService(
79
112
  ObjectInfo memory info,
80
113
  VersionPart version,
@@ -239,6 +272,10 @@ contract Registry is
239
272
  return _releaseManager.isValidRelease(version);
240
273
  }
241
274
 
275
+ function getStakingAddress() external view returns (address staking) {
276
+ return _stakingAddress;
277
+ }
278
+
242
279
  function getServiceAddress(
243
280
  ObjectType serviceDomain,
244
281
  VersionPart releaseVersion
@@ -439,10 +476,11 @@ contract Registry is
439
476
  _coreTypes[DISTRIBUTION()] = true;
440
477
  _coreTypes[POLICY()] = true;
441
478
  _coreTypes[BUNDLE()] = true;
479
+ _coreTypes[STAKING()] = true;
442
480
  _coreTypes[STAKE()] = true;
443
481
 
444
- // registry as parent, ONLY registry owner
445
- //_coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
482
+ _coreContractCombinations[REGISTRY()][REGISTRY()] = true; // only for global regstry
483
+ _coreContractCombinations[STAKING()][REGISTRY()] = true; // only for chain staking contract
446
484
  _coreContractCombinations[TOKEN()][REGISTRY()] = true;
447
485
  //_coreContractCombinations[SERVICE()][REGISTRY()] = true;// do not need it here -> registerService() registers exactly this combination
448
486
 
@@ -7,7 +7,7 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
7
7
  import {RoleId, RoleIdLib,
8
8
  GIF_MANAGER_ROLE,
9
9
  GIF_ADMIN_ROLE,
10
- RELEASE_MANAGER_ROLE} from "../types/RoleId.sol";
10
+ RELEASE_MANAGER_ROLE} from "../type/RoleId.sol";
11
11
 
12
12
  import {TokenRegistry} from "./TokenRegistry.sol";
13
13
  import {ReleaseManager} from "./ReleaseManager.sol";
@@ -19,7 +19,7 @@ import {ReleaseManager} from "./ReleaseManager.sol";
19
19
  - responsible for setting and granting of REGISTRAR roles
20
20
  1) REGISTRAR roles
21
21
  - set and granted by RELEASE_MANAGER_ROLE
22
- - each has 1 unique member (regular service ver.X) (subject to change)
22
+ - for each service and major version X there is 1 unique member (the service with version X itself) (subject to change)
23
23
  - each set to 1 target (registry service ver.X) and 1 selector (function of registry service ver.X) (subject to change)
24
24
  2) GIF_MANAGER_ROLE
25
25
  - can have arbitrary number of members
@@ -154,20 +154,11 @@ contract RegistryAccessManager is AccessManaged
154
154
 
155
155
  function _configureAdminRole() private
156
156
  {
157
- bytes4[] memory functionSelector = new bytes4[](1);
158
-
159
- // for RegistryServiceProxyManager
160
- // TODO upgrading with releaseManager.upgrade()->proxy.upgrade()???
161
- //functionSelector[0] = RegistryServiceManager.upgrade.selector;
162
- //_setTargetFunctionRole(address(this), functionSelector, GIF_ADMIN_ROLE());
163
-
164
- // for TokenRegistry
165
-
166
157
  // for ReleaseManager
167
- functionSelector[0] = ReleaseManager.createNextRelease.selector;
168
- _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
169
-
170
- functionSelector[0] = ReleaseManager.activateNextRelease.selector;
158
+ bytes4[] memory functionSelector = new bytes4[](3);
159
+ functionSelector[0] = ReleaseManager.registerStaking.selector;
160
+ functionSelector[1] = ReleaseManager.createNextRelease.selector;
161
+ functionSelector[2] = ReleaseManager.activateNextRelease.selector;
171
162
  _setTargetFunctionRole(_releaseManager, functionSelector, GIF_ADMIN_ROLE());
172
163
  }
173
164
 
@@ -2,28 +2,27 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ // import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
6
6
 
7
7
  import {IRegistry} from "./IRegistry.sol";
8
8
  import {IInstance} from "../instance/IInstance.sol";
9
9
 
10
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
11
- import {IComponent} from "../../contracts/components/IComponent.sol";
12
- import {IPoolComponent} from "../../contracts/components/IPoolComponent.sol";
13
- import {IProductComponent} from "../../contracts/components/IProductComponent.sol";
14
- import {IDistributionComponent} from "../../contracts/components/IDistributionComponent.sol";
10
+ import {IComponent} from "../../contracts/shared/IComponent.sol";
11
+ import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
12
+ import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
13
+ import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
15
14
 
16
15
  import {IVersionable} from "../../contracts/shared/IVersionable.sol";
17
16
  import {Versionable} from "../../contracts/shared/Versionable.sol";
18
17
  import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
19
18
  import {Registerable} from "../../contracts/shared/Registerable.sol";
20
19
 
21
- import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/types/RoleId.sol";
22
- import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE} from "../../contracts/types/ObjectType.sol";
23
- import {StateId, ACTIVE, PAUSED} from "../../contracts/types/StateId.sol";
24
- import {NftId, NftIdLib, zeroNftId} from "../../contracts/types/NftId.sol";
25
- import {Fee, FeeLib} from "../../contracts/types/Fee.sol";
26
- import {Version, VersionPart, VersionLib} from "../../contracts/types/Version.sol";
20
+ import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
21
+ import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
22
+ import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
23
+ import {NftId, NftIdLib, zeroNftId} from "../../contracts/type/NftId.sol";
24
+ import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
25
+ import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
27
26
 
28
27
  import {Service} from "../shared/Service.sol";
29
28
  import {IService} from "../shared/IService.sol";
@@ -31,7 +30,6 @@ import {IRegistryService} from "./IRegistryService.sol";
31
30
  import {Registry} from "./Registry.sol";
32
31
 
33
32
  contract RegistryService is
34
- AccessManagedUpgradeable,
35
33
  Service,
36
34
  IRegistryService
37
35
  {
@@ -41,7 +39,7 @@ contract RegistryService is
41
39
  bytes32 public constant REGISTRY_CREATION_CODE_HASH = bytes32(0);
42
40
 
43
41
  // From IService
44
- function getDomain() public pure override(IService, Service) returns(ObjectType serviceDomain) {
42
+ function getDomain() public pure override returns(ObjectType serviceDomain) {
45
43
  return REGISTRY();
46
44
  }
47
45
 
@@ -61,14 +59,28 @@ contract RegistryService is
61
59
  address initialAuthority
62
60
  ) = abi.decode(data, (address, address));
63
61
 
64
- __AccessManaged_init(initialAuthority);
62
+ initializeService(registryAddress, initialAuthority, owner);
65
63
 
66
- initializeService(registryAddress, owner);
67
64
  registerInterface(type(IRegistryService).interfaceId);
68
65
  }
69
66
 
67
+
68
+ function registerStaking(IRegisterable staking, address owner)
69
+ external
70
+ virtual
71
+ restricted
72
+ returns(
73
+ IRegistry.ObjectInfo memory info
74
+ )
75
+ {
76
+ info = _getAndVerifyContractInfo(staking, STAKING(), owner);
77
+ info.nftId = getRegistry().register(info);
78
+ }
79
+
80
+
70
81
  function registerInstance(IRegisterable instance, address owner)
71
82
  external
83
+ virtual
72
84
  restricted
73
85
  returns(
74
86
  IRegistry.ObjectInfo memory info
@@ -178,7 +190,7 @@ contract RegistryService is
178
190
  FunctionConfig[] memory config
179
191
  )
180
192
  {
181
- config = new FunctionConfig[](8);
193
+ config = new FunctionConfig[](10);
182
194
 
183
195
  // order of service registrations MUST be reverse to this array
184
196
  /*config[-1].serviceDomain = STAKE();
@@ -194,27 +206,36 @@ contract RegistryService is
194
206
  config[2].serviceDomain = CLAIM();
195
207
  config[2].selectors = new bytes4[](0);
196
208
 
197
- config[3].serviceDomain = BUNDLE();
209
+ config[3].serviceDomain = PRODUCT();
198
210
  config[3].selectors = new bytes4[](1);
199
- config[3].selectors[0] = RegistryService.registerBundle.selector;
211
+ config[3].selectors[0] = RegistryService.registerProduct.selector;
200
212
 
201
- config[4].serviceDomain = PRODUCT();
213
+ config[4].serviceDomain = POOL();
202
214
  config[4].selectors = new bytes4[](1);
203
- config[4].selectors[0] = RegistryService.registerProduct.selector;
215
+ config[4].selectors[0] = RegistryService.registerPool.selector;
204
216
 
205
- config[5].serviceDomain = POOL();
217
+ // registration of bundle service must preceed registration of pool service
218
+ config[5].serviceDomain = BUNDLE();
206
219
  config[5].selectors = new bytes4[](1);
207
- config[5].selectors[0] = RegistryService.registerPool.selector;
220
+ config[5].selectors[0] = RegistryService.registerBundle.selector;
221
+
222
+ // registration of pricing service must preceed registration of application service
223
+ config[6].serviceDomain = PRICE();
224
+ config[6].selectors = new bytes4[](0);
225
+
226
+ // registration of distribution service must preceed registration of pricing service
227
+ config[7].serviceDomain = DISTRIBUTION();
228
+ config[7].selectors = new bytes4[](2);
229
+ config[7].selectors[0] = RegistryService.registerDistribution.selector;
230
+ config[7].selectors[1] = RegistryService.registerDistributor.selector;
208
231
 
209
- config[6].serviceDomain = DISTRIBUTION();
210
- config[6].selectors = new bytes4[](2);
211
- config[6].selectors[0] = RegistryService.registerDistribution.selector;
212
- config[6].selectors[1] = RegistryService.registerDistributor.selector;
232
+ config[8].serviceDomain = INSTANCE();
233
+ config[8].selectors = new bytes4[](1);
234
+ config[8].selectors[0] = RegistryService.registerInstance.selector;
213
235
 
214
- // registerInstance() have no restriction
215
- config[7].serviceDomain = INSTANCE();
216
- config[7].selectors = new bytes4[](1);
217
- config[7].selectors[0] = RegistryService.registerInstance.selector;
236
+ config[9].serviceDomain = STAKING();
237
+ config[9].selectors = new bytes4[](1);
238
+ config[9].selectors[0] = RegistryService.registerStaking.selector;
218
239
  }
219
240
 
220
241
  // Internal
@@ -3,8 +3,6 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
5
 
6
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
7
-
8
6
  import {Registry} from "./Registry.sol";
9
7
  import {IVersionable} from "../shared/IVersionable.sol";
10
8
  import {ProxyManager} from "../shared/ProxyManager.sol";