@etherisc/gif-next 0.0.2-efef0ea-320 → 0.0.2-f034782-101

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 +283 -27
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +832 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1046 -132
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +279 -226
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +584 -55
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +598 -131
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +430 -70
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1012 -234
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +830 -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 +1410 -1111
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +567 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2042 -1245
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1311 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1279 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1033 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +701 -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/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +293 -204
  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 +968 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1527 -302
  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 +556 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +213 -209
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +793 -146
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +168 -221
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +96 -383
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +426 -232
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +657 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +320 -488
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -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 +890 -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 +1177 -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 +547 -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 → shared}/IService.sol/IService.json +105 -177
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  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/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +207 -169
  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 +4 -177
  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 +241 -186
  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 +13 -202
  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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  180. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  183. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  185. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  187. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  189. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  191. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  193. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  197. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  199. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  201. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  203. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  205. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  207. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  209. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  211. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  212. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  213. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  214. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  215. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  217. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  219. package/contracts/components/Component.sol +251 -0
  220. package/contracts/components/Distribution.sol +210 -62
  221. package/contracts/components/IComponent.sol +74 -0
  222. package/contracts/components/IDistributionComponent.sol +43 -19
  223. package/contracts/components/IPoolComponent.sol +89 -47
  224. package/contracts/components/IProductComponent.sol +13 -11
  225. package/contracts/components/Pool.sol +220 -156
  226. package/contracts/components/Product.sol +137 -71
  227. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  228. package/contracts/instance/BundleManager.sol +127 -0
  229. package/contracts/instance/Cloneable.sol +51 -0
  230. package/contracts/instance/IInstance.sol +87 -42
  231. package/contracts/instance/IInstanceService.sol +72 -0
  232. package/contracts/instance/Instance.sol +311 -58
  233. package/contracts/instance/InstanceAccessManager.sol +522 -0
  234. package/contracts/instance/InstanceReader.sol +290 -0
  235. package/contracts/instance/InstanceService.sol +495 -0
  236. package/contracts/instance/InstanceServiceManager.sol +54 -0
  237. package/contracts/instance/ObjectManager.sol +82 -0
  238. package/contracts/instance/base/ComponentService.sol +134 -0
  239. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  240. package/contracts/instance/base/ILifecycle.sol +3 -3
  241. package/contracts/instance/base/KeyValueStore.sol +52 -38
  242. package/contracts/instance/base/Lifecycle.sol +12 -3
  243. package/contracts/instance/module/IAccess.sol +54 -0
  244. package/contracts/instance/module/IBundle.sol +21 -0
  245. package/contracts/instance/module/IComponents.sol +35 -0
  246. package/contracts/instance/module/IDistribution.sol +41 -0
  247. package/contracts/instance/module/IPolicy.sol +72 -0
  248. package/contracts/instance/module/IRisk.sol +11 -0
  249. package/contracts/instance/module/ISetup.sol +33 -0
  250. package/contracts/instance/module/ITreasury.sol +23 -0
  251. package/contracts/instance/service/ApplicationService.sol +350 -0
  252. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  253. package/contracts/instance/service/BundleService.sol +336 -0
  254. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  255. package/contracts/instance/service/ClaimService.sol +151 -0
  256. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  257. package/contracts/instance/service/DistributionService.sol +434 -26
  258. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  259. package/contracts/instance/service/IApplicationService.sol +82 -0
  260. package/contracts/instance/service/IBundleService.sol +62 -0
  261. package/contracts/instance/service/IClaimService.sol +61 -0
  262. package/contracts/instance/service/IDistributionService.sol +87 -1
  263. package/contracts/instance/service/IPolicyService.sol +72 -0
  264. package/contracts/instance/service/IPoolService.sol +22 -24
  265. package/contracts/instance/service/IProductService.sol +9 -76
  266. package/contracts/instance/service/PolicyService.sol +403 -0
  267. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  268. package/contracts/instance/service/PoolService.sol +182 -111
  269. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +166 -434
  271. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  272. package/contracts/registry/ChainNft.sol +87 -36
  273. package/contracts/registry/IRegistry.sol +68 -24
  274. package/contracts/registry/IRegistryService.sol +67 -0
  275. package/contracts/registry/ITransferInterceptor.sol +7 -0
  276. package/contracts/registry/Registry.sol +372 -286
  277. package/contracts/registry/RegistryAccessManager.sol +216 -0
  278. package/contracts/registry/RegistryService.sol +283 -0
  279. package/contracts/registry/RegistryServiceManager.sol +62 -0
  280. package/contracts/registry/ReleaseManager.sol +322 -0
  281. package/contracts/registry/TokenRegistry.sol +116 -0
  282. package/contracts/shared/ContractDeployerLib.sol +72 -0
  283. package/contracts/shared/ERC165.sol +14 -8
  284. package/contracts/shared/INftOwnable.sol +23 -0
  285. package/contracts/shared/IPolicyHolder.sol +26 -0
  286. package/contracts/shared/IRegisterable.sol +10 -19
  287. package/contracts/shared/IRegistryLinked.sol +12 -0
  288. package/contracts/shared/IService.sol +18 -0
  289. package/contracts/shared/IVersionable.sol +37 -49
  290. package/contracts/shared/NftOwnable.sol +120 -0
  291. package/contracts/shared/PolicyHolder.sol +81 -0
  292. package/contracts/shared/ProxyManager.sol +169 -0
  293. package/contracts/shared/Registerable.sol +54 -66
  294. package/contracts/shared/RegistryLinked.sol +48 -0
  295. package/contracts/shared/Service.sol +58 -0
  296. package/contracts/shared/TokenHandler.sol +33 -0
  297. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  298. package/contracts/shared/Versionable.sol +37 -77
  299. package/contracts/test/TestFee.sol +2 -2
  300. package/contracts/test/TestRegisterable.sol +5 -6
  301. package/contracts/test/TestRoleId.sol +1 -1
  302. package/contracts/test/TestService.sol +7 -14
  303. package/contracts/types/Blocknumber.sol +1 -0
  304. package/contracts/types/ClaimId.sol +52 -0
  305. package/contracts/types/DistributorType.sol +55 -0
  306. package/contracts/types/Fee.sol +4 -3
  307. package/contracts/types/Key32.sol +8 -3
  308. package/contracts/types/NftId.sol +8 -0
  309. package/contracts/types/NftIdSet.sol +26 -24
  310. package/contracts/types/NumberId.sol +52 -0
  311. package/contracts/types/ObjectType.sol +40 -14
  312. package/contracts/types/PayoutId.sol +54 -0
  313. package/contracts/types/Referral.sol +89 -0
  314. package/contracts/types/RoleId.sol +68 -9
  315. package/contracts/types/Seconds.sol +54 -0
  316. package/contracts/types/StateId.sol +6 -1
  317. package/contracts/types/Timestamp.sol +17 -13
  318. package/contracts/types/UFixed.sol +129 -12
  319. package/contracts/types/Version.sol +6 -1
  320. package/package.json +6 -5
  321. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  323. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  326. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  328. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  330. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  332. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  334. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  336. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  340. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  343. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  345. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  347. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  349. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  353. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  355. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  356. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  357. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  358. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  359. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -387
  360. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  361. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  362. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  363. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  364. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  368. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  370. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  371. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  373. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  376. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  378. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  380. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  383. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  386. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  389. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  391. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  393. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  395. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  397. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  400. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  402. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  405. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  407. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  409. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -618
  411. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  412. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  413. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  414. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  415. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  416. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  417. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  418. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  419. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  420. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  421. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  422. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  423. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  424. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  426. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  428. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  430. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  432. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  433. package/contracts/components/BaseComponent.sol +0 -94
  434. package/contracts/components/IBaseComponent.sol +0 -19
  435. package/contracts/experiment/errors/Require.sol +0 -38
  436. package/contracts/experiment/errors/Revert.sol +0 -44
  437. package/contracts/experiment/inheritance/A.sol +0 -53
  438. package/contracts/experiment/inheritance/B.sol +0 -28
  439. package/contracts/experiment/inheritance/C.sol +0 -34
  440. package/contracts/experiment/inheritance/IA.sol +0 -13
  441. package/contracts/experiment/inheritance/IB.sol +0 -10
  442. package/contracts/experiment/inheritance/IC.sol +0 -12
  443. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  444. package/contracts/experiment/statemachine/ISM.sol +0 -25
  445. package/contracts/experiment/statemachine/README.md +0 -112
  446. package/contracts/experiment/statemachine/SM.sol +0 -57
  447. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  448. package/contracts/experiment/types/TypeA.sol +0 -47
  449. package/contracts/experiment/types/TypeB.sol +0 -29
  450. package/contracts/instance/IInstanceLinked.sol +0 -8
  451. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  452. package/contracts/instance/base/IInstanceBase.sol +0 -22
  453. package/contracts/instance/base/IService.sol +0 -15
  454. package/contracts/instance/base/InstanceBase.sol +0 -91
  455. package/contracts/instance/base/ModuleBase.sol +0 -57
  456. package/contracts/instance/base/ServiceBase.sol +0 -37
  457. package/contracts/instance/module/access/Access.sol +0 -149
  458. package/contracts/instance/module/access/IAccess.sol +0 -53
  459. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  460. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  461. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  462. package/contracts/instance/module/component/IComponent.sol +0 -28
  463. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  464. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  465. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  466. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  467. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  468. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  469. package/contracts/instance/module/risk/IRisk.sol +0 -26
  470. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  471. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  472. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  473. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  474. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  475. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  476. package/contracts/registry/IChainNft.sol +0 -21
  477. package/contracts/registry/IRegistryLinked.sol +0 -8
  478. package/contracts/registry/RegistryUpgradeable.sol +0 -488
  479. package/contracts/shared/IOwnable.sol +0 -6
  480. package/contracts/shared/Proxy.sol +0 -94
  481. package/contracts/shared/VersionableUpgradeable.sol +0 -136
  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
@@ -0,0 +1,336 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IBundle} from "../../instance/module/IBundle.sol";
5
+ import {IComponents} from "../module/IComponents.sol";
6
+ import {IRegistry} from "../../registry/IRegistry.sol";
7
+ import {IInstance} from "../../instance/IInstance.sol";
8
+ import {TokenHandler} from "../../instance/module/ITreasury.sol";
9
+ import {ISetup} from "../module/ISetup.sol";
10
+ import {IPolicy} from "../module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../../shared/IVersionable.sol";
13
+ import {INftOwnable} from "../../shared/INftOwnable.sol";
14
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
15
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
16
+ import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
17
+ import {Pool} from "../../components/Pool.sol";
18
+
19
+ import {Fee, FeeLib} from "../../types/Fee.sol";
20
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
21
+ import {Seconds} from "../../types/Seconds.sol";
22
+ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
23
+ import {Version, VersionLib} from "../../types/Version.sol";
24
+ import {Versionable} from "../../shared/Versionable.sol";
25
+
26
+ import {IService} from "../../shared/IService.sol";
27
+ import {Service} from "../../shared/Service.sol";
28
+ import {BundleManager} from "../BundleManager.sol";
29
+ import {ComponentService} from "../base/ComponentService.sol";
30
+ import {IBundleService} from "./IBundleService.sol";
31
+ import {IRegistryService} from "../../registry/IRegistryService.sol";
32
+ import {InstanceService} from "../InstanceService.sol";
33
+ import {InstanceReader} from "../InstanceReader.sol";
34
+
35
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
36
+
37
+ contract BundleService is
38
+ ComponentService,
39
+ IBundleService
40
+ {
41
+ using NftIdLib for NftId;
42
+
43
+ string public constant NAME = "BundleService";
44
+
45
+ address internal _registryAddress;
46
+
47
+ function _initialize(
48
+ address owner,
49
+ bytes memory data
50
+ )
51
+ internal
52
+ initializer
53
+ virtual override
54
+ {
55
+ address registryAddress;
56
+ address initialOwner;
57
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
58
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
59
+ // owner is PoolServiceManager deployer
60
+ initializeService(registryAddress, owner);
61
+ registerInterface(type(IBundleService).interfaceId);
62
+ }
63
+
64
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
65
+ return BUNDLE();
66
+ }
67
+
68
+ function create(
69
+ address owner,
70
+ Fee memory fee,
71
+ uint256 stakingAmount,
72
+ Seconds lifetime,
73
+ bytes calldata filter
74
+ )
75
+ external
76
+ override
77
+ returns(NftId bundleNftId)
78
+ {
79
+ (IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
80
+ InstanceReader instanceReader = instance.getInstanceReader();
81
+ NftId poolNftId = info.nftId;
82
+
83
+ IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
84
+ poolNftId,
85
+ fee,
86
+ filter,
87
+ stakingAmount,
88
+ 0,
89
+ stakingAmount,
90
+ lifetime,
91
+ zeroTimestamp(),
92
+ zeroTimestamp()
93
+ );
94
+
95
+ // register bundle with registry
96
+ bundleNftId = getRegistryService().registerBundle(
97
+ IRegistry.ObjectInfo(
98
+ zeroNftId(),
99
+ poolNftId,
100
+ BUNDLE(),
101
+ false, // intercepting property for bundles is defined on pool
102
+ address(0),
103
+ owner,
104
+ abi.encode(bundleInfo)
105
+ )
106
+ );
107
+
108
+ // create bundle info in instance
109
+ instance.createBundle(bundleNftId, bundleInfo);
110
+
111
+ BundleManager bundleManager = instance.getBundleManager();
112
+ bundleManager.add(bundleNftId);
113
+
114
+ _processStakingByTreasury(
115
+ instanceReader,
116
+ poolNftId,
117
+ bundleNftId,
118
+ stakingAmount);
119
+
120
+ // TODO add logging
121
+ }
122
+
123
+ function setFee(
124
+ NftId bundleNftId,
125
+ Fee memory fee
126
+ )
127
+ external
128
+ override
129
+ {
130
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
131
+ InstanceReader instanceReader = instance.getInstanceReader();
132
+ NftId poolNftId = info.nftId;
133
+
134
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
135
+ require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
136
+ require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
137
+
138
+ bundleInfo.fee = fee;
139
+
140
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
141
+ }
142
+
143
+
144
+ function lockCollateral(
145
+ IInstance instance,
146
+ NftId policyNftId,
147
+ NftId bundleNftId,
148
+ uint256 collateralAmount,
149
+ uint256 netPremiumAmount
150
+ )
151
+ external
152
+ onlyService
153
+ returns (
154
+ IBundle.BundleInfo memory bundleInfo
155
+ )
156
+ {
157
+ InstanceReader instanceReader = instance.getInstanceReader();
158
+ bundleInfo = instanceReader.getBundleInfo(bundleNftId);
159
+
160
+ // TODO add validation
161
+
162
+ // lock collateral
163
+ bundleInfo.lockedAmount += collateralAmount;
164
+ bundleInfo.balanceAmount += netPremiumAmount;
165
+
166
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
167
+
168
+ linkPolicy(instance, policyNftId);
169
+ }
170
+
171
+
172
+ function lock(NftId bundleNftId)
173
+ external
174
+ virtual
175
+ {
176
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
177
+
178
+ // udpate bundle state
179
+ instance.updateBundleState(bundleNftId, PAUSED());
180
+
181
+ // update set of active bundles
182
+ BundleManager bundleManager = instance.getBundleManager();
183
+ bundleManager.lock(bundleNftId);
184
+
185
+ emit LogBundleServiceBundleLocked(bundleNftId);
186
+ }
187
+
188
+
189
+ function unlock(NftId bundleNftId)
190
+ external
191
+ virtual
192
+ {
193
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
194
+
195
+ // udpate bundle state
196
+ instance.updateBundleState(bundleNftId, ACTIVE());
197
+
198
+ // update set of active bundles
199
+ BundleManager bundleManager = instance.getBundleManager();
200
+ bundleManager.unlock(bundleNftId);
201
+
202
+ emit LogBundleServiceBundleActivated(bundleNftId);
203
+ }
204
+
205
+
206
+ function close(NftId bundleNftId)
207
+ external
208
+ virtual
209
+ {
210
+ (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
211
+
212
+ // udpate bundle state
213
+ instance.updateBundleState(bundleNftId, CLOSED());
214
+
215
+ // ensure no open policies attached to bundle
216
+ BundleManager bundleManager = instance.getBundleManager();
217
+ uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
218
+ if(openPolicies > 0) {
219
+ revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
220
+ }
221
+
222
+ // update set of active bundles
223
+ bundleManager.lock(bundleNftId);
224
+
225
+ emit LogBundleServiceBundleClosed(bundleNftId);
226
+ }
227
+
228
+
229
+ function increaseBalance(IInstance instance,
230
+ NftId bundleNftId,
231
+ uint256 amount
232
+ )
233
+ external
234
+ onlyService
235
+ {
236
+ InstanceReader instanceReader = instance.getInstanceReader();
237
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
238
+
239
+ bundleInfo.balanceAmount += amount;
240
+
241
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
242
+ }
243
+
244
+ function closePolicy(IInstance instance,
245
+ NftId policyNftId,
246
+ NftId bundleNftId,
247
+ uint256 collateralAmount
248
+ )
249
+ external
250
+ onlyService
251
+ {
252
+ InstanceReader instanceReader = instance.getInstanceReader();
253
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
254
+
255
+ // lock collateral
256
+ bundleInfo.lockedAmount -= collateralAmount;
257
+
258
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
259
+
260
+ unlinkPolicy(instance, policyNftId);
261
+ }
262
+
263
+ /// @dev links policy to bundle
264
+ function linkPolicy(IInstance instance, NftId policyNftId)
265
+ internal
266
+ onlyService
267
+ {
268
+ InstanceReader instanceReader = instance.getInstanceReader();
269
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
270
+
271
+ // ensure policy has not yet been activated
272
+ if (policyInfo.activatedAt.gtz()) {
273
+ revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
274
+ }
275
+
276
+ BundleManager bundleManager = instance.getBundleManager();
277
+ bundleManager.linkPolicy(policyNftId);
278
+ }
279
+
280
+ /// @dev unlinks policy from bundle
281
+ function unlinkPolicy(IInstance instance, NftId policyNftId)
282
+ internal
283
+ onlyService
284
+ {
285
+ InstanceReader instanceReader = instance.getInstanceReader();
286
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
287
+
288
+ // ensure policy has no open claims
289
+ if (policyInfo.openClaimsCount > 0) {
290
+ revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
291
+ policyNftId,
292
+ policyInfo.openClaimsCount);
293
+ }
294
+
295
+ // ensure policy is closeable
296
+ if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
297
+ && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
298
+ {
299
+ revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
300
+ }
301
+
302
+ BundleManager bundleManager = instance.getBundleManager();
303
+ bundleManager.unlinkPolicy(policyNftId);
304
+ }
305
+
306
+ function _processStakingByTreasury(
307
+ InstanceReader instanceReader,
308
+ NftId poolNftId,
309
+ NftId bundleNftId,
310
+ uint256 stakingAmount
311
+ )
312
+ internal
313
+ {
314
+ // process token transfer(s)
315
+ if(stakingAmount > 0) {
316
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
317
+ IComponents.PoolInfo memory poolInfo = abi.decode(
318
+ componentInfo.data, (IComponents.PoolInfo));
319
+
320
+ TokenHandler tokenHandler = componentInfo.tokenHandler;
321
+ address bundleOwner = getRegistry().ownerOf(bundleNftId);
322
+ Fee memory stakingFee = poolInfo.stakingFee;
323
+
324
+ tokenHandler.transfer(
325
+ bundleOwner,
326
+ componentInfo.wallet,
327
+ stakingAmount
328
+ );
329
+
330
+ if (! FeeLib.feeIsZero(stakingFee)) {
331
+ (uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
332
+ // TODO: track staking fees in pool's state (issue #177)
333
+ }
334
+ }
335
+ }
336
+ }
@@ -0,0 +1,51 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {BundleService} from "./BundleService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract BundleServiceManager is ProxyManager {
12
+
13
+ BundleService private _bundleService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ BundleService bundleSrv = new BundleService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(bundleSrv),
25
+ data);
26
+
27
+ _bundleService = BundleService(address(versionable));
28
+
29
+ // TODO `this` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _bundleService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_poolService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_poolService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getBundleService()
44
+ external
45
+ view
46
+ returns (BundleService)
47
+ {
48
+ return _bundleService;
49
+ }
50
+
51
+ }
@@ -0,0 +1,151 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
+ import {IProductComponent} from "../../components/IProductComponent.sol";
9
+ import {Product} from "../../components/Product.sol";
10
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
+ import {IInstance} from "../IInstance.sol";
13
+ import {IPolicy} from "../module/IPolicy.sol";
14
+ import {IRisk} from "../module/IRisk.sol";
15
+ import {IBundle} from "../module/IBundle.sol";
16
+ import {IProductService} from "./IProductService.sol";
17
+ import {ITreasury} from "../module/ITreasury.sol";
18
+ import {ISetup} from "../module/ISetup.sol";
19
+
20
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
21
+
22
+ import {IVersionable} from "../../shared/IVersionable.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
24
+
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../../types/ObjectType.sol";
29
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
+ import {Fee, FeeLib} from "../../types/Fee.sol";
32
+ import {ReferralId} from "../../types/Referral.sol";
33
+ import {RiskId} from "../../types/RiskId.sol";
34
+ import {StateId} from "../../types/StateId.sol";
35
+ import {ClaimId} from "../../types/ClaimId.sol";
36
+ import {PayoutId} from "../../types/PayoutId.sol";
37
+ import {Version, VersionLib} from "../../types/Version.sol";
38
+
39
+ import {ComponentService} from "../base/ComponentService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IBundleService} from "./IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "./IPoolService.sol";
44
+ import {IService} from "../../shared/IService.sol";
45
+ import {Service} from "../../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentService,
50
+ IClaimService
51
+ {
52
+
53
+
54
+ function _initialize(
55
+ address owner,
56
+ bytes memory data
57
+ )
58
+ internal
59
+ virtual override
60
+ initializer()
61
+ {
62
+ // TODO check this, might no longer be the way, refactor if necessary
63
+ address registryAddress;
64
+ address initialOwner;
65
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
66
+
67
+ initializeService(registryAddress, owner);
68
+ registerInterface(type(IClaimService).interfaceId);
69
+ }
70
+
71
+
72
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
73
+ return CLAIM();
74
+ }
75
+
76
+
77
+ function createClaim(
78
+ NftId policyNftId,
79
+ uint256 claimAmount,
80
+ bytes memory claimData
81
+ )
82
+ external
83
+ virtual
84
+ returns (ClaimId)
85
+ {
86
+
87
+ }
88
+
89
+
90
+ function confirmClaim(NftId policyNftId, ClaimId claimId, uint256 claimAmount)
91
+ external
92
+ virtual
93
+ // solhint-disable-next-line no-empty-blocks
94
+ {
95
+
96
+ }
97
+
98
+
99
+ function declineClaim(NftId policyNftId, ClaimId claimId)
100
+ external
101
+ virtual
102
+ // solhint-disable-next-line no-empty-blocks
103
+ {
104
+
105
+ }
106
+
107
+
108
+ function closeClaim(NftId policyNftId, ClaimId claimId)
109
+ external
110
+ virtual
111
+ // solhint-disable-next-line no-empty-blocks
112
+ {
113
+
114
+ }
115
+
116
+
117
+ function createPayout(
118
+ NftId policyNftId,
119
+ ClaimId claimId,
120
+ uint256 payoutAmount,
121
+ bytes calldata payoutData
122
+ )
123
+ external
124
+ virtual
125
+ returns(PayoutId payoutId)
126
+ // solhint-disable-next-line no-empty-blocks
127
+ {
128
+
129
+ }
130
+
131
+
132
+ function payoutExecuted(
133
+ NftId policyNftId,
134
+ PayoutId payoutId
135
+ )
136
+ external
137
+ virtual
138
+ // solhint-disable-next-line no-empty-blocks
139
+ {
140
+
141
+ }
142
+
143
+
144
+ // internal functions
145
+
146
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
147
+ IRegistry.ObjectInfo memory productInfo;
148
+ (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
149
+ product = Product(productInfo.objectAddress);
150
+ }
151
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ClaimService svc = new ClaimService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _claimService = ClaimService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getClaimService()
29
+ external
30
+ view
31
+ returns (ClaimService)
32
+ {
33
+ return _claimService;
34
+ }
35
+ }