@etherisc/gif-next 0.0.2-b89a442-717 → 0.0.2-b9366f5-670

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 (413) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -101
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -75
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +223 -105
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +50 -38
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  31. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  32. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1558 -0
  33. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  34. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1318 -0
  35. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  36. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +1664 -0
  37. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  38. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2125 -0
  39. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  40. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  41. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  43. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  45. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/Instance.sol/Instance.json +9 -9
  47. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +75 -75
  49. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +21 -21
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
  57. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  59. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  61. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  64. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  66. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  68. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +59 -88
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -37
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +27 -72
  86. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  88. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  90. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +55 -137
  92. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  94. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +402 -62
  96. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +94 -26
  98. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  100. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -95
  102. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  104. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -133
  106. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +264 -136
  108. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +23 -19
  110. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +19 -38
  112. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +8 -20
  114. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +22 -78
  116. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  118. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +194 -72
  120. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +41 -37
  122. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +184 -119
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  130. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  132. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  133. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  134. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +242 -209
  136. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +38 -38
  138. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -147
  140. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
  142. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  143. package/artifacts/contracts/product/Product.sol/Product.json +22 -78
  144. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  145. package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
  146. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
  148. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  150. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +51 -3
  152. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  154. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  155. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.json +96 -24
  157. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
  159. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  161. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  163. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  165. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  167. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  169. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  171. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  172. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  173. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
  175. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -32
  177. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  180. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  182. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  184. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  186. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  192. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  193. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -75
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  199. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  200. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  202. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  208. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  211. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  212. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  213. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  215. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  218. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  219. package/artifacts/contracts/staking/Staking.sol/Staking.json +77 -107
  220. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +26 -22
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +92 -87
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  235. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  237. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  239. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  241. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  243. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  245. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  247. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  249. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  251. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  253. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  255. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  257. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  259. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  261. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  265. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  269. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  272. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  274. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  276. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  278. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  280. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  281. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  282. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  283. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  284. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  285. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  286. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  287. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  288. package/contracts/authorization/Authorization.sol +0 -1
  289. package/contracts/distribution/BasicDistribution.sol +4 -15
  290. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  291. package/contracts/distribution/Distribution.sol +22 -10
  292. package/contracts/distribution/DistributionService.sol +67 -33
  293. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  294. package/contracts/distribution/IDistributionComponent.sol +8 -4
  295. package/contracts/distribution/IDistributionService.sol +18 -2
  296. package/contracts/example_components/unpermissioned/SimpleDistribution.sol +50 -0
  297. package/contracts/example_components/unpermissioned/SimpleOracle.sol +137 -0
  298. package/contracts/example_components/unpermissioned/SimplePool.sol +76 -0
  299. package/contracts/example_components/unpermissioned/SimpleProduct.sol +351 -0
  300. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  301. package/contracts/instance/IInstance.sol +11 -34
  302. package/contracts/instance/IInstanceService.sol +5 -5
  303. package/contracts/instance/Instance.sol +11 -36
  304. package/contracts/instance/InstanceAdmin.sol +25 -6
  305. package/contracts/instance/InstanceAuthorizationV3.sol +16 -14
  306. package/contracts/instance/InstanceReader.sol +32 -7
  307. package/contracts/instance/InstanceService.sol +65 -41
  308. package/contracts/instance/InstanceServiceManager.sol +2 -6
  309. package/contracts/instance/InstanceStore.sol +12 -1
  310. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  311. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  312. package/contracts/instance/module/IBundle.sol +1 -1
  313. package/contracts/instance/module/IComponents.sol +1 -7
  314. package/contracts/instance/module/IDistribution.sol +0 -1
  315. package/contracts/instance/module/IPolicy.sol +22 -22
  316. package/contracts/mock/Dip.sol +1 -1
  317. package/contracts/oracle/IOracleComponent.sol +2 -1
  318. package/contracts/oracle/Oracle.sol +16 -6
  319. package/contracts/oracle/OracleService.sol +1 -0
  320. package/contracts/oracle/OracleServiceManager.sol +2 -5
  321. package/contracts/pool/BasicPool.sol +7 -5
  322. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  323. package/contracts/pool/BundleService.sol +189 -47
  324. package/contracts/pool/BundleServiceManager.sol +2 -5
  325. package/contracts/pool/IBundleService.sol +33 -5
  326. package/contracts/pool/IPoolComponent.sol +6 -0
  327. package/contracts/pool/IPoolService.sol +36 -26
  328. package/contracts/pool/Pool.sol +39 -24
  329. package/contracts/pool/PoolService.sol +161 -104
  330. package/contracts/pool/PoolServiceManager.sol +2 -5
  331. package/contracts/product/ApplicationService.sol +51 -57
  332. package/contracts/product/ApplicationServiceManager.sol +2 -2
  333. package/contracts/product/BasicProduct.sol +3 -32
  334. package/contracts/product/BasicProductAuthorization.sol +3 -0
  335. package/contracts/product/ClaimService.sol +118 -73
  336. package/contracts/product/ClaimServiceManager.sol +2 -2
  337. package/contracts/product/IApplicationService.sol +1 -0
  338. package/contracts/product/IClaimService.sol +28 -5
  339. package/contracts/product/IPolicyService.sol +27 -32
  340. package/contracts/product/IPricingService.sol +7 -7
  341. package/contracts/product/IProductComponent.sol +1 -1
  342. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  343. package/contracts/product/PolicyService.sol +278 -180
  344. package/contracts/product/PolicyServiceManager.sol +2 -5
  345. package/contracts/product/PricingService.sol +42 -41
  346. package/contracts/product/PricingServiceManager.sol +2 -5
  347. package/contracts/product/Product.sol +67 -34
  348. package/contracts/product/{ProductService.sol → RiskService.sol} +10 -37
  349. package/contracts/product/RiskServiceManager.sol +39 -0
  350. package/contracts/registry/IRegistry.sol +27 -14
  351. package/contracts/registry/IRegistryService.sol +6 -6
  352. package/contracts/registry/Registry.sol +81 -83
  353. package/contracts/registry/RegistryAdmin.sol +33 -24
  354. package/contracts/registry/RegistryService.sol +4 -18
  355. package/contracts/registry/RegistryServiceManager.sol +2 -2
  356. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +49 -51
  357. package/contracts/registry/ServiceAuthorizationV3.sol +7 -8
  358. package/contracts/registry/TokenRegistry.sol +2 -2
  359. package/contracts/shared/Component.sol +25 -38
  360. package/contracts/shared/ComponentService.sol +82 -22
  361. package/contracts/shared/ComponentServiceManager.sol +2 -2
  362. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  363. package/contracts/shared/IComponent.sol +4 -4
  364. package/contracts/shared/IComponentService.sol +15 -9
  365. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  366. package/contracts/shared/IService.sol +1 -1
  367. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  368. package/contracts/shared/InstanceLinkedComponent.sol +22 -1
  369. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  370. package/contracts/shared/NftOwnable.sol +3 -3
  371. package/contracts/shared/PolicyHolder.sol +2 -5
  372. package/contracts/shared/Service.sol +3 -4
  373. package/contracts/shared/TokenHandler.sol +100 -19
  374. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  375. package/contracts/staking/IStaking.sol +3 -3
  376. package/contracts/staking/IStakingService.sol +12 -5
  377. package/contracts/staking/StakeManagerLib.sol +18 -25
  378. package/contracts/staking/Staking.sol +24 -39
  379. package/contracts/staking/StakingManager.sol +2 -6
  380. package/contracts/staking/StakingReader.sol +12 -16
  381. package/contracts/staking/StakingService.sol +8 -12
  382. package/contracts/staking/StakingServiceManager.sol +2 -2
  383. package/contracts/staking/StakingStore.sol +12 -22
  384. package/contracts/staking/TargetManagerLib.sol +7 -3
  385. package/contracts/type/Amount.sol +12 -5
  386. package/contracts/type/Blocknumber.sol +7 -1
  387. package/contracts/type/ObjectType.sol +18 -18
  388. package/contracts/type/Referral.sol +1 -0
  389. package/contracts/type/Seconds.sol +21 -1
  390. package/contracts/type/StateId.sol +1 -0
  391. package/contracts/type/Timestamp.sol +11 -1
  392. package/contracts/type/UFixed.sol +29 -10
  393. package/contracts/type/Version.sol +3 -1
  394. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  395. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  396. package/package.json +3 -3
  397. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  398. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  399. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  400. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  401. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  402. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  403. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  404. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  405. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  406. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  407. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  408. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  409. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  410. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  411. package/contracts/product/ProductServiceManager.sol +0 -42
  412. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  413. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -11,7 +11,7 @@ import {Timestamp} from "../../type/Timestamp.sol";
11
11
 
12
12
  interface IPolicy {
13
13
 
14
- struct Premium {
14
+ struct PremiumInfo {
15
15
  // premium splitting per target wallet
16
16
  Amount productFeeAmount;
17
17
  Amount distributionFeeAndCommissionAmount;
@@ -19,26 +19,26 @@ interface IPolicy {
19
19
 
20
20
  // detailed positions
21
21
  // this is the net premium calculated by the product
22
- uint256 netPremiumAmount;
22
+ Amount netPremiumAmount;
23
23
  // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
24
- uint256 fullPremiumAmount;
25
- // premium = fullPremium - discount
26
- uint256 premiumAmount;
27
- uint256 productFeeFixAmount;
28
- uint256 poolFeeFixAmount;
29
- uint256 bundleFeeFixAmount;
30
- uint256 distributionFeeFixAmount;
31
- uint256 productFeeVarAmount;
32
- uint256 poolFeeVarAmount;
33
- uint256 bundleFeeVarAmount;
34
- uint256 distributionFeeVarAmount;
35
- uint256 distributionOwnerFeeFixAmount;
24
+ Amount fullPremiumAmount;
25
+ // effective premium = fullPremium - discount
26
+ Amount premiumAmount;
27
+ Amount productFeeFixAmount;
28
+ Amount poolFeeFixAmount;
29
+ Amount bundleFeeFixAmount;
30
+ Amount distributionFeeFixAmount;
31
+ Amount productFeeVarAmount;
32
+ Amount poolFeeVarAmount;
33
+ Amount bundleFeeVarAmount;
34
+ Amount distributionFeeVarAmount;
35
+ Amount distributionOwnerFeeFixAmount;
36
36
  // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
37
- uint256 distributionOwnerFeeVarAmount;
37
+ Amount distributionOwnerFeeVarAmount;
38
38
  // this value is based on distributor type referenced in the referral
39
- uint256 commissionAmount;
39
+ Amount commissionAmount;
40
40
  // this is based on referral used
41
- uint256 discountAmount;
41
+ Amount discountAmount;
42
42
  }
43
43
 
44
44
  /// @dev policy data for the full policy lifecycle
@@ -49,7 +49,6 @@ interface IPolicy {
49
49
  RiskId riskId;
50
50
  Amount sumInsuredAmount;
51
51
  Amount premiumAmount; // expected premium at application time
52
- Amount premiumPaidAmount; // actual paid premium
53
52
  Seconds lifetime;
54
53
  // policy application data, no changes after applying for a policy
55
54
  bytes applicationData;
@@ -69,8 +68,8 @@ interface IPolicy {
69
68
  Amount paidAmount;
70
69
  uint8 payoutsCount;
71
70
  uint8 openPayoutsCount;
72
- bytes submissionData; // claim submission data, no changes after submitting the claim
73
- bytes processData; // data that may include information supporting confirm or decline
71
+ bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
72
+ bytes processData; // use case specific data that may include information supporting confirm or decline
74
73
  Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
75
74
  }
76
75
 
@@ -78,7 +77,8 @@ interface IPolicy {
78
77
  struct PayoutInfo {
79
78
  ClaimId claimId;
80
79
  Amount amount;
81
- bytes data;
82
- Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
80
+ address beneficiary; // for address(0) beneficiary is policy nft owner
81
+ bytes data; // use case specific supporting data
82
+ Timestamp paidAt; // timestamp for actual payout
83
83
  }
84
84
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
4
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
5
 
6
6
  contract Dip is ERC20 {
7
7
 
@@ -11,7 +11,8 @@ import {UFixed} from "../type/UFixed.sol";
11
11
  import {Timestamp} from "../type/Timestamp.sol";
12
12
 
13
13
  interface IOracleComponent is IInstanceLinkedComponent {
14
-
14
+ error ErrorOracleNotImplemented(string methodName);
15
+
15
16
  /// @dev callback method for requesting some data from the oracle
16
17
  function request(
17
18
  RequestId requestId,
@@ -1,19 +1,17 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../type/Amount.sol";
4
5
  import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
5
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
9
  import {IOracleComponent} from "./IOracleComponent.sol";
8
10
  import {IOracleService} from "./IOracleService.sol";
9
- import {IRegistry} from "../registry/IRegistry.sol";
10
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
- import {NftId, NftIdLib} from "../type/NftId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
12
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
13
- import {InstanceReader} from "../instance/InstanceReader.sol";
14
13
  import {RequestId} from "../type/RequestId.sol";
15
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
16
- import {UFixed} from "../type/UFixed.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
17
15
 
18
16
 
19
17
  abstract contract Oracle is
@@ -73,6 +71,18 @@ abstract contract Oracle is
73
71
  return false;
74
72
  }
75
73
 
74
+ /// @dev Not relevant for oracle components
75
+ function withdrawFees(Amount amount)
76
+ external
77
+ virtual
78
+ override(IInstanceLinkedComponent, InstanceLinkedComponent)
79
+ onlyOwner()
80
+ restricted()
81
+ returns (Amount withdrawnAmount)
82
+ {
83
+ revert ErrorOracleNotImplemented("withdrawFees");
84
+ }
85
+
76
86
 
77
87
  function _initializeOracle(
78
88
  address registry,
@@ -64,6 +64,7 @@ contract OracleService is
64
64
  ORACLE(),
65
65
  true); // only active
66
66
 
67
+ // TODO move to stronger validation, requester and oracle need to belong to same product cluster
67
68
  // check that requester and oracle share same instance
68
69
  if (componentInfo.parentNftId != oracleInfo.parentNftId) {
69
70
  revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {OracleService} from "./OracleService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract OracleServiceManager is ProxyManager {
12
9
 
@@ -14,6 +14,7 @@ import {NftId, NftIdLib} from "../type/NftId.sol";
14
14
  import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
15
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
16
  import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
17
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
18
19
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
20
 
@@ -81,8 +82,9 @@ abstract contract BasicPool is
81
82
  virtual
82
83
  restricted()
83
84
  onlyBundleOwner(bundleNftId)
85
+ returns(Timestamp newExpiredAt)
84
86
  {
85
- _extend(bundleNftId, lifetimeExtension);
87
+ return _extend(bundleNftId, lifetimeExtension);
86
88
  }
87
89
 
88
90
 
@@ -106,13 +108,13 @@ abstract contract BasicPool is
106
108
  }
107
109
 
108
110
 
109
- function close(NftId bundleNftId)
111
+ function closeBundle(NftId bundleNftId)
110
112
  public
111
113
  virtual
112
114
  restricted()
113
115
  onlyBundleOwner(bundleNftId)
114
116
  {
115
- _close(bundleNftId);
117
+ _closeBundle(bundleNftId);
116
118
  }
117
119
 
118
120
 
@@ -129,13 +131,13 @@ abstract contract BasicPool is
129
131
  }
130
132
 
131
133
 
132
- function setMaxCapitalAmount(Amount maxCapitalAmount)
134
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
133
135
  public
134
136
  virtual
135
137
  restricted()
136
138
  onlyOwner()
137
139
  {
138
- _setMaxCapitalAmount(maxCapitalAmount);
140
+ _setMaxBalanceAmount(maxBalanceAmount);
139
141
  }
140
142
 
141
143
 
@@ -4,6 +4,8 @@ pragma solidity ^0.8.20;
4
4
  import {Authorization} from "../authorization/Authorization.sol";
5
5
  import {BasicPool} from "./BasicPool.sol";
6
6
  import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
7
9
  import {POOL} from "../type/ObjectType.sol";
8
10
  import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
9
11
  import {RoleId} from "../type/RoleId.sol";
@@ -38,12 +40,19 @@ contract BasicPoolAuthorization
38
40
  _authorize(functions, BasicPool.extend.selector, "extend");
39
41
  _authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
40
42
  _authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
41
- _authorize(functions, BasicPool.close.selector, "close");
43
+ _authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
42
44
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
43
45
 
44
- _authorize(functions, BasicPool.setMaxCapitalAmount.selector, "setMaxCapitalAmount");
46
+ _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
45
47
  _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
46
48
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
+ _authorize(functions, BasicPool.stake.selector, "stake");
50
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
51
+ _authorize(functions, BasicPool.extend.selector, "extend");
52
+
53
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
54
+
55
+ _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
47
56
  }
48
57
  }
49
58
 
@@ -2,36 +2,25 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IBundleService} from "./IBundleService.sol";
5
6
  import {IComponents} from "../instance/module/IComponents.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
8
10
  import {IInstance} from "../instance/IInstance.sol";
9
11
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
12
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
13
 
12
- import {IVersionable} from "../shared/IVersionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {BundleSet} from "../instance/BundleSet.sol";
16
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
+ import {Fee} from "../type/Fee.sol";
18
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
20
  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
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
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";
23
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
35
24
 
36
25
  string constant BUNDLE_SERVICE_NAME = "BundleService";
37
26
 
@@ -39,8 +28,7 @@ contract BundleService is
39
28
  ComponentVerifyingService,
40
29
  IBundleService
41
30
  {
42
- using NftIdLib for NftId;
43
-
31
+
44
32
  string public constant NAME = "BundleService";
45
33
 
46
34
  address private _registryAddress;
@@ -123,25 +111,28 @@ contract BundleService is
123
111
  InstanceStore instanceStore = instance.getInstanceStore();
124
112
  instanceStore.createBundle(
125
113
  bundleNftId,
126
- IBundle.BundleInfo(
127
- poolNftId,
128
- bundleFee,
129
- filter,
130
- lifetime,
131
- TimestampLib.blockTimestamp().addSeconds(lifetime),
132
- zeroTimestamp()));
114
+ IBundle.BundleInfo({
115
+ poolNftId: poolNftId,
116
+ fee: bundleFee,
117
+ filter: filter,
118
+ activatedAt: TimestampLib.blockTimestamp(),
119
+ expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
120
+ closedAt: zeroTimestamp()
121
+ })
122
+ );
133
123
 
134
- // bundle book keeping
135
- _componentService.increaseBundleBalance(
136
- instanceStore,
137
- bundleNftId,
138
- stakingAmount,
139
- AmountLib.zero()); // fee amount
124
+ if (stakingAmount.gtz()) {
125
+ // bundle book keeping
126
+ _componentService.increaseBundleBalance(
127
+ instanceStore,
128
+ bundleNftId,
129
+ stakingAmount,
130
+ AmountLib.zero()); // fee amount
131
+ }
140
132
 
141
133
  // put bundle under bundle managemet
142
- BundleManager bundleManager = instance.getBundleManager();
134
+ BundleSet bundleManager = instance.getBundleSet();
143
135
  bundleManager.add(bundleNftId);
144
-
145
136
  // TODO add logging
146
137
  }
147
138
 
@@ -158,7 +149,7 @@ contract BundleService is
158
149
  restricted()
159
150
  {
160
151
  InstanceReader instanceReader = instance.getInstanceReader();
161
- StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
152
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
162
153
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
154
 
164
155
  // ensure bundle is active and not yet expired
@@ -197,7 +188,7 @@ contract BundleService is
197
188
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
198
189
 
199
190
  // update set of active bundles
200
- BundleManager bundleManager = instance.getBundleManager();
191
+ BundleSet bundleManager = instance.getBundleSet();
201
192
  bundleManager.lock(bundleNftId);
202
193
 
203
194
  emit LogBundleServiceBundleLocked(bundleNftId);
@@ -214,7 +205,7 @@ contract BundleService is
214
205
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
215
206
 
216
207
  // update set of active bundles
217
- BundleManager bundleManager = instance.getBundleManager();
208
+ BundleSet bundleManager = instance.getBundleSet();
218
209
  bundleManager.unlock(bundleNftId);
219
210
 
220
211
  emit LogBundleServiceBundleActivated(bundleNftId);
@@ -228,19 +219,128 @@ contract BundleService is
228
219
  external
229
220
  virtual
230
221
  restricted
222
+ returns (Amount unstakedAmount, Amount feeAmount)
231
223
  {
232
- // udpate bundle state
233
- instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
224
+ InstanceReader instanceReader = instance.getInstanceReader();
234
225
 
235
226
  // ensure no open policies attached to bundle
236
- BundleManager bundleManager = instance.getBundleManager();
227
+ BundleSet bundleManager = instance.getBundleSet();
237
228
  uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
238
229
  if(openPolicies > 0) {
239
230
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
240
231
  }
241
232
 
242
- // update set of active bundles
243
- bundleManager.lock(bundleNftId);
233
+ {
234
+ // update bundle state
235
+ InstanceStore instanceStore = instance.getInstanceStore();
236
+ instanceStore.updateBundleState(bundleNftId, CLOSED());
237
+ bundleManager.lock(bundleNftId);
238
+
239
+ // decrease bundle counters
240
+ Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
241
+ feeAmount = instanceReader.getFeeAmount(bundleNftId);
242
+ unstakedAmount = balanceAmountWithFees - feeAmount;
243
+ _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
244
+ }
245
+ }
246
+
247
+ /// @inheritdoc IBundleService
248
+ function stake(
249
+ IInstance instance,
250
+ NftId bundleNftId,
251
+ Amount amount
252
+ )
253
+ external
254
+ virtual
255
+ // TODO: restricted() (once #462 is done)
256
+ {
257
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
259
+
260
+ if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
261
+ || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
262
+ || bundleInfo.closedAt.gtz()) {
263
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
264
+ }
265
+
266
+ _componentService.increaseBundleBalance(
267
+ instance.getInstanceStore(),
268
+ bundleNftId,
269
+ amount,
270
+ AmountLib.zero());
271
+ }
272
+
273
+ /// @inheritdoc IBundleService
274
+ function unstake(
275
+ IInstance instance,
276
+ NftId bundleNftId,
277
+ Amount amount
278
+ )
279
+ external
280
+ virtual
281
+ // TODO: restricted() (once #462 is done)
282
+ returns (Amount unstakedAmount)
283
+ {
284
+ InstanceStore instanceStore = instance.getInstanceStore();
285
+ (
286
+ Amount balanceAmount,
287
+ Amount lockedAmount,
288
+ Amount feeAmount
289
+ ) = instanceStore.getAmounts(bundleNftId);
290
+
291
+ Amount unstakedAmount = amount;
292
+ Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
+
294
+ // if amount is max, then unstake all available
295
+ if (amount.gte(AmountLib.max())) {
296
+ unstakedAmount = availableAmount;
297
+ }
298
+
299
+ // ensure unstaked amount does not exceed available amount
300
+ if (unstakedAmount > availableAmount) {
301
+ revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
302
+ }
303
+
304
+ _componentService.decreaseBundleBalance(
305
+ instanceStore,
306
+ bundleNftId,
307
+ unstakedAmount,
308
+ AmountLib.zero());
309
+
310
+ return unstakedAmount;
311
+ }
312
+
313
+ /// @inheritdoc IBundleService
314
+ function extend(NftId bundleNftId, Seconds lifetimeExtension)
315
+ external
316
+ virtual
317
+ // TODO: restricted() (once #462 is done)
318
+ returns (Timestamp extendedExpiredAt)
319
+ {
320
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
321
+ IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
323
+
324
+ // ensure bundle belongs to the pool
325
+ if (bundleInfo.poolNftId != poolNftId) {
326
+ revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
327
+ }
328
+
329
+ // ensure bundle is active and not yet expired
330
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
331
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
332
+ }
333
+
334
+ if (lifetimeExtension.eqz()) {
335
+ revert ErrorBundleServiceExtensionLifetimeIsZero();
336
+ }
337
+
338
+ bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
339
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
340
+
341
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
342
+
343
+ return bundleInfo.expiredAt;
244
344
  }
245
345
 
246
346
 
@@ -271,7 +371,49 @@ contract BundleService is
271
371
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
372
  }
273
373
 
274
- instance.getBundleManager().unlinkPolicy(policyNftId);
374
+ instance.getBundleSet().unlinkPolicy(policyNftId);
375
+ }
376
+
377
+ /// @inheritdoc IBundleService
378
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
379
+ public
380
+ virtual
381
+ // TODO: restricted() (once #462 is done)
382
+ returns (Amount withdrawnAmount)
383
+ {
384
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
+ InstanceReader reader = instance.getInstanceReader();
386
+
387
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
+ address poolWallet = poolInfo.wallet;
389
+
390
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
+
392
+ // determine withdrawn amount
393
+ withdrawnAmount = amount;
394
+ if (withdrawnAmount.gte(AmountLib.max())) {
395
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
396
+ } else {
397
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
398
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
399
+ }
400
+ }
401
+
402
+ // decrease fee counters by withdrawnAmount
403
+ {
404
+ InstanceStore store = instance.getInstanceStore();
405
+ // decrease fee amount of the bundle
406
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
407
+ // decrease pool balance
408
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
409
+ }
410
+
411
+ // transfer amount to bundle owner
412
+ {
413
+ address owner = getRegistry().ownerOf(bundleNftId);
414
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
415
+ poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
416
+ }
275
417
  }
276
418
 
277
419
  /// @dev links policy to bundle
@@ -283,10 +425,10 @@ contract BundleService is
283
425
 
284
426
  // ensure policy has not yet been activated in a previous tx already
285
427
  if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
286
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
428
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
287
429
  }
288
430
 
289
- BundleManager bundleManager = instance.getBundleManager();
431
+ BundleSet bundleManager = instance.getBundleSet();
290
432
  bundleManager.linkPolicy(policyNftId);
291
433
  }
292
434
 
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
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
7
 
11
8
  contract BundleServiceManager is ProxyManager {
12
9
 
@@ -26,6 +26,15 @@ interface IBundleService is IService {
26
26
 
27
27
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
28
 
29
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+
31
+ error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
32
+
33
+ error ErrorBundleServiceExtensionLifetimeIsZero();
34
+
35
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
36
+ event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
37
+
29
38
  /// @dev create a new bundle for the specified attributes
30
39
  /// may only be called by pool service
31
40
  function create(
@@ -41,11 +50,20 @@ interface IBundleService is IService {
41
50
  returns(NftId bundleNftId); // the nft id of the newly created bundle
42
51
 
43
52
 
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);
53
+ /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
54
+ /// may only be called by the pool service
55
+ function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
56
+
57
+ /// @dev decrease bundle stakes by the specified amount
58
+ /// may only be called by the pool service
59
+ /// @param instance the instance relevant for the bundle
60
+ /// @param bundleNftId the bundle nft id
61
+ /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
62
+ /// @return unstakedAmount the effective unstaked amount
63
+ function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
47
64
 
48
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
65
+ /// @dev extend the lifetime of the bundle by the specified time in seconds
66
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
49
67
 
50
68
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
51
69
  /// only active bundles may be locked
@@ -61,10 +79,12 @@ interface IBundleService is IService {
61
79
  /// only open bundles (active or locked) may be closed
62
80
  /// to close a bundle it may not have any non-closed polices attached to it
63
81
  /// may only be called by registered and unlocked pool components
82
+ /// @return balanceAmount the unstaked amount that was remaining in the bundle
83
+ /// @return feeAmount the fee amount that was remaining for the bundle
64
84
  function close(
65
85
  IInstance instance,
66
86
  NftId bundleNftId
67
- ) external;
87
+ ) external returns (Amount balanceAmount, Amount feeAmount);
68
88
 
69
89
  /// @dev set bundle fee to provided value
70
90
  /// may only be called by registered and unlocked pool components
@@ -103,4 +123,12 @@ interface IBundleService is IService {
103
123
  IInstance instance,
104
124
  NftId policyNftId
105
125
  ) external;
126
+
127
+ // FIXME: move to pool service
128
+ /// @dev Withdraw bundle feeds for the given bundle
129
+ /// @param bundleNftId the bundle Nft Id
130
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
131
+ /// @return withdrawnAmount the effective withdrawn amount
132
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
+
106
134
  }