@etherisc/gif-next 0.0.2-db1e1e4-828 → 0.0.2-dc37b66-227

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 (632) hide show
  1. package/README.md +32 -3
  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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  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/{components → distribution}/Distribution.sol/Distribution.json +233 -328
  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/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +213 -239
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +157 -302
  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 +296 -2011
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -74
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +422 -2807
  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 +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +820 -379
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +263 -282
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -119
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  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 +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +190 -218
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +297 -153
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1483 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +302 -45
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +228 -290
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +480 -57
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1312 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1690 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +131 -94
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +194 -80
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +86 -159
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +396 -287
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -125
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  303. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +591 -0
  305. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  306. package/contracts/authorization/Authorization.sol +218 -0
  307. package/contracts/authorization/IAccess.sol +48 -0
  308. package/contracts/authorization/IAccessAdmin.sol +136 -0
  309. package/contracts/authorization/IAuthorization.sol +54 -0
  310. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  311. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  312. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  314. package/contracts/distribution/BasicDistribution.sol +138 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +177 -162
  317. package/contracts/distribution/DistributionService.sol +337 -0
  318. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  319. package/contracts/distribution/IDistributionComponent.sol +52 -0
  320. package/contracts/{instance/service → distribution}/IDistributionService.sol +36 -38
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  322. package/contracts/instance/IInstance.sol +55 -67
  323. package/contracts/instance/IInstanceService.sol +50 -30
  324. package/contracts/instance/Instance.sol +160 -234
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +173 -59
  328. package/contracts/instance/InstanceService.sol +280 -332
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +277 -0
  331. package/contracts/instance/base/BalanceStore.sol +123 -0
  332. package/contracts/instance/base/Cloneable.sol +28 -0
  333. package/contracts/instance/base/ObjectCounter.sol +21 -0
  334. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  335. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  336. package/contracts/instance/module/IAccess.sol +4 -12
  337. package/contracts/instance/module/IBundle.sol +6 -9
  338. package/contracts/instance/module/IComponents.sol +20 -10
  339. package/contracts/instance/module/IDistribution.sol +6 -6
  340. package/contracts/instance/module/IPolicy.sol +28 -16
  341. package/contracts/instance/module/IRisk.sol +1 -1
  342. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  343. package/contracts/oracle/BasicOracle.sol +48 -0
  344. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  345. package/contracts/oracle/IOracle.sol +36 -0
  346. package/contracts/oracle/IOracleComponent.sol +33 -0
  347. package/contracts/oracle/IOracleService.sol +65 -0
  348. package/contracts/oracle/Oracle.sol +166 -0
  349. package/contracts/oracle/OracleService.sol +278 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +164 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  353. package/contracts/pool/BundleService.sol +424 -0
  354. package/contracts/pool/BundleServiceManager.sol +39 -0
  355. package/contracts/{instance/service → pool}/IBundleService.sol +55 -20
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/pool/IPoolService.sol +158 -0
  358. package/contracts/pool/Pool.sol +332 -0
  359. package/contracts/pool/PoolService.sol +549 -0
  360. package/contracts/pool/PoolServiceManager.sol +39 -0
  361. package/contracts/product/ApplicationService.sol +230 -0
  362. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +82 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +417 -0
  366. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  367. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  368. package/contracts/product/IClaimService.sol +99 -0
  369. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  370. package/contracts/product/IPricingService.sol +39 -0
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +33 -0
  373. package/contracts/product/PolicyService.sol +476 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/product/PricingService.sol +300 -0
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/{components → product}/Product.sol +209 -110
  378. package/contracts/product/ProductService.sol +99 -0
  379. package/contracts/product/ProductServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +59 -26
  382. package/contracts/registry/IRegistryService.sol +42 -41
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +69 -99
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +280 -0
  392. package/contracts/shared/ComponentService.sol +651 -0
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/{components → shared}/IComponent.sol +23 -29
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +2 -2
  401. package/contracts/shared/IPolicyHolder.sol +29 -10
  402. package/contracts/shared/IRegistryLinked.sol +0 -1
  403. package/contracts/shared/IService.sol +12 -3
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  406. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  407. package/contracts/shared/KeyValueStore.sol +131 -0
  408. package/contracts/shared/Lifecycle.sol +77 -0
  409. package/contracts/shared/NftIdSet.sol +65 -0
  410. package/contracts/shared/NftOwnable.sol +5 -18
  411. package/contracts/shared/PolicyHolder.sol +41 -23
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +32 -22
  415. package/contracts/shared/TokenHandler.sol +27 -2
  416. package/contracts/staking/IStaking.sol +167 -0
  417. package/contracts/staking/IStakingService.sol +160 -0
  418. package/contracts/staking/StakeManagerLib.sol +231 -0
  419. package/contracts/staking/Staking.sol +516 -0
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +50 -0
  422. package/contracts/staking/StakingReader.sol +183 -0
  423. package/contracts/staking/StakingService.sol +411 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +605 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +135 -0
  429. package/contracts/{types → type}/Blocknumber.sol +20 -3
  430. package/contracts/{types → type}/ClaimId.sol +25 -2
  431. package/contracts/{types → type}/Fee.sol +24 -22
  432. package/contracts/{types → type}/NftId.sol +14 -16
  433. package/contracts/{types → type}/NftIdSet.sol +2 -2
  434. package/contracts/type/ObjectType.sol +271 -0
  435. package/contracts/{types → type}/PayoutId.sol +33 -5
  436. package/contracts/{types → type}/Referral.sol +2 -1
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/{types → type}/RiskId.sol +1 -1
  439. package/contracts/type/RoleId.sol +174 -0
  440. package/contracts/{types → type}/Seconds.sol +40 -1
  441. package/contracts/type/Selector.sol +102 -0
  442. package/contracts/{types → type}/StateId.sol +33 -4
  443. package/contracts/type/String.sol +53 -0
  444. package/contracts/{types → type}/Timestamp.sol +10 -1
  445. package/contracts/{types → type}/UFixed.sol +34 -9
  446. package/contracts/{types → type}/Version.sol +4 -2
  447. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  448. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  449. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  450. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  451. package/package.json +8 -5
  452. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  453. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  454. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  456. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  459. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  460. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  461. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  462. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  464. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  467. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  468. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  469. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  476. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  479. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  481. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  483. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  485. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  487. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  489. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  491. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  493. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  495. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  504. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  506. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  508. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  510. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  512. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  514. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  515. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  516. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  517. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  518. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  519. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  520. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  522. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  525. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  526. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  527. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  530. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  532. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  534. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  536. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  538. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  539. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  540. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  541. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  542. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  543. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  544. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  545. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  546. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  552. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  554. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  556. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  558. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  560. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  562. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  563. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  564. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  566. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  568. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  570. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  572. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  574. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  576. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  578. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  582. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  584. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  586. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  588. package/contracts/components/Component.sol +0 -253
  589. package/contracts/components/IDistributionComponent.sol +0 -71
  590. package/contracts/components/IPoolComponent.sol +0 -113
  591. package/contracts/components/IProductComponent.sol +0 -40
  592. package/contracts/components/Pool.sol +0 -303
  593. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  594. package/contracts/instance/Cloneable.sol +0 -51
  595. package/contracts/instance/InstanceAccessManager.sol +0 -527
  596. package/contracts/instance/base/ComponentService.sol +0 -121
  597. package/contracts/instance/base/KeyValueStore.sol +0 -180
  598. package/contracts/instance/base/Lifecycle.sol +0 -109
  599. package/contracts/instance/module/ISetup.sol +0 -33
  600. package/contracts/instance/module/ITreasury.sol +0 -23
  601. package/contracts/instance/service/ApplicationService.sol +0 -350
  602. package/contracts/instance/service/BundleService.sol +0 -431
  603. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  604. package/contracts/instance/service/ClaimService.sol +0 -151
  605. package/contracts/instance/service/DistributionService.sol +0 -435
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IClaimService.sol +0 -61
  608. package/contracts/instance/service/IPoolService.sol +0 -99
  609. package/contracts/instance/service/IProductService.sol +0 -40
  610. package/contracts/instance/service/PolicyService.sol +0 -362
  611. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  612. package/contracts/instance/service/PoolService.sol +0 -303
  613. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  614. package/contracts/instance/service/ProductService.sol +0 -210
  615. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  616. package/contracts/registry/RegistryAccessManager.sol +0 -216
  617. package/contracts/registry/ReleaseManager.sol +0 -324
  618. package/contracts/shared/ContractDeployerLib.sol +0 -72
  619. package/contracts/test/TestFee.sol +0 -25
  620. package/contracts/test/TestRegisterable.sol +0 -18
  621. package/contracts/test/TestRoleId.sol +0 -14
  622. package/contracts/test/TestService.sol +0 -25
  623. package/contracts/test/TestToken.sol +0 -26
  624. package/contracts/test/TestVersion.sol +0 -44
  625. package/contracts/test/TestVersionable.sol +0 -17
  626. package/contracts/types/Amount.sol +0 -60
  627. package/contracts/types/ChainId.sol +0 -38
  628. package/contracts/types/NumberId.sol +0 -52
  629. package/contracts/types/ObjectType.sol +0 -157
  630. package/contracts/types/RoleId.sol +0 -97
  631. /package/contracts/{types → type}/DistributorType.sol +0 -0
  632. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,424 @@
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
+ restricted()
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
+ restricted()
269
+ {
270
+ InstanceStore instanceStore = instance.getInstanceStore();
271
+ (
272
+ Amount balanceAmount,
273
+ Amount lockedAmount,
274
+ Amount feeAmount
275
+ ) = instanceStore.getAmounts(bundleNftId);
276
+
277
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
278
+
279
+ if (availableAmount < amount) {
280
+ revert ErrorBundleServiceStakeAmountExceedsLimit(amount, availableAmount);
281
+ }
282
+
283
+ _componentService.decreaseBundleBalance(
284
+ instanceStore,
285
+ bundleNftId,
286
+ amount,
287
+ AmountLib.zero());
288
+ }
289
+
290
+ /// @inheritdoc IBundleService
291
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
292
+ external
293
+ virtual
294
+ restricted
295
+ returns (Timestamp extendedExpiredAt)
296
+ {
297
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
298
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
299
+ StateId bundleState = instance.getInstanceReader().getMetadata(bundleNftId.toKey32(BUNDLE())).state;
300
+
301
+ // ensure bundle belongs to the pool
302
+ if (bundleInfo.poolNftId != poolNftId) {
303
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
304
+ }
305
+
306
+ // ensure bundle is active and not yet expired
307
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
308
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
309
+ }
310
+
311
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
312
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
313
+
314
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
315
+
316
+ return bundleInfo.expiredAt;
317
+ }
318
+
319
+
320
+ function releaseCollateral(
321
+ IInstance instance,
322
+ NftId policyNftId,
323
+ NftId bundleNftId,
324
+ Amount collateralAmount
325
+ )
326
+ external
327
+ virtual
328
+ restricted()
329
+ {
330
+ instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
331
+ }
332
+
333
+ /// @dev unlinks policy from bundle
334
+ function unlinkPolicy(
335
+ IInstance instance,
336
+ NftId policyNftId
337
+ )
338
+ external
339
+ virtual
340
+ restricted
341
+ {
342
+ // ensure policy is closeable
343
+ if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
344
+ revert ErrorBundleServicePolicyNotCloseable(policyNftId);
345
+ }
346
+
347
+ instance.getBundleSet().unlinkPolicy(policyNftId);
348
+ }
349
+
350
+ /// @inheritdoc IBundleService
351
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
352
+ public
353
+ virtual
354
+ // TODO: restricted() (once #462 is done)
355
+ returns (Amount withdrawnAmount)
356
+ {
357
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
358
+ InstanceReader reader = instance.getInstanceReader();
359
+
360
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
361
+ address poolWallet = poolInfo.wallet;
362
+
363
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
364
+
365
+ // determine withdrawn amount
366
+ withdrawnAmount = amount;
367
+ if (withdrawnAmount.gte(AmountLib.max())) {
368
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
369
+ } else {
370
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
371
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
372
+ }
373
+ }
374
+
375
+ if (withdrawnAmount.eqz()) {
376
+ revert ErrorBundleServiceFeesWithdrawAmountIsZero();
377
+ }
378
+
379
+ // check allowance
380
+ IERC20Metadata token = IERC20Metadata(poolInfo.token);
381
+ uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
382
+ if (tokenAllowance < withdrawnAmount.toInt()) {
383
+ revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
384
+ }
385
+
386
+ // decrease fee counters by withdrawnAmount
387
+ {
388
+ InstanceStore store = instance.getInstanceStore();
389
+ // decrease fee amount of the bundle
390
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
391
+ // decrease pool balance
392
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
393
+ }
394
+
395
+ // transfer amount to bundle owner
396
+ {
397
+ address owner = getRegistry().ownerOf(bundleNftId);
398
+ // TODO: centralize token handling (issue #471)
399
+ poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
400
+
401
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
402
+ }
403
+ }
404
+
405
+ /// @dev links policy to bundle
406
+ function _linkPolicy(IInstance instance, NftId policyNftId)
407
+ internal
408
+ {
409
+ InstanceReader instanceReader = instance.getInstanceReader();
410
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
411
+
412
+ // ensure policy has not yet been activated in a previous tx already
413
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
414
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
415
+ }
416
+
417
+ BundleSet bundleManager = instance.getBundleSet();
418
+ bundleManager.linkPolicy(policyNftId);
419
+ }
420
+
421
+ function _getDomain() internal pure override returns(ObjectType) {
422
+ return BUNDLE();
423
+ }
424
+ }
@@ -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
+ }
@@ -1,26 +1,41 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Amount} from "../../types/Amount.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
- import {Fee} from "../../types/Fee.sol";
7
- import {IService} from "../../shared/IService.sol";
8
- import {IBundle} from "../module/IBundle.sol";
9
- import {IInstance} from "../../instance/IInstance.sol";
10
- import {Seconds} from "../../types/Seconds.sol";
11
- import {StateId} from "../../types/StateId.sol";
12
- import {Timestamp} from "../../types/Timestamp.sol";
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
13
 
14
14
  interface IBundleService is IService {
15
15
 
16
16
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
17
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
18
 
19
- error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
19
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
20
20
  error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
21
- error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, uint capacityAmount, uint collateralAmount);
21
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
22
22
  error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
23
23
 
24
+ error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
25
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
+
27
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
+
29
+ // error ErrorBundleServiceBundleNotActive(NftId distributorNftId);
30
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+ error ErrorBundleServiceFeesWithdrawAmountIsZero();
32
+ error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
33
+
34
+ error ErrorBundleServiceStakeAmountExceedsLimit(Amount amount, Amount limit);
35
+
36
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
37
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
38
+
24
39
  /// @dev create a new bundle for the specified attributes
25
40
  /// may only be called by pool service
26
41
  function create(
@@ -35,6 +50,18 @@ interface IBundleService is IService {
35
50
  external
36
51
  returns(NftId bundleNftId); // the nft id of the newly created bundle
37
52
 
53
+
54
+ /// @dev increase bundle stakes by the specified amount
55
+ /// may only be called by the pool service
56
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
57
+
58
+ /// @dev decrease bundle stakes by the specified amount
59
+ /// may only be called by the pool service
60
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external;
61
+
62
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
63
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
64
+
38
65
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
39
66
  /// only active bundles may be locked
40
67
  /// may only be called by registered and unlocked pool components
@@ -68,11 +95,10 @@ interface IBundleService is IService {
68
95
  /// the premium (minus bundle fee) is added to the bundle capital
69
96
  /// may only be called by pool service
70
97
  function lockCollateral(
71
- IInstance instanceNftId,
98
+ IInstance instance,
72
99
  NftId policyNftId,
73
100
  NftId bundleNftId,
74
- uint256 collateralAmount,
75
- uint256 premium // premium amount after pool fee
101
+ Amount collateralAmount
76
102
  ) external;
77
103
 
78
104
 
@@ -82,12 +108,21 @@ interface IBundleService is IService {
82
108
  IInstance instance,
83
109
  NftId policyNftId,
84
110
  NftId bundleNftId,
85
- uint256 collateralAmount
111
+ Amount collateralAmount
86
112
  ) external;
87
113
 
88
- function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
114
+ /// @dev unlink policy from bundle
115
+ /// policy may only be unlinked if policy is closeable
116
+ /// may only be called by pool service
117
+ function unlinkPolicy(
118
+ IInstance instance,
119
+ NftId policyNftId
120
+ ) external;
89
121
 
90
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
122
+ /// @dev Withdraw bundle feeds for the given bundle
123
+ /// @param bundleNftId the bundle Nft Id
124
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
125
+ /// @return withdrawnAmount the effective withdrawn amount
126
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
91
127
 
92
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
93
128
  }
@@ -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
+ }