@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7c17b4-297

Sign up to get free protection for your applications and to get access to all the features.
Files changed (456) hide show
  1. package/README.md +243 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +928 -175
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +153 -174
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +701 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +797 -76
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +567 -34
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +995 -260
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +710 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1451 -1206
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → IInstanceService.sol/IInstanceService.json} +199 -182
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2088 -1373
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +192 -195
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +473 -168
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +30 -255
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +41 -419
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +227 -264
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  99. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +233 -535
  101. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +236 -63
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +312 -178
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +210 -212
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +424 -255
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -122
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  122. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  132. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  134. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +51 -47
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  147. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +147 -154
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  151. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -215
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  169. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  170. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  185. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  186. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  188. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  190. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  192. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  194. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  196. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  198. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/Component.sol +221 -0
  213. package/contracts/components/Distribution.sol +214 -61
  214. package/contracts/components/IComponent.sol +68 -0
  215. package/contracts/components/IDistributionComponent.sol +59 -5
  216. package/contracts/components/IPoolComponent.sol +126 -39
  217. package/contracts/components/IProductComponent.sol +12 -9
  218. package/contracts/components/Pool.sol +290 -158
  219. package/contracts/components/Product.sol +134 -140
  220. package/contracts/instance/BundleManager.sol +125 -0
  221. package/contracts/instance/Cloneable.sol +46 -0
  222. package/contracts/instance/IInstance.sol +84 -46
  223. package/contracts/instance/IInstanceService.sol +59 -0
  224. package/contracts/instance/Instance.sol +273 -69
  225. package/contracts/instance/InstanceAccessManager.sol +297 -0
  226. package/contracts/instance/InstanceReader.sol +293 -0
  227. package/contracts/instance/InstanceService.sol +490 -0
  228. package/contracts/instance/InstanceServiceManager.sol +54 -0
  229. package/contracts/instance/ObjectManager.sol +84 -0
  230. package/contracts/instance/base/ComponentService.sol +134 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  232. package/contracts/instance/base/ILifecycle.sol +3 -3
  233. package/contracts/instance/base/KeyValueStore.sol +49 -38
  234. package/contracts/instance/base/Lifecycle.sol +1 -1
  235. package/contracts/instance/module/IAccess.sol +47 -0
  236. package/contracts/instance/module/IBundle.sol +21 -0
  237. package/contracts/instance/module/IDistribution.sol +39 -0
  238. package/contracts/instance/module/IPolicy.sol +48 -0
  239. package/contracts/instance/module/IRisk.sol +11 -0
  240. package/contracts/instance/module/ISetup.sol +48 -0
  241. package/contracts/instance/module/ITreasury.sol +23 -0
  242. package/contracts/instance/service/ApplicationService.sol +269 -0
  243. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  244. package/contracts/instance/service/BundleService.sol +299 -0
  245. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  246. package/contracts/instance/service/ClaimService.sol +151 -0
  247. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  248. package/contracts/instance/service/DistributionService.sol +244 -21
  249. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  250. package/contracts/instance/service/IApplicationService.sol +83 -0
  251. package/contracts/instance/service/IBundleService.sol +55 -0
  252. package/contracts/instance/service/IClaimService.sol +61 -0
  253. package/contracts/instance/service/IDistributionService.sol +54 -1
  254. package/contracts/instance/service/IPolicyService.sol +90 -0
  255. package/contracts/instance/service/IPoolService.sol +7 -24
  256. package/contracts/instance/service/IProductService.sol +9 -76
  257. package/contracts/instance/service/PolicyService.sol +476 -0
  258. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  259. package/contracts/instance/service/PoolService.sol +77 -117
  260. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  261. package/contracts/instance/service/ProductService.sol +156 -433
  262. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  263. package/contracts/registry/ChainNft.sol +41 -26
  264. package/contracts/registry/IRegistry.sol +51 -25
  265. package/contracts/registry/IRegistryService.sol +54 -16
  266. package/contracts/registry/Registry.sol +279 -306
  267. package/contracts/registry/RegistryAccessManager.sol +216 -0
  268. package/contracts/registry/RegistryService.sol +162 -247
  269. package/contracts/registry/RegistryServiceManager.sol +30 -11
  270. package/contracts/registry/ReleaseManager.sol +322 -0
  271. package/contracts/registry/TokenRegistry.sol +116 -0
  272. package/contracts/shared/ERC165.sol +15 -9
  273. package/contracts/shared/INftOwnable.sol +11 -10
  274. package/contracts/shared/IPolicyHolder.sol +26 -0
  275. package/contracts/shared/IRegisterable.sol +4 -6
  276. package/contracts/shared/IRegistryLinked.sol +12 -0
  277. package/contracts/shared/IService.sol +16 -0
  278. package/contracts/shared/IVersionable.sol +4 -47
  279. package/contracts/shared/NftOwnable.sol +67 -83
  280. package/contracts/shared/PolicyHolder.sol +81 -0
  281. package/contracts/shared/ProxyManager.sol +101 -26
  282. package/contracts/shared/Registerable.sol +17 -32
  283. package/contracts/shared/RegistryLinked.sol +48 -0
  284. package/contracts/shared/Service.sol +58 -0
  285. package/contracts/shared/TokenHandler.sol +27 -0
  286. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  287. package/contracts/shared/Versionable.sol +5 -93
  288. package/contracts/test/TestFee.sol +2 -2
  289. package/contracts/test/TestRegisterable.sol +1 -1
  290. package/contracts/test/TestRoleId.sol +1 -1
  291. package/contracts/test/TestService.sol +6 -7
  292. package/contracts/types/ClaimId.sol +52 -0
  293. package/contracts/types/DistributorType.sol +55 -0
  294. package/contracts/types/Fee.sol +3 -3
  295. package/contracts/types/Key32.sol +8 -3
  296. package/contracts/types/NftIdSet.sol +26 -24
  297. package/contracts/types/NumberId.sol +52 -0
  298. package/contracts/types/ObjectType.sol +39 -14
  299. package/contracts/types/PayoutId.sol +54 -0
  300. package/contracts/types/Referral.sol +85 -0
  301. package/contracts/types/RoleId.sol +66 -9
  302. package/contracts/types/Seconds.sol +54 -0
  303. package/contracts/types/StateId.sol +5 -1
  304. package/contracts/types/Timestamp.sol +16 -13
  305. package/contracts/types/UFixed.sol +128 -12
  306. package/contracts/types/Version.sol +4 -1
  307. package/package.json +6 -5
  308. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  309. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  310. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  313. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  315. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  317. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  319. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  321. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  323. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  327. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  330. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  332. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  336. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  338. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  340. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  342. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  343. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  346. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  347. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  348. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  354. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  356. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  358. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  360. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  363. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  365. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  370. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  373. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  376. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  382. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  384. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  387. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  389. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  392. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  394. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  396. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  398. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  399. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  401. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  403. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  405. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  407. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  409. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/access/Access.sol +0 -149
  434. package/contracts/instance/module/access/IAccess.sol +0 -53
  435. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  436. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  437. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  438. package/contracts/instance/module/component/IComponent.sol +0 -28
  439. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  440. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  441. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  442. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  443. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  444. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  445. package/contracts/instance/module/risk/IRisk.sol +0 -26
  446. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  447. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  448. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  449. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  450. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  451. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  452. package/contracts/registry/IChainNft.sol +0 -22
  453. package/contracts/test/TestDistribution.sol +0 -22
  454. package/contracts/test/TestPool.sol +0 -27
  455. package/contracts/test/TestProduct.sol +0 -74
  456. package/contracts/types/ReferralId.sol +0 -48
package/README.md CHANGED
@@ -1,4 +1,17 @@
1
- # gif-next (Generic Insurance Framework next version)
1
+ # GIF-Next (Generic Insurance Framework, next version)
2
+
3
+
4
+ ```mermaid
5
+ graph TD
6
+ IPoolComponent --> IComponent
7
+ IComponent --> IRegisterable
8
+ IComponent --> ITransferInterceptor
9
+ IRegistryService --> IService
10
+ IService-->IRegisterable
11
+ IService-->IVersionable
12
+ IRegisterable-->INftOwnable
13
+ INftOwnable-->IERC165
14
+ ```
2
15
 
3
16
  ## Add OpenZeppelin V5 Dependencies
4
17
 
@@ -40,7 +53,18 @@ npm run test-with-gas
40
53
  npm run coverage
41
54
  ```
42
55
 
43
- ### Deployment
56
+ ### Docgen
57
+
58
+ Produce `solidty-docgen` documentation using the command below.
59
+
60
+ ```shell
61
+ hh docgen
62
+ ```
63
+
64
+ The resulting markdown files are written to `docs`
65
+
66
+
67
+ ### Full protocol deployment
44
68
 
45
69
  Install the dependencies before running the script below for the first time.
46
70
 
@@ -70,6 +94,25 @@ Environment variables:
70
94
  - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
71
95
  - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
72
96
 
97
+ ### Create a new instance
98
+
99
+ Requires previous step to be completed.
100
+
101
+ ```bash
102
+ # set appropriate values vor env variables (see below)
103
+
104
+ hh run --network <networkname> scripts/new_instance.ts
105
+ ```
106
+
107
+ Currently an HD wallet is expected to be used for the deployment. The mnemonic of the wallet needs to be provided via the `WALLET_MNEMONIC` environment variable.
108
+ The instance owner will be the 11th address of the wallet.
109
+
110
+ Environment variables:
111
+
112
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
113
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
114
+ - `REGISTRY_ADDRESS` the address of the registry that is already deployed and configured and has a valid master instance
115
+
73
116
 
74
117
  ### Console
75
118
 
@@ -108,7 +151,11 @@ forge test -vvvv --mt test_decimals
108
151
  # provide gas report for a single test
109
152
  forge test --mt test_decimals --gas-report
110
153
 
154
+ # provide code coverage report
111
155
  forge coverage
156
+ forge coverage --report lcov
157
+
158
+
112
159
  ```
113
160
 
114
161
  Chisel session
@@ -272,6 +319,157 @@ pool_id = pool.getNftId()
272
319
  product_id = product.getNftId()
273
320
  ```
274
321
 
322
+ ## Objects
323
+
324
+ ### Registry
325
+
326
+ Mandatory properties
327
+
328
+ * One registry per chain
329
+ * Global registry: the registry on mainnet
330
+ * One entry per protocol object
331
+ * Once registered object properties are immutable
332
+ * Globally unique NFT minted per protocol object (chain id is embedded in NFT id)
333
+ * Object ownership defined by NFT ownernship
334
+ * Typed objects (instance, product, policy, ...)
335
+ * Each object has parent object (only one exception: protocol object does not have parent object)
336
+ * Parent object type is defined by type of child object
337
+
338
+ Object properties (for smart contracts)
339
+ * Objects that represent a smart contract record its contract address
340
+ * With one exception (see next point) smart contract addresses refer to the address on the same chain as the registry
341
+ * The global registry also holds entries for all the registries on different chains than mainnet, in these cases the addresses refer to the chains of these chain specific registries (this is the only case where registered addresses do not refer to the same chain)
342
+
343
+ Optional properties
344
+
345
+ * Objects can have names
346
+ * Object names are unique per chain
347
+ * Objects may define an intercepting property, in which case a predefined smart contract is involved in NFT transfers of the objects NFT (transfer may trigger actions, transfer may be blocked etc)
348
+ *
349
+
350
+ Ownership property
351
+
352
+ * Object ownership defined by ownership of NFT representing the object
353
+ * Protocol
354
+ * Fixed/predefined owner (address without private key)
355
+ * Registry
356
+ * Allows registration of token and services (per major release)
357
+ * May transfer ownership
358
+ * Token
359
+ * Fixed/predefined owner (address without private key)
360
+ * TODO add whitelisting for token per major release
361
+ * Service
362
+ * Allows upgrades of services as long as major version is same
363
+ * Until further notice the same entity as the registry owner
364
+ * May transfer ownership
365
+ * Instance
366
+ * Granting/revoking of roles (both default + custom)
367
+ * Management of custom roles and targets
368
+ * May lock instance and/or components
369
+ * May transfer ownership
370
+ * Component (Product, Pool, Distribution, Oracle)
371
+ * Register component
372
+ * Set component wallet (which receives fees, holds funds)
373
+ * May lock component
374
+ * May transfer ownership
375
+ * Additional use case specific features
376
+ * Policy
377
+ * Represents policy holder
378
+ * Receive payouts (GIF default behaviour)
379
+ * May transfer ownership
380
+ * Bundle
381
+ * Represents funds owner
382
+ * May withdraw funds not locked by active policies
383
+ * May transfer ownership
384
+ * Distributor
385
+ * Receives commissions from sales (GIF default behaviour)
386
+ * May transfer ownership
387
+
388
+ Intercepting property
389
+ * Service owner is indirectly owner of service manager contract
390
+
391
+ * Instance
392
+ * intercepts transfer of instance owner (new owner needs access manager admin rights for custom roles and targets)
393
+ * intercepts transfer of components, to do what? check that new owner has necessary roles?
394
+ * Product
395
+ * intercepts transfer of policies (use case specific: eg. limit/disallow transfers)
396
+ * Pool:
397
+ * intercepts transfer of bundles (use case specific: eg. limit/disallow transfers)
398
+ * Distribution
399
+ * intercepts transfer of distributors (bookkeeping: only one distributor per address allowed)
400
+ * Oracle
401
+ * likely meaningless
402
+
403
+
404
+ ### Instance
405
+
406
+ ### Product
407
+
408
+ ### Payout Handling
409
+
410
+ Pool specifies **retention level**.
411
+ Retention level defines up to which percentage of the sum insured the pool is payout out using its own/current funds.
412
+ Depending on the amount of a new payout the poolService decides to either execute the payout directly or to add the payout as a pending payout with a notification of the pool.
413
+
414
+ The sequence below sketches the small payout flow (payout < retention amount)
415
+ - retention level: 30%
416
+ - sum insured: 1000
417
+ - payout: 200
418
+
419
+ ```mermaid
420
+ sequenceDiagram
421
+ participant customer
422
+ participant product
423
+ participant claimService
424
+ participant poolService
425
+ participant pool
426
+ product->>claimService: createPayout()
427
+ claimService ->> poolService: requestPayout()
428
+ poolService -->> pool: verifyPayout() *
429
+ poolService ->> poolService: processPayout()
430
+ poolService ->> customer: transfer token for payout
431
+ poolService ->> claimService: payoutExecuted()
432
+ poolService -->> customer: payoutExecutedCallback() **
433
+ ```
434
+
435
+ *: if pool is configured to verify payouts before execution
436
+
437
+ **: callback only if customer is contract (IPolicyHolder)
438
+
439
+ The sequence below sketches the call flow for payouts larger than the retention amount
440
+ - retention level: 30%
441
+ - sum insured: 1000
442
+ - payout: 500
443
+ * locally available: 300
444
+ * via policy (re-insurance): 200
445
+
446
+ ```mermaid
447
+ sequenceDiagram
448
+ participant customer
449
+ participant product
450
+ participant claimService
451
+ participant poolService
452
+ participant pool
453
+ pool ->> reinsuranceProduct: applyForPolicy()
454
+ product->>claimService: createPayout()
455
+ claimService ->> poolService: requestPayout()
456
+ poolService ->> pool: pendingPayoutAdded()
457
+ pool ->> pool: getReinsurancePolicy()
458
+ pool ->> reinsuranceProduct: claim()
459
+ reinsuranceProduct -->> reinsurancePool: createPayout
460
+ reinsurancePool ->> pool: transfer token for payout
461
+ reinsurancePool ->> pool: payoutExecutedCallback()
462
+ pool ->> poolService: processPendingPayout()
463
+ poolService ->> customer: transfer token for payout
464
+ poolService ->> claimService: payoutExecuted()
465
+ ```
466
+
467
+ ### Pool
468
+
469
+ ### Distribution
470
+
471
+ ### Oracle
472
+
275
473
  ## Registry and Services
276
474
 
277
475
  ### Principles
@@ -312,3 +510,46 @@ Distribution Service
312
510
  - registered via registry service by registry owner
313
511
  - registers distribution components for registered products via registry service by distribution owner (distribution owner role is permissend by the product's instance)
314
512
  - registers distributors for registered distribution components via registry service
513
+
514
+ ## Contract Organisation
515
+
516
+ now
517
+
518
+ contracts
519
+ components
520
+ instance
521
+ registry
522
+ shared
523
+ types
524
+
525
+
526
+ contracts
527
+ component
528
+ pool
529
+ Pool.sol
530
+ PoolService.sol
531
+ oracle
532
+ distribution
533
+ product
534
+ Product.sol
535
+ ProductService.sol
536
+ Component.sol
537
+ ComponentService.sol
538
+ instance
539
+ Instance.sol
540
+ InstanceAccessManager.sol
541
+ InstanceReader.sol
542
+ InstanceService.sol
543
+ InstanceServiceManager.sol
544
+ registry
545
+ ChainNft.sol
546
+ Registry.sol
547
+ RegistryService.sol
548
+ RegistryServiceManager.sol
549
+ shared
550
+ Registerable.sol
551
+ RegisterableUpgradable.sol
552
+ type
553
+ NftId.sol
554
+ ObjectType.sol
555
+
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/2feb17560f035cbba2aef2f5c9f9b3a5.json"
4
+ }