@etherisc/gif-next 0.0.2-cc4a5cb-898 → 0.0.2-cc74a8b-656

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 (485) hide show
  1. package/README.md +218 -39
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1056 -132
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +676 -47
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +702 -125
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +525 -65
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1032 -234
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +840 -117
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1437 -1077
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2114 -1210
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1576 -198
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +867 -102
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +527 -123
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +151 -331
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +831 -137
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +430 -448
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  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/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IService.sol/IService.json} +169 -134
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +347 -130
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -11
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  214. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  221. package/contracts/components/Component.sol +253 -0
  222. package/contracts/components/Distribution.sol +210 -62
  223. package/contracts/components/IComponent.sol +76 -0
  224. package/contracts/components/IDistributionComponent.sol +43 -19
  225. package/contracts/components/IPoolComponent.sol +89 -47
  226. package/contracts/components/IProductComponent.sol +13 -11
  227. package/contracts/components/Pool.sol +225 -157
  228. package/contracts/components/Product.sol +137 -71
  229. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  230. package/contracts/instance/BundleManager.sol +127 -0
  231. package/contracts/instance/Cloneable.sol +51 -0
  232. package/contracts/instance/IInstance.sol +87 -42
  233. package/contracts/instance/IInstanceService.sol +72 -0
  234. package/contracts/instance/Instance.sol +311 -58
  235. package/contracts/instance/InstanceAccessManager.sol +527 -0
  236. package/contracts/instance/InstanceReader.sol +291 -0
  237. package/contracts/instance/InstanceService.sol +495 -0
  238. package/contracts/instance/InstanceServiceManager.sol +54 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +121 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +60 -41
  244. package/contracts/instance/base/Lifecycle.sol +12 -3
  245. package/contracts/instance/module/IAccess.sol +54 -0
  246. package/contracts/instance/module/IBundle.sol +23 -0
  247. package/contracts/instance/module/IComponents.sol +41 -0
  248. package/contracts/instance/module/IDistribution.sol +41 -0
  249. package/contracts/instance/module/IPolicy.sol +72 -0
  250. package/contracts/instance/module/IRisk.sol +11 -0
  251. package/contracts/instance/module/ISetup.sol +33 -0
  252. package/contracts/instance/module/ITreasury.sol +23 -0
  253. package/contracts/instance/service/ApplicationService.sol +350 -0
  254. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  255. package/contracts/instance/service/BundleService.sol +431 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/ClaimService.sol +151 -0
  258. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  259. package/contracts/instance/service/DistributionService.sol +402 -26
  260. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  261. package/contracts/instance/service/IApplicationService.sol +82 -0
  262. package/contracts/instance/service/IBundleService.sol +93 -0
  263. package/contracts/instance/service/IClaimService.sol +61 -0
  264. package/contracts/instance/service/IDistributionService.sol +88 -1
  265. package/contracts/instance/service/IPolicyService.sol +72 -0
  266. package/contracts/instance/service/IPoolService.sol +80 -18
  267. package/contracts/instance/service/IProductService.sol +9 -76
  268. package/contracts/instance/service/PolicyService.sol +362 -0
  269. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  270. package/contracts/instance/service/PoolService.sol +244 -90
  271. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +136 -435
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +87 -36
  275. package/contracts/registry/IRegistry.sol +68 -24
  276. package/contracts/registry/IRegistryService.sol +68 -0
  277. package/contracts/registry/ITransferInterceptor.sol +7 -0
  278. package/contracts/registry/Registry.sol +372 -286
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +282 -0
  281. package/contracts/registry/RegistryServiceManager.sol +62 -0
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ContractDeployerLib.sol +72 -0
  285. package/contracts/shared/ERC165.sol +14 -8
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +26 -0
  288. package/contracts/shared/IRegisterable.sol +10 -19
  289. package/contracts/shared/IRegistryLinked.sol +12 -0
  290. package/contracts/shared/IService.sol +16 -0
  291. package/contracts/shared/IVersionable.sol +38 -37
  292. package/contracts/shared/NftOwnable.sol +120 -0
  293. package/contracts/shared/PolicyHolder.sol +81 -0
  294. package/contracts/shared/ProxyManager.sol +169 -0
  295. package/contracts/shared/Registerable.sol +54 -66
  296. package/contracts/shared/RegistryLinked.sol +48 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +33 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  300. package/contracts/shared/Versionable.sol +38 -68
  301. package/contracts/test/TestFee.sol +2 -2
  302. package/contracts/test/TestRegisterable.sol +5 -6
  303. package/contracts/test/TestRoleId.sol +1 -1
  304. package/contracts/test/TestService.sol +7 -14
  305. package/contracts/types/Amount.sol +60 -0
  306. package/contracts/types/Blocknumber.sol +1 -0
  307. package/contracts/types/ClaimId.sol +52 -0
  308. package/contracts/types/DistributorType.sol +55 -0
  309. package/contracts/types/Fee.sol +15 -7
  310. package/contracts/types/Key32.sol +8 -3
  311. package/contracts/types/NftId.sol +8 -0
  312. package/contracts/types/NftIdSet.sol +26 -24
  313. package/contracts/types/NumberId.sol +52 -0
  314. package/contracts/types/ObjectType.sol +40 -14
  315. package/contracts/types/PayoutId.sol +54 -0
  316. package/contracts/types/Referral.sol +89 -0
  317. package/contracts/types/RoleId.sol +68 -9
  318. package/contracts/types/Seconds.sol +54 -0
  319. package/contracts/types/StateId.sol +6 -1
  320. package/contracts/types/Timestamp.sol +17 -13
  321. package/contracts/types/UFixed.sol +129 -12
  322. package/contracts/types/Version.sol +14 -1
  323. package/package.json +6 -5
  324. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  329. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  331. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  333. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  335. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  337. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  339. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  343. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  346. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  352. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  354. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  356. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  358. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  359. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  360. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  361. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  362. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  364. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  366. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  368. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  370. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  371. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  373. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  376. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  378. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  381. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  383. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  385. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  388. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  391. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  394. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  396. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  398. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  400. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  402. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  405. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  407. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  409. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  410. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  412. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  414. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  416. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  418. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  420. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  421. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  422. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  423. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  424. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  425. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  426. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  428. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  430. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  431. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  432. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  434. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  435. package/contracts/components/BaseComponent.sol +0 -94
  436. package/contracts/components/IBaseComponent.sol +0 -19
  437. package/contracts/experiment/errors/Require.sol +0 -38
  438. package/contracts/experiment/errors/Revert.sol +0 -44
  439. package/contracts/experiment/inheritance/A.sol +0 -53
  440. package/contracts/experiment/inheritance/B.sol +0 -28
  441. package/contracts/experiment/inheritance/C.sol +0 -34
  442. package/contracts/experiment/inheritance/IA.sol +0 -13
  443. package/contracts/experiment/inheritance/IB.sol +0 -10
  444. package/contracts/experiment/inheritance/IC.sol +0 -12
  445. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  446. package/contracts/experiment/statemachine/ISM.sol +0 -25
  447. package/contracts/experiment/statemachine/README.md +0 -112
  448. package/contracts/experiment/statemachine/SM.sol +0 -57
  449. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  450. package/contracts/experiment/types/TypeA.sol +0 -47
  451. package/contracts/experiment/types/TypeB.sol +0 -29
  452. package/contracts/instance/IInstanceLinked.sol +0 -8
  453. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  454. package/contracts/instance/base/IInstanceBase.sol +0 -22
  455. package/contracts/instance/base/IService.sol +0 -15
  456. package/contracts/instance/base/InstanceBase.sol +0 -91
  457. package/contracts/instance/base/ModuleBase.sol +0 -57
  458. package/contracts/instance/base/ServiceBase.sol +0 -37
  459. package/contracts/instance/module/access/Access.sol +0 -149
  460. package/contracts/instance/module/access/IAccess.sol +0 -53
  461. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  462. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  463. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  464. package/contracts/instance/module/component/IComponent.sol +0 -28
  465. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  466. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  467. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  468. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  469. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  470. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  471. package/contracts/instance/module/risk/IRisk.sol +0 -26
  472. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  473. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  474. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  475. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  476. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  477. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  478. package/contracts/registry/IChainNft.sol +0 -21
  479. package/contracts/registry/IRegistryLinked.sol +0 -8
  480. package/contracts/shared/IOwnable.sol +0 -6
  481. package/contracts/shared/Proxy.sol +0 -83
  482. package/contracts/test/TestDistribution.sol +0 -21
  483. package/contracts/test/TestPool.sol +0 -25
  484. package/contracts/test/TestProduct.sol +0 -72
  485. package/contracts/types/ReferralId.sol +0 -48
@@ -1,14 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
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
- import {ReferralId} from "../types/ReferralId.sol";
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
- import {IBaseComponent} from "./IBaseComponent.sol";
12
+ interface IProductComponent is IComponent {
13
+
14
+ function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
10
15
 
11
- interface IProductComponent is IBaseComponent {
12
16
  function setFees(
13
17
  Fee memory productFee,
14
18
  Fee memory processingFee
@@ -17,22 +21,20 @@ interface IProductComponent is IBaseComponent {
17
21
  function calculatePremium(
18
22
  uint256 sumInsuredAmount,
19
23
  RiskId riskId,
20
- uint256 lifetime,
24
+ Seconds lifetime,
21
25
  bytes memory applicationData,
22
- ReferralId referralId,
23
- NftId bundleNftId
26
+ NftId bundleNftId,
27
+ ReferralId referralId
24
28
  ) external view returns (uint256 premiumAmount);
25
29
 
26
30
  function calculateNetPremium(
27
31
  uint256 sumInsuredAmount,
28
32
  RiskId riskId,
29
- uint256 lifetime,
33
+ Seconds lifetime,
30
34
  bytes memory applicationData
31
35
  ) external view returns (uint256 netPremiumAmount);
32
36
 
33
- function getProductFee() external view returns (Fee memory productFee);
34
- function getProcessingFee() external view returns (Fee memory processingFee);
35
-
37
+
36
38
  function getPoolNftId() external view returns (NftId poolNftId);
37
39
  function getDistributionNftId() external view returns (NftId distributionNftId);
38
40
  }
@@ -1,235 +1,303 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
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} from "../types/NftId.sol";
8
- import {Fee} from "../types/Fee.sol";
9
- import {UFixed} from "../types/UFixed.sol";
4
+ import {Amount, AmountLib} from "../types/Amount.sol";
5
+ import {Component} from "./Component.sol";
6
+ import {Fee, FeeLib} from "../types/Fee.sol";
7
+ import {IBundleService} from "../instance/service/IBundleService.sol";
8
+ import {InstanceReader} from "../instance/InstanceReader.sol";
10
9
  import {IPoolComponent} from "./IPoolComponent.sol";
11
- import {BaseComponent} from "./BaseComponent.sol";
10
+ import {IPoolService} from "../instance/service/IPoolService.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {NftId, NftIdLib} from "../types/NftId.sol";
13
+ import {POOL} from "../types/ObjectType.sol";
14
+ import {RoleId, PUBLIC_ROLE} from "../types/RoleId.sol";
15
+ import {Seconds} from "../types/Seconds.sol";
16
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
+ import {UFixed, UFixedLib} from "../types/UFixed.sol";
12
18
 
13
- contract Pool is BaseComponent, IPoolComponent {
19
+ abstract contract Pool is
20
+ Component,
21
+ IPoolComponent
22
+ {
23
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Pool")) - 1)) & ~bytes32(uint256(0xff));
24
+ bytes32 public constant POOL_STORAGE_LOCATION_V1 = 0x25e3e51823fbfffb988e0a2744bb93722d9f3e906c07cc0a9e77884c46c58300;
14
25
 
15
- bool internal _isVerifying;
16
- UFixed internal _collateralizationLevel;
26
+ struct PoolStorage {
27
+ IPoolService _poolService;
28
+ IBundleService _bundleService;
29
+ }
17
30
 
18
- Fee internal _initialPoolFee;
19
- Fee internal _initialStakingFee;
20
- Fee internal _initialPerformanceFee;
21
31
 
22
- // may be used to interact with instance by derived contracts
23
- IPoolService internal _poolService;
32
+ modifier onlyBundleOwner(NftId bundleNftId) {
33
+ if(msg.sender != getRegistry().ownerOf(bundleNftId)) {
34
+ revert ErrorPoolNotBundleOwner(bundleNftId, msg.sender);
35
+ }
36
+ _;
37
+ }
24
38
 
25
- // only relevant to protect callback functions for "active" pools
26
- IProductService private _productService;
27
39
 
28
40
  modifier onlyPoolService() {
29
- require(
30
- msg.sender == address(_poolService),
31
- "ERROR:POL-001:NOT_POOL_SERVICE");
41
+ if(msg.sender != address(_getPoolStorage()._poolService)) {
42
+ revert ErrorPoolNotPoolService(msg.sender);
43
+ }
32
44
  _;
33
45
  }
34
46
 
35
- modifier onlyProductService() {
36
- require(
37
- msg.sender == address(_productService),
38
- "ERROR:POL-002:NOT_PRODUCT_SERVICE");
39
- _;
40
- }
41
47
 
42
- constructor(
48
+ function initializePool(
43
49
  address registry,
44
50
  NftId instanceNftId,
45
- // TODO refactor into tokenNftId
51
+ string memory name,
46
52
  address token,
47
- bool verifying,
48
- UFixed collateralizationLevel,
49
- Fee memory poolFee,
50
- Fee memory stakingFee,
51
- Fee memory performanceFee
53
+ bool isInterceptingNftTransfers,
54
+ address initialOwner,
55
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
52
56
  )
53
- BaseComponent(registry, instanceNftId, token)
57
+ public
58
+ virtual
59
+ onlyInitializing()
54
60
  {
55
- _isVerifying = verifying;
56
- // TODO add validation
57
- _collateralizationLevel = collateralizationLevel;
58
- _initialPoolFee = poolFee;
59
- _initialStakingFee = stakingFee;
60
- _initialPerformanceFee = performanceFee;
61
+ initializeComponent(registry, instanceNftId, name, token, POOL(), isInterceptingNftTransfers, initialOwner, registryData);
62
+
63
+ PoolStorage storage $ = _getPoolStorage();
64
+ $._poolService = getInstance().getPoolService();
65
+ $._bundleService = getInstance().getBundleService();
61
66
 
62
- _poolService = _instance.getPoolService();
63
- _productService = _instance.getProductService();
67
+ registerInterface(type(IPoolComponent).interfaceId);
64
68
  }
65
69
 
66
- function setFees(
67
- Fee memory poolFee,
68
- Fee memory stakingFee,
69
- Fee memory performanceFee
70
+
71
+ function stake(
72
+ NftId bundleNftId,
73
+ uint256 amount
70
74
  )
71
- external
72
- onlyOwner
73
- override
75
+ public
76
+ virtual
77
+ restricted()
78
+ onlyBundleOwner(bundleNftId)
74
79
  {
75
- _poolService.setFees(poolFee, stakingFee, performanceFee);
80
+ // TODO add implementation
76
81
  }
77
82
 
78
- function createBundle(
79
- Fee memory fee,
80
- uint256 initialAmount,
81
- uint256 lifetime,
82
- bytes memory filter
83
+
84
+ function unstake(
85
+ NftId bundleNftId,
86
+ uint256 amount
83
87
  )
84
- external
85
- virtual override
86
- returns(NftId bundleNftId)
88
+ public
89
+ virtual
90
+ restricted()
91
+ onlyBundleOwner(bundleNftId)
87
92
  {
88
- address owner = msg.sender;
89
- bundleNftId = _poolService.createBundle(
90
- owner,
91
- fee,
92
- initialAmount,
93
- lifetime,
94
- filter
95
- );
93
+ // TODO add implementation
94
+ }
96
95
 
97
- // TODO add logging
96
+
97
+ function extend(
98
+ NftId bundleNftId,
99
+ Seconds lifetimeExtension
100
+ )
101
+ public
102
+ virtual
103
+ restricted()
104
+ onlyBundleOwner(bundleNftId)
105
+ {
106
+ // TODO add implementation
107
+ }
108
+
109
+
110
+ function lockBundle(NftId bundleNftId)
111
+ public
112
+ virtual
113
+ //restricted() // TODO consider adding this back
114
+ onlyBundleOwner(bundleNftId)
115
+ {
116
+ _getPoolStorage()._bundleService.lock(bundleNftId);
117
+ }
118
+
119
+
120
+ function unlockBundle(NftId bundleNftId)
121
+ public
122
+ virtual
123
+ //restricted()
124
+ onlyBundleOwner(bundleNftId)
125
+ {
126
+ _getPoolStorage()._bundleService.unlock(bundleNftId);
98
127
  }
99
128
 
129
+
130
+ function close(NftId bundleNftId)
131
+ public
132
+ virtual
133
+ //restricted()
134
+ onlyBundleOwner(bundleNftId)
135
+ {
136
+ _getPoolStorage()._poolService.closeBundle(bundleNftId);
137
+ }
138
+
139
+
100
140
  function setBundleFee(
101
141
  NftId bundleNftId,
102
142
  Fee memory fee
103
143
  )
104
- external
105
- override
106
- // TODO add onlyBundleOwner
144
+ public
145
+ virtual
146
+ restricted()
147
+ onlyBundleOwner(bundleNftId)
107
148
  {
108
- _poolService.setBundleFee(bundleNftId, fee);
149
+ _getPoolStorage()._bundleService.setFee(bundleNftId, fee);
109
150
  }
110
151
 
111
- /**
112
- * @dev see {IPool.underwrite}.
113
- * Default implementation that only writes a {LogUnderwrittenByPool} entry.
114
- */
115
- function underwrite(
116
- NftId policyNftId,
117
- bytes memory policyData,
118
- bytes memory bundleFilter,
119
- uint256 collateralizationAmount
120
- )
121
- external
122
- onlyProductService
123
- virtual override
152
+
153
+ function setMaxCapitalAmount(uint256 maxCapitalAmount)
154
+ public
155
+ virtual
156
+ restricted()
157
+ onlyOwner()
124
158
  {
125
- _underwrite(policyNftId, policyData, bundleFilter, collateralizationAmount);
159
+ _getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
126
160
  }
127
161
 
128
- /**
129
- * @dev see {IPoolComponent.policyMatchesBundle}.
130
- * Default implementation always returns true
131
- */
132
- function policyMatchesBundle(
133
- bytes memory, // policyData
134
- bytes memory // bundleFilter
135
- )
162
+
163
+ function setBundleOwnerRole(RoleId bundleOwnerRole)
136
164
  public
137
- view
138
- virtual override
139
- returns (bool isMatching)
165
+ virtual
166
+ restricted()
167
+ onlyOwner()
140
168
  {
141
- return true;
169
+ _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
142
170
  }
143
171
 
144
172
 
145
- function isVerifying() external view override returns (bool verifying) {
146
- return _isVerifying;
173
+ function setFees(
174
+ Fee memory poolFee,
175
+ Fee memory stakingFee,
176
+ Fee memory performanceFee
177
+ )
178
+ public
179
+ virtual
180
+ restricted()
181
+ onlyOwner()
182
+ {
183
+ _getPoolStorage()._poolService.setFees(poolFee, stakingFee, performanceFee);
147
184
  }
148
185
 
149
- function getCollateralizationLevel() external view override returns (UFixed collateralizationLevel) {
150
- return _collateralizationLevel;
186
+
187
+ /// @dev see {IPool.verifyApplication}
188
+ function verifyApplication(
189
+ NftId applicationNftId,
190
+ bytes memory applicationData,
191
+ NftId bundleNftId,
192
+ bytes memory bundleFilter,
193
+ uint256 collateralizationAmount
194
+ )
195
+ public
196
+ virtual
197
+ restricted()
198
+ {
199
+ if(!applicationMatchesBundle(
200
+ applicationNftId,
201
+ applicationData,
202
+ bundleNftId,
203
+ bundleFilter,
204
+ collateralizationAmount)
205
+ )
206
+ {
207
+ revert ErrorPoolApplicationBundleMismatch(applicationNftId);
208
+ }
209
+
210
+ emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
151
211
  }
152
212
 
153
- function _underwrite(
154
- NftId policyNftId,
155
- bytes memory policyData,
213
+
214
+ /// @dev see {IPoolComponent.applicationMatchesBundle}
215
+ /// Override this function to implement any custom application verification
216
+ /// Default implementation always returns true
217
+ function applicationMatchesBundle(
218
+ NftId applicationNftId,
219
+ bytes memory applicationData,
220
+ NftId bundleNftId,
156
221
  bytes memory bundleFilter,
157
222
  uint256 collateralizationAmount
158
223
  )
159
- internal
224
+ public
225
+ view
226
+ virtual override
227
+ returns (bool isMatching)
160
228
  {
161
- require(
162
- policyMatchesBundle(policyData, bundleFilter),
163
- "ERROR:POL-020:POLICY_BUNDLE_MISMATCH"
164
- );
229
+ return true;
230
+ }
231
+
165
232
 
166
- emit LogUnderwrittenByPool(policyNftId, collateralizationAmount, address(this));
233
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory poolInfo) {
234
+ poolInfo = abi.decode(getComponentInfo().data, (IComponents.PoolInfo));
167
235
  }
168
236
 
237
+ // Internals
238
+
169
239
  function _createBundle(
170
240
  address bundleOwner,
171
241
  Fee memory fee,
172
- uint256 amount,
173
- uint256 lifetime,
174
- bytes calldata filter
242
+ Amount amount,
243
+ Seconds lifetime,
244
+ bytes memory filter
175
245
  )
176
246
  internal
177
247
  returns(NftId bundleNftId)
178
248
  {
179
- bundleNftId = _poolService.createBundle(
249
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
180
250
  bundleOwner,
181
251
  fee,
182
252
  amount,
183
253
  lifetime,
184
- filter
185
- );
186
- }
254
+ filter);
187
255
 
188
- // from pool component
189
- function getPoolFee()
190
- external
191
- view
192
- override
193
- returns (Fee memory poolFee)
194
- {
195
- NftId productNftId = _instance.getProductNftId(getNftId());
196
- if (_instance.hasTreasuryInfo(productNftId)) {
197
- return _instance.getTreasuryInfo(productNftId).poolFee;
198
- } else {
199
- return _initialPoolFee;
200
- }
256
+ // TODO add logging
201
257
  }
202
258
 
203
- function getStakingFee()
204
- external
205
- view
206
- override
207
- returns (Fee memory stakingFee)
208
- {
209
- NftId productNftId = _instance.getProductNftId(getNftId());
210
- if (_instance.hasTreasuryInfo(productNftId)) {
211
- return _instance.getTreasuryInfo(productNftId).stakingFee;
212
- } else {
213
- return _initialStakingFee;
214
- }
259
+ // TODO remove function once this is no longer used to produce contract locations on the fly ...
260
+ function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
261
+ return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
215
262
  }
216
263
 
217
- function getPerformanceFee()
218
- external
219
- view
220
- override
221
- returns (Fee memory performanceFee)
264
+ /// @dev defines initial pool specification
265
+ /// overwrite this function according to your use case
266
+ function _getInitialInfo()
267
+ internal
268
+ view
269
+ virtual override
270
+ returns (IComponents.ComponentInfo memory info)
222
271
  {
223
- NftId productNftId = _instance.getProductNftId(getNftId());
224
- if (_instance.hasTreasuryInfo(productNftId)) {
225
- return _instance.getTreasuryInfo(productNftId).performanceFee;
226
- } else {
227
- return _initialPerformanceFee;
228
- }
272
+ return IComponents.ComponentInfo(
273
+ getName(),
274
+ getToken(),
275
+ TokenHandler(address(0)), // will be created by GIF service during registration
276
+ address(this), // contract is its own wallet
277
+ AmountLib.zero(), // balance amount
278
+ AmountLib.zero(), // fee amount
279
+ abi.encode(
280
+ IComponents.PoolInfo(
281
+ NftIdLib.zero(), // will be set when GIF registers the related product
282
+ PUBLIC_ROLE(), // bundleOwnerRole
283
+ type(uint256).max, // maxCapitalAmount,
284
+ 0, // initial balance amount
285
+ 0, // initial fee amount
286
+ isNftInterceptor(), // isInterceptingBundleTransfers
287
+ false, // isExternallyManaged,
288
+ false, // isVerifyingApplications,
289
+ UFixedLib.toUFixed(1), // collateralizationLevel,
290
+ UFixedLib.toUFixed(1), // retentionLevel,
291
+ FeeLib.zeroFee(), // initialPoolFee,
292
+ FeeLib.zeroFee(), // initialStakingFee,
293
+ FeeLib.zeroFee() // initialPerformanceFee,
294
+ )));
229
295
  }
230
296
 
231
- // from registerable
232
- function getType() public pure override returns (ObjectType) {
233
- return POOL();
297
+
298
+ function _getPoolStorage() private pure returns (PoolStorage storage $) {
299
+ assembly {
300
+ $.slot := POOL_STORAGE_LOCATION_V1
301
+ }
234
302
  }
235
303
  }