@etherisc/gif-next 0.0.2-cbce707-667 → 0.0.2-cbfb727-329

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 (484) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
  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/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3054
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  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 +437 -256
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +452 -364
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +285 -121
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  36. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +44 -14
  38. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  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/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +338 -354
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  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/pool/Pool.sol/Pool.json +1407 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -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 +1376 -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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
  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/product/Product.sol/Product.json +1198 -0
  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 +15 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +227 -224
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +231 -226
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +245 -334
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +228 -315
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +283 -151
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
  122. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  124. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  126. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  127. package/artifacts/contracts/shared/{RegisterableUpgradable.sol/RegisterableUpgradable.json → ComponentService.sol/ComponentService.json} +311 -122
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  131. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +285 -65
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  155. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  162. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +224 -187
  164. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  165. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  167. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  168. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  169. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  170. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  172. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  173. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  174. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  176. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  178. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  180. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  181. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  182. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  184. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  185. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  186. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  187. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  188. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  190. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  192. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  194. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  196. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  198. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  200. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  202. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  203. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  204. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  206. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  207. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  208. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  209. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  210. package/contracts/distribution/Distribution.sol +285 -0
  211. package/contracts/distribution/DistributionService.sol +348 -0
  212. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -17
  213. package/contracts/distribution/IDistributionComponent.sol +71 -0
  214. package/contracts/distribution/IDistributionService.sol +87 -0
  215. package/contracts/instance/BundleManager.sol +126 -0
  216. package/contracts/instance/IInstance.sol +62 -24
  217. package/contracts/instance/IInstanceService.sol +56 -13
  218. package/contracts/instance/Instance.sol +151 -365
  219. package/contracts/instance/InstanceAccessManager.sol +431 -178
  220. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  221. package/contracts/instance/InstanceReader.sol +109 -47
  222. package/contracts/instance/InstanceService.sol +250 -124
  223. package/contracts/instance/InstanceServiceManager.sol +11 -13
  224. package/contracts/instance/InstanceStore.sol +211 -0
  225. package/contracts/instance/base/Cloneable.sol +51 -0
  226. package/contracts/instance/base/IKeyValueStore.sol +5 -5
  227. package/contracts/instance/base/ILifecycle.sol +3 -3
  228. package/contracts/instance/base/KeyValueStore.sol +22 -42
  229. package/contracts/instance/base/Lifecycle.sol +27 -7
  230. package/contracts/instance/base/ObjectManager.sol +82 -0
  231. package/contracts/instance/module/IAccess.sol +37 -21
  232. package/contracts/instance/module/IBundle.sol +11 -8
  233. package/contracts/instance/module/IComponents.sol +41 -0
  234. package/contracts/instance/module/IDistribution.sol +7 -4
  235. package/contracts/instance/module/IPolicy.sol +47 -15
  236. package/contracts/instance/module/IRisk.sol +1 -1
  237. package/contracts/instance/module/ISetup.sol +11 -22
  238. package/contracts/instance/module/ITreasury.sol +2 -2
  239. package/contracts/pool/BundleService.sol +382 -0
  240. package/contracts/pool/BundleServiceManager.sol +51 -0
  241. package/contracts/pool/IBundleService.sol +118 -0
  242. package/contracts/pool/IPoolComponent.sol +114 -0
  243. package/contracts/pool/IPoolService.sol +114 -0
  244. package/contracts/pool/Pool.sol +302 -0
  245. package/contracts/pool/PoolService.sol +403 -0
  246. package/contracts/{instance/service → pool}/PoolServiceManager.sol +15 -17
  247. package/contracts/product/ApplicationService.sol +186 -0
  248. package/contracts/product/ApplicationServiceManager.sol +35 -0
  249. package/contracts/product/ClaimService.sol +437 -0
  250. package/contracts/product/ClaimServiceManager.sol +35 -0
  251. package/contracts/product/IApplicationService.sol +62 -0
  252. package/contracts/product/IClaimService.sol +90 -0
  253. package/contracts/product/IPolicyService.sol +80 -0
  254. package/contracts/product/IPricingService.sol +37 -0
  255. package/contracts/product/IProductComponent.sol +41 -0
  256. package/contracts/product/IProductService.sol +40 -0
  257. package/contracts/product/PolicyService.sol +376 -0
  258. package/contracts/product/PolicyServiceManager.sol +54 -0
  259. package/contracts/product/PricingService.sol +275 -0
  260. package/contracts/product/PricingServiceManager.sol +51 -0
  261. package/contracts/product/Product.sol +375 -0
  262. package/contracts/product/ProductService.sol +210 -0
  263. package/contracts/product/ProductServiceManager.sol +54 -0
  264. package/contracts/registry/ChainNft.sol +9 -1
  265. package/contracts/registry/IRegistry.sol +43 -36
  266. package/contracts/registry/IRegistryService.sol +49 -16
  267. package/contracts/registry/ITransferInterceptor.sol +1 -0
  268. package/contracts/registry/Registry.sol +234 -256
  269. package/contracts/registry/RegistryAccessManager.sol +216 -0
  270. package/contracts/registry/RegistryService.sol +126 -240
  271. package/contracts/registry/RegistryServiceManager.sol +21 -41
  272. package/contracts/registry/ReleaseManager.sol +324 -0
  273. package/contracts/registry/TokenRegistry.sol +22 -17
  274. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  275. package/contracts/shared/Component.sol +271 -0
  276. package/contracts/shared/ComponentService.sol +150 -0
  277. package/contracts/shared/ERC165.sol +14 -12
  278. package/contracts/shared/IComponent.sol +90 -0
  279. package/contracts/shared/INftOwnable.sol +12 -11
  280. package/contracts/shared/IPolicyHolder.sol +40 -0
  281. package/contracts/shared/IRegisterable.sol +4 -6
  282. package/contracts/shared/IRegistryLinked.sol +11 -0
  283. package/contracts/shared/IService.sol +7 -4
  284. package/contracts/shared/IVersionable.sol +5 -48
  285. package/contracts/shared/NftOwnable.sol +65 -83
  286. package/contracts/shared/PolicyHolder.sol +94 -0
  287. package/contracts/shared/ProxyManager.sol +100 -25
  288. package/contracts/shared/Registerable.sol +26 -41
  289. package/contracts/shared/RegistryLinked.sol +43 -0
  290. package/contracts/shared/Service.sol +42 -24
  291. package/contracts/shared/TokenHandler.sol +14 -6
  292. package/contracts/shared/Versionable.sol +4 -92
  293. package/contracts/staking/IStakingService.sol +102 -0
  294. package/contracts/staking/StakeingServiceManager.sol +37 -0
  295. package/contracts/staking/StakingService.sol +166 -0
  296. package/contracts/type/Amount.sol +109 -0
  297. package/contracts/{types → type}/Blocknumber.sol +1 -0
  298. package/contracts/type/ClaimId.sol +75 -0
  299. package/contracts/{types → type}/DistributorType.sol +2 -2
  300. package/contracts/{types → type}/Fee.sol +17 -8
  301. package/contracts/{types → type}/NftId.sol +8 -0
  302. package/contracts/type/NftIdSet.sol +62 -0
  303. package/contracts/{types → type}/ObjectType.sol +16 -7
  304. package/contracts/type/PayoutId.sol +82 -0
  305. package/contracts/{types → type}/Referral.sol +4 -0
  306. package/contracts/{types → type}/RoleId.sol +26 -18
  307. package/contracts/type/Seconds.sol +54 -0
  308. package/contracts/{types → type}/StateId.sol +7 -2
  309. package/contracts/{types → type}/Timestamp.sol +18 -13
  310. package/contracts/{types → type}/UFixed.sol +1 -0
  311. package/contracts/{types → type}/Version.sol +1 -0
  312. package/package.json +3 -3
  313. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  314. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  315. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  316. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  317. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  318. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  319. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  320. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  321. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  323. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  324. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  325. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  326. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
  327. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  328. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  329. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  333. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  335. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  337. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  339. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  341. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  343. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  345. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  349. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  352. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  354. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  356. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  360. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  362. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  364. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  366. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  368. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  369. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  370. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  371. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  372. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  373. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  374. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  376. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  377. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  378. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  379. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -657
  380. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  381. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
  382. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  383. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  385. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -796
  388. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  389. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  390. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  391. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  392. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  393. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  394. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  395. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  396. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  397. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  398. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  399. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  400. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  401. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  402. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  403. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  404. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  405. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  406. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  407. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  408. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  409. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  410. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  411. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  412. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  413. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  414. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  415. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  416. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  417. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  418. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  419. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  420. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  421. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  422. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  423. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  424. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  425. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  426. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  428. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  429. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  430. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  434. package/contracts/components/BaseComponent.sol +0 -91
  435. package/contracts/components/Distribution.sol +0 -166
  436. package/contracts/components/IBaseComponent.sol +0 -25
  437. package/contracts/components/IDistributionComponent.sol +0 -46
  438. package/contracts/components/IPoolComponent.sol +0 -62
  439. package/contracts/components/IProductComponent.sol +0 -35
  440. package/contracts/components/Pool.sol +0 -247
  441. package/contracts/components/Product.sol +0 -297
  442. package/contracts/experiment/cloning/Cloner.sol +0 -47
  443. package/contracts/experiment/errors/Require.sol +0 -38
  444. package/contracts/experiment/errors/Revert.sol +0 -44
  445. package/contracts/experiment/inheritance/A.sol +0 -53
  446. package/contracts/experiment/inheritance/B.sol +0 -28
  447. package/contracts/experiment/inheritance/C.sol +0 -34
  448. package/contracts/experiment/inheritance/IA.sol +0 -13
  449. package/contracts/experiment/inheritance/IB.sol +0 -10
  450. package/contracts/experiment/inheritance/IC.sol +0 -12
  451. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  452. package/contracts/experiment/statemachine/ISM.sol +0 -25
  453. package/contracts/experiment/statemachine/SM.sol +0 -57
  454. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  455. package/contracts/experiment/types/TypeA.sol +0 -47
  456. package/contracts/experiment/types/TypeB.sol +0 -29
  457. package/contracts/instance/AccessManagedSimple.sol +0 -115
  458. package/contracts/instance/AccessManagerSimple.sol +0 -692
  459. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  460. package/contracts/instance/base/ComponentServiceBase.sol +0 -41
  461. package/contracts/instance/base/IInstanceBase.sol +0 -23
  462. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  463. package/contracts/instance/service/DistributionService.sol +0 -105
  464. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  465. package/contracts/instance/service/IDistributionService.sol +0 -12
  466. package/contracts/instance/service/IPoolService.sol +0 -37
  467. package/contracts/instance/service/IProductService.sol +0 -107
  468. package/contracts/instance/service/PoolService.sol +0 -211
  469. package/contracts/shared/ContractDeployerLib.sol +0 -72
  470. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  471. package/contracts/test/TestFee.sol +0 -25
  472. package/contracts/test/TestRegisterable.sol +0 -18
  473. package/contracts/test/TestRoleId.sol +0 -14
  474. package/contracts/test/TestService.sol +0 -24
  475. package/contracts/test/TestToken.sol +0 -26
  476. package/contracts/test/TestVersion.sol +0 -44
  477. package/contracts/test/TestVersionable.sol +0 -17
  478. package/contracts/test/Usdc.sol +0 -26
  479. package/contracts/types/ChainId.sol +0 -38
  480. package/contracts/types/NftIdSet.sol +0 -60
  481. package/contracts/types/NumberId.sol +0 -52
  482. /package/contracts/{types → type}/AddressSet.sol +0 -0
  483. /package/contracts/{types → type}/Key32.sol +0 -0
  484. /package/contracts/{types → type}/RiskId.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 {IComponent} from "../shared/IComponent.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
+ IComponent 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
+ IComponent distribution = IComponent(getRegistry().getObjectInfo(setup.distributionNftId).objectAddress);
106
+ IComponent pool = IComponent(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
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {VersionLib} from "../type/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ // _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }
@@ -59,7 +59,7 @@ contract ChainNft is ERC721Enumerable {
59
59
  }
60
60
 
61
61
  _chainIdMultiplier = 10 ** _chainIdDigits;
62
- _idNext = 4;
62
+ _idNext = 3;
63
63
  }
64
64
 
65
65
  /**
@@ -95,6 +95,10 @@ contract ChainNft is ERC721Enumerable {
95
95
 
96
96
  _totalMinted++;
97
97
  _safeMint(to, tokenId);
98
+
99
+ if(interceptor != address(0)) {
100
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
101
+ }
98
102
  }
99
103
 
100
104
 
@@ -195,6 +199,10 @@ contract ChainNft is ERC721Enumerable {
195
199
  _chainIdDigits;
196
200
  }
197
201
 
202
+ function getNextTokenId() external view returns (uint256) {
203
+ return calculateTokenId(_idNext);
204
+ }
205
+
198
206
  function _getNextTokenId() private returns (uint256 id) {
199
207
  id = calculateTokenId(_idNext);
200
208
  _idNext++;
@@ -3,40 +3,31 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
- import {ChainNft} from "./ChainNft.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
9
- import {VersionPart} from "../types/Version.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
 
13
- event LogInitialMajorVersionSet(VersionPart majorVersion);
14
- event LogMajorVersionSet(VersionPart majorVersionMax);
15
- event LogRegistration(ObjectInfo info);
16
- event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
17
- event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
13
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
14
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
18
15
 
19
- // supported versions
20
- error MajorVersionMaxIncreaseInvalid(VersionPart newMajorVersionMax, VersionPart existingMaxMajorVersion);
16
+ // registerService()
17
+ error CallerNotReleaseManager();
18
+ error ServiceAlreadyRegistered(address service);
21
19
 
22
- // token whitelisting
23
- error TokenNotRegistered(address token);
24
- error NotToken(address token);
25
- error TokenMajorVersionInvalid(VersionPart majorVersion);
20
+ // register()
21
+ error CallerNotRegistryService();
22
+ error ServiceRegistration();
26
23
 
27
- // register
28
- error NotRegistryService();
24
+ // registerWithCustomTypes()
25
+ error CoreTypeRegistration();
26
+
27
+ // _register()
29
28
  error ZeroParentAddress();
30
- error ContractAlreadyRegistered(address objectAddress);
31
- error InvalidServiceVersion(VersionPart majorVersion);
32
- error ServiceNameAlreadyRegistered(string name, VersionPart majorVersion);
33
-
34
- // approve
35
- error NotOwner(address account);
36
- error NotRegisteredContract(NftId registrarNftId);
37
- error NotService(NftId registrarNftId);
38
29
  error InvalidTypesCombination(ObjectType objectType, ObjectType parentType);
39
-
30
+ error ContractAlreadyRegistered(address objectAddress);
40
31
 
41
32
  struct ObjectInfo {
42
33
  NftId nftId;
@@ -49,17 +40,29 @@ interface IRegistry is IERC165 {
49
40
  }// TODO delete nftId and initialOwner(if not used) from struct
50
41
  // TODO strong disagree, keep nftId there (lets keep get object info return object consistent)
51
42
 
52
- function setMajorVersion(VersionPart newMajorVersionMax) external;
43
+ struct ReleaseInfo {
44
+ ObjectType[] domains;
45
+ Timestamp createdAt;
46
+ //Timestamp updatedAt;
47
+ }
48
+
49
+ function registerService(
50
+ ObjectInfo memory serviceInfo,
51
+ VersionPart serviceVersion,
52
+ ObjectType serviceDomain
53
+ ) external returns(NftId nftId);
53
54
 
54
55
  function register(ObjectInfo memory info) external returns (NftId nftId);
55
56
 
56
- function setTokenActive(address token, VersionPart majorVersion, bool active) external;
57
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
58
+
59
+ function getInitialVersion() external view returns (VersionPart);
57
60
 
58
- function getMajorVersionMin() external view returns (VersionPart);
61
+ function getNextVersion() external view returns (VersionPart);
59
62
 
60
- function getMajorVersionMax() external view returns (VersionPart);
63
+ function getLatestVersion() external view returns (VersionPart);
61
64
 
62
- function getMajorVersion() external view returns (VersionPart);
65
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
63
66
 
64
67
  function getObjectCount() external view returns (uint256);
65
68
 
@@ -79,16 +82,20 @@ interface IRegistry is IERC165 {
79
82
 
80
83
  function isRegistered(address contractAddress) external view returns (bool);
81
84
 
82
- function isTokenActive(address token, VersionPart majorVersion) external view returns (bool);
85
+ function isRegisteredService(address contractAddress) external view returns (bool);
83
86
 
84
- function getServiceName(NftId nftId) external view returns (string memory name);
87
+ function isRegisteredComponent(address object) external view returns (bool);
88
+
89
+ function isValidRelease(VersionPart version) external view returns (bool);
85
90
 
86
91
  function getServiceAddress(
87
- string memory serviceName,
88
- VersionPart majorVersion
92
+ ObjectType serviceDomain,
93
+ VersionPart releaseVersion
89
94
  ) external view returns (address serviceAddress);
90
95
 
91
- function getChainNft() external view returns (ChainNft);
96
+ function getReleaseManagerAddress() external view returns (address);
97
+
98
+ function getChainNftAddress() external view returns (address);
92
99
 
93
100
  function getOwner() external view returns (address);
94
101
  }
@@ -1,33 +1,66 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../types/NftId.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
6
- import {RoleId} from "../types/RoleId.sol";
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
7
9
  import {IService} from "../shared/IService.sol";
8
10
  import {IRegistry} from "./IRegistry.sol";
9
11
 
10
12
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../components/IBaseComponent.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
+
15
+ interface IRegistryService is
16
+ IService
17
+ {
18
+ error SelfRegistration();
19
+ error NotRegistryOwner();
20
+
21
+ error NotService();
22
+ error NotInstance();
23
+ error NotProduct();
24
+ error NotPool();
25
+ error NotDistribution();
26
+
27
+ error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
28
+ error NotRegisterableOwner(address expectedOwner);
29
+ error RegisterableOwnerIsZero();
30
+ error RegisterableOwnerIsRegistered();
31
+ error InvalidInitialOwner(address initialOwner);
32
+ error InvalidAddress(address registerableAddress);
33
+
34
+ struct FunctionConfig
35
+ {
36
+ ObjectType serviceDomain;
37
+ bytes4[] selectors;
38
+ }
12
39
 
13
- interface IRegistryService is IService {
40
+ function getFunctionConfigs()
41
+ external
42
+ pure
43
+ returns(
44
+ FunctionConfig[] memory config
45
+ );
14
46
 
15
- function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
47
+ // TODO used by service -> add owner arg
48
+ function registerInstance(IRegisterable instance, address owner)
49
+ external returns(IRegistry.ObjectInfo memory info);
16
50
 
17
- function registerInstance(IRegisterable instance)
18
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
51
+ function registerProduct(IComponent product, address owner)
52
+ external returns(IRegistry.ObjectInfo memory info);
19
53
 
20
- function registerProduct(IBaseComponent product, address owner)
21
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
54
+ function registerPool(IComponent pool, address owner)
55
+ external returns(IRegistry.ObjectInfo memory info);
22
56
 
23
- function registerPool(IBaseComponent pool, address owner)
24
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
57
+ function registerDistribution(IComponent distribution, address owner)
58
+ external returns(IRegistry.ObjectInfo memory info);
25
59
 
26
- function registerDistribution(IBaseComponent distribution, address owner)
27
- external returns(IRegistry.ObjectInfo memory info, bytes memory data);
60
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
28
61
 
29
- function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
62
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
30
63
 
31
- function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
64
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
32
65
  }
33
66
 
@@ -2,5 +2,6 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  interface ITransferInterceptor {
5
+ function nftMint(address to, uint256 tokenId) external;
5
6
  function nftTransferFrom(address from, address to, uint256 tokenId) external;
6
7
  }