@etherisc/gif-next 0.0.2-efef0ea-320 → 0.0.2-f02157b-803

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 (368) hide show
  1. package/README.md +144 -26
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +259 -54
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -188
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -238
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -213
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +292 -96
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +388 -78
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -1813
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{base/InstanceBase.sol/InstanceBase.json → IInstanceService.sol/IInstanceService.json} +127 -169
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2238 -1251
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1257 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +703 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +424 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +144 -50
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/IService.sol/IService.json +120 -40
  73. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  75. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  77. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +140 -59
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  86. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  87. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  89. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  90. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  91. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  92. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  93. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +295 -86
  95. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +123 -62
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +120 -40
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +120 -40
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +120 -40
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +190 -51
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +380 -139
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
  117. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  125. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  127. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  130. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  133. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  134. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  135. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  136. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  137. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +4 -27
  139. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  141. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  143. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  145. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestService.sol/TestService.json +203 -69
  147. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  149. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  151. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +29 -36
  153. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  154. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  155. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  156. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  160. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  164. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  166. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  168. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  170. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  172. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  174. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  176. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  178. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  180. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  182. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  184. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  186. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  190. package/contracts/components/BaseComponent.sol +20 -28
  191. package/contracts/components/Distribution.sol +54 -20
  192. package/contracts/components/IBaseComponent.sol +8 -3
  193. package/contracts/components/IDistributionComponent.sol +2 -6
  194. package/contracts/components/IPoolComponent.sol +2 -11
  195. package/contracts/components/IProductComponent.sol +4 -7
  196. package/contracts/components/Pool.sol +100 -76
  197. package/contracts/components/Product.sol +111 -41
  198. package/contracts/experiment/cloning/Cloner.sol +47 -0
  199. package/contracts/instance/AccessManagedSimple.sol +114 -0
  200. package/contracts/instance/AccessManagerSimple.sol +682 -0
  201. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  202. package/contracts/instance/IInstance.sol +17 -42
  203. package/contracts/instance/IInstanceService.sol +17 -0
  204. package/contracts/instance/Instance.sol +421 -59
  205. package/contracts/instance/InstanceAccessManager.sol +288 -0
  206. package/contracts/instance/InstanceReader.sol +280 -0
  207. package/contracts/instance/InstanceService.sol +102 -0
  208. package/contracts/instance/InstanceServiceManager.sol +56 -0
  209. package/contracts/instance/base/ComponentServiceBase.sol +13 -6
  210. package/contracts/instance/base/IInstanceBase.sol +3 -2
  211. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  212. package/contracts/instance/base/ILifecycle.sol +3 -3
  213. package/contracts/instance/base/KeyValueStore.sol +49 -38
  214. package/contracts/instance/base/Lifecycle.sol +1 -1
  215. package/contracts/instance/base/ServiceBase.sol +20 -13
  216. package/contracts/instance/module/IAccess.sol +38 -0
  217. package/contracts/instance/module/IBundle.sol +19 -0
  218. package/contracts/instance/module/IDistribution.sol +39 -0
  219. package/contracts/instance/module/IPolicy.sol +45 -0
  220. package/contracts/instance/module/IRisk.sol +11 -0
  221. package/contracts/instance/module/ISetup.sol +43 -0
  222. package/contracts/instance/module/ITreasury.sol +23 -0
  223. package/contracts/instance/service/ComponentOwnerService.sol +231 -71
  224. package/contracts/instance/service/IComponentOwnerService.sol +0 -2
  225. package/contracts/instance/service/IProductService.sol +2 -2
  226. package/contracts/registry/ChainNft.sol +80 -37
  227. package/contracts/registry/IRegistry.sol +28 -28
  228. package/contracts/registry/IRegistryService.sol +35 -0
  229. package/contracts/registry/ITransferInterceptor.sol +6 -0
  230. package/contracts/registry/Registry.sol +313 -271
  231. package/contracts/registry/RegistryService.sol +439 -0
  232. package/contracts/registry/RegistryServiceManager.sol +64 -0
  233. package/contracts/shared/ContractDeployerLib.sol +72 -0
  234. package/contracts/shared/INftOwnable.sol +22 -0
  235. package/contracts/shared/IRegisterable.sol +8 -15
  236. package/contracts/shared/IVersionable.sol +46 -15
  237. package/contracts/shared/NftOwnable.sol +136 -0
  238. package/contracts/shared/ProxyManager.sol +94 -0
  239. package/contracts/shared/Registerable.sol +62 -59
  240. package/contracts/shared/TokenHandler.sol +27 -0
  241. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  242. package/contracts/shared/Versionable.sol +110 -62
  243. package/contracts/test/TestFee.sol +2 -2
  244. package/contracts/test/TestRegisterable.sol +5 -6
  245. package/contracts/test/TestRoleId.sol +1 -1
  246. package/contracts/test/TestService.sol +5 -11
  247. package/contracts/types/DistributorType.sol +55 -0
  248. package/contracts/types/Fee.sol +3 -3
  249. package/contracts/types/Key32.sol +8 -3
  250. package/contracts/types/NumberId.sol +52 -0
  251. package/contracts/types/ObjectType.sol +35 -14
  252. package/contracts/types/Referral.sol +85 -0
  253. package/contracts/types/RoleId.sol +53 -9
  254. package/contracts/types/StateId.sol +1 -1
  255. package/contracts/types/Timestamp.sol +7 -3
  256. package/contracts/types/UFixed.sol +128 -12
  257. package/contracts/types/Version.sol +1 -0
  258. package/package.json +4 -3
  259. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  260. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  261. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  262. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  265. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  267. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  268. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  269. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  270. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  271. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  274. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  275. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  277. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  279. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  281. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  282. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  284. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  285. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  286. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  287. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  288. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  289. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  291. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  293. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  295. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  297. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  298. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  300. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  301. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  303. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  305. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  307. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  308. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -507
  309. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  310. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -630
  311. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  312. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -945
  313. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  314. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  315. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  316. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  317. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  318. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  319. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  320. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  321. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  322. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  323. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  324. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  325. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  326. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  327. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  328. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  329. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  330. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  331. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  332. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  333. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  334. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  335. package/contracts/experiment/statemachine/README.md +0 -112
  336. package/contracts/instance/IInstanceLinked.sol +0 -8
  337. package/contracts/instance/base/InstanceBase.sol +0 -91
  338. package/contracts/instance/base/ModuleBase.sol +0 -57
  339. package/contracts/instance/module/access/Access.sol +0 -149
  340. package/contracts/instance/module/access/IAccess.sol +0 -53
  341. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  342. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  343. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  344. package/contracts/instance/module/component/IComponent.sol +0 -28
  345. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  346. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  347. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  348. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  349. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  350. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  351. package/contracts/instance/module/risk/IRisk.sol +0 -26
  352. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  353. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  354. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  355. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  356. package/contracts/instance/service/DistributionService.sol +0 -59
  357. package/contracts/instance/service/PoolService.sol +0 -149
  358. package/contracts/instance/service/ProductService.sol +0 -509
  359. package/contracts/registry/IChainNft.sol +0 -21
  360. package/contracts/registry/IRegistryLinked.sol +0 -8
  361. package/contracts/registry/RegistryUpgradeable.sol +0 -488
  362. package/contracts/shared/IOwnable.sol +0 -6
  363. package/contracts/shared/Proxy.sol +0 -94
  364. package/contracts/shared/VersionableUpgradeable.sol +0 -136
  365. package/contracts/test/TestDistribution.sol +0 -21
  366. package/contracts/test/TestPool.sol +0 -25
  367. package/contracts/test/TestProduct.sol +0 -72
  368. package/contracts/types/ReferralId.sol +0 -48
@@ -1,509 +0,0 @@
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 "../../components/IProductComponent.sol";
6
- import {IPoolComponent} from "../../components/IPoolComponent.sol";
7
- import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
8
- import {IInstance} from "../../instance/IInstance.sol";
9
- import {IPolicy, IPolicyModule} from "../module/policy/IPolicy.sol";
10
- import {IPool} from "../module/pool/IPoolModule.sol";
11
- import {IRisk} from "../module/risk/IRisk.sol";
12
- import {IBundle} from "../module/bundle/IBundle.sol";
13
- import {IProductService} from "./IProductService.sol";
14
- import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
15
-
16
- import {IVersionable} from "../../shared/IVersionable.sol";
17
- import {Versionable} from "../../shared/Versionable.sol";
18
-
19
- import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
20
- import {UFixed, UFixedMathLib} from "../../types/UFixed.sol";
21
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
22
- import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
23
- import {APPLIED, UNDERWRITTEN, ACTIVE} from "../../types/StateId.sol";
24
- import {NftId, NftIdLib} from "../../types/NftId.sol";
25
- import {Fee, FeeLib} from "../../types/Fee.sol";
26
- import {ReferralId} from "../../types/ReferralId.sol";
27
- import {RiskId} from "../../types/RiskId.sol";
28
- import {StateId} from "../../types/StateId.sol";
29
- import {Version, VersionLib} from "../../types/Version.sol";
30
-
31
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
32
- import {IProductService} from "./IProductService.sol";
33
-
34
- // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
35
- contract ProductService is ComponentServiceBase, IProductService {
36
- using NftIdLib for NftId;
37
-
38
- string public constant NAME = "ProductService";
39
-
40
- event LogProductServiceSender(address sender);
41
-
42
- constructor(
43
- address registry,
44
- NftId registryNftId
45
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
46
- {
47
- _registerInterface(type(IProductService).interfaceId);
48
- }
49
-
50
- function getVersion()
51
- public
52
- pure
53
- virtual override (IVersionable, Versionable)
54
- returns(Version)
55
- {
56
- return VersionLib.toVersion(3,0,0);
57
- }
58
-
59
- function getName() external pure override returns(string memory name) {
60
- return NAME;
61
- }
62
-
63
- function setFees(
64
- Fee memory productFee,
65
- Fee memory processingFee
66
- )
67
- external
68
- override
69
- {
70
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
71
- NftId productNftId = productInfo.nftId;
72
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
73
- treasuryInfo.productFee = productFee;
74
- treasuryInfo.processingFee = processingFee;
75
- instance.setTreasuryInfo(productNftId, treasuryInfo);
76
- }
77
-
78
- function createRisk(
79
- RiskId riskId,
80
- bytes memory data
81
- ) external override {
82
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
83
- NftId productNftId = productInfo.nftId;
84
- instance.createRisk(
85
- riskId,
86
- productNftId,
87
- data
88
- );
89
- }
90
-
91
- function setRiskInfo(
92
- RiskId riskId,
93
- IRisk.RiskInfo memory info
94
- ) external {
95
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
96
- instance.setRiskInfo(
97
- riskId,
98
- info
99
- );
100
- }
101
-
102
- function updateRiskState(
103
- RiskId riskId,
104
- StateId state
105
- ) external {
106
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
107
- instance.updateRiskState(
108
- riskId,
109
- state
110
- );
111
- }
112
-
113
- function _getAndVerifyInstanceAndProduct() internal view returns (IProductComponent product) {
114
- IRegistry.ObjectInfo memory productInfo;
115
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
116
- product = IProductComponent(productInfo.objectAddress);
117
- }
118
-
119
- function calculatePremium(
120
- RiskId riskId,
121
- uint256 sumInsuredAmount,
122
- uint256 lifetime,
123
- bytes memory applicationData,
124
- NftId bundleNftId,
125
- ReferralId referralId
126
- )
127
- public
128
- view
129
- override
130
- returns (
131
- uint256 premiumAmount,
132
- uint256 productFeeAmount,
133
- uint256 poolFeeAmount,
134
- uint256 bundleFeeAmount,
135
- uint256 distributionFeeAmount
136
- )
137
- {
138
- IProductComponent product = _getAndVerifyInstanceAndProduct();
139
- uint256 netPremiumAmount = product.calculateNetPremium(
140
- sumInsuredAmount,
141
- riskId,
142
- lifetime,
143
- applicationData
144
- );
145
-
146
- (
147
- productFeeAmount,
148
- poolFeeAmount,
149
- bundleFeeAmount,
150
- distributionFeeAmount
151
- ) = _calculateFeeAmounts(
152
- netPremiumAmount,
153
- product,
154
- bundleNftId,
155
- referralId
156
- );
157
-
158
- premiumAmount = netPremiumAmount + productFeeAmount;
159
- premiumAmount += poolFeeAmount + bundleFeeAmount;
160
- premiumAmount += distributionFeeAmount;
161
- }
162
-
163
- function _calculateFeeAmounts(
164
- uint256 netPremiumAmount,
165
- IProductComponent product,
166
- NftId bundleNftId,
167
- ReferralId referralId
168
- )
169
- internal
170
- view
171
- returns (
172
- uint256 productFeeAmount,
173
- uint256 poolFeeAmount,
174
- uint256 bundleFeeAmount,
175
- uint256 distributionFeeAmount
176
- )
177
- {
178
- IInstance instance = product.getInstance();
179
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(product.getNftId());
180
- IBundle.BundleInfo memory bundleInfo = instance.getBundleInfo(bundleNftId);
181
- require(bundleInfo.poolNftId == treasuryInfo.poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
182
-
183
- (productFeeAmount,) = FeeLib.calculateFee(treasuryInfo.productFee, netPremiumAmount);
184
- (poolFeeAmount,) = FeeLib.calculateFee(treasuryInfo.poolFee, netPremiumAmount);
185
- (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
186
-
187
- IRegistry.ObjectInfo memory distributionInfo = _registry.getObjectInfo(treasuryInfo.distributionNftId);
188
- IDistributionComponent distribution = IDistributionComponent(distributionInfo.objectAddress);
189
- distributionFeeAmount = distribution.calculateFeeAmount(referralId, netPremiumAmount);
190
- }
191
-
192
-
193
- function createApplication(
194
- address applicationOwner,
195
- RiskId riskId,
196
- uint256 sumInsuredAmount,
197
- uint256 lifetime,
198
- bytes memory applicationData,
199
- NftId bundleNftId,
200
- ReferralId referralId
201
- ) external override returns (NftId policyNftId) {
202
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
203
- // TODO add validations (see create bundle in pool service)
204
-
205
- policyNftId = this.getRegistry().registerObjectForInstance(
206
- productInfo.nftId,
207
- POLICY(),
208
- applicationOwner,
209
- ""
210
- );
211
-
212
- (uint256 premiumAmount,,,,) = calculatePremium(
213
- riskId,
214
- sumInsuredAmount,
215
- lifetime,
216
- applicationData,
217
- bundleNftId,
218
- referralId
219
- );
220
-
221
- instance.createPolicyInfo(
222
- policyNftId,
223
- productInfo.nftId,
224
- referralId,
225
- riskId,
226
- sumInsuredAmount,
227
- premiumAmount,
228
- lifetime,
229
- bundleNftId
230
- );
231
-
232
- // TODO add logging
233
- }
234
-
235
- function _getAndVerifyUnderwritingSetup(
236
- IInstance instance,
237
- IPolicy.PolicyInfo memory policyInfo
238
- )
239
- internal
240
- view
241
- returns (
242
- ITreasury.TreasuryInfo memory treasuryInfo,
243
- NftId bundleNftId,
244
- IBundle.BundleInfo memory bundleInfo,
245
- uint256 collateralAmount
246
- )
247
- {
248
- // check match between policy and bundle (via pool)
249
- treasuryInfo = instance.getTreasuryInfo(policyInfo.productNftId);
250
- bundleNftId = policyInfo.bundleNftId;
251
- bundleInfo = instance.getBundleInfo(bundleNftId);
252
- require(bundleInfo.poolNftId == treasuryInfo.poolNftId, "POLICY_BUNDLE_MISMATCH");
253
-
254
- // calculate required collateral
255
- NftId poolNftId = treasuryInfo.poolNftId;
256
- IPool.PoolInfo memory poolInfo = instance.getPoolInfo(poolNftId);
257
-
258
- // obtain remaining return values
259
- collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
260
- }
261
-
262
- function _lockCollateralInBundle(
263
- IInstance instance,
264
- NftId bundleNftId,
265
- IBundle.BundleInfo memory bundleInfo,
266
- NftId policyNftId,
267
- uint256 collateralAmount
268
- )
269
- internal
270
- returns (IBundle.BundleInfo memory)
271
- {
272
- bundleInfo.lockedAmount += collateralAmount;
273
- instance.collateralizePolicy(bundleNftId, policyNftId, collateralAmount);
274
- return bundleInfo;
275
- }
276
-
277
- function _underwriteByPool(
278
- ITreasury.TreasuryInfo memory treasuryInfo,
279
- NftId policyNftId,
280
- IPolicy.PolicyInfo memory policyInfo,
281
- bytes memory bundleFilter,
282
- uint256 collateralAmount
283
- )
284
- internal
285
- {
286
- address poolAddress = _registry.getObjectInfo(treasuryInfo.poolNftId).objectAddress;
287
- IPoolComponent pool = IPoolComponent(poolAddress);
288
- pool.underwrite(
289
- policyNftId,
290
- policyInfo.applicationData,
291
- bundleFilter,
292
- collateralAmount);
293
- }
294
-
295
-
296
- function revoke(
297
- NftId policyNftId
298
- )
299
- external
300
- override
301
- {
302
- require(false, "ERROR:PRS-234:NOT_YET_IMPLEMENTED");
303
- }
304
-
305
-
306
- function underwrite(
307
- NftId policyNftId,
308
- bool requirePremiumPayment,
309
- Timestamp activateAt
310
- )
311
- external
312
- override
313
- {
314
- // check caller is registered product
315
- (
316
- IRegistry.ObjectInfo memory productInfo,
317
- IInstance instance
318
- ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
319
-
320
- // check match between policy and calling product
321
- NftId productNftId = productInfo.nftId;
322
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
323
- require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
324
- require(instance.getState(policyNftId.toKey32(POLICY())) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
325
-
326
- ITreasury.TreasuryInfo memory treasuryInfo;
327
- NftId bundleNftId;
328
- IBundle.BundleInfo memory bundleInfo;
329
- uint256 collateralAmount;
330
-
331
- (
332
- treasuryInfo,
333
- bundleNftId,
334
- bundleInfo,
335
- collateralAmount
336
- ) = _getAndVerifyUnderwritingSetup(
337
- instance,
338
- policyInfo
339
- );
340
-
341
- // lock bundle collateral
342
- bundleInfo = _lockCollateralInBundle(
343
- instance,
344
- bundleNftId,
345
- bundleInfo,
346
- policyNftId,
347
- collateralAmount);
348
-
349
- // set policy state to underwritten
350
- instance.updatePolicyState(policyNftId, UNDERWRITTEN());
351
-
352
- // optional activation of policy
353
- if(activateAt > zeroTimestamp()) {
354
- policyInfo.activatedAt = activateAt;
355
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
356
-
357
- instance.updatePolicyState(policyNftId, ACTIVE());
358
- }
359
-
360
- // optional collection of premium
361
- if(requirePremiumPayment) {
362
- uint256 netPremiumAmount = _processPremiumByTreasury(
363
- instance,
364
- productInfo.nftId,
365
- treasuryInfo,
366
- policyNftId,
367
- policyInfo.premiumAmount);
368
-
369
- policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
370
- bundleInfo.balanceAmount += netPremiumAmount;
371
- }
372
-
373
- instance.setPolicyInfo(policyNftId, policyInfo);
374
- instance.setBundleInfo(bundleNftId, bundleInfo);
375
-
376
- // involve pool if necessary
377
- {
378
- NftId poolNftId = treasuryInfo.poolNftId;
379
- IPool.PoolInfo memory poolInfo = instance.getPoolInfo(poolNftId);
380
-
381
- if(poolInfo.isVerifying) {
382
- _underwriteByPool(
383
- treasuryInfo,
384
- policyNftId,
385
- policyInfo,
386
- bundleInfo.filter,
387
- collateralAmount
388
- );
389
- }
390
- }
391
-
392
- // TODO add logging
393
- }
394
-
395
- function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
396
- UFixed sumInsuredUFixed = UFixedMathLib.toUFixed(sumInsuredAmount);
397
- UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
398
- return collateralUFixed.toInt();
399
- }
400
-
401
- function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
402
- // check caller is registered product
403
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
404
-
405
- // perform actual token transfers
406
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
407
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productInfo.nftId);
408
-
409
- uint256 premiumAmount = policyInfo.premiumAmount;
410
- _processPremiumByTreasury(instance, productInfo.nftId, treasuryInfo, policyNftId, premiumAmount);
411
-
412
- // policy level book keeping for premium paid
413
- policyInfo.premiumPaidAmount += premiumAmount;
414
-
415
- // optional activation of policy
416
- if(activateAt > zeroTimestamp()) {
417
- require(
418
- policyInfo.activatedAt.eqz(),
419
- "ERROR:PRS-030:ALREADY_ACTIVATED");
420
-
421
- policyInfo.activatedAt = activateAt;
422
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
423
-
424
- instance.updatePolicyState(policyNftId, ACTIVE());
425
- }
426
-
427
- instance.setPolicyInfo(policyNftId, policyInfo);
428
-
429
- // TODO add logging
430
- }
431
-
432
- function activate(NftId policyNftId, Timestamp activateAt) external override {
433
- // check caller is registered product
434
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
435
-
436
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
437
-
438
- require(
439
- policyInfo.activatedAt.eqz(),
440
- "ERROR:PRS-020:ALREADY_ACTIVATED");
441
-
442
- policyInfo.activatedAt = activateAt;
443
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
444
-
445
- instance.setPolicyInfo(policyNftId, policyInfo);
446
- instance.updatePolicyState(policyNftId, ACTIVE());
447
-
448
- // TODO add logging
449
- }
450
-
451
- function close(
452
- NftId policyNftId
453
- ) external override // solhint-disable-next-line no-empty-blocks
454
- {
455
-
456
- }
457
-
458
- function _getPoolNftId(
459
- IInstance instance,
460
- NftId productNftId
461
- )
462
- internal
463
- view
464
- returns (NftId poolNftid)
465
- {
466
- return instance.getTreasuryInfo(productNftId).poolNftId;
467
- }
468
-
469
-
470
- function _processPremiumByTreasury(
471
- IInstance instance,
472
- NftId productNftId,
473
- ITreasury.TreasuryInfo memory treasuryInfo,
474
- NftId policyNftId,
475
- uint256 premiumAmount
476
- )
477
- internal
478
- returns (uint256 netPremiumAmount)
479
- {
480
- // process token transfer(s)
481
- if(premiumAmount > 0) {
482
- TokenHandler tokenHandler = instance.getTokenHandler(productNftId);
483
- address policyOwner = _registry.getOwner(policyNftId);
484
- address poolWallet = instance.getComponentWallet(treasuryInfo.poolNftId);
485
- netPremiumAmount = premiumAmount;
486
- Fee memory productFee = treasuryInfo.productFee;
487
-
488
- if (FeeLib.feeIsZero(productFee)) {
489
- tokenHandler.transfer(
490
- policyOwner,
491
- poolWallet,
492
- premiumAmount
493
- );
494
- } else {
495
- (uint256 feeAmount, uint256 netAmount) = instance.calculateFeeAmount(
496
- premiumAmount,
497
- productFee
498
- );
499
-
500
- address productWallet = instance.getComponentWallet(productNftId);
501
- tokenHandler.transfer(policyOwner, productWallet, feeAmount);
502
- tokenHandler.transfer(policyOwner, poolWallet, netAmount);
503
- netPremiumAmount = netAmount;
504
- }
505
- }
506
-
507
- // TODO add logging
508
- }
509
- }
@@ -1,21 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
5
-
6
- interface IChainNft is IERC721Enumerable {
7
- function mint(
8
- address to,
9
- string memory uri
10
- ) external returns (uint256 tokenId);
11
-
12
- function burn(uint256 tokenId) external;
13
-
14
- function setURI(uint256 tokenId, string memory uri) external;
15
-
16
- function exists(uint256 tokenId) external view returns (bool);
17
-
18
- function totalMinted() external view returns (uint256);
19
-
20
- function getRegistryAddress() external view returns (address registry);
21
- }
@@ -1,8 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
-
6
- interface IRegistryLinked {
7
- function getRegistry() external view returns (IRegistry registry);
8
- }