@etherisc/gif-next 0.0.2-770fd3b-604 → 0.0.2-77a1ccf-469

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 (300) hide show
  1. package/README.md +8 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +22 -145
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +79 -233
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +19 -92
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +57 -178
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +239 -104
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +23 -164
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +240 -155
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +27 -218
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +343 -308
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +19 -184
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +469 -466
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +2 -2
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +79 -110
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +70 -284
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +196 -113
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +18 -220
  39. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  43. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  52. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +182 -331
  54. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  56. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +54 -276
  58. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +182 -107
  60. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  62. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  64. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +645 -268
  66. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +300 -109
  68. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +124 -206
  70. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +26 -191
  72. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  74. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +369 -167
  76. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +25 -290
  78. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +12 -177
  80. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +12 -177
  82. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +65 -443
  84. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +188 -141
  86. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +42 -272
  88. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +179 -104
  90. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +42 -272
  92. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +179 -104
  94. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  95. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  96. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +71 -180
  98. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  99. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  100. package/artifacts/contracts/registry/Registry.sol/Registry.json +7 -7
  101. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  102. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  103. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  104. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +90 -264
  105. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +182 -113
  107. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  109. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +34 -67
  111. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  112. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  113. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  114. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  115. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +4 -30
  116. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  117. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +4 -30
  119. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  120. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -21
  121. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IService.sol/IService.json +12 -177
  123. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -150
  125. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +10 -62
  127. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  128. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -23
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +171 -88
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +11 -74
  133. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  134. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -23
  135. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Service.sol/Service.json +13 -215
  137. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  138. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  139. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  140. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -150
  142. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +11 -74
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -269
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +6 -188
  153. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  154. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  155. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  158. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  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 +1 -1
  169. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  171. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  172. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  179. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  181. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  188. package/contracts/components/Component.sol +69 -84
  189. package/contracts/components/Distribution.sol +26 -31
  190. package/contracts/components/IComponent.sol +34 -16
  191. package/contracts/components/IDistributionComponent.sol +1 -22
  192. package/contracts/components/IPoolComponent.sol +89 -25
  193. package/contracts/components/IProductComponent.sol +3 -2
  194. package/contracts/components/Pool.sol +216 -92
  195. package/contracts/components/Product.sol +36 -25
  196. package/contracts/instance/BundleManager.sol +1 -1
  197. package/contracts/instance/IInstance.sol +7 -1
  198. package/contracts/instance/Instance.sol +17 -7
  199. package/contracts/instance/InstanceService.sol +67 -10
  200. package/contracts/instance/InstanceServiceManager.sol +1 -1
  201. package/contracts/instance/module/IBundle.sol +2 -1
  202. package/contracts/instance/module/IDistribution.sol +2 -0
  203. package/contracts/instance/module/IPolicy.sol +30 -3
  204. package/contracts/instance/module/ISetup.sol +5 -6
  205. package/contracts/instance/service/ApplicationService.sol +138 -57
  206. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  207. package/contracts/instance/service/BundleService.sol +4 -3
  208. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  209. package/contracts/instance/service/ClaimService.sol +151 -0
  210. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  211. package/contracts/instance/service/DistributionService.sol +146 -26
  212. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  213. package/contracts/instance/service/IApplicationService.sol +9 -9
  214. package/contracts/instance/service/IBundleService.sol +3 -2
  215. package/contracts/instance/service/IClaimService.sol +61 -0
  216. package/contracts/instance/service/IDistributionService.sol +23 -2
  217. package/contracts/instance/service/IPolicyService.sol +17 -35
  218. package/contracts/instance/service/PolicyService.sol +47 -169
  219. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  220. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  221. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  222. package/contracts/registry/IRegistryService.sol +10 -8
  223. package/contracts/registry/Registry.sol +3 -1
  224. package/contracts/registry/RegistryService.sol +62 -40
  225. package/contracts/registry/RegistryServiceManager.sol +13 -13
  226. package/contracts/registry/ReleaseManager.sol +18 -28
  227. package/contracts/registry/TokenRegistry.sol +13 -10
  228. package/contracts/shared/ERC165.sol +2 -1
  229. package/contracts/shared/INftOwnable.sol +4 -9
  230. package/contracts/shared/IRegistryLinked.sol +0 -3
  231. package/contracts/shared/IService.sol +2 -0
  232. package/contracts/shared/IVersionable.sol +4 -47
  233. package/contracts/shared/NftOwnable.sol +10 -80
  234. package/contracts/shared/ProxyManager.sol +98 -24
  235. package/contracts/shared/Registerable.sol +3 -10
  236. package/contracts/shared/RegistryLinked.sol +10 -26
  237. package/contracts/shared/Service.sol +10 -12
  238. package/contracts/shared/Versionable.sol +1 -90
  239. package/contracts/types/ClaimId.sol +52 -0
  240. package/contracts/types/ObjectType.sol +4 -4
  241. package/contracts/types/PayoutId.sol +54 -0
  242. package/contracts/types/RoleId.sol +10 -5
  243. package/contracts/types/Seconds.sol +54 -0
  244. package/contracts/types/Timestamp.sol +12 -13
  245. package/package.json +1 -1
  246. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  247. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  248. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  249. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  250. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  251. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  252. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  253. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  254. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  255. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  256. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  257. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  258. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  259. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  260. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  261. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  262. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  263. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  264. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  265. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  266. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  268. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  269. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  270. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  272. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  274. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  276. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  278. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  280. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  282. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  284. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  286. package/contracts/experiment/cloning/Cloner.sol +0 -47
  287. package/contracts/experiment/errors/Require.sol +0 -38
  288. package/contracts/experiment/errors/Revert.sol +0 -44
  289. package/contracts/experiment/inheritance/A.sol +0 -53
  290. package/contracts/experiment/inheritance/B.sol +0 -28
  291. package/contracts/experiment/inheritance/C.sol +0 -34
  292. package/contracts/experiment/inheritance/IA.sol +0 -13
  293. package/contracts/experiment/inheritance/IB.sol +0 -10
  294. package/contracts/experiment/inheritance/IC.sol +0 -12
  295. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  296. package/contracts/experiment/statemachine/ISM.sol +0 -25
  297. package/contracts/experiment/statemachine/SM.sol +0 -57
  298. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  299. package/contracts/experiment/types/TypeA.sol +0 -47
  300. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -4,12 +4,16 @@ pragma solidity ^0.8.19;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {IApplicationService} from "../instance/service/IApplicationService.sol";
7
8
  import {IPolicyService} from "../instance/service/IPolicyService.sol";
9
+ import {IProductService} from "../instance/service/IProductService.sol";
10
+ import {IClaimService} from "../instance/service/IClaimService.sol";
8
11
  import {IProductComponent} from "./IProductComponent.sol";
9
12
  import {NftId, NftIdLib} from "../types/NftId.sol";
10
- import {PRODUCT} from "../types/ObjectType.sol";
13
+ import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
11
14
  import {ReferralId} from "../types/Referral.sol";
12
15
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
16
+ import {Seconds} from "../types/Seconds.sol";
13
17
  import {StateId} from "../types/StateId.sol";
14
18
  import {Timestamp} from "../types/Timestamp.sol";
15
19
  import {Fee} from "../types/Fee.sol";
@@ -18,6 +22,7 @@ import {Component} from "./Component.sol";
18
22
  import {TokenHandler} from "../shared/TokenHandler.sol";
19
23
 
20
24
  import {InstanceReader} from "../instance/InstanceReader.sol";
25
+ import {IPolicy} from "../instance/module/IPolicy.sol";
21
26
  import {ISetup} from "../instance/module/ISetup.sol";
22
27
  import {Pool} from "../components/Pool.sol";
23
28
  import {Distribution} from "../components/Distribution.sol";
@@ -30,7 +35,10 @@ abstract contract Product is
30
35
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
31
36
 
32
37
  struct ProductStorage {
38
+ IProductService _productService;
39
+ IApplicationService _applicationService;
33
40
  IPolicyService _policyService;
41
+ IClaimService _claimService;
34
42
  Pool _pool;
35
43
  Distribution _distribution;
36
44
  Fee _initialProductFee;
@@ -51,17 +59,21 @@ abstract contract Product is
51
59
  Fee memory productFee,
52
60
  Fee memory processingFee,
53
61
  address initialOwner,
54
- bytes memory data
62
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
55
63
  )
56
64
  public
57
65
  virtual
58
66
  onlyInitializing()
59
67
  {
60
- initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, data);
68
+ initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
61
69
 
62
70
  ProductStorage storage $ = _getProductStorage();
63
71
  // TODO add validation
64
- $._policyService = getInstance().getPolicyService();
72
+ // TODO refactor to go via registry
73
+ $._productService = IProductService(_getServiceAddress(PRODUCT()));
74
+ $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
75
+ $._policyService = IPolicyService(_getServiceAddress(POLICY()));
76
+ $._claimService = IClaimService(_getServiceAddress(CLAIM()));
65
77
  $._pool = Pool(pool);
66
78
  $._distribution = Distribution(distribution);
67
79
  $._initialProductFee = productFee;
@@ -77,7 +89,7 @@ abstract contract Product is
77
89
  function calculatePremium(
78
90
  uint256 sumInsuredAmount,
79
91
  RiskId riskId,
80
- uint256 lifetime,
92
+ Seconds lifetime,
81
93
  bytes memory applicationData,
82
94
  NftId bundleNftId,
83
95
  ReferralId referralId
@@ -87,7 +99,8 @@ abstract contract Product is
87
99
  override
88
100
  returns (uint256 premiumAmount)
89
101
  {
90
- (premiumAmount,,,,) = _getProductStorage()._policyService.calculatePremium(
102
+ IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
103
+ getNftId(),
91
104
  riskId,
92
105
  sumInsuredAmount,
93
106
  lifetime,
@@ -95,13 +108,14 @@ abstract contract Product is
95
108
  bundleNftId,
96
109
  referralId
97
110
  );
111
+ premiumAmount = premium.premiumAmount;
98
112
  }
99
113
 
100
114
 
101
115
  function calculateNetPremium(
102
116
  uint256 sumInsuredAmount,
103
117
  RiskId riskId,
104
- uint256 lifetime,
118
+ Seconds lifetime,
105
119
  bytes memory applicationData
106
120
  )
107
121
  external
@@ -121,7 +135,7 @@ abstract contract Product is
121
135
  RiskId id,
122
136
  bytes memory data
123
137
  ) internal {
124
- getProductService().createRisk(
138
+ _getProductService().createRisk(
125
139
  id,
126
140
  data
127
141
  );
@@ -131,7 +145,7 @@ abstract contract Product is
131
145
  RiskId id,
132
146
  bytes memory data
133
147
  ) internal {
134
- getProductService().updateRisk(
148
+ _getProductService().updateRisk(
135
149
  id,
136
150
  data
137
151
  );
@@ -141,7 +155,7 @@ abstract contract Product is
141
155
  RiskId id,
142
156
  StateId state
143
157
  ) internal {
144
- getProductService().updateRiskState(
158
+ _getProductService().updateRiskState(
145
159
  id,
146
160
  state
147
161
  );
@@ -155,22 +169,22 @@ abstract contract Product is
155
169
  address applicationOwner,
156
170
  RiskId riskId,
157
171
  uint256 sumInsuredAmount,
158
- uint256 lifetime,
159
- bytes memory applicationData,
172
+ Seconds lifetime,
160
173
  NftId bundleNftId,
161
- ReferralId referralId
174
+ ReferralId referralId,
175
+ bytes memory applicationData
162
176
  )
163
177
  internal
164
- returns (NftId nftId)
178
+ returns (NftId applicationNftId)
165
179
  {
166
- return _getProductStorage()._policyService.createApplication(
180
+ return _getProductStorage()._applicationService.create(
167
181
  applicationOwner,
168
182
  riskId,
169
183
  sumInsuredAmount,
170
184
  lifetime,
171
- applicationData,
172
185
  bundleNftId,
173
- referralId
186
+ referralId,
187
+ applicationData
174
188
  );
175
189
  }
176
190
 
@@ -235,7 +249,7 @@ abstract contract Product is
235
249
  restricted()
236
250
  override
237
251
  {
238
- getProductService().setFees(productFee, processingFee);
252
+ _getProductService().setFees(productFee, processingFee);
239
253
  }
240
254
 
241
255
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
@@ -251,20 +265,13 @@ abstract contract Product is
251
265
  function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
252
266
  ProductStorage storage $ = _getProductStorage();
253
267
 
254
- ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
255
- ISetup.PoolSetupInfo memory poolSetupInfo = $._pool.getSetupInfo();
256
-
257
268
  return ISetup.ProductSetupInfo(
258
269
  getToken(),
259
270
  $._tokenHandler,
260
271
  $._distributionNftId,
261
272
  $._poolNftId,
262
- distributionSetupInfo.distributionFee,
263
273
  $._initialProductFee,
264
274
  $._initialProcessingFee,
265
- poolSetupInfo.poolFee,
266
- poolSetupInfo.stakingFee,
267
- poolSetupInfo.performanceFee,
268
275
  false,
269
276
  getWallet()
270
277
  );
@@ -275,4 +282,8 @@ abstract contract Product is
275
282
  $.slot := PRODUCT_STORAGE_LOCATION_V1
276
283
  }
277
284
  }
285
+
286
+ function _getProductService() internal view returns (IProductService) {
287
+ return _getProductStorage()._productService;
288
+ }
278
289
  }
@@ -71,7 +71,7 @@ contract BundleManager is
71
71
  }
72
72
 
73
73
 
74
- /// @dev add a new bundle to a riskpool registerd with this instance
74
+ /// @dev add a new bundle to a pool registerd with this instance
75
75
  // the corresponding pool is fetched via instance reader
76
76
  function add(NftId bundleNftId) external restricted() {
77
77
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
@@ -76,10 +76,16 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
76
76
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
77
77
  function updateRiskState(RiskId riskId, StateId newState) external;
78
78
 
79
- function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external;
79
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external;
80
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
81
+ function updateApplicationState(NftId applicationNftId, StateId newState) external;
82
+
80
83
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
81
84
  function updatePolicyState(NftId policyNftId, StateId newState) external;
82
85
 
86
+ // TODO add claims/payouts function to instance
87
+ // function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
88
+
83
89
  function getMajorVersion() external pure returns (VersionPart majorVersion);
84
90
  function getInstanceReader() external view returns (InstanceReader);
85
91
  function getBundleManager() external view returns (BundleManager);
@@ -5,6 +5,7 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
5
5
 
6
6
  import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
7
7
  import {NftId} from "../types/NftId.sol";
8
+ import {ClaimId} from "../types/ClaimId.sol";
8
9
  import {NumberId} from "../types/NumberId.sol";
9
10
  import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
10
11
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
@@ -172,11 +173,20 @@ contract Instance is
172
173
  updateState(riskId.toKey32(), newState);
173
174
  }
174
175
 
175
- //--- Policy ------------------------------------------------------------//
176
- function createPolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy) external restricted() {
177
- create(toPolicyKey32(policyNftId), abi.encode(policy));
176
+ //--- Application (Policy) ----------------------------------------------//
177
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
178
+ create(toPolicyKey32(applicationNftId), abi.encode(policy));
179
+ }
180
+
181
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
182
+ update(toPolicyKey32(applicationNftId), abi.encode(policy), newState);
178
183
  }
179
184
 
185
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
186
+ updateState(toPolicyKey32(applicationNftId), newState);
187
+ }
188
+
189
+ //--- Policy ------------------------------------------------------------//
180
190
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
181
191
  update(toPolicyKey32(policyNftId), abi.encode(policy), newState);
182
192
  }
@@ -186,15 +196,15 @@ contract Instance is
186
196
  }
187
197
 
188
198
  //--- Claim -------------------------------------------------------------//
189
- function createClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
199
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
190
200
  create(toPolicyKey32(policyNftId), abi.encode(claim));
191
201
  }
192
202
 
193
- function updateClaim(NftId policyNftId, NumberId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
203
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
194
204
  update(toPolicyKey32(policyNftId), abi.encode(claim), newState);
195
205
  }
196
206
 
197
- function updateClaimState(NftId policyNftId, StateId newState) external restricted() {
207
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
198
208
  updateState(toPolicyKey32(policyNftId), newState);
199
209
  }
200
210
 
@@ -203,7 +213,7 @@ contract Instance is
203
213
  create(toPolicyKey32(policyNftId), abi.encode(payout));
204
214
  }
205
215
 
206
- function updateClaim(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
216
+ function updatePayout(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
207
217
  update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
208
218
  }
209
219
 
@@ -16,13 +16,16 @@ import {Service} from "../../contracts/shared/Service.sol";
16
16
  import {IService} from "../shared/IService.sol";
17
17
  import {NftId} from "../../contracts/types/NftId.sol";
18
18
  import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
19
+ import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
+ import {ObjectType, INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
21
21
  import {IDistributionComponent} from "../components/IDistributionComponent.sol";
22
22
  import {IPoolComponent} from "../components/IPoolComponent.sol";
23
23
  import {IProductComponent} from "../components/IProductComponent.sol";
24
24
 
25
- contract InstanceService is Service, IInstanceService {
25
+ contract InstanceService is
26
+ Service,
27
+ IInstanceService
28
+ {
26
29
 
27
30
  address internal _masterInstanceAccessManager;
28
31
  address internal _masterInstance;
@@ -106,7 +109,9 @@ contract InstanceService is Service, IInstanceService {
106
109
  _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
107
110
  _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
108
111
  _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
112
+ _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstance);
109
113
  _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
114
+ _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstance);
110
115
  _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
111
116
  _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
112
117
  }
@@ -119,7 +124,9 @@ contract InstanceService is Service, IInstanceService {
119
124
  clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
120
125
  clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
121
126
  clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
127
+ clonedAccessManager.createGifRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
122
128
  clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
129
+ clonedAccessManager.createGifRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
123
130
  clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
124
131
  clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
125
132
  }
@@ -135,9 +142,18 @@ contract InstanceService is Service, IInstanceService {
135
142
  IRegistry registry = getRegistry();
136
143
  address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
137
144
  clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
138
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
145
+ bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
139
146
  instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
140
147
  instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
148
+ instanceDistributionServiceSelectors[2] = clonedInstance.createDistributorType.selector;
149
+ instanceDistributionServiceSelectors[3] = clonedInstance.updateDistributorType.selector;
150
+ instanceDistributionServiceSelectors[4] = clonedInstance.updateDistributorTypeState.selector;
151
+ instanceDistributionServiceSelectors[5] = clonedInstance.createDistributor.selector;
152
+ instanceDistributionServiceSelectors[6] = clonedInstance.updateDistributor.selector;
153
+ instanceDistributionServiceSelectors[7] = clonedInstance.updateDistributorState.selector;
154
+ instanceDistributionServiceSelectors[8] = clonedInstance.createReferral.selector;
155
+ instanceDistributionServiceSelectors[9] = clonedInstance.updateReferral.selector;
156
+ instanceDistributionServiceSelectors[10] = clonedInstance.updateReferralState.selector;
141
157
  clonedAccessManager.setTargetFunctionRole(
142
158
  "Instance",
143
159
  instanceDistributionServiceSelectors,
@@ -173,20 +189,47 @@ contract InstanceService is Service, IInstanceService {
173
189
  PRODUCT_SERVICE_ROLE());
174
190
  }
175
191
 
192
+ function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
193
+ // configure authorization for application services on instance
194
+ address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
195
+ clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
196
+ bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
197
+ instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
198
+ instanceApplicationServiceSelectors[1] = clonedInstance.updateApplication.selector;
199
+ instanceApplicationServiceSelectors[2] = clonedInstance.updateApplicationState.selector;
200
+ clonedAccessManager.setTargetFunctionRole(
201
+ "Instance",
202
+ instanceApplicationServiceSelectors,
203
+ APPLICATION_SERVICE_ROLE());
204
+ }
205
+
176
206
  function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
177
- // configure authorization for policy service on instance
207
+ // configure authorization for policy services on instance
178
208
  address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
179
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
180
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
181
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
182
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
183
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
209
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
210
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
211
+ instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
212
+ instancePolicyServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
184
213
  clonedAccessManager.setTargetFunctionRole(
185
214
  "Instance",
186
215
  instancePolicyServiceSelectors,
187
216
  POLICY_SERVICE_ROLE());
188
217
  }
189
218
 
219
+ function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
220
+ // configure authorization for claim/payout services on instance
221
+ address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
222
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
223
+ // TODO add claims function authz
224
+ bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
225
+ // instanceClaimServiceSelectors[0] = clonedInstance.updatePolicy.selector;
226
+ // instanceClaimServiceSelectors[1] = clonedInstance.updatePolicyState.selector;
227
+ clonedAccessManager.setTargetFunctionRole(
228
+ "Instance",
229
+ instanceClaimServiceSelectors,
230
+ CLAIM_SERVICE_ROLE());
231
+ }
232
+
190
233
  function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
191
234
  // configure authorization for bundle service on instance
192
235
  address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
@@ -392,6 +435,20 @@ contract InstanceService is Service, IInstanceService {
392
435
  bytes4[] memory fctSelectors2 = new bytes4[](1);
393
436
  fctSelectors2[0] = IPoolComponent.verifyApplication.selector;
394
437
  instanceAccessManager.setTargetFunctionRole(poolName, fctSelectors2, POLICY_SERVICE_ROLE());
438
+
439
+ // bundle owner specific functions
440
+ bytes4[] memory fctSelectors3 = new bytes4[](7);
441
+ fctSelectors3[0] = IPoolComponent.stake.selector;
442
+ fctSelectors3[1] = IPoolComponent.unstake.selector;
443
+ fctSelectors3[2] = IPoolComponent.extend.selector;
444
+ fctSelectors3[3] = IPoolComponent.lockBundle.selector;
445
+ fctSelectors3[4] = IPoolComponent.unlockBundle.selector;
446
+ fctSelectors3[5] = IPoolComponent.close.selector;
447
+ fctSelectors3[6] = IPoolComponent.setBundleFee.selector;
448
+ instanceAccessManager.setTargetFunctionRole(
449
+ poolName,
450
+ fctSelectors3,
451
+ IPoolComponent(poolAddress).getBundleOwnerRole());
395
452
  }
396
453
 
397
454
  function grantProductDefaultPermissions(NftId instanceNftId, address productAddress, string memory productName) external onlyRegisteredService {
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
17
17
  constructor(
18
18
  address registryAddress
19
19
  )
20
- ProxyManager()
20
+ ProxyManager(registryAddress)
21
21
  {
22
22
  InstanceService instSrv = new InstanceService();
23
23
  // bytes memory initCode = type(InstanceService).creationCode;
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../../types/NftId.sol";
5
5
  import {Fee} from "../../types/Fee.sol";
6
+ import {Seconds} from "../../types/Seconds.sol";
6
7
  import {Timestamp} from "../../types/Timestamp.sol";
7
8
 
8
9
  interface IBundle {
@@ -13,7 +14,7 @@ interface IBundle {
13
14
  uint256 capitalAmount; // net investment capital + net premiums - payouts
14
15
  uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
15
16
  uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
- uint256 lifetime;
17
+ Seconds lifetime;
17
18
  Timestamp expiredAt; // no new policies
18
19
  Timestamp closedAt; // no open policies, locked amount = 0
19
20
  }
@@ -24,6 +24,8 @@ interface IDistribution {
24
24
  DistributorType distributorType;
25
25
  bool active;
26
26
  bytes data;
27
+ uint256 sumCommisions;
28
+ uint256 numPoliciesSold;
27
29
  }
28
30
 
29
31
  struct ReferralInfo {
@@ -2,12 +2,39 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../../types/NftId.sol";
5
- import {NumberId} from "../../types/NumberId.sol";
5
+ import {ClaimId} from "../../types/ClaimId.sol";
6
6
  import {ReferralId} from "../../types/Referral.sol";
7
7
  import {RiskId} from "../../types/RiskId.sol";
8
+ import {Seconds} from "../../types/Seconds.sol";
8
9
  import {Timestamp} from "../../types/Timestamp.sol";
9
10
 
10
11
  interface IPolicy {
12
+
13
+ struct Premium {
14
+ // this is the net premium calculated by the product
15
+ uint256 netPremiumAmount;
16
+ // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
17
+ uint256 fullPremiumAmount;
18
+ // premium = fullPremium - discount
19
+ uint256 premiumAmount;
20
+ uint256 productFeeFixAmount;
21
+ uint256 poolFeeFixAmount;
22
+ uint256 bundleFeeFixAmount;
23
+ uint256 distributionFeeFixAmount;
24
+ uint256 productFeeVarAmount;
25
+ uint256 poolFeeVarAmount;
26
+ uint256 bundleFeeVarAmount;
27
+ uint256 distributionFeeVarAmount;
28
+ uint256 distributionOwnerFeeFixAmount;
29
+ // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
30
+ uint256 distributionOwnerFeeVarAmount;
31
+ // this value is based on distributor type referenced in the referral
32
+ uint256 commissionAmount;
33
+ // this is based on referral used
34
+ uint256 discountAmount;
35
+ }
36
+
37
+ /// @dev policy data for the full policy lifecycle
11
38
  struct PolicyInfo {
12
39
  NftId productNftId;
13
40
  NftId bundleNftId;
@@ -16,7 +43,7 @@ interface IPolicy {
16
43
  uint256 sumInsuredAmount;
17
44
  uint256 premiumAmount;
18
45
  uint256 premiumPaidAmount;
19
- uint256 lifetime;
46
+ Seconds lifetime;
20
47
  bytes applicationData;
21
48
  bytes policyData;
22
49
  uint16 claimsCount;
@@ -37,7 +64,7 @@ interface IPolicy {
37
64
 
38
65
  // claimId neeeds to be encoded policyNftId:claimId combination
39
66
  struct PayoutInfo {
40
- NumberId claimId;
67
+ ClaimId claimId;
41
68
  uint256 amount;
42
69
  bytes data;
43
70
  Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
@@ -14,12 +14,8 @@ interface ISetup {
14
14
  TokenHandler tokenHandler;
15
15
  NftId distributionNftId;
16
16
  NftId poolNftId;
17
- Fee distributionFee; // default distribution fee (no referral id)
18
17
  Fee productFee; // product fee on net premium
19
- Fee processingFee; // product fee on payout amounts
20
- Fee poolFee; // pool fee on net premium
21
- Fee stakingFee; // pool fee on staked capital from investor
22
- Fee performanceFee; // pool fee on profits from capital investors
18
+ Fee processingFee; // product fee on payout amounts
23
19
  bool isIntercepting; // intercepts nft transfers (for products)
24
20
  address wallet;
25
21
  }
@@ -27,13 +23,16 @@ interface ISetup {
27
23
  struct DistributionSetupInfo {
28
24
  NftId productNftId;
29
25
  TokenHandler tokenHandler;
30
- Fee distributionFee; // default distribution fee (no referral id)
26
+ Fee minDistributionOwnerFee;
27
+ Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
31
28
  address wallet;
29
+ uint256 sumDistributionFees;
32
30
  }
33
31
 
34
32
  struct PoolSetupInfo {
35
33
  NftId productNftId;
36
34
  TokenHandler tokenHandler;
35
+ uint256 maxCapitalAmount; // max capital amount allowed for pool
37
36
  bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
38
37
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
39
38
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications