@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1e0c66-773

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 (355) hide show
  1. package/README.md +14 -2
  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/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +69 -26
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -0
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +237 -74
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -38
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -0
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +102 -0
  30. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  31. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  32. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  33. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  34. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  36. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  37. package/artifacts/contracts/instance/Instance.sol/Instance.json +9 -9
  38. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +73 -73
  40. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  41. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  42. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  43. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +54 -59
  44. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +15 -15
  46. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  47. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +6 -6
  48. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +66 -76
  50. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  52. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  53. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  55. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  57. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  58. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  59. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  65. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  66. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  67. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +46 -16
  68. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  70. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -0
  73. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +30 -0
  76. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  78. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  80. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  81. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +43 -0
  82. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  84. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +221 -55
  86. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +55 -23
  88. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  89. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
  90. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -0
  92. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  94. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -0
  95. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  97. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  99. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  100. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
  101. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
  103. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  104. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
  105. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  107. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  108. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  109. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  111. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  113. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  114. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  115. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  117. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -0
  118. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  119. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  120. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +64 -51
  121. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +26 -26
  123. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  124. package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
  125. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  127. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  128. package/artifacts/contracts/product/Product.sol/Product.json +19 -0
  129. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  130. package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
  131. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
  133. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  134. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  136. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  138. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  139. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  140. package/artifacts/contracts/registry/Registry.sol/Registry.json +95 -23
  141. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  142. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
  143. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  145. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  147. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  148. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  149. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  150. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  151. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  152. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  153. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  154. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  155. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -62
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +60 -32
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  164. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
  166. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  175. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  176. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  177. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
  178. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  180. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  181. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  182. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  184. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  185. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  191. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  193. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  194. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  195. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  196. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +12 -2
  197. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  198. package/artifacts/contracts/staking/Staking.sol/Staking.json +36 -36
  199. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  201. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  202. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +19 -19
  203. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  205. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  207. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  209. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +20 -15
  211. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  212. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
  213. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  214. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  215. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  216. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  217. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  218. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  219. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  221. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  222. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  223. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  224. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  225. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  227. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  228. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  229. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  231. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  233. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  235. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  237. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  239. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  241. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  249. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  251. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  253. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  255. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  256. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  257. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  258. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  259. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  260. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  261. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  262. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  263. package/contracts/distribution/BasicDistribution.sol +4 -15
  264. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  265. package/contracts/distribution/Distribution.sol +22 -10
  266. package/contracts/distribution/DistributionService.sol +61 -26
  267. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  268. package/contracts/distribution/IDistributionComponent.sol +8 -4
  269. package/contracts/distribution/IDistributionService.sol +12 -0
  270. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  271. package/contracts/instance/IInstance.sol +5 -5
  272. package/contracts/instance/IInstanceService.sol +5 -5
  273. package/contracts/instance/Instance.sol +4 -4
  274. package/contracts/instance/InstanceAdmin.sol +2 -2
  275. package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
  276. package/contracts/instance/InstanceService.sol +10 -10
  277. package/contracts/instance/InstanceServiceManager.sol +2 -6
  278. package/contracts/instance/InstanceStore.sol +2 -1
  279. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  280. package/contracts/instance/module/IComponents.sol +0 -1
  281. package/contracts/instance/module/IDistribution.sol +0 -1
  282. package/contracts/oracle/IOracleComponent.sol +2 -1
  283. package/contracts/oracle/Oracle.sol +15 -6
  284. package/contracts/oracle/OracleServiceManager.sol +2 -5
  285. package/contracts/pool/BasicPoolAuthorization.sol +6 -0
  286. package/contracts/pool/BundleService.sol +72 -27
  287. package/contracts/pool/BundleServiceManager.sol +2 -5
  288. package/contracts/pool/IBundleService.sol +14 -0
  289. package/contracts/pool/IPoolComponent.sol +6 -0
  290. package/contracts/pool/Pool.sol +18 -1
  291. package/contracts/pool/PoolService.sol +11 -29
  292. package/contracts/pool/PoolServiceManager.sol +2 -5
  293. package/contracts/product/ApplicationService.sol +12 -36
  294. package/contracts/product/ApplicationServiceManager.sol +2 -2
  295. package/contracts/product/BasicProduct.sol +3 -33
  296. package/contracts/product/BasicProductAuthorization.sol +3 -0
  297. package/contracts/product/ClaimService.sol +7 -32
  298. package/contracts/product/ClaimServiceManager.sol +2 -2
  299. package/contracts/product/IPolicyService.sol +2 -0
  300. package/contracts/product/IProductComponent.sol +1 -0
  301. package/contracts/product/PolicyService.sol +28 -4
  302. package/contracts/product/PolicyServiceManager.sol +2 -5
  303. package/contracts/product/PricingServiceManager.sol +2 -5
  304. package/contracts/product/Product.sol +10 -1
  305. package/contracts/product/ProductService.sol +7 -32
  306. package/contracts/product/ProductServiceManager.sol +2 -5
  307. package/contracts/registry/IRegistry.sol +26 -13
  308. package/contracts/registry/IRegistryService.sol +6 -6
  309. package/contracts/registry/Registry.sol +80 -82
  310. package/contracts/registry/RegistryAdmin.sol +23 -23
  311. package/contracts/registry/RegistryService.sol +4 -18
  312. package/contracts/registry/RegistryServiceManager.sol +2 -2
  313. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -50
  314. package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
  315. package/contracts/registry/TokenRegistry.sol +2 -2
  316. package/contracts/shared/Component.sol +13 -14
  317. package/contracts/shared/ComponentService.sol +82 -12
  318. package/contracts/shared/ComponentServiceManager.sol +2 -2
  319. package/contracts/shared/IComponentService.sol +15 -9
  320. package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
  321. package/contracts/shared/IService.sol +1 -1
  322. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  323. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  324. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  325. package/contracts/shared/NftOwnable.sol +2 -2
  326. package/contracts/shared/PolicyHolder.sol +2 -5
  327. package/contracts/shared/Service.sol +3 -4
  328. package/contracts/staking/IStaking.sol +1 -2
  329. package/contracts/staking/IStakingService.sol +12 -5
  330. package/contracts/staking/Staking.sol +20 -17
  331. package/contracts/staking/StakingManager.sol +2 -6
  332. package/contracts/staking/StakingReader.sol +12 -16
  333. package/contracts/staking/StakingServiceManager.sol +2 -2
  334. package/contracts/staking/StakingStore.sol +12 -22
  335. package/contracts/type/Amount.sol +12 -5
  336. package/contracts/type/ObjectType.sol +3 -7
  337. package/contracts/type/Referral.sol +1 -0
  338. package/contracts/type/UFixed.sol +29 -10
  339. package/contracts/type/Version.sol +3 -1
  340. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  341. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  342. package/package.json +1 -1
  343. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  344. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  345. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  346. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  347. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  348. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  349. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  350. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  351. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  352. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  353. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  354. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  355. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
10
  } from "../../contracts/type/RoleId.sol";
11
11
 
12
- import {BundleManager} from "../instance/BundleManager.sol";
12
+ import {BundleSet} from "../instance/BundleSet.sol";
13
13
  import {IAccess} from "../authorization/IAccess.sol";
14
14
  import {Instance} from "../instance/Instance.sol";
15
15
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
@@ -26,7 +26,7 @@ contract InstanceAuthorizationV3
26
26
  string public constant INSTANCE_TARGET_NAME = "Instance";
27
27
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
28
28
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
29
- string public constant BUNDLE_MANAGER_TARGET_NAME = "BundleManager";
29
+ string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
30
30
 
31
31
  string public constant INSTANCE_ROLE_NAME = "InstanceRole";
32
32
  string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
@@ -61,7 +61,7 @@ contract InstanceAuthorizationV3
61
61
  // instance supporting targets
62
62
  _addTarget(INSTANCE_STORE_TARGET_NAME);
63
63
  _addTarget(INSTANCE_ADMIN_TARGET_NAME);
64
- _addTarget(BUNDLE_MANAGER_TARGET_NAME);
64
+ _addTarget(BUNDLE_SET_TARGET_NAME);
65
65
 
66
66
  // service targets relevant to instance
67
67
  _addServiceTargetWithRole(INSTANCE());
@@ -84,22 +84,22 @@ contract InstanceAuthorizationV3
84
84
  _setupInstanceAuthorization();
85
85
  _setupInstanceAdminAuthorization();
86
86
  _setupInstanceStoreAuthorization();
87
- _setupBundleManagerAuthorization();
87
+ _setupBundleSetAuthorization();
88
88
  }
89
89
 
90
90
 
91
- function _setupBundleManagerAuthorization()
91
+ function _setupBundleSetAuthorization()
92
92
  internal
93
93
  {
94
94
  IAccess.FunctionInfo[] storage functions;
95
95
 
96
96
  // authorize bundle service role
97
- functions = _authorizeForTarget(BUNDLE_MANAGER_TARGET_NAME, getServiceRole(BUNDLE()));
98
- _authorize(functions, BundleManager.linkPolicy.selector, "linkPolicy");
99
- _authorize(functions, BundleManager.unlinkPolicy.selector, "unlinkPolicy");
100
- _authorize(functions, BundleManager.add.selector, "add");
101
- _authorize(functions, BundleManager.lock.selector, "lock");
102
- _authorize(functions, BundleManager.unlock.selector, "unlock");
97
+ functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(BUNDLE()));
98
+ _authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
99
+ _authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
100
+ _authorize(functions, BundleSet.add.selector, "add");
101
+ _authorize(functions, BundleSet.lock.selector, "lock");
102
+ _authorize(functions, BundleSet.unlock.selector, "unlock");
103
103
  }
104
104
 
105
105
 
@@ -141,7 +141,9 @@ contract InstanceAuthorizationV3
141
141
  _authorize(functions, InstanceStore.createProduct.selector, "createProduct");
142
142
  _authorize(functions, InstanceStore.updateProduct.selector, "updateProduct");
143
143
  _authorize(functions, InstanceStore.increaseBalance.selector, "increaseBalance");
144
+ _authorize(functions, InstanceStore.decreaseBalance.selector, "decreaseBalance");
144
145
  _authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
146
+ _authorize(functions, InstanceStore.decreaseFees.selector, "decreaseFees");
145
147
 
146
148
  // authorize distribution service role
147
149
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
@@ -6,7 +6,7 @@ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStri
6
6
 
7
7
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
8
  import {Amount} from "../type/Amount.sol";
9
- import {BundleManager} from "./BundleManager.sol";
9
+ import {BundleSet} from "./BundleSet.sol";
10
10
  import {ChainNft} from "../registry/ChainNft.sol";
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {RoleId} from "../type/RoleId.sol";
@@ -54,7 +54,7 @@ contract InstanceService is
54
54
  address internal _masterInstanceAdmin;
55
55
  address internal _masterInstance;
56
56
  address internal _masterInstanceReader;
57
- address internal _masterInstanceBundleManager;
57
+ address internal _masterInstanceBundleSet;
58
58
  address internal _masterInstanceStore;
59
59
 
60
60
 
@@ -94,7 +94,7 @@ contract InstanceService is
94
94
  _;
95
95
  }
96
96
 
97
- function createInstanceClone()
97
+ function createInstance()
98
98
  external
99
99
  returns (
100
100
  Instance clonedInstance,
@@ -118,7 +118,7 @@ contract InstanceService is
118
118
  InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
119
119
 
120
120
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
121
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
121
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
122
122
  InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
123
123
 
124
124
  // clone instance
@@ -126,7 +126,7 @@ contract InstanceService is
126
126
  clonedInstance.initialize(
127
127
  clonedInstanceAdmin,
128
128
  clonedInstanceStore,
129
- clonedBundleManager,
129
+ clonedBundleSet,
130
130
  clonedInstanceReader,
131
131
  getRegistry(),
132
132
  instanceOwner);
@@ -238,7 +238,7 @@ contract InstanceService is
238
238
  {
239
239
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
240
240
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
241
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
241
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
242
242
 
243
243
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
244
244
 
@@ -248,7 +248,7 @@ contract InstanceService is
248
248
  address instanceAdminAddress = address(instanceAdmin);
249
249
  InstanceReader instanceReader = instance.getInstanceReader();
250
250
  address instanceReaderAddress = address(instanceReader);
251
- BundleManager bundleManager = instance.getBundleManager();
251
+ BundleSet bundleManager = instance.getBundleSet();
252
252
  address bundleManagerAddress = address(bundleManager);
253
253
  InstanceStore instanceStore = instance.getInstanceStore();
254
254
  address instanceStoreAddress = address(instanceStore);
@@ -256,11 +256,11 @@ contract InstanceService is
256
256
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
257
257
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
258
258
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
259
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
259
+ if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
260
260
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
261
261
 
262
262
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
263
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
263
+ if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
264
264
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
265
265
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
266
266
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
@@ -269,7 +269,7 @@ contract InstanceService is
269
269
  _masterInstanceAdmin = instanceAdminAddress;
270
270
  _masterInstance = instanceAddress;
271
271
  _masterInstanceReader = instanceReaderAddress;
272
- _masterInstanceBundleManager = bundleManagerAddress;
272
+ _masterInstanceBundleSet = bundleManagerAddress;
273
273
  _masterInstanceStore = instanceStoreAddress;
274
274
 
275
275
  IInstance masterInstance = IInstance(_masterInstance);
@@ -1,13 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Instance} from "./Instance.sol";
5
- import {IVersionable} from "../shared/IVersionable.sol";
6
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
6
  import {InstanceService} from "./InstanceService.sol";
8
- import {Registry} from "../registry/Registry.sol";
9
- import {RegistryService} from "../registry/RegistryService.sol";
10
- import {REGISTRY} from "../type/ObjectType.sol";
11
7
 
12
8
  contract InstanceServiceManager is ProxyManager {
13
9
 
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
13
  import {StateId} from "../type/StateId.sol";
@@ -116,6 +116,7 @@ contract InstanceStore is
116
116
 
117
117
  //--- Distributor -------------------------------------------------------//
118
118
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
119
+ _registerBalanceTarget(distributorNftId);
119
120
  _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
120
121
  }
121
122
 
@@ -10,17 +10,17 @@ import {IRegistry} from "../../registry/IRegistry.sol";
10
10
  import {LibNftIdSet} from "../../type/NftIdSet.sol";
11
11
  import {NftId} from "../../type/NftId.sol";
12
12
 
13
- contract ObjectManager is
13
+ contract ObjectSet is
14
14
  Cloneable
15
15
  {
16
16
 
17
- event LogObjectManagerInitialized(address instance);
17
+ event LogObjectSetInitialized(address instance);
18
18
 
19
- error ErrorObjectManagerNftIdInvalid(NftId instanceNftId);
19
+ error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
20
20
 
21
21
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
22
22
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
23
- IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectManager initialization
23
+ IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectSet initialization
24
24
 
25
25
  /// @dev This initializer needs to be called from the instance itself.
26
26
  function initialize()
@@ -30,7 +30,7 @@ contract ObjectManager is
30
30
  _instance = IInstance(msg.sender);
31
31
  __Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
32
32
 
33
- emit LogObjectManagerInitialized(address(_instance));
33
+ emit LogObjectSetInitialized(address(_instance));
34
34
  }
35
35
 
36
36
  function getInstance() external view returns (IInstance) {
@@ -21,7 +21,6 @@ interface IComponents {
21
21
  bytes data; // will hold component type specific additional info (eg encoded pool info)
22
22
  }
23
23
 
24
-
25
24
  struct ProductInfo {
26
25
  NftId distributionNftId;
27
26
  NftId poolNftId;
@@ -25,7 +25,6 @@ interface IDistribution {
25
25
  DistributorType distributorType;
26
26
  bool active;
27
27
  bytes data;
28
- Amount commissionAmount;
29
28
  uint32 numPoliciesSold;
30
29
  }
31
30
 
@@ -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,17 @@ abstract contract Oracle is
73
71
  return false;
74
72
  }
75
73
 
74
+ function withdrawFees(Amount amount)
75
+ external
76
+ virtual
77
+ override(IInstanceLinkedComponent, InstanceLinkedComponent)
78
+ onlyOwner()
79
+ restricted()
80
+ returns (Amount withdrawnAmount)
81
+ {
82
+ revert ErrorOracleNotImplemented("withdrawFees");
83
+ }
84
+
76
85
 
77
86
  function _initializeOracle(
78
87
  address registry,
@@ -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
 
@@ -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";
@@ -44,6 +46,10 @@ contract BasicPoolAuthorization
44
46
  _authorize(functions, BasicPool.setMaxCapitalAmount.selector, "setMaxCapitalAmount");
45
47
  _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
46
48
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
+
50
+ _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
51
+
52
+ _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
47
53
  }
48
54
  }
49
55
 
@@ -1,37 +1,28 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {IBundle} from "../instance/module/IBundle.sol";
7
+ import {IBundleService} from "./IBundleService.sol";
5
8
  import {IComponents} from "../instance/module/IComponents.sol";
6
9
  import {IComponentService} from "../shared/IComponentService.sol";
7
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegistryService} from "../registry/IRegistryService.sol";
8
12
  import {IInstance} from "../instance/IInstance.sol";
9
13
  import {InstanceStore} from "../instance/InstanceStore.sol";
10
14
  import {IPolicy} from "../instance/module/IPolicy.sol";
11
15
 
12
- import {IVersionable} from "../shared/IVersionable.sol";
13
- import {INftOwnable} from "../shared/INftOwnable.sol";
16
+ import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {BundleSet} from "../instance/BundleSet.sol";
18
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
+ import {Fee} from "../type/Fee.sol";
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
21
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
22
  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
23
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
24
  import {Seconds} from "../type/Seconds.sol";
23
25
  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
26
 
36
27
  string constant BUNDLE_SERVICE_NAME = "BundleService";
37
28
 
@@ -39,8 +30,7 @@ contract BundleService is
39
30
  ComponentVerifyingService,
40
31
  IBundleService
41
32
  {
42
- using NftIdLib for NftId;
43
-
33
+
44
34
  string public constant NAME = "BundleService";
45
35
 
46
36
  address private _registryAddress;
@@ -139,7 +129,7 @@ contract BundleService is
139
129
  AmountLib.zero()); // fee amount
140
130
 
141
131
  // put bundle under bundle managemet
142
- BundleManager bundleManager = instance.getBundleManager();
132
+ BundleSet bundleManager = instance.getBundleSet();
143
133
  bundleManager.add(bundleNftId);
144
134
 
145
135
  // TODO add logging
@@ -197,7 +187,7 @@ contract BundleService is
197
187
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
198
188
 
199
189
  // update set of active bundles
200
- BundleManager bundleManager = instance.getBundleManager();
190
+ BundleSet bundleManager = instance.getBundleSet();
201
191
  bundleManager.lock(bundleNftId);
202
192
 
203
193
  emit LogBundleServiceBundleLocked(bundleNftId);
@@ -214,7 +204,7 @@ contract BundleService is
214
204
  instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
215
205
 
216
206
  // update set of active bundles
217
- BundleManager bundleManager = instance.getBundleManager();
207
+ BundleSet bundleManager = instance.getBundleSet();
218
208
  bundleManager.unlock(bundleNftId);
219
209
 
220
210
  emit LogBundleServiceBundleActivated(bundleNftId);
@@ -233,7 +223,7 @@ contract BundleService is
233
223
  instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
234
224
 
235
225
  // ensure no open policies attached to bundle
236
- BundleManager bundleManager = instance.getBundleManager();
226
+ BundleSet bundleManager = instance.getBundleSet();
237
227
  uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
238
228
  if(openPolicies > 0) {
239
229
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
@@ -271,7 +261,62 @@ contract BundleService is
271
261
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
272
262
  }
273
263
 
274
- instance.getBundleManager().unlinkPolicy(policyNftId);
264
+ instance.getBundleSet().unlinkPolicy(policyNftId);
265
+ }
266
+
267
+ /// @inheritdoc IBundleService
268
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
269
+ public
270
+ virtual
271
+ // TODO: restricted() (once #462 is done)
272
+ returns (Amount withdrawnAmount)
273
+ {
274
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
275
+ InstanceReader reader = instance.getInstanceReader();
276
+
277
+ IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
278
+ address poolWallet = poolInfo.wallet;
279
+
280
+ IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
281
+
282
+ // determine withdrawn amount
283
+ withdrawnAmount = amount;
284
+ if (withdrawnAmount.gte(AmountLib.max())) {
285
+ withdrawnAmount = reader.getFeeAmount(bundleNftId);
286
+ } else {
287
+ if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
288
+ revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
289
+ }
290
+ }
291
+
292
+ if (withdrawnAmount.eqz()) {
293
+ revert ErrorBundleServiceFeesWithdrawAmountIsZero();
294
+ }
295
+
296
+ // check allowance
297
+ IERC20Metadata token = IERC20Metadata(poolInfo.token);
298
+ uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
299
+ if (tokenAllowance < withdrawnAmount.toInt()) {
300
+ revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
301
+ }
302
+
303
+ // decrease fee counters by withdrawnAmount
304
+ {
305
+ InstanceStore store = instance.getInstanceStore();
306
+ // decrease fee amount of the bundle
307
+ _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
308
+ // decrease pool balance
309
+ _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
310
+ }
311
+
312
+ // transfer amount to bundle owner
313
+ {
314
+ address owner = getRegistry().ownerOf(bundleNftId);
315
+ // TODO: centralize token handling (issue #471)
316
+ poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
317
+
318
+ emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
319
+ }
275
320
  }
276
321
 
277
322
  /// @dev links policy to bundle
@@ -283,10 +328,10 @@ contract BundleService is
283
328
 
284
329
  // ensure policy has not yet been activated in a previous tx already
285
330
  if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
286
- revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
331
+ revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
287
332
  }
288
333
 
289
- BundleManager bundleManager = instance.getBundleManager();
334
+ BundleSet bundleManager = instance.getBundleSet();
290
335
  bundleManager.linkPolicy(policyNftId);
291
336
  }
292
337
 
@@ -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,13 @@ interface IBundleService is IService {
26
26
 
27
27
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
28
 
29
+ // error ErrorBundleServiceBundleNotActive(NftId distributorNftId);
30
+ error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+ error ErrorBundleServiceFeesWithdrawAmountIsZero();
32
+ error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
33
+
34
+ event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
35
+
29
36
  /// @dev create a new bundle for the specified attributes
30
37
  /// may only be called by pool service
31
38
  function create(
@@ -103,4 +110,11 @@ interface IBundleService is IService {
103
110
  IInstance instance,
104
111
  NftId policyNftId
105
112
  ) external;
113
+
114
+ /// @dev Withdraw bundle feeds for the given bundle
115
+ /// @param bundleNftId the bundle Nft Id
116
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
117
+ /// @return withdrawnAmount the effective withdrawn amount
118
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
119
+
106
120
  }
@@ -46,6 +46,12 @@ interface IPoolComponent is IInstanceLinkedComponent {
46
46
  view
47
47
  returns (bool isMatching);
48
48
 
49
+ /// @dev Withdraw bundle feeds for the given bundle
50
+ /// @param bundleNftId the bundle Nft Id
51
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
52
+ /// @return withdrawnAmount the effective withdrawn amount
53
+ function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
54
+
49
55
  /// @dev returns initial pool specific infos for this pool
50
56
  function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
51
57
 
@@ -91,6 +91,18 @@ abstract contract Pool is
91
91
  onlyOwner()
92
92
  {
93
93
  _getPoolStorage()._componentService.registerPool();
94
+ _approveTokenHandler(type(uint256).max);
95
+ }
96
+
97
+ /// @inheritdoc IPoolComponent
98
+ function withdrawBundleFees(NftId bundleNftId, Amount amount)
99
+ external
100
+ virtual
101
+ restricted()
102
+ onlyBundleOwner(bundleNftId)
103
+ returns (Amount withdrawnAmount)
104
+ {
105
+ return _withdrawBundleFees(bundleNftId, amount);
94
106
  }
95
107
 
96
108
 
@@ -296,12 +308,17 @@ abstract contract Pool is
296
308
  // TODO add logging
297
309
  }
298
310
 
299
-
300
311
  // TODO remove function once this is no longer used to produce contract locations on the fly ...
301
312
  function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
302
313
  return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
303
314
  }
304
315
 
316
+ function _withdrawBundleFees(NftId bundleNftId, Amount amount)
317
+ internal
318
+ returns (Amount withdrawnAmount)
319
+ {
320
+ return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
321
+ }
305
322
 
306
323
  function _getPoolStorage() private pure returns (PoolStorage storage $) {
307
324
  assembly {