@etherisc/gif-next 0.0.2-f824182-503 → 0.0.2-f831797-539

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 (461) hide show
  1. package/README.md +411 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +644 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1301 -0
  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} +271 -236
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +851 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +936 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +712 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1143 -133
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +950 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +783 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1599 -798
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +509 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2341 -875
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1284 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1046 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +552 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  54. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  58. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  60. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  62. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  63. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  64. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +968 -0
  66. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
  68. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1093 -0
  70. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  72. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
  74. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  76. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1724 -0
  78. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +801 -0
  80. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +556 -0
  82. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +630 -0
  84. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
  86. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1013 -0
  88. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +540 -0
  90. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +428 -0
  92. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +384 -0
  94. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1021 -0
  96. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +689 -0
  98. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +816 -0
  100. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +653 -0
  102. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
  104. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  106. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  108. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +578 -29
  110. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +890 -0
  112. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  114. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.json +651 -68
  116. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  118. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1177 -0
  120. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  122. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  124. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  126. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  131. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IService.sol/IService.json +269 -0
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.json +425 -0
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  160. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  162. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  164. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  166. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestService.sol/TestService.json +521 -0
  168. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  170. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  172. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  174. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  175. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  176. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  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/ChainId.sol/ChainIdLib.json +2 -2
  182. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  184. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  186. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  188. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  190. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  192. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  194. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +97 -4
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  216. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  220. package/contracts/components/Component.sol +215 -51
  221. package/contracts/components/Distribution.sol +280 -0
  222. package/contracts/components/IComponent.sol +74 -0
  223. package/contracts/components/IDistributionComponent.sol +71 -0
  224. package/contracts/components/IPoolComponent.sol +113 -0
  225. package/contracts/components/IProductComponent.sol +40 -0
  226. package/contracts/components/Pool.sol +277 -30
  227. package/contracts/components/Product.sol +252 -48
  228. package/contracts/instance/BundleManager.sol +127 -0
  229. package/contracts/instance/Cloneable.sol +46 -0
  230. package/contracts/instance/IInstance.sol +92 -24
  231. package/contracts/instance/IInstanceService.sol +60 -0
  232. package/contracts/instance/Instance.sol +274 -51
  233. package/contracts/instance/InstanceAccessManager.sol +297 -0
  234. package/contracts/instance/InstanceReader.sol +294 -0
  235. package/contracts/instance/InstanceService.sol +489 -0
  236. package/contracts/instance/InstanceServiceManager.sol +54 -0
  237. package/contracts/instance/ObjectManager.sol +84 -0
  238. package/contracts/instance/base/ComponentService.sol +134 -0
  239. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  240. package/contracts/instance/base/ILifecycle.sol +30 -0
  241. package/contracts/instance/base/KeyValueStore.sol +175 -0
  242. package/contracts/instance/base/Lifecycle.sol +109 -0
  243. package/contracts/instance/module/IAccess.sol +47 -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 +450 -0
  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 +98 -0
  263. package/contracts/instance/service/IPolicyService.sol +72 -0
  264. package/contracts/instance/service/IPoolService.sol +35 -0
  265. package/contracts/instance/service/IProductService.sol +40 -0
  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 +163 -0
  269. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  270. package/contracts/instance/service/ProductService.sol +233 -0
  271. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  272. package/contracts/registry/ChainNft.sol +129 -62
  273. package/contracts/registry/IRegistry.sol +73 -41
  274. package/contracts/registry/IRegistryService.sol +67 -0
  275. package/contracts/registry/ITransferInterceptor.sol +6 -0
  276. package/contracts/registry/Registry.sol +408 -126
  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 +27 -0
  284. package/contracts/shared/INftOwnable.sol +23 -0
  285. package/contracts/shared/IPolicyHolder.sol +26 -0
  286. package/contracts/shared/IRegisterable.sol +15 -0
  287. package/contracts/shared/IRegistryLinked.sol +12 -0
  288. package/contracts/shared/IService.sol +18 -0
  289. package/contracts/shared/IVersionable.sol +53 -0
  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 +74 -0
  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 +59 -0
  299. package/contracts/test/TestFee.sol +25 -0
  300. package/contracts/test/TestRegisterable.sol +18 -0
  301. package/contracts/test/TestRoleId.sol +14 -0
  302. package/contracts/test/TestService.sol +25 -0
  303. package/contracts/test/TestToken.sol +26 -0
  304. package/contracts/test/TestVersion.sol +44 -0
  305. package/contracts/test/TestVersionable.sol +17 -0
  306. package/contracts/test/Usdc.sol +26 -0
  307. package/contracts/types/AddressSet.sol +58 -0
  308. package/contracts/types/Blocknumber.sol +1 -0
  309. package/contracts/types/ClaimId.sol +52 -0
  310. package/contracts/types/DistributorType.sol +55 -0
  311. package/contracts/types/Fee.sol +45 -20
  312. package/contracts/types/Key32.sol +50 -0
  313. package/contracts/types/NftId.sol +30 -1
  314. package/contracts/types/NftIdSet.sol +62 -0
  315. package/contracts/types/NumberId.sol +52 -0
  316. package/contracts/types/ObjectType.sol +65 -15
  317. package/contracts/types/PayoutId.sol +54 -0
  318. package/contracts/types/Referral.sol +89 -0
  319. package/contracts/types/RiskId.sol +43 -0
  320. package/contracts/types/RoleId.sol +95 -0
  321. package/contracts/types/Seconds.sol +54 -0
  322. package/contracts/types/StateId.sol +19 -4
  323. package/contracts/types/Timestamp.sol +31 -6
  324. package/contracts/types/UFixed.sol +151 -31
  325. package/contracts/types/Version.sol +108 -0
  326. package/package.json +14 -5
  327. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  328. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  329. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  330. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  331. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  332. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  333. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  335. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  337. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  339. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  341. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  343. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  345. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  349. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  351. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  353. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  355. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  359. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  361. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  363. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  365. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  367. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  369. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  370. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  371. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  372. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  373. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  374. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  376. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  378. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  379. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  380. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  381. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  382. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  383. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  385. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  387. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  388. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  389. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  390. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  391. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  394. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  395. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  397. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  399. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  400. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  402. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  404. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  406. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  407. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  409. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  411. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  412. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  414. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  415. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  416. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  417. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  418. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  420. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  421. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  422. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  423. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  424. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  425. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  426. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  427. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  428. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  429. package/contracts/components/IPool.sol +0 -15
  430. package/contracts/components/IProduct.sol +0 -16
  431. package/contracts/experiment/errors/Require.sol +0 -38
  432. package/contracts/experiment/errors/Revert.sol +0 -44
  433. package/contracts/experiment/inheritance/A.sol +0 -53
  434. package/contracts/experiment/inheritance/B.sol +0 -28
  435. package/contracts/experiment/inheritance/C.sol +0 -34
  436. package/contracts/experiment/inheritance/IA.sol +0 -13
  437. package/contracts/experiment/inheritance/IB.sol +0 -10
  438. package/contracts/experiment/inheritance/IC.sol +0 -12
  439. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  440. package/contracts/experiment/statemachine/ISM.sol +0 -25
  441. package/contracts/experiment/statemachine/README.md +0 -112
  442. package/contracts/experiment/statemachine/SM.sol +0 -57
  443. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  444. package/contracts/experiment/types/TypeA.sol +0 -47
  445. package/contracts/experiment/types/TypeB.sol +0 -29
  446. package/contracts/instance/access/Access.sol +0 -165
  447. package/contracts/instance/access/IAccess.sol +0 -63
  448. package/contracts/instance/component/ComponentModule.sol +0 -274
  449. package/contracts/instance/component/IComponent.sol +0 -74
  450. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  451. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  452. package/contracts/instance/policy/IPolicy.sol +0 -50
  453. package/contracts/instance/policy/PolicyModule.sol +0 -114
  454. package/contracts/instance/pool/IPoolModule.sol +0 -23
  455. package/contracts/instance/pool/PoolModule.sol +0 -81
  456. package/contracts/instance/product/IProductService.sol +0 -36
  457. package/contracts/instance/product/ProductService.sol +0 -136
  458. package/contracts/instance/treasury/ITreasury.sol +0 -91
  459. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  460. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  461. package/contracts/registry/IChainNft.sol +0 -21
@@ -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
+ }