@etherisc/gif-next 0.0.2-a9ccad5-356 → 0.0.2-a9f5983-610

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 (347) hide show
  1. package/README.md +73 -1
  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 +758 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +103 -109
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +725 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +814 -60
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +592 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +833 -321
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +461 -149
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -49
  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 +911 -115
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +178 -165
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +797 -1007
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +70 -101
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -330
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -116
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -19
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  38. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +181 -180
  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 +59 -16
  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 +858 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -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 +434 -215
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +316 -83
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +178 -511
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +293 -108
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +190 -571
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  101. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  114. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  123. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  124. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  125. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +120 -174
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -231
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  157. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  158. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  159. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  172. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  188. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  192. package/contracts/components/Component.sol +221 -0
  193. package/contracts/components/Distribution.sol +209 -64
  194. package/contracts/components/IComponent.sol +68 -0
  195. package/contracts/components/IDistributionComponent.sol +59 -3
  196. package/contracts/components/IPoolComponent.sol +124 -39
  197. package/contracts/components/IProductComponent.sol +10 -5
  198. package/contracts/components/Pool.sol +283 -172
  199. package/contracts/components/Product.sol +125 -121
  200. package/contracts/instance/BundleManager.sol +8 -12
  201. package/contracts/instance/IInstance.sol +46 -10
  202. package/contracts/instance/IInstanceService.sol +30 -3
  203. package/contracts/instance/Instance.sol +99 -262
  204. package/contracts/instance/InstanceAccessManager.sol +87 -78
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +381 -123
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +8 -19
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +27 -18
  211. package/contracts/instance/module/IBundle.sol +2 -1
  212. package/contracts/instance/module/IPolicy.sol +6 -3
  213. package/contracts/instance/module/ISetup.sol +6 -4
  214. package/contracts/instance/service/ApplicationService.sol +269 -0
  215. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  216. package/contracts/instance/service/BundleService.sol +299 -0
  217. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  218. package/contracts/instance/service/ClaimService.sol +151 -0
  219. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  220. package/contracts/instance/service/DistributionService.sol +216 -27
  221. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  222. package/contracts/instance/service/IApplicationService.sol +83 -0
  223. package/contracts/instance/service/IBundleService.sol +55 -0
  224. package/contracts/instance/service/IClaimService.sol +61 -0
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +90 -0
  227. package/contracts/instance/service/IPoolService.sol +2 -33
  228. package/contracts/instance/service/IProductService.sol +2 -72
  229. package/contracts/instance/service/PolicyService.sol +476 -0
  230. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  231. package/contracts/instance/service/PoolService.sol +34 -212
  232. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  233. package/contracts/instance/service/ProductService.sol +123 -460
  234. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  235. package/contracts/registry/ChainNft.sol +1 -1
  236. package/contracts/registry/IRegistry.sol +37 -19
  237. package/contracts/registry/IRegistryService.sol +30 -13
  238. package/contracts/registry/Registry.sol +233 -217
  239. package/contracts/registry/RegistryAccessManager.sol +216 -0
  240. package/contracts/registry/RegistryService.sol +96 -171
  241. package/contracts/registry/RegistryServiceManager.sol +21 -39
  242. package/contracts/registry/ReleaseManager.sol +322 -0
  243. package/contracts/registry/TokenRegistry.sol +22 -17
  244. package/contracts/shared/ERC165.sol +14 -12
  245. package/contracts/shared/INftOwnable.sol +11 -10
  246. package/contracts/shared/IPolicyHolder.sol +26 -0
  247. package/contracts/shared/IRegisterable.sol +4 -6
  248. package/contracts/shared/IRegistryLinked.sol +12 -0
  249. package/contracts/shared/IService.sol +2 -1
  250. package/contracts/shared/IVersionable.sol +4 -47
  251. package/contracts/shared/NftOwnable.sol +66 -80
  252. package/contracts/shared/PolicyHolder.sol +81 -0
  253. package/contracts/shared/ProxyManager.sol +100 -25
  254. package/contracts/shared/Registerable.sol +16 -32
  255. package/contracts/shared/RegistryLinked.sol +48 -0
  256. package/contracts/shared/Service.sol +25 -22
  257. package/contracts/shared/Versionable.sol +4 -92
  258. package/contracts/test/TestRegisterable.sol +1 -1
  259. package/contracts/test/TestService.sol +4 -3
  260. package/contracts/types/ClaimId.sol +52 -0
  261. package/contracts/types/DistributorType.sol +2 -2
  262. package/contracts/types/ObjectType.sol +9 -5
  263. package/contracts/types/PayoutId.sol +54 -0
  264. package/contracts/types/RoleId.sol +19 -14
  265. package/contracts/types/Seconds.sol +54 -0
  266. package/contracts/types/Timestamp.sol +12 -13
  267. package/package.json +3 -3
  268. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  269. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  274. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  276. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  278. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  280. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  284. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  286. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  287. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  289. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  290. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  292. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  295. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  299. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  301. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  302. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  303. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  304. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  305. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  306. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  307. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  309. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  310. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  311. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  312. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  313. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  314. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  315. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  316. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  317. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  318. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  320. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  321. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  322. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  323. package/contracts/components/BaseComponent.sol +0 -129
  324. package/contracts/components/IBaseComponent.sol +0 -31
  325. package/contracts/experiment/cloning/Cloner.sol +0 -47
  326. package/contracts/experiment/errors/Require.sol +0 -38
  327. package/contracts/experiment/errors/Revert.sol +0 -44
  328. package/contracts/experiment/inheritance/A.sol +0 -53
  329. package/contracts/experiment/inheritance/B.sol +0 -28
  330. package/contracts/experiment/inheritance/C.sol +0 -34
  331. package/contracts/experiment/inheritance/IA.sol +0 -13
  332. package/contracts/experiment/inheritance/IB.sol +0 -10
  333. package/contracts/experiment/inheritance/IC.sol +0 -12
  334. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  335. package/contracts/experiment/statemachine/ISM.sol +0 -25
  336. package/contracts/experiment/statemachine/SM.sol +0 -57
  337. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  338. package/contracts/experiment/types/TypeA.sol +0 -47
  339. package/contracts/experiment/types/TypeB.sol +0 -29
  340. package/contracts/instance/AccessManagedSimple.sol +0 -115
  341. package/contracts/instance/AccessManagerSimple.sol +0 -692
  342. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  343. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  344. package/contracts/instance/base/IInstanceBase.sol +0 -23
  345. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  346. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  347. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,66 +1,151 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../types/NftId.sol";
5
4
  import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {RoleId} from "../types/RoleId.sol";
9
+ import {Seconds} from "../types/Seconds.sol";
6
10
  import {UFixed} from "../types/UFixed.sol";
7
11
 
8
- interface IPoolComponent {
12
+ /// @dev pool components hold and manage the collateral to cover active policies
13
+ /// pools come in different flavors
14
+ interface IPoolComponent is IComponent {
9
15
 
10
- event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
16
+ error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
17
+ error ErrorPoolNotPoolService(address caller);
11
18
 
12
- function setFees(
13
- Fee memory poolFee,
14
- Fee memory stakingFee,
15
- Fee memory performanceFee
16
- ) external;
19
+ error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
20
+ error ErrorPoolBundleOwnerRoleAlreadySet();
21
+
22
+ event LogPoolVerifiedByPool(address pool, NftId applicationNftId, uint256 collateralizationAmount);
23
+ event LogPoolBundleMaxCapitalAmountUpdated(uint256 previousMaxCapitalAmount, uint256 currentMaxCapitalAmount);
24
+ event LogPoolBundleOwnerRoleSet(RoleId bundleOwnerRole);
25
+
26
+ /// @dev increases the staked tokens by the specified amount
27
+ /// only the bundle owner may stake tokens
28
+ /// bundle MUST be in active or locked state
29
+ function stake(NftId bundleNftId, uint256 amount) external;
17
30
 
18
- /**
19
- * @dev creates a new bundle for this pool.
20
- */
21
- function createBundle(
22
- Fee memory fee,
23
- uint256 initialAmount,
24
- uint256 lifetime,
25
- bytes memory filter
26
- ) external returns(NftId bundleNftId);
31
+ /// @dev decreases the staked tokens by the specified amount
32
+ /// only the bundle owner may unstake tokens from the bundle
33
+ /// bundle MUST be in active, locked or closed state
34
+ function unstake(NftId bundleNftId, uint256 amount) external;
27
35
 
36
+ /// @dev extends the bundle lifetime of the bundle by the specified time
37
+ /// only the bundle owner may extend the bundle's lifetime
38
+ /// bundle MUST be in active or locked state
39
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external;
40
+
41
+ /// @dev locks the specified bundle
42
+ /// a bundle to be locked MUST be in active state
43
+ /// locked bundles may not be used to underwrite any new policy
44
+ function lockBundle(NftId bundleNftId) external;
45
+
46
+ /// @dev unlocks the specified bundle
47
+ /// a bundle to be unlocked MUST be in locked state
48
+ function unlockBundle(NftId bundleNftId) external;
49
+
50
+ /// @dev close the specified bundle
51
+ /// a bundle to be closed MUST be in active or locked state
52
+ /// to close a bundle all all linked policies MUST be in closed state as well
53
+ /// closing a bundle finalizes the bundle bookkeeping including overall profit calculation
54
+ /// once a bundle is closed this action cannot be reversed
55
+ function close(NftId bundleNftId) external;
56
+
57
+ /// @dev sets the fee for the specified bundle
58
+ /// the fee is added on top of the poolFee and deducted from the premium amounts
59
+ /// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
28
60
  function setBundleFee(
29
- NftId policyNftId,
61
+ NftId bundleNftId,
30
62
  Fee memory fee
31
63
  ) external;
32
64
 
33
- /**
34
- * @dev this is a callback function that is called by the product service when underwriting a policy.
35
- * the pool has the option to check the details and object to underwriting by reverting.
36
- * the function is only called for "active" pools that ask to be involved/notified
37
- * by product related state changes.
38
- */
39
- function underwrite(
40
- NftId policyNftId,
41
- bytes memory policyData,
65
+ /// @dev sets the maximum overall capital amound held by this pool
66
+ /// function may only be called by pool owner
67
+ function setMaxCapitalAmount(uint256 maxCapitalAmount) external;
68
+
69
+ /// @dev sets the required role to create/own bundles
70
+ /// may only be called once after setting up a pool
71
+ /// may only be called by pool owner
72
+ function setBundleOwnerRole(RoleId bundleOwnerRole) external;
73
+
74
+ /// @dev update pool fees to the specified values
75
+ /// pool fees: are deducted from the premium amount and goes to the pool owner
76
+ /// staking fees: are deducted from the staked tokens by a bundle owner and goes to the pool owner
77
+ /// performance fees: when a bundle is closed a bundle specific profit is calculated
78
+ /// the performance fee is deducted from this profit and goes to the pool owner
79
+ function setFees(
80
+ Fee memory poolFee,
81
+ Fee memory stakingFee,
82
+ Fee memory performanceFee
83
+ ) external;
84
+
85
+ /// @dev this is a callback function that is called by the product service when underwriting a policy.
86
+ /// the pool has the option to check the details and object to underwriting by reverting.
87
+ /// the function is only called for "active" pools that ask to be involved/notified
88
+ /// by product related state changes.
89
+ function verifyApplication(
90
+ NftId applicationNftId,
91
+ bytes memory applicationData,
92
+ NftId bundleNftId,
42
93
  bytes memory bundleFilter,
43
94
  uint256 collateralizationAmount
44
95
  ) external;
45
96
 
46
- function lockBundle(NftId bundleNftId) external;
97
+ /// @dev defines the multiplier to calculate the required collateral to cover a given sum insured amount
98
+ /// default implementation returns 100%
99
+ function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
47
100
 
48
- function unlockBundle(NftId bundleNftId) external;
101
+ /// @dev defines the amount of collateral held in the pool.
102
+ /// if the value is < 100% the pool is required to hold a policy that covers the locally missing collateral
103
+ /// default implementation returns 100%
104
+ function getRetentionLevel() external view returns (UFixed retentionLevel);
105
+
106
+ /// @dev declares if pool relies on external management of collateral (yes/no):
107
+ /// - yes: underwriting of new policies does not require an actual token balance, instead it is assumed that the pool owner will manage funds externally and inject enough tokens to allow process confirmed payouts
108
+ /// - no: the pool smart contract ensures that the necessary capacity of the pool prior to underwriting.
109
+ /// default implementation returns false (no)
110
+ function isExternallyManaged() external view returns (bool);
49
111
 
50
- /**
51
- * @dev returns true iff the policy application data in policyData matches
52
- * with the bundle filter criteria encoded in bundleFilter.
53
- */
54
- function policyMatchesBundle(
55
- bytes memory policyData,
56
- bytes memory bundleFilter
112
+ /// @dev declares if pool component is actively involved in underwriting (yes/no):
113
+ /// - yes: verifying pools components actively confirm underwriting applications, ie the pool component logic explicitly needs to confirm the locking of collateral to cover the sum insured of the policy
114
+ /// - no: underwriting a policy does not require any interaction with the pool component if the covering bundle can provide the necessary captial
115
+ /// default implementation returnsfalse (no)
116
+ function isVerifyingApplications() external view returns (bool);
117
+
118
+ /// @dev returns the maximum overall capital amound held by this pool
119
+ function getMaxCapitalAmount() external view returns (uint256 maxCapitalAmount);
120
+
121
+ /// @dev declares if pool intercept transfers of bundle nft ids
122
+ /// - yes: pool may block transfer of bundle ownership or simply updates some bookkeeping related to bundle ownership. callback function is nftTransferFrom
123
+ /// - no: pool is not involved in transfer of bundle ownership
124
+ /// default implementation returns false (no)
125
+ function isInterceptingBundleTransfers() external view returns (bool);
126
+
127
+ /// @dev returns the required role for bundle owners
128
+ /// default emplementation returns PUBLIC_ROLE
129
+ /// the PUBLIC_ROLE role implies that no specific roole is required for bundle owners
130
+ function getBundleOwnerRole() external view returns (RoleId bundleOwnerRole);
131
+
132
+ /// @dev returns true iff the application matches with the bundle
133
+ /// this is a callback function that is only called if a pool declares itself as a verifying pool
134
+ /// default implementation returns true
135
+ function applicationMatchesBundle(
136
+ NftId applicationNftId,
137
+ bytes memory applicationData,
138
+ NftId bundleNftId,
139
+ bytes memory bundleFilter,
140
+ uint256 collateralizationAmount
57
141
  )
58
142
  external
59
143
  view
60
144
  returns (bool isMatching);
61
145
 
62
- function isConfirmingApplication() external view returns (bool isConfirmingApplication);
63
-
64
- function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
146
+ /// @dev returns setup infos for this pool
147
+ /// when registered with an instance the setup info is obtained from the data stored in the instance
148
+ /// when not registered the function returns the initial setup info
149
+ function getSetupInfo() external view returns (ISetup.PoolSetupInfo memory setupInfo);
65
150
 
66
151
  }
@@ -2,11 +2,16 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
5
7
  import {NftId} from "../types/NftId.sol";
6
8
  import {ReferralId} from "../types/Referral.sol";
7
9
  import {RiskId} from "../types/RiskId.sol";
10
+ import {Seconds} from "../types/Seconds.sol";
8
11
 
9
- interface IProductComponent {
12
+ interface IProductComponent is IComponent {
13
+
14
+ function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
10
15
 
11
16
  function setFees(
12
17
  Fee memory productFee,
@@ -16,16 +21,16 @@ interface IProductComponent {
16
21
  function calculatePremium(
17
22
  uint256 sumInsuredAmount,
18
23
  RiskId riskId,
19
- uint256 lifetime,
24
+ Seconds lifetime,
20
25
  bytes memory applicationData,
21
- ReferralId referralId,
22
- NftId bundleNftId
26
+ NftId bundleNftId,
27
+ ReferralId referralId
23
28
  ) external view returns (uint256 premiumAmount);
24
29
 
25
30
  function calculateNetPremium(
26
31
  uint256 sumInsuredAmount,
27
32
  RiskId riskId,
28
- uint256 lifetime,
33
+ Seconds lifetime,
29
34
  bytes memory applicationData
30
35
  ) external view returns (uint256 netPremiumAmount);
31
36