@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da0f894-204

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 (315) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +212 -94
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +552 -122
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +64 -72
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +279 -98
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +406 -90
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +68 -144
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +654 -117
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +316 -166
  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 +765 -323
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +97 -180
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +841 -574
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +134 -231
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +98 -124
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +265 -269
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -99
  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 +118 -169
  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/IAccess.sol/IAccess.json +62 -36
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +947 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +261 -267
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -93
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1031 -250
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +441 -85
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +535 -0
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -212
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +552 -135
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -287
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -169
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -169
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +164 -391
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -127
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +142 -221
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +302 -90
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +142 -221
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +302 -90
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -21
  98. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +83 -174
  100. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  101. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -34
  103. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  105. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +193 -216
  107. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -94
  109. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
  111. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
  113. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  114. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  116. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  118. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  120. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
  122. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  123. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  124. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IService.sol/IService.json +22 -169
  126. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  128. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
  130. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  132. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -74
  134. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -55
  136. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  138. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  139. package/artifacts/contracts/shared/Service.sol/Service.json +113 -164
  140. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  141. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  143. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  145. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +125 -55
  148. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  150. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestService.sol/TestService.json +134 -221
  152. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  156. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  157. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  162. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  164. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  171. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  174. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  176. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  178. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  180. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  182. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  184. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  187. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  191. package/contracts/components/Component.sol +82 -77
  192. package/contracts/components/Distribution.sol +188 -48
  193. package/contracts/components/IComponent.sol +42 -17
  194. package/contracts/components/IDistributionComponent.sol +39 -7
  195. package/contracts/components/IPoolComponent.sol +121 -21
  196. package/contracts/components/IProductComponent.sol +3 -2
  197. package/contracts/components/Pool.sol +290 -120
  198. package/contracts/components/Product.sol +92 -69
  199. package/contracts/instance/BundleManager.sol +1 -1
  200. package/contracts/instance/IInstance.sol +21 -1
  201. package/contracts/instance/IInstanceService.sol +19 -2
  202. package/contracts/instance/Instance.sol +58 -36
  203. package/contracts/instance/InstanceAccessManager.sol +136 -253
  204. package/contracts/instance/InstanceService.sol +154 -137
  205. package/contracts/instance/InstanceServiceManager.sol +1 -1
  206. package/contracts/instance/base/ComponentService.sol +1 -1
  207. package/contracts/instance/module/IAccess.sol +10 -11
  208. package/contracts/instance/module/IBundle.sol +2 -1
  209. package/contracts/instance/module/IDistribution.sol +2 -0
  210. package/contracts/instance/module/IPolicy.sol +30 -3
  211. package/contracts/instance/module/ISetup.sol +10 -10
  212. package/contracts/instance/service/ApplicationService.sol +346 -0
  213. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  214. package/contracts/instance/service/BundleService.sol +15 -9
  215. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  216. package/contracts/instance/service/ClaimService.sol +151 -0
  217. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  218. package/contracts/instance/service/DistributionService.sol +303 -15
  219. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  220. package/contracts/instance/service/IApplicationService.sol +81 -0
  221. package/contracts/instance/service/IBundleService.sol +14 -3
  222. package/contracts/instance/service/IClaimService.sol +61 -0
  223. package/contracts/instance/service/IDistributionService.sol +74 -0
  224. package/contracts/instance/service/IPolicyService.sol +26 -50
  225. package/contracts/instance/service/PolicyService.sol +126 -260
  226. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  227. package/contracts/instance/service/PoolService.sol +2 -3
  228. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  229. package/contracts/instance/service/ProductService.sol +9 -9
  230. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  231. package/contracts/registry/IRegistry.sol +3 -4
  232. package/contracts/registry/IRegistryService.sol +10 -8
  233. package/contracts/registry/Registry.sol +28 -21
  234. package/contracts/registry/RegistryService.sol +69 -48
  235. package/contracts/registry/RegistryServiceManager.sol +13 -13
  236. package/contracts/registry/ReleaseManager.sol +18 -28
  237. package/contracts/registry/TokenRegistry.sol +16 -12
  238. package/contracts/shared/ERC165.sol +14 -12
  239. package/contracts/shared/INftOwnable.sol +11 -10
  240. package/contracts/shared/IPolicyHolder.sol +26 -0
  241. package/contracts/shared/IRegisterable.sol +3 -3
  242. package/contracts/shared/IRegistryLinked.sol +12 -0
  243. package/contracts/shared/IService.sol +2 -0
  244. package/contracts/shared/IVersionable.sol +4 -47
  245. package/contracts/shared/NftOwnable.sol +66 -85
  246. package/contracts/shared/PolicyHolder.sol +81 -0
  247. package/contracts/shared/ProxyManager.sol +100 -25
  248. package/contracts/shared/Registerable.sol +7 -19
  249. package/contracts/shared/RegistryLinked.sol +48 -0
  250. package/contracts/shared/Service.sol +15 -17
  251. package/contracts/shared/Versionable.sol +4 -92
  252. package/contracts/test/TestRegisterable.sol +1 -1
  253. package/contracts/test/TestService.sol +1 -1
  254. package/contracts/types/ClaimId.sol +52 -0
  255. package/contracts/types/DistributorType.sol +2 -2
  256. package/contracts/types/ObjectType.sol +9 -5
  257. package/contracts/types/PayoutId.sol +54 -0
  258. package/contracts/types/RoleId.sol +14 -12
  259. package/contracts/types/Seconds.sol +54 -0
  260. package/contracts/types/Timestamp.sol +12 -13
  261. package/package.json +1 -1
  262. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  263. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  264. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  265. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  266. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  267. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  268. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  269. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  270. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  272. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  274. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  276. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  278. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  280. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  284. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  286. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  287. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  288. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  289. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  290. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  291. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  292. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  293. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  295. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  297. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  299. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  301. package/contracts/experiment/cloning/Cloner.sol +0 -47
  302. package/contracts/experiment/errors/Require.sol +0 -38
  303. package/contracts/experiment/errors/Revert.sol +0 -44
  304. package/contracts/experiment/inheritance/A.sol +0 -53
  305. package/contracts/experiment/inheritance/B.sol +0 -28
  306. package/contracts/experiment/inheritance/C.sol +0 -34
  307. package/contracts/experiment/inheritance/IA.sol +0 -13
  308. package/contracts/experiment/inheritance/IB.sol +0 -10
  309. package/contracts/experiment/inheritance/IC.sol +0 -12
  310. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  311. package/contracts/experiment/statemachine/ISM.sol +0 -25
  312. package/contracts/experiment/statemachine/SM.sol +0 -57
  313. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  314. package/contracts/experiment/types/TypeA.sol +0 -47
  315. 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,26 +22,35 @@ 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";
24
29
 
25
- abstract contract Product is Component, IProductComponent {
26
- using NftIdLib for NftId;
27
-
28
- IPolicyService internal _policyService;
29
- Pool internal _pool;
30
- Distribution internal _distribution;
31
- Fee internal _initialProductFee;
32
- Fee internal _initialProcessingFee;
33
- TokenHandler internal _tokenHandler;
34
-
35
- NftId internal _poolNftId;
36
- NftId internal _distributionNftId;
30
+ abstract contract Product is
31
+ Component,
32
+ IProductComponent
33
+ {
34
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
35
+ bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
36
+
37
+ struct ProductStorage {
38
+ IProductService _productService;
39
+ IApplicationService _applicationService;
40
+ IPolicyService _policyService;
41
+ IClaimService _claimService;
42
+ Pool _pool;
43
+ Distribution _distribution;
44
+ Fee _initialProductFee;
45
+ Fee _initialProcessingFee;
46
+ TokenHandler _tokenHandler;
47
+ NftId _poolNftId;
48
+ NftId _distributionNftId;
49
+ }
37
50
 
38
- constructor(
51
+ function initializeProduct(
39
52
  address registry,
40
- NftId instanceNftid,
53
+ NftId instanceNftId,
41
54
  string memory name,
42
55
  address token,
43
56
  bool isInterceptor,
@@ -46,37 +59,37 @@ abstract contract Product is Component, IProductComponent {
46
59
  Fee memory productFee,
47
60
  Fee memory processingFee,
48
61
  address initialOwner,
49
- bytes memory data
50
- ) Component (
51
- registry,
52
- instanceNftid,
53
- name,
54
- token,
55
- PRODUCT(),
56
- isInterceptor,
57
- initialOwner,
58
- data
59
- ) {
60
- // TODO add validation
61
- _policyService = getInstance().getPolicyService();
62
- _pool = Pool(pool);
63
- _distribution = Distribution(distribution);
64
- _initialProductFee = productFee;
65
- _initialProcessingFee = processingFee;
66
-
67
- _tokenHandler = new TokenHandler(token);
68
-
69
- _poolNftId = getRegistry().getNftId(address(_pool));
70
- _distributionNftId = getRegistry().getNftId(address(_distribution));
62
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
63
+ )
64
+ public
65
+ virtual
66
+ onlyInitializing()
67
+ {
68
+ initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
71
69
 
72
- _registerInterface(type(IProductComponent).interfaceId);
70
+ ProductStorage storage $ = _getProductStorage();
71
+ // TODO add validation
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()));
77
+ $._pool = Pool(pool);
78
+ $._distribution = Distribution(distribution);
79
+ $._initialProductFee = productFee;
80
+ $._initialProcessingFee = processingFee;
81
+ $._tokenHandler = new TokenHandler(token);
82
+ $._poolNftId = getRegistry().getNftId(pool);
83
+ $._distributionNftId = getRegistry().getNftId(distribution);
84
+
85
+ registerInterface(type(IProductComponent).interfaceId);
73
86
  }
74
87
 
75
88
 
76
89
  function calculatePremium(
77
90
  uint256 sumInsuredAmount,
78
91
  RiskId riskId,
79
- uint256 lifetime,
92
+ Seconds lifetime,
80
93
  bytes memory applicationData,
81
94
  NftId bundleNftId,
82
95
  ReferralId referralId
@@ -86,7 +99,8 @@ abstract contract Product is Component, IProductComponent {
86
99
  override
87
100
  returns (uint256 premiumAmount)
88
101
  {
89
- (premiumAmount,,,,) = _policyService.calculatePremium(
102
+ IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
103
+ getNftId(),
90
104
  riskId,
91
105
  sumInsuredAmount,
92
106
  lifetime,
@@ -94,13 +108,14 @@ abstract contract Product is Component, IProductComponent {
94
108
  bundleNftId,
95
109
  referralId
96
110
  );
111
+ premiumAmount = premium.premiumAmount;
97
112
  }
98
113
 
99
114
 
100
115
  function calculateNetPremium(
101
116
  uint256 sumInsuredAmount,
102
117
  RiskId riskId,
103
- uint256 lifetime,
118
+ Seconds lifetime,
104
119
  bytes memory applicationData
105
120
  )
106
121
  external
@@ -120,7 +135,7 @@ abstract contract Product is Component, IProductComponent {
120
135
  RiskId id,
121
136
  bytes memory data
122
137
  ) internal {
123
- getProductService().createRisk(
138
+ _getProductService().createRisk(
124
139
  id,
125
140
  data
126
141
  );
@@ -130,7 +145,7 @@ abstract contract Product is Component, IProductComponent {
130
145
  RiskId id,
131
146
  bytes memory data
132
147
  ) internal {
133
- getProductService().updateRisk(
148
+ _getProductService().updateRisk(
134
149
  id,
135
150
  data
136
151
  );
@@ -140,7 +155,7 @@ abstract contract Product is Component, IProductComponent {
140
155
  RiskId id,
141
156
  StateId state
142
157
  ) internal {
143
- getProductService().updateRiskState(
158
+ _getProductService().updateRiskState(
144
159
  id,
145
160
  state
146
161
  );
@@ -154,19 +169,22 @@ abstract contract Product is Component, IProductComponent {
154
169
  address applicationOwner,
155
170
  RiskId riskId,
156
171
  uint256 sumInsuredAmount,
157
- uint256 lifetime,
158
- bytes memory applicationData,
172
+ Seconds lifetime,
159
173
  NftId bundleNftId,
160
- ReferralId referralId
161
- ) internal returns (NftId nftId) {
162
- nftId = _policyService.createApplication(
174
+ ReferralId referralId,
175
+ bytes memory applicationData
176
+ )
177
+ internal
178
+ returns (NftId applicationNftId)
179
+ {
180
+ return _getProductStorage()._applicationService.create(
163
181
  applicationOwner,
164
182
  riskId,
165
183
  sumInsuredAmount,
166
184
  lifetime,
167
- applicationData,
168
185
  bundleNftId,
169
- referralId
186
+ referralId,
187
+ applicationData
170
188
  );
171
189
  }
172
190
 
@@ -177,7 +195,7 @@ abstract contract Product is Component, IProductComponent {
177
195
  )
178
196
  internal
179
197
  {
180
- _policyService.underwrite(
198
+ _getProductStorage()._policyService.underwrite(
181
199
  policyNftId,
182
200
  requirePremiumPayment,
183
201
  activateAt);
@@ -189,7 +207,7 @@ abstract contract Product is Component, IProductComponent {
189
207
  )
190
208
  internal
191
209
  {
192
- _policyService.collectPremium(
210
+ _getProductStorage()._policyService.collectPremium(
193
211
  policyNftId,
194
212
  activateAt);
195
213
  }
@@ -200,7 +218,7 @@ abstract contract Product is Component, IProductComponent {
200
218
  )
201
219
  internal
202
220
  {
203
- _policyService.activate(
221
+ _getProductStorage()._policyService.activate(
204
222
  policyNftId,
205
223
  activateAt);
206
224
  }
@@ -210,15 +228,15 @@ abstract contract Product is Component, IProductComponent {
210
228
  )
211
229
  internal
212
230
  {
213
- _policyService.close(policyNftId);
231
+ _getProductStorage()._policyService.close(policyNftId);
214
232
  }
215
233
 
216
234
  function getPoolNftId() external view override returns (NftId poolNftId) {
217
- return getRegistry().getNftId(address(_pool));
235
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
218
236
  }
219
237
 
220
238
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
221
- return getRegistry().getNftId(address(_distribution));
239
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
222
240
  }
223
241
 
224
242
  // from product component
@@ -231,7 +249,7 @@ abstract contract Product is Component, IProductComponent {
231
249
  restricted()
232
250
  override
233
251
  {
234
- getProductService().setFees(productFee, processingFee);
252
+ _getProductService().setFees(productFee, processingFee);
235
253
  }
236
254
 
237
255
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
@@ -245,22 +263,27 @@ abstract contract Product is Component, IProductComponent {
245
263
  }
246
264
 
247
265
  function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
248
- ISetup.DistributionSetupInfo memory distributionSetupInfo = _distribution.getSetupInfo();
249
- ISetup.PoolSetupInfo memory poolSetupInfo = _pool.getSetupInfo();
266
+ ProductStorage storage $ = _getProductStorage();
250
267
 
251
268
  return ISetup.ProductSetupInfo(
252
269
  getToken(),
253
- _tokenHandler,
254
- _distributionNftId,
255
- _poolNftId,
256
- distributionSetupInfo.distributionFee,
257
- _initialProductFee,
258
- _initialProcessingFee,
259
- poolSetupInfo.poolFee,
260
- poolSetupInfo.stakingFee,
261
- poolSetupInfo.performanceFee,
270
+ $._tokenHandler,
271
+ $._distributionNftId,
272
+ $._poolNftId,
273
+ $._initialProductFee,
274
+ $._initialProcessingFee,
262
275
  false,
263
276
  getWallet()
264
277
  );
265
278
  }
279
+
280
+ function _getProductStorage() private pure returns (ProductStorage storage $) {
281
+ assembly {
282
+ $.slot := PRODUCT_STORAGE_LOCATION_V1
283
+ }
284
+ }
285
+
286
+ function _getProductService() internal view returns (IProductService) {
287
+ return _getProductStorage()._productService;
288
+ }
266
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;
@@ -19,6 +19,7 @@ import {IDistributionService} from "./service/IDistributionService.sol";
19
19
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
20
20
  import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
21
  import {IPolicy} from "./module/IPolicy.sol";
22
+ import {IDistribution} from "./module/IDistribution.sol";
22
23
  import {IPolicyService} from "./service/IPolicyService.sol";
23
24
  import {IPoolService} from "./service/IPoolService.sol";
24
25
  import {IProductService} from "./service/IProductService.sol";
@@ -30,6 +31,7 @@ import {NftId} from "../types/NftId.sol";
30
31
  import {RiskId} from "../types/RiskId.sol";
31
32
  import {StateId} from "../types/StateId.sol";
32
33
  import {VersionPart} from "../types/Version.sol";
34
+ import {Key32} from "../types/Key32.sol";
33
35
 
34
36
 
35
37
 
@@ -58,14 +60,32 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
58
60
  function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
59
61
  function updateProductSetupState(NftId productNftId, StateId newState) external;
60
62
 
63
+ function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
64
+ function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
65
+ function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
66
+
67
+ function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
68
+ function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
69
+ function updateDistributorState(NftId nftId, StateId newState) external;
70
+
71
+ function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
72
+ function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
73
+ function updateReferralState(Key32 referralKey, StateId newState) external;
74
+
61
75
  function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
62
76
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
63
77
  function updateRiskState(RiskId riskId, StateId newState) external;
64
78
 
65
- 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
+
66
83
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
67
84
  function updatePolicyState(NftId policyNftId, StateId newState) external;
68
85
 
86
+ // TODO add claims/payouts function to instance
87
+ // function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
88
+
69
89
  function getMajorVersion() external pure returns (VersionPart majorVersion);
70
90
  function getInstanceReader() external view returns (InstanceReader);
71
91
  function getBundleManager() external view returns (BundleManager);
@@ -17,9 +17,26 @@ import {BundleManager} from "./BundleManager.sol";
17
17
 
18
18
  interface IInstanceService is IService {
19
19
 
20
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
21
+ error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
22
+ error ErrorInstanceServiceMasterBundleManagerAlreadySet();
23
+ error ErrorInstanceServiceInstanceAddressZero();
24
+
25
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
26
+ error ErrorInstanceServiceInstanceReaderAddressZero();
27
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
28
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
29
+
30
+ error ErrorInstanceServiceAccessManagerZero();
31
+ error ErrorInstanceServiceInstanceReaderZero();
32
+ error ErrorInstanceServiceBundleManagerZero();
33
+
34
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
35
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
36
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
37
+
20
38
  error ErrorInstanceServiceRequestUnauhorized(address caller);
21
39
  error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
22
- error ErrorInstanceServiceNotInstance(NftId nftId);
23
40
  error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
24
41
  error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
25
42
 
@@ -36,7 +53,7 @@ interface IInstanceService is IService {
36
53
  );
37
54
 
38
55
  function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
39
- function setComponentLocked(bool locked) external;
56
+ function setTargetLocked(string memory targetName, bool locked) external;
40
57
 
41
58
  }
42
59
 
@@ -5,8 +5,9 @@ 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
- import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT} from "../types/ObjectType.sol";
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";
11
12
  import {RoleId, RoleIdLib} from "../types/RoleId.sol";
12
13
  import {StateId, ACTIVE} from "../types/StateId.sol";
@@ -25,6 +26,7 @@ import {KeyValueStore} from "./base/KeyValueStore.sol";
25
26
 
26
27
  import {IAccess} from "./module/IAccess.sol";
27
28
  import {IBundle} from "./module/IBundle.sol";
29
+ import {IDistribution} from "./module/IDistribution.sol";
28
30
  import {IPolicy} from "./module/IPolicy.sol";
29
31
  import {IRisk} from "./module/IRisk.sol";
30
32
  import {ISetup} from "./module/ISetup.sol";
@@ -59,13 +61,12 @@ contract Instance is
59
61
 
60
62
  function initialize(address accessManagerAddress, address registryAddress, NftId registryNftId, address initialOwner)
61
63
  public
62
- initializer
64
+ initializer()
63
65
  {
64
66
  __AccessManaged_init(accessManagerAddress);
65
67
 
66
- _initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
67
-
68
- _registerInterface(type(IInstance).interfaceId);
68
+ initializeRegisterable(registryAddress, registryNftId, INSTANCE(), false, initialOwner, "");
69
+ registerInterface(type(IInstance).interfaceId);
69
70
  }
70
71
 
71
72
  //--- ProductSetup ------------------------------------------------------//
@@ -107,43 +108,43 @@ contract Instance is
107
108
  updateState(_toNftKey32(poolNftId, POOL()), newState);
108
109
  }
109
110
 
110
- //--- DistributorType ---------------------------------------------------//
111
- function createDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
112
- create(toPolicyKey32(policyNftId), abi.encode(payout));
111
+ //--- DistributorType -------------------------------------------------------//
112
+ function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external restricted() {
113
+ create(distributorKey, abi.encode(info));
113
114
  }
114
115
 
115
- function updateDistributorType(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
116
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
116
+ function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
117
+ update(distributorKey, abi.encode(info), newState);
117
118
  }
118
119
 
119
- function updateDistributorTypeState(NftId policyNftId, StateId newState) external restricted() {
120
- updateState(toPolicyKey32(policyNftId), newState);
120
+ function updateDistributorTypeState(Key32 distributorKey, StateId newState) external restricted() {
121
+ updateState(distributorKey, newState);
121
122
  }
122
123
 
123
124
  //--- Distributor -------------------------------------------------------//
124
- function createDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
125
- create(toPolicyKey32(policyNftId), abi.encode(payout));
125
+ function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external restricted() {
126
+ create(toDistributorKey32(nftId), abi.encode(info));
126
127
  }
127
128
 
128
- function updateDistributor(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
129
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
129
+ function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
130
+ update(toDistributorKey32(nftId), abi.encode(info), newState);
130
131
  }
131
132
 
132
- function updateDistributorState(NftId policyNftId, StateId newState) external restricted() {
133
- updateState(toPolicyKey32(policyNftId), newState);
133
+ function updateDistributorState(NftId nftId, StateId newState) external restricted() {
134
+ updateState(toDistributorKey32(nftId), newState);
134
135
  }
135
136
 
136
137
  //--- Referral ----------------------------------------------------------//
137
- function createReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
138
- create(toPolicyKey32(policyNftId), abi.encode(payout));
138
+ function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external restricted() {
139
+ create(referralKey, abi.encode(referralInfo));
139
140
  }
140
141
 
141
- function updateReferral(NftId policyNftId, NumberId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
142
- update(toPolicyKey32(policyNftId), abi.encode(payout), newState);
142
+ function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
143
+ update(referralKey, abi.encode(referralInfo), newState);
143
144
  }
144
145
 
145
- function updateReferralState(NftId policyNftId, StateId newState) external restricted() {
146
- updateState(toPolicyKey32(policyNftId), newState);
146
+ function updateReferralState(Key32 referralKey, StateId newState) external restricted() {
147
+ updateState(referralKey, newState);
147
148
  }
148
149
 
149
150
  //--- Bundle ------------------------------------------------------------//
@@ -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));
178
179
  }
179
180
 
181
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
182
+ update(toPolicyKey32(applicationNftId), abi.encode(policy), newState);
183
+ }
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
 
@@ -224,24 +234,36 @@ contract Instance is
224
234
  return policyNftId.toKey32(POLICY());
225
235
  }
226
236
 
237
+ function toDistributionKey32(NftId distNftId) public pure returns (Key32) {
238
+ return distNftId.toKey32(DISTRIBUTION());
239
+ }
240
+
241
+ function toDistributorTypeKey32(NftId distNftId) public pure returns (Key32) {
242
+ return distNftId.toKey32(DISTRIBUTOR_TYPE());
243
+ }
244
+
245
+ function toDistributorKey32(NftId distNftId) public pure returns (Key32) {
246
+ return distNftId.toKey32(DISTRIBUTOR());
247
+ }
248
+
227
249
  function getDistributionService() external view returns (IDistributionService) {
228
- return IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
250
+ return IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), VersionPart.wrap(3)));
229
251
  }
230
252
 
231
253
  function getProductService() external view returns (IProductService) {
232
- return IProductService(_registry.getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
254
+ return IProductService(getRegistry().getServiceAddress(PRODUCT(), VersionPart.wrap(3)));
233
255
  }
234
256
 
235
257
  function getPoolService() external view returns (IPoolService) {
236
- return IPoolService(_registry.getServiceAddress(POOL(), VersionPart.wrap(3)));
258
+ return IPoolService(getRegistry().getServiceAddress(POOL(), VersionPart.wrap(3)));
237
259
  }
238
260
 
239
261
  function getPolicyService() external view returns (IPolicyService) {
240
- return IPolicyService(_registry.getServiceAddress(POLICY(), VersionPart.wrap(3)));
262
+ return IPolicyService(getRegistry().getServiceAddress(POLICY(), VersionPart.wrap(3)));
241
263
  }
242
264
 
243
265
  function getBundleService() external view returns (IBundleService) {
244
- return IBundleService(_registry.getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
266
+ return IBundleService(getRegistry().getServiceAddress(BUNDLE(), VersionPart.wrap(3)));
245
267
  }
246
268
 
247
269
  function setInstanceReader(InstanceReader instanceReader) external restricted() {