@etherisc/gif-next 0.0.2-f9bc4c7-556 → 0.0.2-fa85e58-736

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 (712) hide show
  1. package/README.md +279 -15
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1234 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +280 -1494
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +473 -1765
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1725 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3571 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1521 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1534 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +842 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +927 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +997 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1267 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1307 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1706 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +256 -221
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +207 -171
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +655 -50
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +885 -99
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  186. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  188. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  190. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  192. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  194. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  196. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  197. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  202. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  204. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  206. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  208. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +138 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  322. package/contracts/distribution/Distribution.sol +295 -0
  323. package/contracts/distribution/DistributionService.sol +337 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +52 -0
  326. package/contracts/distribution/IDistributionService.sol +97 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +78 -44
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +238 -52
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -0
  336. package/contracts/instance/InstanceStore.sol +277 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +50 -0
  345. package/contracts/instance/module/IDistribution.sol +41 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +33 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +166 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +166 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  359. package/contracts/pool/BundleService.sol +438 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +133 -0
  362. package/contracts/pool/IPoolComponent.sol +58 -0
  363. package/contracts/pool/IPoolService.sol +158 -0
  364. package/contracts/pool/Pool.sol +331 -0
  365. package/contracts/pool/PoolService.sol +562 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +43 -0
  371. package/contracts/product/ClaimService.sol +417 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +40 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +476 -0
  380. package/contracts/product/PolicyServiceManager.sol +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +95 -37
  387. package/contracts/registry/IRegistry.sol +106 -29
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +475 -280
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +252 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +485 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +280 -0
  399. package/contracts/shared/ComponentService.sol +651 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/IComponent.sol +70 -0
  403. package/contracts/shared/IComponentService.sol +108 -0
  404. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  405. package/contracts/shared/IKeyValueStore.sol +54 -0
  406. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  407. package/contracts/shared/INftOwnable.sol +23 -0
  408. package/contracts/shared/IPolicyHolder.sol +45 -0
  409. package/contracts/shared/IRegisterable.sol +10 -19
  410. package/contracts/shared/IRegistryLinked.sol +11 -0
  411. package/contracts/shared/IService.sol +25 -0
  412. package/contracts/shared/InitializableCustom.sol +177 -0
  413. package/contracts/shared/InitializableERC165.sol +27 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +99 -0
  420. package/contracts/shared/Registerable.sol +54 -65
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +58 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +516 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +135 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/Key32.sol +8 -3
  442. package/contracts/{types → type}/NftId.sol +21 -15
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +90 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/type/RiskId.sol +43 -0
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +93 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/{types → type}/StateId.sol +39 -5
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +27 -14
  455. package/contracts/type/UFixed.sol +351 -0
  456. package/contracts/{types → type}/Version.sol +17 -2
  457. package/contracts/upgradeability/IVersionable.sol +53 -0
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +11 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  464. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  467. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  468. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  469. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  470. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  471. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  472. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  506. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  507. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  508. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  509. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  510. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  512. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  516. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  519. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  521. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  524. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  525. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  526. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  531. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  534. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  536. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  538. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  540. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  542. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  544. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  546. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  549. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  551. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  555. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  557. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  560. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  562. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  566. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  568. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  570. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  572. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  575. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  578. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  580. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  581. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  582. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  583. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  584. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  585. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  586. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  587. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  588. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  589. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  591. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  593. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  595. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  597. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  599. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  601. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  603. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  605. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  607. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  609. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  610. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  611. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  612. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  613. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  615. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  617. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  619. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  623. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  624. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  625. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  627. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  629. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  632. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  634. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  636. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  638. package/contracts/components/BaseComponent.sol +0 -88
  639. package/contracts/components/IBaseComponent.sol +0 -19
  640. package/contracts/components/IPoolComponent.sol +0 -57
  641. package/contracts/components/IProductComponent.sol +0 -19
  642. package/contracts/components/Pool.sol +0 -174
  643. package/contracts/components/Product.sol +0 -117
  644. package/contracts/experiment/errors/Require.sol +0 -38
  645. package/contracts/experiment/errors/Revert.sol +0 -44
  646. package/contracts/experiment/inheritance/A.sol +0 -53
  647. package/contracts/experiment/inheritance/B.sol +0 -28
  648. package/contracts/experiment/inheritance/C.sol +0 -34
  649. package/contracts/experiment/inheritance/IA.sol +0 -13
  650. package/contracts/experiment/inheritance/IB.sol +0 -10
  651. package/contracts/experiment/inheritance/IC.sol +0 -12
  652. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  653. package/contracts/experiment/statemachine/ISM.sol +0 -25
  654. package/contracts/experiment/statemachine/README.md +0 -112
  655. package/contracts/experiment/statemachine/SM.sol +0 -57
  656. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  657. package/contracts/experiment/types/TypeA.sol +0 -47
  658. package/contracts/experiment/types/TypeB.sol +0 -29
  659. package/contracts/instance/IInstanceLinked.sol +0 -8
  660. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  661. package/contracts/instance/base/IInstanceBase.sol +0 -14
  662. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  663. package/contracts/instance/base/IService.sol +0 -15
  664. package/contracts/instance/base/InstanceBase.sol +0 -80
  665. package/contracts/instance/base/KeyValueStore.sol +0 -156
  666. package/contracts/instance/base/Lifecycle.sol +0 -95
  667. package/contracts/instance/base/ModuleBase.sol +0 -52
  668. package/contracts/instance/base/ServiceBase.sol +0 -37
  669. package/contracts/instance/module/access/Access.sol +0 -149
  670. package/contracts/instance/module/access/IAccess.sol +0 -53
  671. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  672. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  673. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  674. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  675. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  676. package/contracts/instance/module/component/IComponent.sol +0 -53
  677. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  678. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  679. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  680. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  681. package/contracts/instance/module/risk/IRisk.sol +0 -10
  682. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  683. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  684. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  685. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  686. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  687. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  688. package/contracts/instance/service/IPoolService.sol +0 -30
  689. package/contracts/instance/service/IProductService.sol +0 -58
  690. package/contracts/instance/service/PoolService.sol +0 -123
  691. package/contracts/instance/service/ProductService.sol +0 -354
  692. package/contracts/registry/IChainNft.sol +0 -21
  693. package/contracts/registry/IRegistryLinked.sol +0 -8
  694. package/contracts/shared/ERC165.sol +0 -21
  695. package/contracts/shared/IOwnable.sol +0 -6
  696. package/contracts/shared/IVersionable.sol +0 -52
  697. package/contracts/shared/Versionable.sol +0 -89
  698. package/contracts/test/TestFee.sol +0 -25
  699. package/contracts/test/TestPool.sol +0 -22
  700. package/contracts/test/TestProduct.sol +0 -44
  701. package/contracts/test/TestRegisterable.sol +0 -19
  702. package/contracts/test/TestRoleId.sol +0 -14
  703. package/contracts/test/TestService.sol +0 -32
  704. package/contracts/test/TestToken.sol +0 -26
  705. package/contracts/test/TestVersion.sol +0 -44
  706. package/contracts/test/TestVersionable.sol +0 -17
  707. package/contracts/types/ChainId.sol +0 -38
  708. package/contracts/types/Fee.sol +0 -51
  709. package/contracts/types/NftIdSet.sol +0 -60
  710. package/contracts/types/ObjectType.sol +0 -115
  711. package/contracts/types/RoleId.sol +0 -38
  712. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,438 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IBundle} from "../instance/module/IBundle.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IComponentService} from "../shared/IComponentService.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
12
+ import {IInstance} from "../instance/IInstance.sol";
13
+ import {InstanceStore} from "../instance/InstanceStore.sol";
14
+ import {IPolicy} from "../instance/module/IPolicy.sol";
15
+
16
+ import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {BundleSet} from "../instance/BundleSet.sol";
18
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
+ import {Fee, FeeLib} from "../type/Fee.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+ import {NftId, NftIdLib} from "../type/NftId.sol";
22
+ import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
23
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
24
+ import {Seconds} from "../type/Seconds.sol";
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
+
27
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
28
+
29
+ contract BundleService is
30
+ ComponentVerifyingService,
31
+ IBundleService
32
+ {
33
+
34
+ string public constant NAME = "BundleService";
35
+
36
+ address private _registryAddress;
37
+ IRegistryService private _registryService;
38
+ IComponentService private _componentService;
39
+
40
+ function _initialize(
41
+ address owner,
42
+ bytes memory data
43
+ )
44
+ internal
45
+ initializer
46
+ virtual override
47
+ {
48
+ address registryAddress;
49
+ address initialOwner;
50
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
51
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
52
+ // owner is PoolServiceManager deployer
53
+ initializeService(registryAddress, address(0), owner);
54
+
55
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
56
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
57
+
58
+ registerInterface(type(IBundleService).interfaceId);
59
+ }
60
+
61
+
62
+ function setFee(
63
+ NftId bundleNftId,
64
+ Fee memory fee
65
+ )
66
+ external
67
+ virtual
68
+ {
69
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
70
+ InstanceReader instanceReader = instance.getInstanceReader();
71
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
72
+ if(bundleInfo.poolNftId.eqz()) {
73
+ revert ErrorBundleServiceBundleUnknown(bundleNftId);
74
+ }
75
+
76
+ if(bundleInfo.poolNftId != poolNftId) {
77
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
78
+ }
79
+
80
+ bundleInfo.fee = fee;
81
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
82
+ }
83
+
84
+
85
+ function create(
86
+ IInstance instance,
87
+ NftId poolNftId,
88
+ address owner,
89
+ Fee memory bundleFee,
90
+ Amount stakingAmount,
91
+ Seconds lifetime,
92
+ bytes calldata filter
93
+ )
94
+ external
95
+ override
96
+ restricted
97
+ returns(NftId bundleNftId)
98
+ {
99
+ // register bundle with registry
100
+ bundleNftId = _registryService.registerBundle(
101
+ IRegistry.ObjectInfo(
102
+ NftIdLib.zero(),
103
+ poolNftId,
104
+ BUNDLE(),
105
+ false, // intercepting property for bundles is defined on pool
106
+ address(0),
107
+ owner,
108
+ "" // bundle data to be stored in registry
109
+ )
110
+ );
111
+
112
+ // create bundle info in instance
113
+ InstanceStore instanceStore = instance.getInstanceStore();
114
+ instanceStore.createBundle(
115
+ bundleNftId,
116
+ IBundle.BundleInfo(
117
+ poolNftId,
118
+ bundleFee,
119
+ filter,
120
+ TimestampLib.blockTimestamp(),
121
+ TimestampLib.blockTimestamp().addSeconds(lifetime),
122
+ zeroTimestamp()));
123
+
124
+ // bundle book keeping
125
+ _componentService.increaseBundleBalance(
126
+ instanceStore,
127
+ bundleNftId,
128
+ stakingAmount,
129
+ AmountLib.zero()); // fee amount
130
+
131
+ // put bundle under bundle managemet
132
+ BundleSet bundleManager = instance.getBundleSet();
133
+ bundleManager.add(bundleNftId);
134
+
135
+ // TODO add logging
136
+ }
137
+
138
+
139
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
140
+ function lockCollateral(
141
+ IInstance instance,
142
+ NftId policyNftId,
143
+ NftId bundleNftId,
144
+ Amount collateralAmount // required local amount to collateralize policy
145
+ )
146
+ external
147
+ virtual
148
+ restricted()
149
+ {
150
+ InstanceReader instanceReader = instance.getInstanceReader();
151
+ StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
152
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
153
+
154
+ // ensure bundle is active and not yet expired
155
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
156
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
157
+ }
158
+
159
+ // ensure bundle capacity is sufficent to collateralize policy
160
+ InstanceStore instanceStore = instance.getInstanceStore();
161
+ (
162
+ Amount balanceAmount,
163
+ Amount lockedAmount,
164
+ Amount feeAmount
165
+ ) = instanceStore.getAmounts(bundleNftId);
166
+
167
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
168
+ if(capacity < collateralAmount) {
169
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
170
+ }
171
+
172
+ // updated locked amount
173
+ instanceStore.increaseLocked(bundleNftId, collateralAmount);
174
+
175
+ // link policy to bundle in bundle manger
176
+ _linkPolicy(instance, policyNftId);
177
+ }
178
+
179
+
180
+ function lock(NftId bundleNftId)
181
+ external
182
+ virtual
183
+ {
184
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
185
+
186
+ // udpate bundle state
187
+ instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
188
+
189
+ // update set of active bundles
190
+ BundleSet bundleManager = instance.getBundleSet();
191
+ bundleManager.lock(bundleNftId);
192
+
193
+ emit LogBundleServiceBundleLocked(bundleNftId);
194
+ }
195
+
196
+
197
+ function unlock(NftId bundleNftId)
198
+ external
199
+ virtual
200
+ {
201
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
202
+
203
+ // udpate bundle state
204
+ instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
205
+
206
+ // update set of active bundles
207
+ BundleSet bundleManager = instance.getBundleSet();
208
+ bundleManager.unlock(bundleNftId);
209
+
210
+ emit LogBundleServiceBundleActivated(bundleNftId);
211
+ }
212
+
213
+
214
+ function close(
215
+ IInstance instance,
216
+ NftId bundleNftId
217
+ )
218
+ external
219
+ virtual
220
+ restricted
221
+ {
222
+ // udpate bundle state
223
+ instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
224
+
225
+ // ensure no open policies attached to bundle
226
+ BundleSet bundleManager = instance.getBundleSet();
227
+ uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
228
+ if(openPolicies > 0) {
229
+ revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
230
+ }
231
+
232
+ // update set of active bundles
233
+ bundleManager.lock(bundleNftId);
234
+ }
235
+
236
+ /// @inheritdoc IBundleService
237
+ function stake(
238
+ IInstance instance,
239
+ NftId bundleNftId,
240
+ Amount amount
241
+ )
242
+ external
243
+ virtual
244
+ // TODO: restricted() (once #462 is done)
245
+ {
246
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
247
+ StateId bundleState = instance.getInstanceReader().getMetadata(bundleNftId.toKey32(BUNDLE())).state;
248
+
249
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp() || bundleInfo.closedAt.gtz()) {
250
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
251
+ }
252
+
253
+ _componentService.increaseBundleBalance(
254
+ instance.getInstanceStore(),
255
+ bundleNftId,
256
+ amount,
257
+ AmountLib.zero());
258
+ }
259
+
260
+ /// @inheritdoc IBundleService
261
+ function unstake(
262
+ IInstance instance,
263
+ NftId bundleNftId,
264
+ Amount amount
265
+ )
266
+ external
267
+ virtual
268
+ // TODO: restricted() (once #462 is done)
269
+ returns (Amount unstakedAmount)
270
+ {
271
+ InstanceStore instanceStore = instance.getInstanceStore();
272
+ (
273
+ Amount balanceAmount,
274
+ Amount lockedAmount,
275
+ Amount feeAmount
276
+ ) = instanceStore.getAmounts(bundleNftId);
277
+
278
+ Amount unstakedAmount = amount;
279
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
280
+
281
+ // if amount is max, then unstake all available
282
+ if (amount.gte(AmountLib.max())) {
283
+ unstakedAmount = availableAmount;
284
+ }
285
+
286
+ // ensure unstaked amount does not exceed available amount
287
+ if (unstakedAmount > availableAmount) {
288
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
289
+ }
290
+
291
+ _componentService.decreaseBundleBalance(
292
+ instanceStore,
293
+ bundleNftId,
294
+ unstakedAmount,
295
+ AmountLib.zero());
296
+
297
+ return unstakedAmount;
298
+ }
299
+
300
+ /// @inheritdoc IBundleService
301
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
302
+ external
303
+ virtual
304
+ // TODO: restricted() (once #462 is done)
305
+ returns (Timestamp extendedExpiredAt)
306
+ {
307
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
308
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
309
+ StateId bundleState = instance.getInstanceReader().getMetadata(bundleNftId.toKey32(BUNDLE())).state;
310
+
311
+ // ensure bundle belongs to the pool
312
+ if (bundleInfo.poolNftId != poolNftId) {
313
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
314
+ }
315
+
316
+ // ensure bundle is active and not yet expired
317
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
318
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
319
+ }
320
+
321
+ if (lifetimeExtension.eqz()) {
322
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
323
+ }
324
+
325
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
326
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
327
+
328
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
329
+
330
+ return bundleInfo.expiredAt;
331
+ }
332
+
333
+
334
+ function releaseCollateral(
335
+ IInstance instance,
336
+ NftId policyNftId,
337
+ NftId bundleNftId,
338
+ Amount collateralAmount
339
+ )
340
+ external
341
+ virtual
342
+ restricted()
343
+ {
344
+ instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
345
+ }
346
+
347
+ /// @dev unlinks policy from bundle
348
+ function unlinkPolicy(
349
+ IInstance instance,
350
+ NftId policyNftId
351
+ )
352
+ external
353
+ virtual
354
+ restricted
355
+ {
356
+ // ensure policy is closeable
357
+ if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
358
+ revert ErrorBundleServicePolicyNotCloseable(policyNftId);
359
+ }
360
+
361
+ instance.getBundleSet().unlinkPolicy(policyNftId);
362
+ }
363
+
364
+ /// @inheritdoc IBundleService
365
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
366
+ public
367
+ virtual
368
+ // TODO: restricted() (once #462 is done)
369
+ returns (Amount withdrawnAmount)
370
+ {
371
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
372
+ InstanceReader reader = instance.getInstanceReader();
373
+
374
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
375
+ address poolWallet = poolInfo.wallet;
376
+
377
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
378
+
379
+ // determine withdrawn amount
380
+ withdrawnAmount = amount;
381
+ if (withdrawnAmount.gte(AmountLib.max())) {
382
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
383
+ } else {
384
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
385
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
386
+ }
387
+ }
388
+
389
+ if (withdrawnAmount.eqz()) {
390
+ revert ErrorBundleServiceFeesWithdrawAmountIsZero();
391
+ }
392
+
393
+ // check allowance
394
+ IERC20Metadata token = IERC20Metadata(poolInfo.token);
395
+ uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
396
+ if (tokenAllowance < withdrawnAmount.toInt()) {
397
+ revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
398
+ }
399
+
400
+ // decrease fee counters by withdrawnAmount
401
+ {
402
+ InstanceStore store = instance.getInstanceStore();
403
+ // decrease fee amount of the bundle
404
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
405
+ // decrease pool balance
406
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
407
+ }
408
+
409
+ // transfer amount to bundle owner
410
+ {
411
+ address owner = getRegistry().ownerOf(bundleNftId);
412
+ // TODO: centralize token handling (issue #471)
413
+ poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
414
+
415
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
416
+ }
417
+ }
418
+
419
+ /// @dev links policy to bundle
420
+ function _linkPolicy(IInstance instance, NftId policyNftId)
421
+ internal
422
+ {
423
+ InstanceReader instanceReader = instance.getInstanceReader();
424
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
425
+
426
+ // ensure policy has not yet been activated in a previous tx already
427
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
428
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
429
+ }
430
+
431
+ BundleSet bundleManager = instance.getBundleSet();
432
+ bundleManager.linkPolicy(policyNftId);
433
+ }
434
+
435
+ function _getDomain() internal pure override returns(ObjectType) {
436
+ return BUNDLE();
437
+ }
438
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {BundleService} from "./BundleService.sol";
7
+
8
+ contract BundleServiceManager is ProxyManager {
9
+
10
+ BundleService private _bundleService;
11
+
12
+ /// @dev initializes proxy manager with pool service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ BundleService bundleSrv = new BundleService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(bundleSrv),
24
+ data,
25
+ salt);
26
+
27
+ _bundleService = BundleService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getBundleService()
32
+ external
33
+ view
34
+ returns (BundleService)
35
+ {
36
+ return _bundleService;
37
+ }
38
+
39
+ }
@@ -0,0 +1,133 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IBundle} from "../instance/module/IBundle.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StateId} from "../type/StateId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+
14
+ interface IBundleService is IService {
15
+
16
+ event LogBundleServiceBundleActivated(NftId bundleNftId);
17
+ event LogBundleServiceBundleLocked(NftId bundleNftId);
18
+
19
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
20
+ error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
21
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
22
+ error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
23
+
24
+ error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
25
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
+
27
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
+
29
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+ error ErrorBundleServiceFeesWithdrawAmountIsZero();
31
+ error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
32
+
33
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
34
+
35
+ error ErrorBundleServiceExtensionLifetimeIsZero();
36
+
37
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
38
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
39
+
40
+ /// @dev create a new bundle for the specified attributes
41
+ /// may only be called by pool service
42
+ function create(
43
+ IInstance instance, // instance relevant for bundle
44
+ NftId poolNftId, // the pool the bundle will be linked to
45
+ address owner, // initial bundle owner
46
+ Fee memory fee, // fees deducted from premium that go to bundle owner
47
+ Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
48
+ Seconds lifetime, // initial duration for which new policies are covered
49
+ bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
50
+ )
51
+ external
52
+ returns(NftId bundleNftId); // the nft id of the newly created bundle
53
+
54
+
55
+ /// @dev increase bundle stakes by the specified amount
56
+ /// may only be called by the pool service
57
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
58
+
59
+ /// @dev decrease bundle stakes by the specified amount
60
+ /// may only be called by the pool service
61
+ /// @param instance the instance relevant for the bundle
62
+ /// @param bundleNftId the bundle nft id
63
+ /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
64
+ /// @return unstakedAmount the effective unstaked amount
65
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
66
+
67
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
68
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
69
+
70
+ /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
71
+ /// only active bundles may be locked
72
+ /// may only be called by registered and unlocked pool components
73
+ function lock(NftId bundleNftId) external;
74
+
75
+ /// @dev activates the specified bundle
76
+ /// only locked bundles may be unlocked
77
+ /// may only be called by registered and unlocked pool components
78
+ function unlock(NftId bundleNftId) external;
79
+
80
+ /// @dev closes the specified bundle
81
+ /// only open bundles (active or locked) may be closed
82
+ /// to close a bundle it may not have any non-closed polices attached to it
83
+ /// may only be called by registered and unlocked pool components
84
+ function close(
85
+ IInstance instance,
86
+ NftId bundleNftId
87
+ ) external;
88
+
89
+ /// @dev set bundle fee to provided value
90
+ /// may only be called by registered and unlocked pool components
91
+ function setFee(
92
+ NftId bundleNftId,
93
+ Fee memory fee
94
+ ) external;
95
+
96
+
97
+ /// @dev locks the specified collateral in the bundle
98
+ /// the locked collateral is added to the bundle locked capital
99
+ /// the bundles' fees are updated with the fees for this premium
100
+ /// the premium (minus bundle fee) is added to the bundle capital
101
+ /// may only be called by pool service
102
+ function lockCollateral(
103
+ IInstance instance,
104
+ NftId policyNftId,
105
+ NftId bundleNftId,
106
+ Amount collateralAmount
107
+ ) external;
108
+
109
+
110
+ /// @dev releases the specified collateral in the bundle
111
+ /// may only be called by pool service
112
+ function releaseCollateral(
113
+ IInstance instance,
114
+ NftId policyNftId,
115
+ NftId bundleNftId,
116
+ Amount collateralAmount
117
+ ) external;
118
+
119
+ /// @dev unlink policy from bundle
120
+ /// policy may only be unlinked if policy is closeable
121
+ /// may only be called by pool service
122
+ function unlinkPolicy(
123
+ IInstance instance,
124
+ NftId policyNftId
125
+ ) external;
126
+
127
+ /// @dev Withdraw bundle feeds for the given bundle
128
+ /// @param bundleNftId the bundle Nft Id
129
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
130
+ /// @return withdrawnAmount the effective withdrawn amount
131
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
132
+
133
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {UFixed} from "../type/UFixed.sol";
12
+
13
+ /// @dev pool components hold and manage the collateral to cover active policies
14
+ /// pools come in different flavors
15
+ interface IPoolComponent is IInstanceLinkedComponent {
16
+
17
+ error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
18
+ error ErrorPoolNotPoolService(address caller);
19
+ error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
20
+
21
+ event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
22
+
23
+ /// @dev this is a callback function that is called by the product service when underwriting a policy.
24
+ /// the pool has the option to check the details and object to underwriting by reverting.
25
+ /// the function is only called for "active" pools that ask to be involved/notified
26
+ /// by product related state changes.
27
+ function verifyApplication(
28
+ NftId applicationNftId,
29
+ bytes memory applicationData,
30
+ NftId bundleNftId,
31
+ bytes memory bundleFilter,
32
+ Amount collateralizationAmount
33
+ ) external;
34
+
35
+ /// @dev returns true iff the application matches with the bundle
36
+ /// this is a callback function that is only called if a pool declares itself as a verifying pool
37
+ /// default implementation returns true
38
+ function applicationMatchesBundle(
39
+ NftId applicationNftId,
40
+ bytes memory applicationData,
41
+ NftId bundleNftId,
42
+ bytes memory bundleFilter,
43
+ Amount collateralizationAmount
44
+ )
45
+ external
46
+ view
47
+ returns (bool isMatching);
48
+
49
+ /// @dev Withdraw bundle feeds for the given bundle
50
+ /// @param bundleNftId the bundle Nft Id
51
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
+ /// @return withdrawnAmount the effective withdrawn amount
53
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
+
55
+ /// @dev returns initial pool specific infos for this pool
56
+ function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
57
+
58
+ }