@etherisc/gif-next 0.0.2-e9148e0-933 → 0.0.2-e922e07-736

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 (352) hide show
  1. package/README.md +136 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +879 -236
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → components/IComponent.sol/IComponent.json} +164 -159
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +689 -30
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +838 -58
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +524 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +950 -281
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +568 -188
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +86 -2
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1912 -421
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +194 -165
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +901 -1127
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +126 -159
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +420 -305
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -112
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +189 -177
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  48. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  55. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1096 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1221 -213
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -79
  70. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +633 -0
  74. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +150 -207
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +727 -160
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +37 -251
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +47 -414
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +209 -321
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +296 -95
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +218 -499
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +299 -98
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  97. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +242 -131
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +158 -215
  102. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  104. package/artifacts/contracts/registry/Registry.sol/Registry.json +256 -226
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  106. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +202 -318
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -141
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  112. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  115. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  117. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  119. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  121. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  124. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  125. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  126. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IService.sol/IService.json +31 -183
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  140. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Service.sol/Service.json +127 -170
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +148 -227
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  158. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  159. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  160. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  163. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  166. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  168. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  173. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  176. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  178. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  180. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  182. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  184. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  186. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  189. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  193. package/contracts/components/Component.sol +221 -0
  194. package/contracts/components/Distribution.sol +200 -79
  195. package/contracts/components/IComponent.sol +68 -0
  196. package/contracts/components/IDistributionComponent.sol +44 -17
  197. package/contracts/components/IPoolComponent.sol +126 -37
  198. package/contracts/components/IProductComponent.sol +10 -5
  199. package/contracts/components/Pool.sol +288 -152
  200. package/contracts/components/Product.sol +124 -119
  201. package/contracts/instance/BundleManager.sol +125 -0
  202. package/contracts/instance/Cloneable.sol +46 -0
  203. package/contracts/instance/IInstance.sol +56 -5
  204. package/contracts/instance/IInstanceService.sol +33 -4
  205. package/contracts/instance/Instance.sol +109 -261
  206. package/contracts/instance/InstanceAccessManager.sol +87 -78
  207. package/contracts/instance/InstanceReader.sol +12 -25
  208. package/contracts/instance/InstanceService.sol +401 -104
  209. package/contracts/instance/InstanceServiceManager.sol +6 -9
  210. package/contracts/instance/ObjectManager.sol +84 -0
  211. package/contracts/instance/base/ComponentService.sol +134 -0
  212. package/contracts/instance/module/IAccess.sol +27 -18
  213. package/contracts/instance/module/IBundle.sol +2 -1
  214. package/contracts/instance/module/IDistribution.sol +2 -0
  215. package/contracts/instance/module/IPolicy.sol +30 -3
  216. package/contracts/instance/module/ISetup.sol +12 -10
  217. package/contracts/instance/service/ApplicationService.sol +349 -0
  218. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  219. package/contracts/instance/service/BundleService.sol +299 -0
  220. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  221. package/contracts/instance/service/ClaimService.sol +151 -0
  222. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  223. package/contracts/instance/service/DistributionService.sol +390 -28
  224. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  225. package/contracts/instance/service/IApplicationService.sol +82 -0
  226. package/contracts/instance/service/IBundleService.sol +55 -0
  227. package/contracts/instance/service/IClaimService.sol +61 -0
  228. package/contracts/instance/service/IDistributionService.sol +86 -0
  229. package/contracts/instance/service/IPolicyService.sol +72 -0
  230. package/contracts/instance/service/IPoolService.sol +6 -23
  231. package/contracts/instance/service/IProductService.sol +6 -73
  232. package/contracts/instance/service/PolicyService.sol +394 -0
  233. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  234. package/contracts/instance/service/PoolService.sol +38 -123
  235. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  236. package/contracts/instance/service/ProductService.sol +133 -448
  237. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  238. package/contracts/registry/ChainNft.sol +1 -1
  239. package/contracts/registry/IRegistry.sol +39 -19
  240. package/contracts/registry/IRegistryService.sol +30 -13
  241. package/contracts/registry/Registry.sol +236 -216
  242. package/contracts/registry/RegistryAccessManager.sol +216 -0
  243. package/contracts/registry/RegistryService.sol +96 -171
  244. package/contracts/registry/RegistryServiceManager.sol +21 -39
  245. package/contracts/registry/ReleaseManager.sol +322 -0
  246. package/contracts/registry/TokenRegistry.sol +22 -17
  247. package/contracts/shared/ERC165.sol +14 -12
  248. package/contracts/shared/INftOwnable.sol +11 -10
  249. package/contracts/shared/IPolicyHolder.sol +26 -0
  250. package/contracts/shared/IRegisterable.sol +4 -6
  251. package/contracts/shared/IRegistryLinked.sol +12 -0
  252. package/contracts/shared/IService.sol +4 -1
  253. package/contracts/shared/IVersionable.sol +4 -47
  254. package/contracts/shared/NftOwnable.sol +66 -80
  255. package/contracts/shared/PolicyHolder.sol +81 -0
  256. package/contracts/shared/ProxyManager.sol +100 -25
  257. package/contracts/shared/Registerable.sol +16 -32
  258. package/contracts/shared/RegistryLinked.sol +48 -0
  259. package/contracts/shared/Service.sol +25 -22
  260. package/contracts/shared/Versionable.sol +4 -92
  261. package/contracts/test/TestRegisterable.sol +1 -1
  262. package/contracts/test/TestService.sol +4 -3
  263. package/contracts/types/ClaimId.sol +52 -0
  264. package/contracts/types/DistributorType.sol +2 -2
  265. package/contracts/types/NftIdSet.sol +26 -24
  266. package/contracts/types/ObjectType.sol +9 -5
  267. package/contracts/types/PayoutId.sol +54 -0
  268. package/contracts/types/Referral.sol +4 -0
  269. package/contracts/types/RoleId.sol +19 -14
  270. package/contracts/types/Seconds.sol +54 -0
  271. package/contracts/types/Timestamp.sol +12 -13
  272. package/package.json +3 -3
  273. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  274. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  275. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  276. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  277. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  278. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  279. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  280. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  281. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  282. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  283. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  284. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  285. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  287. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  289. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  291. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  292. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  293. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  295. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  297. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  299. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  302. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  304. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  306. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  308. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  310. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  312. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  314. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  316. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  317. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  318. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  319. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  320. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  321. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  322. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  323. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  324. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  326. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  327. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  328. package/contracts/components/BaseComponent.sol +0 -91
  329. package/contracts/components/IBaseComponent.sol +0 -25
  330. package/contracts/experiment/cloning/Cloner.sol +0 -47
  331. package/contracts/experiment/errors/Require.sol +0 -38
  332. package/contracts/experiment/errors/Revert.sol +0 -44
  333. package/contracts/experiment/inheritance/A.sol +0 -53
  334. package/contracts/experiment/inheritance/B.sol +0 -28
  335. package/contracts/experiment/inheritance/C.sol +0 -34
  336. package/contracts/experiment/inheritance/IA.sol +0 -13
  337. package/contracts/experiment/inheritance/IB.sol +0 -10
  338. package/contracts/experiment/inheritance/IC.sol +0 -12
  339. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  340. package/contracts/experiment/statemachine/ISM.sol +0 -25
  341. package/contracts/experiment/statemachine/SM.sol +0 -57
  342. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  343. package/contracts/experiment/types/TypeA.sol +0 -47
  344. package/contracts/experiment/types/TypeB.sol +0 -29
  345. package/contracts/instance/AccessManagedSimple.sol +0 -115
  346. package/contracts/instance/AccessManagerSimple.sol +0 -692
  347. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  348. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  349. package/contracts/instance/base/IInstanceBase.sol +0 -23
  350. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  351. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  352. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,6 +4,7 @@ pragma solidity ^0.8.19;
4
4
  import {IRegistry} from "../../registry/IRegistry.sol";
5
5
  import {IProductComponent} from "../../components/IProductComponent.sol";
6
6
  import {Product} from "../../components/Product.sol";
7
+ import {IComponent} from "../../components/IComponent.sol";
7
8
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
8
9
  import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
9
10
  import {IInstance} from "../IInstance.sol";
@@ -22,7 +23,7 @@ import {Versionable} from "../../shared/Versionable.sol";
22
23
  import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
23
24
  import {UFixed, UFixedLib} from "../../types/UFixed.sol";
24
25
  import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
25
- import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
26
27
  import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
27
28
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
28
29
  import {Fee, FeeLib} from "../../types/Fee.sol";
@@ -30,22 +31,20 @@ import {ReferralId} from "../../types/Referral.sol";
30
31
  import {RiskId} from "../../types/RiskId.sol";
31
32
  import {StateId} from "../../types/StateId.sol";
32
33
  import {Version, VersionLib} from "../../types/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
33
35
 
34
36
  import {IService} from "../../shared/IService.sol";
35
37
  import {Service} from "../../shared/Service.sol";
36
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
38
+ import {ComponentService} from "../base/ComponentService.sol";
37
39
  import {IProductService} from "./IProductService.sol";
38
40
  import {InstanceReader} from "../InstanceReader.sol";
39
-
40
- string constant PRODUCT_SERVICE_NAME = "ProductService";
41
+ import {IPoolService} from "./PoolService.sol";
41
42
 
42
43
  // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
43
- contract ProductService is ComponentServiceBase, IProductService {
44
+ contract ProductService is ComponentService, IProductService {
44
45
  using NftIdLib for NftId;
45
46
 
46
- string public constant NAME = "ProductService";
47
-
48
- address internal _registryAddress;
47
+ IPoolService internal _poolService;
49
48
 
50
49
  event LogProductServiceSender(address sender);
51
50
 
@@ -57,492 +56,178 @@ contract ProductService is ComponentServiceBase, IProductService {
57
56
  initializer
58
57
  virtual override
59
58
  {
60
- address initialOwner = address(0);
61
- (_registryAddress, initialOwner) = abi.decode(data, (address, address));
59
+ address registryAddress;
60
+ address initialOwner;
61
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
62
62
 
63
- _initializeService(_registryAddress, owner);
63
+ initializeService(registryAddress, owner);
64
64
 
65
- _registerInterface(type(IService).interfaceId);
66
- _registerInterface(type(IProductService).interfaceId);
67
- }
65
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getMajorVersion()));
68
66
 
69
-
70
- function getName() public pure override(IService, Service) returns(string memory name) {
71
- return NAME;
67
+ registerInterface(type(IProductService).interfaceId);
72
68
  }
73
69
 
74
- function _finalizeComponentRegistration(NftId componentNftId, bytes memory initialObjData, IInstance instance) internal override {
75
- ISetup.ProductSetupInfo memory initialSetup = abi.decode(
76
- initialObjData,
77
- (ISetup.ProductSetupInfo)
78
- );
79
- instance.createProductSetup(componentNftId, initialSetup);
80
- }
81
70
 
82
- function setFees(
83
- Fee memory productFee,
84
- Fee memory processingFee
85
- )
71
+ function register(address productAddress)
86
72
  external
87
- override
73
+ returns(NftId productNftId)
88
74
  {
89
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
90
- InstanceReader instanceReader = instance.getInstanceReader();
91
- NftId productNftId = productInfo.nftId;
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);
92
107
 
93
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
94
- productSetupInfo.productFee = productFee;
95
- productSetupInfo.processingFee = processingFee;
96
-
97
- instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
98
- }
108
+ distribution.setProductNftId(productNftId);
109
+ pool.setProductNftId(productNftId);
110
+ product.setProductNftId(productNftId);
111
+ product.linkToRegisteredNftId();
99
112
 
100
- // FIXME: this
101
- function createRisk(
102
- RiskId riskId,
103
- bytes memory data
104
- ) external override {
105
- // (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
106
- // NftId productNftId = productInfo.nftId;
107
- // instance.createRisk(
108
- // riskId,
109
- // productNftId,
110
- // data
111
- // );
112
- }
113
+ // create product setup in instance
114
+ instance.createProductSetup(productNftId, product.getSetupInfo());
113
115
 
114
- // FIXME: this
115
- function setRiskInfo(
116
- RiskId riskId,
117
- IRisk.RiskInfo memory info
118
- ) external {
119
- // (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
120
- // instance.setRiskInfo(
121
- // riskId,
122
- // info
123
- // );
116
+ // create target for instane access manager
117
+ getInstanceService().createGifTarget(
118
+ getRegistry().getNftId(address(instance)),
119
+ address(product),
120
+ product.getName());
121
+ getInstanceService().grantProductDefaultPermissions(instance.getNftId(), address(product), product.getName());
124
122
  }
125
123
 
126
- // FIXME: this
127
- function updateRiskState(
128
- RiskId riskId,
129
- StateId state
130
- ) external {
131
- // (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
132
- // instance.updateRiskState(
133
- // riskId,
134
- // state
135
- // );
124
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
125
+ return PRODUCT();
136
126
  }
137
127
 
138
- function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
139
- IRegistry.ObjectInfo memory productInfo;
140
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
141
- product = Product(productInfo.objectAddress);
142
- }
143
128
 
144
- function calculatePremium(
145
- RiskId riskId,
146
- uint256 sumInsuredAmount,
147
- uint256 lifetime,
148
- bytes memory applicationData,
149
- NftId bundleNftId,
150
- ReferralId referralId
151
- )
152
- public
153
- view
154
- override
155
- returns (
156
- uint256 premiumAmount,
157
- uint256 productFeeAmount,
158
- uint256 poolFeeAmount,
159
- uint256 bundleFeeAmount,
160
- uint256 distributionFeeAmount
161
- )
129
+ function _decodeAndVerifyProductData(bytes memory data)
130
+ internal
131
+ returns(string memory name, ISetup.ProductSetupInfo memory setup)
162
132
  {
163
- Product product = _getAndVerifyInstanceAndProduct();
164
- uint256 netPremiumAmount = product.calculateNetPremium(
165
- sumInsuredAmount,
166
- riskId,
167
- lifetime,
168
- applicationData
133
+ (name, setup) = abi.decode(
134
+ data,
135
+ (string, ISetup.ProductSetupInfo)
169
136
  );
170
137
 
171
- (
172
- productFeeAmount,
173
- poolFeeAmount,
174
- bundleFeeAmount,
175
- distributionFeeAmount
176
- ) = _calculateFeeAmounts(
177
- netPremiumAmount,
178
- product,
179
- bundleNftId,
180
- referralId
181
- );
138
+ // TODO add checks
139
+ // if(wallet == address(0)) {
140
+ // revert WalletIsZero();
141
+ // }
182
142
 
183
- premiumAmount = netPremiumAmount + productFeeAmount;
184
- premiumAmount += poolFeeAmount + bundleFeeAmount;
185
- premiumAmount += distributionFeeAmount;
186
- }
187
-
188
- function _calculateFeeAmounts(
189
- uint256 netPremiumAmount,
190
- Product product,
191
- NftId bundleNftId,
192
- ReferralId referralId
193
- )
194
- internal
195
- view
196
- returns (
197
- uint256 productFeeAmount,
198
- uint256 poolFeeAmount,
199
- uint256 bundleFeeAmount,
200
- uint256 distributionFeeAmount
201
- )
202
- {
203
- IInstance instance = product.getInstance();
204
- // FIXME: this
205
- // ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(product.getNftId());
206
- // IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
207
- // require(bundleInfo.poolNftId == treasuryInfo.poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
208
-
209
- // (productFeeAmount,) = FeeLib.calculateFee(treasuryInfo.productFee, netPremiumAmount);
210
- // (poolFeeAmount,) = FeeLib.calculateFee(treasuryInfo.poolFee, netPremiumAmount);
211
- // (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
212
-
213
- // IRegistry.ObjectInfo memory distributionInfo = getRegistry().getObjectInfo(treasuryInfo.distributionNftId);
214
- // IDistributionComponent distribution = IDistributionComponent(distributionInfo.objectAddress);
215
- // distributionFeeAmount = distribution.calculateFeeAmount(referralId, netPremiumAmount);
216
- }
143
+ // IRegistry.ObjectInfo memory tokenInfo = getRegistry().getObjectInfo(address(info.token));
217
144
 
145
+ // if(tokenInfo.objectType != TOKEN()) {
146
+ // revert InvalidToken();
147
+ // }
218
148
 
219
- function createApplication(
220
- address applicationOwner,
221
- RiskId riskId,
222
- uint256 sumInsuredAmount,
223
- uint256 lifetime,
224
- bytes memory applicationData,
225
- NftId bundleNftId,
226
- ReferralId referralId
227
- ) external override returns (NftId policyNftId) {
228
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
229
- // TODO add validations (see create bundle in pool service)
230
-
231
- policyNftId = getRegistryService().registerPolicy(
232
- IRegistry.ObjectInfo(
233
- zeroNftId(),
234
- productInfo.nftId,
235
- POLICY(),
236
- false, // intercepting property for policies is defined on product
237
- address(0),
238
- applicationOwner,
239
- ""
240
- )
241
- );
149
+ // IRegistry.ObjectInfo memory poolInfo = getRegistry().getObjectInfo(info.poolNftId);
242
150
 
243
- (uint256 premiumAmount,,,,) = calculatePremium(
244
- riskId,
245
- sumInsuredAmount,
246
- lifetime,
247
- applicationData,
248
- bundleNftId,
249
- referralId
250
- );
151
+ // if(poolInfo.objectType != POOL()) {
152
+ // revert InvalidPool();
153
+ // }
251
154
 
252
- // FIXME: this
253
- // instance.createPolicyInfo(
254
- // policyNftId,
255
- // productInfo.nftId,
256
- // referralId,
257
- // riskId,
258
- // sumInsuredAmount,
259
- // premiumAmount,
260
- // lifetime,
261
- // bundleNftId
262
- // );
263
-
264
- // TODO add logging
265
- }
155
+ // if(poolInfo.parentNftId != instanceNftId) {
156
+ // revert InvalidPoolsInstance();
157
+ // }
158
+ // // TODO pool have the same token
159
+ // //ITreasury.PoolSetup memory poolSetup = instance.getPoolSetup(info.poolNftId);
160
+ // //require(tokenInfo.objectAddress == address(poolSetup.token), "ERROR:COS-018:PRODUCT_POOL_TOKEN_MISMATCH");
161
+ // // TODO pool is not linked
266
162
 
267
- function _getAndVerifyUnderwritingSetup(
268
- IInstance instance,
269
- IPolicy.PolicyInfo memory policyInfo
270
- )
271
- internal
272
- view
273
- returns (
274
- ITreasury.TreasuryInfo memory treasuryInfo,
275
- NftId bundleNftId,
276
- IBundle.BundleInfo memory bundleInfo,
277
- uint256 collateralAmount
278
- )
279
- {
280
- // FIXME: this
281
- // check match between policy and bundle (via pool)
282
- // treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
283
- // bundleNftId = policyInfo.bundleNftId;
284
- // bundleInfo = instance.getBundleInfo(bundleNftId);
285
- // require(bundleInfo.poolNftId == treasuryInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
286
-
287
- // // calculate required collateral
288
- // NftId poolNftId = treasuryInfo.poolNftId;
289
- // ISetup.PoolSetupInfo memory poolInfo = instance.getPoolInfo(poolNftId);
290
-
291
- // // obtain remaining return values
292
- // collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
293
- }
163
+ // IRegistry.ObjectInfo memory distributionInfo = getRegistry().getObjectInfo(info.distributionNftId);
294
164
 
295
- function _lockCollateralInBundle(
296
- IInstance instance,
297
- NftId bundleNftId,
298
- IBundle.BundleInfo memory bundleInfo,
299
- NftId policyNftId,
300
- uint256 collateralAmount
301
- )
302
- internal
303
- returns (IBundle.BundleInfo memory)
304
- {
305
- bundleInfo.lockedAmount += collateralAmount;
306
- // FIXME: this
307
- // instance.collateralizePolicy(bundleNftId, policyNftId, collateralAmount);
308
- return bundleInfo;
309
- }
165
+ // if(distributionInfo.objectType != DISTRIBUTION()) {
166
+ // revert InvalidDistribution();
167
+ // }
310
168
 
311
- function _underwriteByPool(
312
- ITreasury.TreasuryInfo memory treasuryInfo,
313
- NftId policyNftId,
314
- IPolicy.PolicyInfo memory policyInfo,
315
- bytes memory bundleFilter,
316
- uint256 collateralAmount
317
- )
318
- internal
319
- {
320
- address poolAddress = getRegistry().getObjectInfo(treasuryInfo.poolNftId).objectAddress;
321
- IPoolComponent pool = IPoolComponent(poolAddress);
322
- pool.underwrite(
323
- policyNftId,
324
- policyInfo.applicationData,
325
- bundleFilter,
326
- collateralAmount);
169
+ // if(distributionInfo.parentNftId != instanceNftId) {
170
+ // revert InvalidDistributionsInstance();
171
+ // }
172
+ // // TODO distribution have the same token
173
+ // // TODO distribution is not linked
327
174
  }
328
175
 
329
-
330
- function revoke(
331
- NftId policyNftId
176
+ function setFees(
177
+ Fee memory productFee,
178
+ Fee memory processingFee
332
179
  )
333
180
  external
334
- override
335
181
  {
336
- require(false, "ERROR:PRS-234:NOT_YET_IMPLEMENTED");
337
- }
338
-
182
+ // TODO check args
339
183
 
340
- function underwrite(
341
- NftId policyNftId,
342
- bool requirePremiumPayment,
343
- Timestamp activateAt
344
- )
345
- external
346
- override
347
- {
348
- // check caller is registered product
349
184
  (
350
185
  IRegistry.ObjectInfo memory productInfo,
351
186
  IInstance instance
352
187
  ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
353
188
 
354
- // check match between policy and calling product
189
+ InstanceReader instanceReader = instance.getInstanceReader();
355
190
  NftId productNftId = productInfo.nftId;
356
- // FIXME: this
357
- // IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
358
- // require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
359
- // require(instance.getState(policyNftId.toKey32(POLICY())) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
360
-
361
- // ITreasury.TreasuryInfo memory treasuryInfo;
362
- // NftId bundleNftId;
363
- // IBundle.BundleInfo memory bundleInfo;
364
- // uint256 collateralAmount;
365
-
366
- // (
367
- // treasuryInfo,
368
- // bundleNftId,
369
- // bundleInfo,
370
- // collateralAmount
371
- // ) = _getAndVerifyUnderwritingSetup(
372
- // instance,
373
- // policyInfo
374
- // );
375
-
376
- // // lock bundle collateral
377
- // bundleInfo = _lockCollateralInBundle(
378
- // instance,
379
- // bundleNftId,
380
- // bundleInfo,
381
- // policyNftId,
382
- // collateralAmount);
383
-
384
- // // set policy state to underwritten
385
- // instance.updatePolicyState(policyNftId, UNDERWRITTEN());
386
-
387
- // // optional activation of policy
388
- // if(activateAt > zeroTimestamp()) {
389
- // policyInfo.activatedAt = activateAt;
390
- // policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
391
-
392
- // instance.updatePolicyState(policyNftId, ACTIVE());
393
- // }
394
-
395
- // // optional collection of premium
396
- // if(requirePremiumPayment) {
397
- // uint256 netPremiumAmount = _processPremiumByTreasury(
398
- // instance,
399
- // productInfo.nftId,
400
- // treasuryInfo,
401
- // policyNftId,
402
- // policyInfo.premiumAmount);
403
-
404
- // policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
405
- // bundleInfo.balanceAmount += netPremiumAmount;
406
- // }
407
-
408
- // instance.setPolicyInfo(policyNftId, policyInfo);
409
- // instance.setBundleInfo(bundleNftId, bundleInfo);
410
-
411
- // // involve pool if necessary
412
- // {
413
- // NftId poolNftId = treasuryInfo.poolNftId;
414
- // ISetup.PoolSetupInfo memory poolInfo = instance.getPoolInfo(poolNftId);
415
-
416
- // if(poolInfo.isVerifying) {
417
- // _underwriteByPool(
418
- // treasuryInfo,
419
- // policyNftId,
420
- // policyInfo,
421
- // bundleInfo.filter,
422
- // collateralAmount
423
- // );
424
- // }
425
- // }
191
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
426
192
 
427
- // TODO add logging
193
+ productSetupInfo.productFee = productFee;
194
+ productSetupInfo.processingFee = processingFee;
195
+
196
+ instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
428
197
  }
429
198
 
430
- function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
431
- UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
432
- UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
433
- return collateralUFixed.toInt();
434
- }
435
-
436
- function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
437
- // check caller is registered product
438
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
439
-
440
- // perform actual token transfers
441
- // FIXME: this
442
- // IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
443
- // ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productInfo.nftId);
444
-
445
- // uint256 premiumAmount = policyInfo.premiumAmount;
446
- // _processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
447
-
448
- // // policy level book keeping for premium paid
449
- // policyInfo.premiumPaidAmount += premiumAmount;
450
-
451
- // // optional activation of policy
452
- // if(activateAt > zeroTimestamp()) {
453
- // require(
454
- // policyInfo.activatedAt.eqz(),
455
- // "ERROR:PRS-030:ALREADY_ACTIVATED");
456
-
457
- // policyInfo.activatedAt = activateAt;
458
- // policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
459
-
460
- // instance.updatePolicyState(policyNftId, ACTIVE());
461
- // }
462
-
463
- // instance.setPolicyInfo(policyNftId, policyInfo);
464
-
465
- // TODO add logging
199
+ function createRisk(
200
+ RiskId riskId,
201
+ bytes memory data
202
+ ) external override {
203
+ (
204
+ IRegistry.ObjectInfo memory productInfo,
205
+ IInstance instance
206
+ ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
207
+ NftId productNftId = productInfo.nftId;
208
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
209
+ instance.createRisk(
210
+ riskId,
211
+ riskInfo
212
+ );
466
213
  }
467
214
 
468
- // FIXME: this
469
- function activate(NftId policyNftId, Timestamp activateAt) external override {
470
- // check caller is registered product
215
+ function updateRisk(
216
+ RiskId riskId,
217
+ bytes memory data
218
+ ) external {
471
219
  (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
472
-
473
- // IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
474
-
475
- // require(
476
- // policyInfo.activatedAt.eqz(),
477
- // "ERROR:PRS-020:ALREADY_ACTIVATED");
478
-
479
- // policyInfo.activatedAt = activateAt;
480
- // policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
481
-
482
- // instance.setPolicyInfo(policyNftId, policyInfo);
483
- // instance.updatePolicyState(policyNftId, ACTIVE());
484
-
485
- // TODO add logging
486
- }
487
-
488
- function close(
489
- NftId policyNftId
490
- ) external override // solhint-disable-next-line no-empty-blocks
491
- {
492
-
493
- }
494
-
495
- function _getPoolNftId(
496
- IInstance instance,
497
- NftId productNftId
498
- )
499
- internal
500
- view
501
- returns (NftId poolNftid)
502
- {
503
- // FIXME: this
504
- // return instance.getTreasuryInfo(productNftId).poolNftId;
220
+ InstanceReader instanceReader = instance.getInstanceReader();
221
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
222
+ riskInfo.data = data;
223
+ instance.updateRisk(riskId, riskInfo, KEEP_STATE());
505
224
  }
506
225
 
507
-
508
- function _processPremiumByTreasury(
509
- IInstance instance,
510
- NftId productNftId,
511
- ITreasury.TreasuryInfo memory treasuryInfo,
512
- NftId policyNftId,
513
- uint256 premiumAmount
514
- )
515
- internal
516
- returns (uint256 netPremiumAmount)
517
- {
518
- // process token transfer(s)
519
- if(premiumAmount > 0) {
520
- // FIXME: this
521
- // TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
522
- // address policyOwner = getRegistry().ownerOf(policyNftId);
523
- // address poolWallet = instance.getComponentWallet(treasuryInfo.poolNftId);
524
- // netPremiumAmount = premiumAmount;
525
- // Fee memory productFee = treasuryInfo.productFee;
526
-
527
- // if (FeeLib.feeIsZero(productFee)) {
528
- // tokenHandler.transfer(
529
- // policyOwner,
530
- // poolWallet,
531
- // premiumAmount
532
- // );
533
- // } else {
534
- // (uint256 feeAmount, uint256 netAmount) = instance.calculateFeeAmount(
535
- // premiumAmount,
536
- // productFee
537
- // );
538
-
539
- // address productWallet = instance.getComponentWallet(productNftId);
540
- // tokenHandler.transfer(policyOwner, productWallet, feeAmount);
541
- // tokenHandler.transfer(policyOwner, poolWallet, netAmount);
542
- // netPremiumAmount = netAmount;
543
- // }
544
- }
545
-
546
- // TODO add logging
226
+ function updateRiskState(
227
+ RiskId riskId,
228
+ StateId state
229
+ ) external {
230
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
231
+ instance.updateRiskState(riskId, state);
547
232
  }
548
233
  }
@@ -16,7 +16,7 @@ contract ProductServiceManager is ProxyManager {
16
16
  constructor(
17
17
  address registryAddress
18
18
  )
19
- ProxyManager()
19
+ ProxyManager(registryAddress)
20
20
  {
21
21
  ProductService svc = new ProductService();
22
22
  bytes memory data = abi.encode(registryAddress, address(this));
@@ -39,7 +39,7 @@ contract ProductServiceManager is ProxyManager {
39
39
  // address(_productService));
40
40
 
41
41
  // implies that after this constructor call only upgrade functionality is available
42
- _isDeployed = true;
42
+ // _isDeployed = true;
43
43
  }
44
44
 
45
45
  //--- view functions ----------------------------------------------------//