@etherisc/gif-next 0.0.2-f080b71-868 → 0.0.2-f08528a-758

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 (615) hide show
  1. package/README.md +20 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json → authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json} +4 -4
  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 +1505 -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 +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +184 -253
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +81 -109
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +37 -112
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +160 -81
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +184 -81
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +153 -168
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1621 -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 +821 -385
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +273 -177
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +126 -65
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1471 -557
  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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.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 +1155 -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} +160 -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 +1063 -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} +254 -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 +1134 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +71 -48
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +191 -296
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +294 -60
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -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/{components/Distribution.sol/Distribution.json → product/BasicProduct.sol/BasicProduct.json} +370 -400
  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 → product}/IApplicationService.sol/IApplicationService.json +58 -21
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +336 -39
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +178 -106
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service → product}/IPricingService.sol/IPricingService.json +50 -19
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -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 +1012 -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 +338 -248
  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 +135 -29
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -53
  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 +371 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1741 -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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +697 -97
  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 +1487 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -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 -127
  180. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  202. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  211. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  212. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  217. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  227. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  228. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  229. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  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 +460 -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 +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -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/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  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/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  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/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  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 +198 -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/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  302. package/contracts/authorization/AccessAdmin.sol +588 -0
  303. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  304. package/contracts/authorization/Authorization.sol +218 -0
  305. package/contracts/authorization/IAccess.sol +48 -0
  306. package/contracts/authorization/IAccessAdmin.sol +136 -0
  307. package/contracts/authorization/IAuthorization.sol +54 -0
  308. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  309. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  310. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  311. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  312. package/contracts/distribution/BasicDistribution.sol +149 -0
  313. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  314. package/contracts/{components → distribution}/Distribution.sol +162 -159
  315. package/contracts/distribution/DistributionService.sol +302 -0
  316. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  317. package/contracts/distribution/IDistributionComponent.sol +48 -0
  318. package/contracts/{instance/service → distribution}/IDistributionService.sol +24 -24
  319. package/contracts/instance/BundleManager.sol +8 -9
  320. package/contracts/instance/IInstance.sol +48 -22
  321. package/contracts/instance/IInstanceService.sol +44 -36
  322. package/contracts/instance/Instance.sol +134 -107
  323. package/contracts/instance/InstanceAdmin.sol +266 -0
  324. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  325. package/contracts/instance/InstanceReader.sol +164 -58
  326. package/contracts/instance/InstanceService.sol +279 -156
  327. package/contracts/instance/InstanceServiceManager.sol +11 -21
  328. package/contracts/instance/InstanceStore.sol +154 -97
  329. package/contracts/instance/base/BalanceStore.sol +123 -0
  330. package/contracts/instance/base/Cloneable.sol +28 -0
  331. package/contracts/instance/base/ObjectCounter.sol +21 -0
  332. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  333. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +13 -16
  334. package/contracts/instance/module/IAccess.sol +4 -12
  335. package/contracts/instance/module/IBundle.sol +6 -9
  336. package/contracts/instance/module/IComponents.sol +21 -10
  337. package/contracts/instance/module/IDistribution.sol +7 -6
  338. package/contracts/instance/module/IPolicy.sol +28 -16
  339. package/contracts/instance/module/IRisk.sol +1 -1
  340. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  341. package/contracts/oracle/BasicOracle.sol +48 -0
  342. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  343. package/contracts/oracle/IOracle.sol +36 -0
  344. package/contracts/oracle/IOracleComponent.sol +32 -0
  345. package/contracts/oracle/IOracleService.sol +65 -0
  346. package/contracts/oracle/Oracle.sol +157 -0
  347. package/contracts/oracle/OracleService.sol +278 -0
  348. package/contracts/oracle/OracleServiceManager.sol +42 -0
  349. package/contracts/pool/BasicPool.sol +164 -0
  350. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  351. package/contracts/pool/BundleService.sol +296 -0
  352. package/contracts/pool/BundleServiceManager.sol +42 -0
  353. package/contracts/{instance/service → pool}/IBundleService.sol +35 -23
  354. package/contracts/pool/IPoolComponent.sol +52 -0
  355. package/contracts/{instance/service → pool}/IPoolService.sol +72 -21
  356. package/contracts/pool/Pool.sol +311 -0
  357. package/contracts/pool/PoolService.sol +452 -0
  358. package/contracts/pool/PoolServiceManager.sol +42 -0
  359. package/contracts/product/ApplicationService.sol +254 -0
  360. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  361. package/contracts/product/BasicProduct.sol +82 -0
  362. package/contracts/product/BasicProductAuthorization.sol +40 -0
  363. package/contracts/product/ClaimService.sol +442 -0
  364. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  365. package/contracts/{instance/service → product}/IApplicationService.sol +15 -17
  366. package/contracts/product/IClaimService.sol +99 -0
  367. package/contracts/{instance/service → product}/IPolicyService.sol +37 -33
  368. package/contracts/{instance/service → product}/IPricingService.sol +14 -11
  369. package/contracts/product/IProductComponent.sol +39 -0
  370. package/contracts/product/IProductService.sol +33 -0
  371. package/contracts/product/PolicyService.sol +475 -0
  372. package/contracts/product/PolicyServiceManager.sol +42 -0
  373. package/contracts/{instance/service → product}/PricingService.sol +110 -85
  374. package/contracts/product/PricingServiceManager.sol +42 -0
  375. package/contracts/{components → product}/Product.sol +210 -114
  376. package/contracts/product/ProductService.sol +124 -0
  377. package/contracts/product/ProductServiceManager.sol +42 -0
  378. package/contracts/registry/ChainNft.sol +8 -1
  379. package/contracts/registry/IRegistry.sol +41 -21
  380. package/contracts/registry/IRegistryService.sol +37 -36
  381. package/contracts/registry/Registry.sol +194 -83
  382. package/contracts/registry/RegistryAdmin.sol +365 -0
  383. package/contracts/registry/RegistryService.sol +71 -91
  384. package/contracts/registry/RegistryServiceManager.sol +21 -30
  385. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  386. package/contracts/registry/ReleaseManager.sol +356 -193
  387. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  388. package/contracts/registry/TokenRegistry.sol +261 -62
  389. package/contracts/shared/Component.sol +281 -0
  390. package/contracts/shared/ComponentService.sol +581 -0
  391. package/contracts/shared/ComponentServiceManager.sol +35 -0
  392. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  393. package/contracts/shared/ERC165.sol +1 -1
  394. package/contracts/{components → shared}/IComponent.sol +23 -29
  395. package/contracts/shared/IComponentService.sol +102 -0
  396. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  397. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  398. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  399. package/contracts/shared/INftOwnable.sol +2 -2
  400. package/contracts/shared/IPolicyHolder.sol +29 -10
  401. package/contracts/shared/IRegistryLinked.sol +0 -1
  402. package/contracts/shared/IService.sol +11 -2
  403. package/contracts/shared/IVersionable.sol +1 -1
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  406. package/contracts/shared/KeyValueStore.sol +131 -0
  407. package/contracts/shared/Lifecycle.sol +77 -0
  408. package/contracts/shared/NftIdSetManager.sol +65 -0
  409. package/contracts/shared/NftOwnable.sol +3 -16
  410. package/contracts/shared/PolicyHolder.sol +40 -19
  411. package/contracts/shared/ProxyManager.sol +34 -4
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +32 -21
  415. package/contracts/shared/TokenHandler.sol +27 -2
  416. package/contracts/shared/Versionable.sol +1 -1
  417. package/contracts/staking/IStaking.sol +168 -0
  418. package/contracts/staking/IStakingService.sol +153 -0
  419. package/contracts/staking/StakeManagerLib.sol +231 -0
  420. package/contracts/staking/Staking.sol +513 -0
  421. package/contracts/staking/StakingLifecycle.sol +23 -0
  422. package/contracts/staking/StakingManager.sol +54 -0
  423. package/contracts/staking/StakingReader.sol +187 -0
  424. package/contracts/staking/StakingService.sol +411 -0
  425. package/contracts/staking/StakingServiceManager.sol +44 -0
  426. package/contracts/staking/StakingStore.sol +615 -0
  427. package/contracts/staking/TargetManagerLib.sol +207 -0
  428. package/contracts/{types → type}/AddressSet.sol +1 -1
  429. package/contracts/type/Amount.sol +128 -0
  430. package/contracts/{types → type}/Blocknumber.sol +20 -3
  431. package/contracts/{types → type}/ClaimId.sol +25 -2
  432. package/contracts/{types → type}/Fee.sol +24 -22
  433. package/contracts/{types → type}/NftId.sol +14 -16
  434. package/contracts/{types → type}/NftIdSet.sol +2 -2
  435. package/contracts/type/ObjectType.sol +275 -0
  436. package/contracts/{types → type}/PayoutId.sol +33 -5
  437. package/contracts/{types → type}/Referral.sol +1 -1
  438. package/contracts/type/RequestId.sol +75 -0
  439. package/contracts/{types → type}/RiskId.sol +1 -1
  440. package/contracts/type/RoleId.sol +174 -0
  441. package/contracts/{types → type}/Seconds.sol +27 -0
  442. package/contracts/type/Selector.sol +102 -0
  443. package/contracts/{types → type}/StateId.sol +33 -4
  444. package/contracts/type/String.sol +53 -0
  445. package/contracts/{types → type}/Timestamp.sol +10 -1
  446. package/contracts/{types → type}/UFixed.sol +6 -0
  447. package/contracts/{types → type}/Version.sol +1 -1
  448. package/package.json +6 -3
  449. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  450. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  451. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  452. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  453. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  454. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  456. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  457. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  458. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  459. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  460. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  461. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  462. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  463. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  464. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  465. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  467. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  469. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  470. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  472. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  473. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  474. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  475. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -860
  477. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -641
  479. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1276
  481. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -717
  483. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -849
  485. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  487. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1539
  489. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -769
  491. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  493. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1166
  501. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  503. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1269
  505. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  507. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +0 -988
  509. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +0 -689
  511. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -872
  513. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  515. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  516. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  517. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  518. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  519. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  520. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  521. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  522. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  523. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  525. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  527. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  529. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  531. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  533. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  534. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  535. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  536. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  538. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  540. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  542. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  544. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  547. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  548. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  550. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  551. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  553. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  555. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  557. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  559. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  562. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  564. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  569. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  571. package/contracts/components/Component.sol +0 -253
  572. package/contracts/components/IDistributionComponent.sol +0 -71
  573. package/contracts/components/IPoolComponent.sol +0 -113
  574. package/contracts/components/IProductComponent.sol +0 -40
  575. package/contracts/components/Pool.sol +0 -303
  576. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  577. package/contracts/instance/Cloneable.sol +0 -51
  578. package/contracts/instance/InstanceAccessManager.sol +0 -540
  579. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -299
  580. package/contracts/instance/base/ComponentService.sol +0 -147
  581. package/contracts/instance/base/KeyValueStore.sol +0 -180
  582. package/contracts/instance/base/Lifecycle.sol +0 -109
  583. package/contracts/instance/module/ISetup.sol +0 -33
  584. package/contracts/instance/module/ITreasury.sol +0 -23
  585. package/contracts/instance/service/ApplicationService.sol +0 -183
  586. package/contracts/instance/service/BundleService.sol +0 -431
  587. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  588. package/contracts/instance/service/ClaimService.sol +0 -145
  589. package/contracts/instance/service/DistributionService.sol +0 -346
  590. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  591. package/contracts/instance/service/IClaimService.sol +0 -61
  592. package/contracts/instance/service/IProductService.sol +0 -40
  593. package/contracts/instance/service/PolicyService.sol +0 -376
  594. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  595. package/contracts/instance/service/PoolService.sol +0 -303
  596. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  597. package/contracts/instance/service/PricingServiceManager.sol +0 -51
  598. package/contracts/instance/service/ProductService.sol +0 -210
  599. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  600. package/contracts/registry/RegistryAccessManager.sol +0 -216
  601. package/contracts/shared/ContractDeployerLib.sol +0 -72
  602. package/contracts/test/TestFee.sol +0 -25
  603. package/contracts/test/TestRegisterable.sol +0 -18
  604. package/contracts/test/TestRoleId.sol +0 -14
  605. package/contracts/test/TestService.sol +0 -25
  606. package/contracts/test/TestVersion.sol +0 -44
  607. package/contracts/test/TestVersionable.sol +0 -17
  608. package/contracts/test/Usdc.sol +0 -26
  609. package/contracts/types/Amount.sol +0 -60
  610. package/contracts/types/ChainId.sol +0 -38
  611. package/contracts/types/NumberId.sol +0 -52
  612. package/contracts/types/ObjectType.sol +0 -161
  613. package/contracts/types/RoleId.sol +0 -97
  614. /package/contracts/{types → type}/DistributorType.sol +0 -0
  615. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,296 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {InstanceStore} from "../instance/InstanceStore.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+
12
+ import {IVersionable} from "../shared/IVersionable.sol";
13
+ import {INftOwnable} from "../shared/INftOwnable.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
16
+ import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
17
+ import {Pool} from "./Pool.sol";
18
+
19
+ import {Amount, AmountLib} from "../type/Amount.sol";
20
+ import {Fee, FeeLib} from "../type/Fee.sol";
21
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
+ import {Seconds} from "../type/Seconds.sol";
23
+ import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
+ import {Version, VersionLib} from "../type/Version.sol";
25
+ import {Versionable} from "../shared/Versionable.sol";
26
+
27
+ import {IService} from "../shared/IService.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {BundleManager} from "../instance/BundleManager.sol";
30
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
31
+ import {IBundleService} from "./IBundleService.sol";
32
+ import {IRegistryService} from "../registry/IRegistryService.sol";
33
+ import {InstanceService} from "../instance/InstanceService.sol";
34
+ import {InstanceReader} from "../instance/InstanceReader.sol";
35
+
36
+ string constant BUNDLE_SERVICE_NAME = "BundleService";
37
+
38
+ contract BundleService is
39
+ ComponentVerifyingService,
40
+ IBundleService
41
+ {
42
+ using NftIdLib for NftId;
43
+
44
+ string public constant NAME = "BundleService";
45
+
46
+ address private _registryAddress;
47
+ IRegistryService private _registryService;
48
+ IComponentService private _componentService;
49
+
50
+ function _initialize(
51
+ address owner,
52
+ bytes memory data
53
+ )
54
+ internal
55
+ initializer
56
+ virtual override
57
+ {
58
+ address registryAddress;
59
+ address initialOwner;
60
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
61
+ // TODO while PoolService is not deployed in PoolServiceManager constructor
62
+ // owner is PoolServiceManager deployer
63
+ initializeService(registryAddress, address(0), owner);
64
+
65
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
66
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
67
+
68
+ registerInterface(type(IBundleService).interfaceId);
69
+ }
70
+
71
+
72
+ function setFee(
73
+ NftId bundleNftId,
74
+ Fee memory fee
75
+ )
76
+ external
77
+ virtual
78
+ {
79
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
80
+ InstanceReader instanceReader = instance.getInstanceReader();
81
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
82
+ if(bundleInfo.poolNftId.eqz()) {
83
+ revert ErrorBundleServiceBundleUnknown(bundleNftId);
84
+ }
85
+
86
+ if(bundleInfo.poolNftId != poolNftId) {
87
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
88
+ }
89
+
90
+ bundleInfo.fee = fee;
91
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
92
+ }
93
+
94
+
95
+ function create(
96
+ IInstance instance,
97
+ NftId poolNftId,
98
+ address owner,
99
+ Fee memory bundleFee,
100
+ Amount stakingAmount,
101
+ Seconds lifetime,
102
+ bytes calldata filter
103
+ )
104
+ external
105
+ override
106
+ restricted
107
+ returns(NftId bundleNftId)
108
+ {
109
+ // register bundle with registry
110
+ bundleNftId = _registryService.registerBundle(
111
+ IRegistry.ObjectInfo(
112
+ NftIdLib.zero(),
113
+ poolNftId,
114
+ BUNDLE(),
115
+ false, // intercepting property for bundles is defined on pool
116
+ address(0),
117
+ owner,
118
+ "" // bundle data to be stored in registry
119
+ )
120
+ );
121
+
122
+ // create bundle info in instance
123
+ InstanceStore instanceStore = instance.getInstanceStore();
124
+ instanceStore.createBundle(
125
+ bundleNftId,
126
+ IBundle.BundleInfo(
127
+ poolNftId,
128
+ bundleFee,
129
+ filter,
130
+ lifetime,
131
+ TimestampLib.blockTimestamp().addSeconds(lifetime),
132
+ zeroTimestamp()));
133
+
134
+ // bundle book keeping
135
+ _componentService.increaseBundleBalance(
136
+ instanceStore,
137
+ bundleNftId,
138
+ stakingAmount,
139
+ AmountLib.zero()); // fee amount
140
+
141
+ // put bundle under bundle managemet
142
+ BundleManager bundleManager = instance.getBundleManager();
143
+ bundleManager.add(bundleNftId);
144
+
145
+ // TODO add logging
146
+ }
147
+
148
+
149
+ // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
150
+ function lockCollateral(
151
+ IInstance instance,
152
+ NftId policyNftId,
153
+ NftId bundleNftId,
154
+ Amount collateralAmount // required local amount to collateralize policy
155
+ )
156
+ external
157
+ virtual
158
+ restricted()
159
+ {
160
+ InstanceReader instanceReader = instance.getInstanceReader();
161
+ StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
162
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
+
164
+ // ensure bundle is active and not yet expired
165
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
166
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
167
+ }
168
+
169
+ // ensure bundle capacity is sufficent to collateralize policy
170
+ InstanceStore instanceStore = instance.getInstanceStore();
171
+ (
172
+ Amount balanceAmount,
173
+ Amount lockedAmount,
174
+ Amount feeAmount
175
+ ) = instanceStore.getAmounts(bundleNftId);
176
+
177
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
178
+ if(capacity < collateralAmount) {
179
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
180
+ }
181
+
182
+ // updated locked amount
183
+ instanceStore.increaseLocked(bundleNftId, collateralAmount);
184
+
185
+ // link policy to bundle in bundle manger
186
+ _linkPolicy(instance, policyNftId);
187
+ }
188
+
189
+
190
+ function lock(NftId bundleNftId)
191
+ external
192
+ virtual
193
+ {
194
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
195
+
196
+ // udpate bundle state
197
+ instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
198
+
199
+ // update set of active bundles
200
+ BundleManager bundleManager = instance.getBundleManager();
201
+ bundleManager.lock(bundleNftId);
202
+
203
+ emit LogBundleServiceBundleLocked(bundleNftId);
204
+ }
205
+
206
+
207
+ function unlock(NftId bundleNftId)
208
+ external
209
+ virtual
210
+ {
211
+ (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
212
+
213
+ // udpate bundle state
214
+ instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
215
+
216
+ // update set of active bundles
217
+ BundleManager bundleManager = instance.getBundleManager();
218
+ bundleManager.unlock(bundleNftId);
219
+
220
+ emit LogBundleServiceBundleActivated(bundleNftId);
221
+ }
222
+
223
+
224
+ function close(
225
+ IInstance instance,
226
+ NftId bundleNftId
227
+ )
228
+ external
229
+ virtual
230
+ restricted
231
+ {
232
+ // udpate bundle state
233
+ instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
234
+
235
+ // ensure no open policies attached to bundle
236
+ BundleManager bundleManager = instance.getBundleManager();
237
+ uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
238
+ if(openPolicies > 0) {
239
+ revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
240
+ }
241
+
242
+ // update set of active bundles
243
+ bundleManager.lock(bundleNftId);
244
+ }
245
+
246
+
247
+ function releaseCollateral(
248
+ IInstance instance,
249
+ NftId policyNftId,
250
+ NftId bundleNftId,
251
+ Amount collateralAmount
252
+ )
253
+ external
254
+ virtual
255
+ restricted()
256
+ {
257
+ instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
258
+ }
259
+
260
+ /// @dev unlinks policy from bundle
261
+ function unlinkPolicy(
262
+ IInstance instance,
263
+ NftId policyNftId
264
+ )
265
+ external
266
+ virtual
267
+ restricted
268
+ {
269
+ // ensure policy is closeable
270
+ if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
271
+ revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
+ }
273
+
274
+ instance.getBundleManager().unlinkPolicy(policyNftId);
275
+ }
276
+
277
+ /// @dev links policy to bundle
278
+ function _linkPolicy(IInstance instance, NftId policyNftId)
279
+ internal
280
+ {
281
+ InstanceReader instanceReader = instance.getInstanceReader();
282
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
283
+
284
+ // ensure policy has not yet been activated in a previous tx already
285
+ if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
286
+ revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
287
+ }
288
+
289
+ BundleManager bundleManager = instance.getBundleManager();
290
+ bundleManager.linkPolicy(policyNftId);
291
+ }
292
+
293
+ function _getDomain() internal pure override returns(ObjectType) {
294
+ return BUNDLE();
295
+ }
296
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {BundleService} from "./BundleService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
10
+
11
+ contract BundleServiceManager is ProxyManager {
12
+
13
+ BundleService private _bundleService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ BundleService bundleSrv = new BundleService{salt: salt}();
24
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
25
+ IVersionable versionable = deployDetermenistic(
26
+ address(bundleSrv),
27
+ data,
28
+ salt);
29
+
30
+ _bundleService = BundleService(address(versionable));
31
+ }
32
+
33
+ //--- view functions ----------------------------------------------------//
34
+ function getBundleService()
35
+ external
36
+ view
37
+ returns (BundleService)
38
+ {
39
+ return _bundleService;
40
+ }
41
+
42
+ }
@@ -1,27 +1,31 @@
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 ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
20
- error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
19
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
21
20
  error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
22
- error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, uint capacityAmount, uint collateralAmount);
21
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
23
22
  error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
24
23
 
24
+ error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
25
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
+
27
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
+
25
29
  /// @dev create a new bundle for the specified attributes
26
30
  /// may only be called by pool service
27
31
  function create(
@@ -36,6 +40,13 @@ interface IBundleService is IService {
36
40
  external
37
41
  returns(NftId bundleNftId); // the nft id of the newly created bundle
38
42
 
43
+
44
+ /// @dev increase bundle stakes by the specified amount
45
+ /// may only be called by the bundle owner
46
+ // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
47
+
48
+ // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
49
+
39
50
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
40
51
  /// only active bundles may be locked
41
52
  /// may only be called by registered and unlocked pool components
@@ -69,11 +80,10 @@ interface IBundleService is IService {
69
80
  /// the premium (minus bundle fee) is added to the bundle capital
70
81
  /// may only be called by pool service
71
82
  function lockCollateral(
72
- IInstance instanceNftId,
83
+ IInstance instance,
73
84
  NftId policyNftId,
74
85
  NftId bundleNftId,
75
- uint256 collateralAmount,
76
- uint256 premium // premium amount after pool fee
86
+ Amount collateralAmount
77
87
  ) external;
78
88
 
79
89
 
@@ -83,12 +93,14 @@ interface IBundleService is IService {
83
93
  IInstance instance,
84
94
  NftId policyNftId,
85
95
  NftId bundleNftId,
86
- uint256 collateralAmount
96
+ Amount collateralAmount
87
97
  ) external;
88
98
 
89
- function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
90
-
91
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
92
-
93
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
99
+ /// @dev unlink policy from bundle
100
+ /// policy may only be unlinked if policy is closeable
101
+ /// may only be called by pool service
102
+ function unlinkPolicy(
103
+ IInstance instance,
104
+ NftId policyNftId
105
+ ) external;
94
106
  }
@@ -0,0 +1,52 @@
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 returns initial pool specific infos for this pool
50
+ function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
51
+
52
+ }
@@ -1,37 +1,37 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Amount} from "../../types/Amount.sol";
5
- import {Fee} from "../../types/Fee.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {IBundle} from "../module/IBundle.sol";
8
- import {IInstance} from "../../instance/IInstance.sol";
9
- import {IPolicy} from "../module/IPolicy.sol";
10
- import {IService} from "../../shared/IService.sol";
11
- import {RoleId} from "../../types/RoleId.sol";
12
- import {Seconds} from "../../types/Seconds.sol";
13
- import {StateId} from "../../types/StateId.sol";
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {PayoutId} from "../type/PayoutId.sol";
8
+ import {IBundle} from "../instance/module/IBundle.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IService} from "../shared/IService.sol";
13
+ import {RoleId} from "../type/RoleId.sol";
14
+ import {Seconds} from "../type/Seconds.sol";
15
+ import {StateId} from "../type/StateId.sol";
16
+ import {UFixed} from "../type/UFixed.sol";
14
17
 
15
18
  interface IPoolService is IService {
16
19
 
17
- event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, uint256 previousMaxCapitalAmount, uint256 currentMaxCapitalAmount);
20
+ event LogPoolServiceMaxCapitalAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
18
21
  event LogPoolServiceBundleOwnerRoleSet(NftId poolNftId, RoleId bundleOwnerRole);
19
22
 
20
23
  event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
21
24
  event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
22
25
 
23
26
  error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
24
- error ErrorPoolServiceBundlePoolMismatch(NftId bundlePoolNftId, NftId productPoolNftId);
25
-
26
- /// @dev registers a new pool with the registry service
27
- function register(address poolAddress) external returns(NftId);
27
+ error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
28
28
 
29
29
  /// @dev defines the required role for bundle owners for the calling pool
30
30
  /// default implementation returns PUBLIC ROLE
31
31
  function setBundleOwnerRole(RoleId bundleOwnerRole) external;
32
32
 
33
33
  /// @dev sets the max capital amount for the calling pool
34
- function setMaxCapitalAmount(uint256 maxCapitalAmount) external;
34
+ function setMaxCapitalAmount(Amount maxCapitalAmount) external;
35
35
 
36
36
  /// @dev set pool sepecific fees
37
37
  function setFees(
@@ -48,22 +48,41 @@ interface IPoolService is IService {
48
48
  /// may only be called by the policy service for unlocked pool components
49
49
  function lockCollateral(
50
50
  IInstance instance,
51
+ address token,
51
52
  NftId productNftId,
52
53
  NftId applicationNftId,
53
- IPolicy.PolicyInfo memory applicationInfo,
54
- uint256 premiumAmount
55
- ) external;
54
+ NftId bundleNftId,
55
+ Amount sumInsuredAmount // premium amount after product and distribution fees
56
+ )
57
+ external
58
+ returns (
59
+ Amount localCollateralAmount,
60
+ Amount totalCollateralAmount
61
+ );
56
62
 
57
63
 
58
64
  /// @dev releases the remaining collateral linked to the specified policy
59
65
  /// may only be called by the policy service for unlocked pool components
60
66
  function releaseCollateral(
61
67
  IInstance instance,
68
+ address token,
62
69
  NftId policyNftId,
63
70
  IPolicy.PolicyInfo memory policyInfo
64
71
  ) external;
65
72
 
66
73
 
74
+ /// @dev reduces the locked collateral in the bundle associated with the specified policy
75
+ /// every payout of a policy reduces the collateral by the payout amount
76
+ /// may only be called by the claim service for unlocked pool components
77
+ function reduceCollateral(
78
+ IInstance instance,
79
+ address token,
80
+ NftId policyNftId,
81
+ IPolicy.PolicyInfo memory policyInfo,
82
+ Amount payoutAmount
83
+ ) external;
84
+
85
+
67
86
  /// @dev create a new bundle for the provided parameters
68
87
  /// staking fees will be deducted by the pool service from the staking amount
69
88
  /// may only be called by registered and unlocked pool components
@@ -86,6 +105,9 @@ interface IPoolService is IService {
86
105
  function closeBundle(NftId bundleNftId) external;
87
106
 
88
107
 
108
+ /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
109
+ function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
110
+
89
111
  /// @dev increase stakes for bundle
90
112
  /// staking fees will be deducted by the pool service from the staking amount
91
113
  /// may only be called by registered and unlocked pool components
@@ -96,4 +118,33 @@ interface IPoolService is IService {
96
118
  /// performance fees will be deducted by the pool service from the staking amount
97
119
  /// may only be called by registered and unlocked pool components
98
120
  // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
121
+
122
+
123
+ /// @dev calulate required collateral for the provided parameters
124
+ function calculateRequiredCollateral(
125
+ InstanceReader instanceReader,
126
+ NftId productNftId,
127
+ Amount sumInsuredAmount
128
+ )
129
+ external
130
+ view
131
+ returns(
132
+ Amount localCollateralAmount,
133
+ Amount totalCollateralAmount
134
+ );
135
+
136
+
137
+ /// @dev calulate required collateral for the provided parameters
138
+ function calculateRequiredCollateral(
139
+ UFixed collateralizationLevel,
140
+ UFixed retentionLevel,
141
+ Amount sumInsuredAmount
142
+ )
143
+ external
144
+ pure
145
+ returns(
146
+ Amount localCollateralAmount,
147
+ Amount totalCollateralAmount
148
+ );
149
+
99
150
  }