@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed3b1b0-046

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 (493) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +819 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +415 -776
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3067
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -257
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +446 -398
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -132
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  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/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +332 -336
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +319 -129
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -255
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +339 -222
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +238 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +313 -354
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -135
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +846 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  126. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +271 -180
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  164. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → staking/IStakingService.sol/IStakingService.json} +226 -145
  165. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  167. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  168. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  169. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  170. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  172. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  173. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  174. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  177. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  181. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  185. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  186. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  187. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  193. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  195. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  199. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  201. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  203. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  205. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  207. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  209. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  211. package/contracts/distribution/Distribution.sol +285 -0
  212. package/contracts/distribution/DistributionService.sol +351 -0
  213. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  214. package/contracts/distribution/IDistributionComponent.sol +71 -0
  215. package/contracts/distribution/IDistributionService.sol +87 -0
  216. package/contracts/instance/BundleManager.sol +126 -0
  217. package/contracts/instance/IInstance.sol +60 -31
  218. package/contracts/instance/IInstanceService.sol +56 -13
  219. package/contracts/instance/Instance.sol +149 -363
  220. package/contracts/instance/InstanceAccessManager.sol +432 -177
  221. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  222. package/contracts/instance/InstanceReader.sol +109 -47
  223. package/contracts/instance/InstanceService.sol +246 -140
  224. package/contracts/instance/InstanceServiceManager.sol +12 -25
  225. package/contracts/instance/InstanceStore.sol +211 -0
  226. package/contracts/instance/base/Cloneable.sol +51 -0
  227. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  228. package/contracts/instance/base/ILifecycle.sol +3 -3
  229. package/contracts/instance/base/KeyValueStore.sol +44 -47
  230. package/contracts/instance/base/Lifecycle.sol +28 -7
  231. package/contracts/instance/base/ObjectManager.sol +82 -0
  232. package/contracts/instance/module/IAccess.sol +37 -21
  233. package/contracts/instance/module/IBundle.sol +11 -8
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +7 -4
  236. package/contracts/instance/module/IPolicy.sol +50 -17
  237. package/contracts/instance/module/IRisk.sol +1 -1
  238. package/contracts/instance/module/ISetup.sol +11 -22
  239. package/contracts/instance/module/ITreasury.sol +2 -2
  240. package/contracts/pool/BundleService.sol +384 -0
  241. package/contracts/pool/BundleServiceManager.sol +42 -0
  242. package/contracts/pool/IBundleService.sol +118 -0
  243. package/contracts/pool/IPoolComponent.sol +114 -0
  244. package/contracts/pool/IPoolService.sol +114 -0
  245. package/contracts/pool/Pool.sol +302 -0
  246. package/contracts/pool/PoolService.sol +404 -0
  247. package/contracts/pool/PoolServiceManager.sol +42 -0
  248. package/contracts/product/ApplicationService.sol +187 -0
  249. package/contracts/product/ApplicationServiceManager.sol +38 -0
  250. package/contracts/product/ClaimService.sol +443 -0
  251. package/contracts/product/ClaimServiceManager.sol +38 -0
  252. package/contracts/product/IApplicationService.sol +62 -0
  253. package/contracts/product/IClaimService.sol +93 -0
  254. package/contracts/product/IPolicyService.sol +80 -0
  255. package/contracts/product/IPricingService.sol +37 -0
  256. package/contracts/product/IProductComponent.sol +41 -0
  257. package/contracts/product/IProductService.sol +40 -0
  258. package/contracts/product/PolicyService.sol +378 -0
  259. package/contracts/product/PolicyServiceManager.sol +42 -0
  260. package/contracts/product/PricingService.sol +276 -0
  261. package/contracts/product/PricingServiceManager.sol +42 -0
  262. package/contracts/product/Product.sol +379 -0
  263. package/contracts/product/ProductService.sol +212 -0
  264. package/contracts/product/ProductServiceManager.sol +42 -0
  265. package/contracts/registry/ChainNft.sol +9 -1
  266. package/contracts/registry/IRegistry.sol +56 -27
  267. package/contracts/registry/IRegistryService.sol +36 -28
  268. package/contracts/registry/ITransferInterceptor.sol +1 -0
  269. package/contracts/registry/Registry.sol +259 -232
  270. package/contracts/registry/RegistryAccessManager.sol +132 -0
  271. package/contracts/registry/RegistryService.sol +81 -208
  272. package/contracts/registry/RegistryServiceManager.sol +34 -42
  273. package/contracts/registry/ReleaseManager.sol +382 -0
  274. package/contracts/registry/TokenRegistry.sol +22 -17
  275. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  276. package/contracts/shared/Component.sol +271 -0
  277. package/contracts/shared/ComponentService.sol +141 -0
  278. package/contracts/shared/ERC165.sol +14 -12
  279. package/contracts/shared/IComponent.sol +90 -0
  280. package/contracts/shared/INftOwnable.sol +12 -11
  281. package/contracts/shared/IPolicyHolder.sol +40 -0
  282. package/contracts/shared/IRegisterable.sol +4 -6
  283. package/contracts/shared/IRegistryLinked.sol +11 -0
  284. package/contracts/shared/IService.sol +7 -4
  285. package/contracts/shared/IVersionable.sol +5 -48
  286. package/contracts/shared/NftOwnable.sol +64 -80
  287. package/contracts/shared/PolicyHolder.sol +94 -0
  288. package/contracts/shared/ProxyManager.sol +126 -25
  289. package/contracts/shared/Registerable.sol +26 -41
  290. package/contracts/shared/RegistryLinked.sol +43 -0
  291. package/contracts/shared/Service.sol +41 -24
  292. package/contracts/shared/TokenHandler.sol +14 -6
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/staking/IStakingService.sol +102 -0
  295. package/contracts/staking/StakingService.sol +169 -0
  296. package/contracts/staking/StakingServiceManager.sol +40 -0
  297. package/contracts/type/Amount.sol +109 -0
  298. package/contracts/{types → type}/Blocknumber.sol +1 -0
  299. package/contracts/type/ClaimId.sol +75 -0
  300. package/contracts/{types → type}/DistributorType.sol +2 -2
  301. package/contracts/{types → type}/Fee.sol +17 -8
  302. package/contracts/{types → type}/NftId.sol +8 -0
  303. package/contracts/type/NftIdSet.sol +62 -0
  304. package/contracts/{types → type}/ObjectType.sol +17 -7
  305. package/contracts/type/PayoutId.sol +82 -0
  306. package/contracts/{types → type}/Referral.sol +4 -0
  307. package/contracts/type/RoleId.sol +139 -0
  308. package/contracts/type/Seconds.sol +54 -0
  309. package/contracts/{types → type}/StateId.sol +7 -2
  310. package/contracts/{types → type}/Timestamp.sol +18 -13
  311. package/contracts/{types → type}/UFixed.sol +1 -0
  312. package/contracts/{types → type}/Version.sol +1 -0
  313. package/package.json +3 -3
  314. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  315. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  316. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  317. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  318. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  320. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  322. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  324. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  326. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  327. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  328. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  329. package/artifacts/contracts/components/Product.sol/Product.json +0 -719
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  332. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  334. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  336. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  338. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  340. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  344. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  346. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  350. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  353. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  355. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  359. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  361. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  365. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  367. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  369. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  370. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  371. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  372. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  379. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  380. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  381. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  383. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  385. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  389. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  391. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  392. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
  393. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  394. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
  395. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  396. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  397. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  398. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  399. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  400. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  401. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  402. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  403. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  404. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  406. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  408. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  409. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  410. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  411. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  412. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  413. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  414. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  415. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  416. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  417. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  418. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  419. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  420. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  421. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  422. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  423. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  424. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  425. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  426. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  428. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  429. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  430. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  431. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  434. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  436. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  437. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  439. package/contracts/components/BaseComponent.sol +0 -91
  440. package/contracts/components/Distribution.sol +0 -159
  441. package/contracts/components/IBaseComponent.sol +0 -25
  442. package/contracts/components/IDistributionComponent.sol +0 -44
  443. package/contracts/components/IPoolComponent.sol +0 -62
  444. package/contracts/components/IProductComponent.sol +0 -35
  445. package/contracts/components/Pool.sol +0 -242
  446. package/contracts/components/Product.sol +0 -284
  447. package/contracts/experiment/cloning/Cloner.sol +0 -47
  448. package/contracts/experiment/errors/Require.sol +0 -38
  449. package/contracts/experiment/errors/Revert.sol +0 -44
  450. package/contracts/experiment/inheritance/A.sol +0 -53
  451. package/contracts/experiment/inheritance/B.sol +0 -28
  452. package/contracts/experiment/inheritance/C.sol +0 -34
  453. package/contracts/experiment/inheritance/IA.sol +0 -13
  454. package/contracts/experiment/inheritance/IB.sol +0 -10
  455. package/contracts/experiment/inheritance/IC.sol +0 -12
  456. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  457. package/contracts/experiment/statemachine/ISM.sol +0 -25
  458. package/contracts/experiment/statemachine/SM.sol +0 -57
  459. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  460. package/contracts/experiment/types/TypeA.sol +0 -47
  461. package/contracts/experiment/types/TypeB.sol +0 -29
  462. package/contracts/instance/AccessManagedSimple.sol +0 -115
  463. package/contracts/instance/AccessManagerSimple.sol +0 -692
  464. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  465. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  466. package/contracts/instance/base/IInstanceBase.sol +0 -23
  467. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  468. package/contracts/instance/service/DistributionService.sol +0 -88
  469. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  470. package/contracts/instance/service/IDistributionService.sol +0 -12
  471. package/contracts/instance/service/IPoolService.sol +0 -37
  472. package/contracts/instance/service/IProductService.sol +0 -107
  473. package/contracts/instance/service/PoolService.sol +0 -194
  474. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  475. package/contracts/instance/service/ProductService.sol +0 -543
  476. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  477. package/contracts/shared/ContractDeployerLib.sol +0 -72
  478. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  479. package/contracts/test/TestFee.sol +0 -25
  480. package/contracts/test/TestRegisterable.sol +0 -18
  481. package/contracts/test/TestRoleId.sol +0 -14
  482. package/contracts/test/TestService.sol +0 -24
  483. package/contracts/test/TestToken.sol +0 -26
  484. package/contracts/test/TestVersion.sol +0 -44
  485. package/contracts/test/TestVersionable.sol +0 -17
  486. package/contracts/test/Usdc.sol +0 -26
  487. package/contracts/types/ChainId.sol +0 -38
  488. package/contracts/types/NftIdSet.sol +0 -60
  489. package/contracts/types/NumberId.sol +0 -52
  490. package/contracts/types/RoleId.sol +0 -90
  491. /package/contracts/{types → type}/AddressSet.sol +0 -0
  492. /package/contracts/{types → type}/Key32.sol +0 -0
  493. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,242 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {ObjectType, POOL} from "../types/ObjectType.sol";
5
- import {IProductService} from "../instance/service/IProductService.sol";
6
- import {IPoolService} from "../instance/service/IPoolService.sol";
7
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
- import {Fee} from "../types/Fee.sol";
9
- import {UFixed} from "../types/UFixed.sol";
10
- import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
12
- import {TokenHandler} from "../shared/TokenHandler.sol";
13
- import {ISetup} from "../instance/module/ISetup.sol";
14
-
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
-
17
- // import {IPool} from "../instance/module/pool/IPoolModule.sol";
18
- import {ITreasury} from "../instance/module/ITreasury.sol";
19
- import {ISetup} from "../instance/module/ISetup.sol";
20
- import {InstanceReader} from "../instance/InstanceReader.sol";
21
-
22
- import {IRegisterable} from "../shared/IRegisterable.sol";
23
- import {Registerable} from "../shared/Registerable.sol";
24
-
25
- contract Pool is BaseComponent, IPoolComponent {
26
- using NftIdLib for NftId;
27
-
28
- bool internal _isVerifying;
29
- UFixed internal _collateralizationLevel;
30
-
31
- Fee internal _initialPoolFee;
32
- Fee internal _initialStakingFee;
33
- Fee internal _initialPerformanceFee;
34
-
35
- // may be used to interact with instance by derived contracts
36
- IPoolService internal _poolService;
37
-
38
- // only relevant to protect callback functions for "active" pools
39
- IProductService private _productService;
40
-
41
- modifier onlyPoolService() {
42
- require(
43
- msg.sender == address(_poolService),
44
- "ERROR:POL-001:NOT_POOL_SERVICE");
45
- _;
46
- }
47
-
48
- modifier onlyProductService() {
49
- require(
50
- msg.sender == address(_productService),
51
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
52
- _;
53
- }
54
-
55
- constructor(
56
- address registry,
57
- NftId instanceNftId,
58
- // TODO refactor into tokenNftId
59
- address token,
60
- bool isInterceptor,
61
- bool verifying,
62
- UFixed collateralizationLevel,
63
- Fee memory poolFee,
64
- Fee memory stakingFee,
65
- Fee memory performanceFee,
66
- address initialOwner
67
- )
68
- BaseComponent(registry, instanceNftId, token, POOL(), isInterceptor, initialOwner)
69
- {
70
- _isVerifying = verifying;
71
- // TODO add validation
72
- _collateralizationLevel = collateralizationLevel;
73
- _initialPoolFee = poolFee;
74
- _initialStakingFee = stakingFee;
75
- _initialPerformanceFee = performanceFee;
76
-
77
- _poolService = _instance.getPoolService();
78
- _productService = _instance.getProductService();
79
-
80
- _registerInterface(type(IPoolComponent).interfaceId);
81
- }
82
-
83
- function createBundle(
84
- Fee memory fee,
85
- uint256 initialAmount,
86
- uint256 lifetime,
87
- bytes memory filter
88
- )
89
- external
90
- virtual override
91
- returns(NftId bundleNftId)
92
- {
93
- address owner = msg.sender;
94
- bundleNftId = _poolService.createBundle(
95
- owner,
96
- fee,
97
- initialAmount,
98
- lifetime,
99
- filter
100
- );
101
-
102
- // TODO add logging
103
- }
104
-
105
- /**
106
- * @dev see {IPool.underwrite}.
107
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
108
- */
109
- function underwrite(
110
- NftId policyNftId,
111
- bytes memory policyData,
112
- bytes memory bundleFilter,
113
- uint256 collateralizationAmount
114
- )
115
- external
116
- onlyProductService
117
- virtual override
118
- {
119
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
120
- }
121
-
122
- /**
123
- * @dev see {IPoolComponent.policyMatchesBundle}.
124
- * Default implementation always returns true
125
- */
126
- function policyMatchesBundle(
127
- bytes memory, // policyData
128
- bytes memory // bundleFilter
129
- )
130
- public
131
- view
132
- virtual override
133
- returns (bool isMatching)
134
- {
135
- return true;
136
- }
137
-
138
-
139
- function isVerifying() external view override returns (bool verifying) {
140
- return _isVerifying;
141
- }
142
-
143
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
144
- return _collateralizationLevel;
145
- }
146
-
147
- function setFees(
148
- Fee memory poolFee,
149
- Fee memory stakingFee,
150
- Fee memory performanceFee
151
- )
152
- external
153
- onlyOwner
154
- override
155
- {
156
- _poolService.setFees(poolFee, stakingFee, performanceFee);
157
- }
158
-
159
- function setBundleFee(
160
- NftId bundleNftId,
161
- Fee memory fee
162
- )
163
- external
164
- override
165
- // TODO add onlyBundleOwner
166
- {
167
- _poolService.setBundleFee(bundleNftId, fee);
168
- }
169
-
170
- function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
171
- InstanceReader reader = _instance.getInstanceReader();
172
- return reader.getPoolSetupInfo(getNftId());
173
- }
174
-
175
- // from IRegisterable
176
-
177
- // TODO used only once, occupies space
178
- // TODO do not use super
179
- function getInitialInfo()
180
- public
181
- view
182
- override (IRegisterable, Registerable)
183
- returns (IRegistry.ObjectInfo memory, bytes memory)
184
- {
185
- (
186
- IRegistry.ObjectInfo memory info,
187
- ) = super.getInitialInfo();
188
-
189
- return (
190
- info,
191
- abi.encode(
192
- ISetup.PoolSetupInfo(
193
- _productNftId,
194
- TokenHandler(address(_token)),
195
- _collateralizationLevel,
196
- _initialPoolFee,
197
- _initialStakingFee,
198
- _initialPerformanceFee,
199
- _isVerifying,
200
- _wallet
201
- )
202
- )
203
- );
204
- }
205
-
206
- // Internals
207
-
208
- function _underwrite(
209
- NftId policyNftId,
210
- bytes memory policyData,
211
- bytes memory bundleFilter,
212
- uint256 collateralizationAmount
213
- )
214
- internal
215
- {
216
- require(
217
- policyMatchesBundle(policyData, bundleFilter),
218
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
219
- );
220
-
221
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
222
- }
223
-
224
- function _createBundle(
225
- address bundleOwner,
226
- Fee memory fee,
227
- uint256 amount,
228
- uint256 lifetime,
229
- bytes calldata filter
230
- )
231
- internal
232
- returns(NftId bundleNftId)
233
- {
234
- bundleNftId = _poolService.createBundle(
235
- bundleOwner,
236
- fee,
237
- amount,
238
- lifetime,
239
- filter
240
- );
241
- }
242
- }
@@ -1,284 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {IRisk} from "../instance/module/IRisk.sol";
7
- import {ITreasury} from "../instance/module/ITreasury.sol";
8
- import {IProductService} from "../instance/service/IProductService.sol";
9
- import {IProductComponent} from "./IProductComponent.sol";
10
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
- import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
12
- import {ReferralId} from "../types/Referral.sol";
13
- import {RiskId, RiskIdLib} from "../types/RiskId.sol";
14
- import {StateId} from "../types/StateId.sol";
15
- import {Timestamp} from "../types/Timestamp.sol";
16
- import {Fee, FeeLib} from "../types/Fee.sol";
17
- import {BaseComponent} from "./BaseComponent.sol";
18
-
19
- import {IRegistry} from "../registry/IRegistry.sol";
20
- import {IRegisterable} from "../shared/IRegisterable.sol";
21
- import {Registerable} from "../shared/Registerable.sol";
22
- import {TokenHandler} from "../shared/TokenHandler.sol";
23
-
24
- import {InstanceReader} from "../instance/InstanceReader.sol";
25
- import {ISetup} from "../instance/module/ISetup.sol";
26
- import {Pool} from "../components/Pool.sol";
27
- import {Distribution} from "../components/Distribution.sol";
28
-
29
- import {zeroNftId} from "../types/NftId.sol";
30
-
31
- contract Product is BaseComponent, IProductComponent {
32
- using NftIdLib for NftId;
33
-
34
- IProductService internal _productService;
35
- Pool internal _pool;
36
- Distribution internal _distribution;
37
- Fee internal _initialProductFee;
38
- Fee internal _initialProcessingFee;
39
-
40
- NftId internal _poolNftId;
41
- NftId internal _distributionNftId;
42
-
43
- constructor(
44
- address registry,
45
- NftId instanceNftid,
46
- address token,
47
- bool isInterceptor,
48
- address pool,
49
- address distribution,
50
- Fee memory productFee,
51
- Fee memory processingFee,
52
- address initialOwner
53
- ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
54
- // TODO add validation
55
- _productService = _instance.getProductService();
56
- _pool = Pool(pool);
57
- _distribution = Distribution(distribution);
58
- _initialProductFee = productFee;
59
- _initialProcessingFee = processingFee;
60
-
61
- _poolNftId = getRegistry().getNftId(address(_pool));
62
- _distributionNftId = getRegistry().getNftId(address(_distribution));
63
-
64
- _registerInterface(type(IProductComponent).interfaceId);
65
- }
66
-
67
-
68
- function calculatePremium(
69
- uint256 sumInsuredAmount,
70
- RiskId riskId,
71
- uint256 lifetime,
72
- bytes memory applicationData,
73
- ReferralId referralId,
74
- NftId bundleNftId
75
- )
76
- external
77
- view
78
- override
79
- returns (uint256 premiumAmount)
80
- {
81
- (premiumAmount,,,,) = _productService.calculatePremium(
82
- riskId,
83
- sumInsuredAmount,
84
- lifetime,
85
- applicationData,
86
- bundleNftId,
87
- referralId
88
- );
89
- }
90
-
91
-
92
- function calculateNetPremium(
93
- uint256 sumInsuredAmount,
94
- RiskId riskId,
95
- uint256 lifetime,
96
- bytes memory applicationData
97
- )
98
- external
99
- view
100
- virtual override
101
- returns (uint256 netPremiumAmount)
102
- {
103
- // default 10% of sum insured
104
- return sumInsuredAmount / 10;
105
- }
106
-
107
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
108
- return RiskIdLib.toRiskId(riskName);
109
- }
110
-
111
- function _createRisk(
112
- RiskId id,
113
- bytes memory data
114
- ) internal {
115
- _productService.createRisk(
116
- id,
117
- data
118
- );
119
- }
120
-
121
- function _updateRisk(
122
- RiskId id,
123
- bytes memory data
124
- ) internal {
125
- _productService.updateRisk(
126
- id,
127
- data
128
- );
129
- }
130
-
131
- function _updateRiskState(
132
- RiskId id,
133
- StateId state
134
- ) internal {
135
- _productService.updateRiskState(
136
- id,
137
- state
138
- );
139
- }
140
-
141
- function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
142
- return _instance.getInstanceReader().getRiskInfo(id);
143
- }
144
-
145
- function _createApplication(
146
- address applicationOwner,
147
- RiskId riskId,
148
- uint256 sumInsuredAmount,
149
- uint256 lifetime,
150
- bytes memory applicationData,
151
- NftId bundleNftId,
152
- ReferralId referralId
153
- ) internal returns (NftId nftId) {
154
- nftId = _productService.createApplication(
155
- applicationOwner,
156
- riskId,
157
- sumInsuredAmount,
158
- lifetime,
159
- applicationData,
160
- bundleNftId,
161
- referralId
162
- );
163
- }
164
-
165
- function _underwrite(
166
- NftId policyNftId,
167
- bool requirePremiumPayment,
168
- Timestamp activateAt
169
- )
170
- internal
171
- {
172
- _productService.underwrite(
173
- policyNftId,
174
- requirePremiumPayment,
175
- activateAt);
176
- }
177
-
178
- function _collectPremium(
179
- NftId policyNftId,
180
- Timestamp activateAt
181
- )
182
- internal
183
- {
184
- _productService.collectPremium(
185
- policyNftId,
186
- activateAt);
187
- }
188
-
189
- function _activate(
190
- NftId policyNftId,
191
- Timestamp activateAt
192
- )
193
- internal
194
- {
195
- _productService.activate(
196
- policyNftId,
197
- activateAt);
198
- }
199
-
200
- function getPoolNftId() external view override returns (NftId poolNftId) {
201
- return getRegistry().getNftId(address(_pool));
202
- }
203
-
204
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
205
- return getRegistry().getNftId(address(_distribution));
206
- }
207
-
208
- // from product component
209
- function setFees(
210
- Fee memory productFee,
211
- Fee memory processingFee
212
- )
213
- external
214
- onlyOwner
215
- override
216
- {
217
- _productService.setFees(productFee, processingFee);
218
- }
219
-
220
- function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
221
- InstanceReader reader = _instance.getInstanceReader();
222
- return reader.getProductSetupInfo(getNftId());
223
- }
224
-
225
- // from IRegisterable
226
-
227
- function getInitialInfo()
228
- public
229
- view
230
- override (IRegisterable, Registerable)
231
- returns (IRegistry.ObjectInfo memory, bytes memory)
232
- {
233
- // from Registerable
234
- (
235
- IRegistry.ObjectInfo memory productInfo,
236
- bytes memory data
237
- ) = super.getInitialInfo();
238
-
239
- // TODO read pool & distribution fees
240
- // 1) from pool -> the only option -> pool must be registered first?
241
- // 2) from instance -> all fees are set into instance at product registration which is ongoing here
242
- // checks are done in registryProduct() where THIS function is called
243
- //require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
244
- //require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
245
-
246
- // from PoolComponent
247
- (
248
- ,
249
- bytes memory poolData
250
- ) = _pool.getInitialInfo();
251
-
252
- (
253
- ISetup.PoolSetupInfo memory poolSetupInfo
254
- ) = abi.decode(poolData, (ISetup.PoolSetupInfo));
255
-
256
- // from DistributionComponent
257
- (
258
- ,
259
- bytes memory distributionData
260
- ) = _distribution.getInitialInfo();
261
-
262
- (
263
- ISetup.DistributionSetupInfo memory distributionSetupInfo
264
- ) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
265
-
266
- return (
267
- productInfo,
268
- abi.encode(
269
- ISetup.ProductSetupInfo(
270
- _token,
271
- TokenHandler(address(_token)),
272
- _distributionNftId,
273
- _poolNftId,
274
- distributionSetupInfo.distributionFee,
275
- _initialProductFee,
276
- _initialProcessingFee,
277
- poolSetupInfo.poolFee,
278
- poolSetupInfo.stakingFee,
279
- poolSetupInfo.performanceFee
280
- )
281
- )
282
- );
283
- }
284
- }
@@ -1,47 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
-
6
-
7
- contract Cloner {
8
-
9
- Mock1 public mock1;
10
- Mock2 public mock2;
11
-
12
- constructor() {
13
- mock1 = new Mock1();
14
- mock2 = new Mock2();
15
- }
16
-
17
- function createClone(address master)
18
- external
19
- returns (address cloned)
20
- {
21
- cloned = Clones.clone(master);
22
- }
23
- }
24
-
25
-
26
- contract Mock1 {
27
- function getValue() external virtual view returns (uint256) {
28
- return 42;
29
- }
30
- }
31
-
32
- contract Mock2 is Mock1 {
33
- uint256 internal _value;
34
-
35
- constructor() {
36
- _value = 42;
37
- }
38
-
39
- function setValue(uint256 value) external virtual {
40
- _value = value;
41
- }
42
-
43
- function getValue() external virtual override view returns (uint256) {
44
- return _value;
45
- }
46
- }
47
-
@@ -1,38 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- contract Require {
5
- error AsmallerThanB_S();
6
- error AsmallerThanB_M(uint a);
7
- error AsmallerThanB_L(uint a, uint b);
8
-
9
- uint256 private _b;
10
-
11
- constructor() {
12
- _b = 42;
13
- }
14
-
15
- function isAlargerThanBRequire_S(
16
- uint a
17
- ) external view returns (bool isLarger) {
18
- require(a > _b, "ERROR:ABC-001");
19
-
20
- return true;
21
- }
22
-
23
- function isAlargerThanBRequire_M(
24
- uint a
25
- ) external view returns (bool isLarger) {
26
- require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
27
-
28
- return true;
29
- }
30
-
31
- function isAlargerThanBRequire_L(
32
- uint a
33
- ) external view returns (bool isLarger) {
34
- require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
35
-
36
- return true;
37
- }
38
- }
@@ -1,44 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- contract Revert {
5
- error AsmallerThanB_S();
6
- error AsmallerThanB_M(uint a);
7
- error AsmallerThanB_L(uint a, uint b);
8
-
9
- uint256 private _b;
10
-
11
- constructor() {
12
- _b = 42;
13
- }
14
-
15
- function isAlargerThanBRevert_S(
16
- uint a
17
- ) external view returns (bool isLarger) {
18
- if (a <= _b) {
19
- revert AsmallerThanB_S();
20
- }
21
-
22
- return true;
23
- }
24
-
25
- function isAlargerThanBRevert_M(
26
- uint a
27
- ) external view returns (bool isLarger) {
28
- if (a <= _b) {
29
- revert AsmallerThanB_M(a);
30
- }
31
-
32
- return true;
33
- }
34
-
35
- function isAlargerThanBRevert_L(
36
- uint a
37
- ) external view returns (bool isLarger) {
38
- if (a <= _b) {
39
- revert AsmallerThanB_L(a, _b);
40
- }
41
-
42
- return true;
43
- }
44
- }
@@ -1,53 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IA, ISharedA} from "./IA.sol";
5
- import {B} from "./B.sol";
6
- import {C} from "./C.sol";
7
-
8
- /*
9
-
10
- # dependency graph
11
-
12
- B <...+
13
- ^ |
14
- | |
15
- A --> C
16
-
17
- - A is the main contract
18
- - A provides functionality implemented by modules B and C
19
- - B and C rely on functionality shared by A
20
- - C accesses functionality of module B
21
-
22
- # chisel session
23
-
24
- import {A} from "./contracts/experiment/A.sol";
25
- A a = new A();
26
- uint(a.getA())
27
- uint(a.getB()))
28
- uint(a.getC())
29
- uint(a.getAfromB())
30
- uint(a.getAfromC())
31
- uint(a.getBfromC())
32
- a.setA(100);
33
- a.setB(10);
34
- a.setC(20);
35
- */
36
-
37
- contract AShared is ISharedA {
38
- uint256 private _x;
39
-
40
- constructor() {
41
- _x = 42;
42
- }
43
-
44
- function getA() external view override returns (uint256) {
45
- return _x;
46
- }
47
-
48
- function setA(uint256 newA) external override {
49
- _x = newA;
50
- }
51
- }
52
-
53
- contract A is AShared, B, C, IA {}