@etherisc/gif-next 0.0.2-a4051e9-983 → 0.0.2-a49c197-934

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 (440) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +103 -55
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +37 -5
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +106 -186
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +166 -104
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -51
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +102 -165
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -295
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +17 -17
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +137 -129
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +131 -56
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +240 -93
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  92. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  93. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  94. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  98. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +74 -154
  101. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  103. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +44 -58
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  108. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +58 -90
  110. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
  112. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
  114. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +57 -104
  116. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  118. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  119. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
  120. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
  122. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  123. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
  124. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  125. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -97
  126. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +104 -78
  128. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  129. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
  130. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
  132. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
  134. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  135. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +105 -63
  136. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
  138. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  139. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
  140. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  141. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  142. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
  144. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
  146. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  147. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +61 -10
  148. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  149. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +143 -3
  150. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  151. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
  152. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +27 -3
  154. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  155. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
  156. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
  158. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +158 -140
  160. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
  162. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/PricingService.sol/PricingService.json +99 -76
  164. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
  166. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  167. package/artifacts/contracts/product/Product.sol/Product.json +163 -175
  168. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  169. package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
  170. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -24
  172. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  174. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +31 -2
  176. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  177. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  178. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  179. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  180. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  181. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/Registry.sol/Registry.json +69 -40
  183. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  184. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
  185. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  187. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  188. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
  189. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  190. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
  191. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  193. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +310 -52
  195. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  197. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +3 -3
  199. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  200. package/artifacts/contracts/shared/Component.sol/Component.json +57 -75
  201. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +250 -421
  203. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
  205. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  207. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  208. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
  209. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  210. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  211. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  213. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  214. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  215. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  216. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +44 -44
  217. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  218. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +134 -248
  219. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  220. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
  221. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  223. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  224. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  227. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  230. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  231. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
  233. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  236. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  237. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  238. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  239. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  240. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  241. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  243. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  244. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  245. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  246. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  247. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  248. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  249. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  250. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  251. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  252. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  253. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  254. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
  255. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  256. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
  257. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  258. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
  259. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  260. package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
  261. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  262. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  263. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  264. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +58 -46
  265. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  266. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  267. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  268. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
  269. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  270. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
  271. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
  273. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  274. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
  275. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  276. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
  278. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  281. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  283. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  285. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  286. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  287. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  288. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  289. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  291. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  292. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  293. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  295. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  297. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  299. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  301. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +62 -5
  303. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
  305. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  319. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  321. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  322. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  323. package/contracts/accounting/AccountingService.sol +262 -0
  324. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  325. package/contracts/accounting/IAccountingService.sol +45 -0
  326. package/contracts/authorization/AccessAdmin.sol +136 -73
  327. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  328. package/contracts/authorization/IAccessAdmin.sol +6 -3
  329. package/contracts/distribution/BasicDistribution.sol +6 -6
  330. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  331. package/contracts/distribution/Distribution.sol +32 -30
  332. package/contracts/distribution/DistributionService.sol +35 -33
  333. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  334. package/contracts/distribution/IDistributionService.sol +5 -6
  335. package/contracts/examples/fire/FirePool.sol +25 -10
  336. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -0
  337. package/contracts/examples/fire/FireProduct.sol +31 -11
  338. package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
  339. package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
  340. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  341. package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
  342. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  343. package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
  344. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  345. package/contracts/instance/BundleSet.sol +38 -34
  346. package/contracts/instance/IInstance.sol +8 -8
  347. package/contracts/instance/IInstanceService.sol +9 -9
  348. package/contracts/instance/Instance.sol +20 -17
  349. package/contracts/instance/InstanceAdmin.sol +98 -49
  350. package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
  351. package/contracts/instance/InstanceReader.sol +108 -7
  352. package/contracts/instance/InstanceService.sol +73 -80
  353. package/contracts/instance/InstanceServiceManager.sol +1 -1
  354. package/contracts/instance/InstanceStore.sol +13 -2
  355. package/contracts/instance/RiskSet.sol +117 -0
  356. package/contracts/instance/base/ObjectCounter.sol +1 -2
  357. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  358. package/contracts/instance/base/ObjectSet.sol +24 -25
  359. package/contracts/instance/module/IComponents.sol +4 -4
  360. package/contracts/instance/module/IPolicy.sol +2 -1
  361. package/contracts/instance/module/IRisk.sol +3 -0
  362. package/contracts/oracle/Oracle.sol +1 -1
  363. package/contracts/oracle/OracleService.sol +90 -72
  364. package/contracts/oracle/OracleServiceManager.sol +1 -1
  365. package/contracts/pool/BasicPool.sol +24 -3
  366. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  367. package/contracts/pool/BundleService.sol +49 -104
  368. package/contracts/pool/BundleServiceManager.sol +1 -1
  369. package/contracts/pool/IBundleService.sol +2 -24
  370. package/contracts/pool/IPoolComponent.sol +1 -7
  371. package/contracts/pool/IPoolService.sol +12 -26
  372. package/contracts/pool/Pool.sol +112 -102
  373. package/contracts/pool/PoolService.sol +171 -100
  374. package/contracts/pool/PoolServiceManager.sol +1 -1
  375. package/contracts/product/ApplicationService.sol +23 -21
  376. package/contracts/product/ApplicationServiceManager.sol +1 -1
  377. package/contracts/product/BasicProduct.sol +9 -11
  378. package/contracts/product/BasicProductAuthorization.sol +1 -2
  379. package/contracts/product/ClaimService.sol +155 -51
  380. package/contracts/product/ClaimServiceManager.sol +1 -1
  381. package/contracts/product/IApplicationService.sol +5 -2
  382. package/contracts/product/IClaimService.sol +13 -0
  383. package/contracts/product/IPolicyService.sol +17 -7
  384. package/contracts/product/IProductComponent.sol +4 -1
  385. package/contracts/product/PolicyService.sol +248 -195
  386. package/contracts/product/PolicyServiceManager.sol +1 -1
  387. package/contracts/product/PricingService.sol +27 -20
  388. package/contracts/product/PricingServiceManager.sol +3 -3
  389. package/contracts/product/Product.sol +47 -39
  390. package/contracts/product/RiskService.sol +78 -23
  391. package/contracts/product/RiskServiceManager.sol +1 -1
  392. package/contracts/registry/ChainNft.sol +4 -2
  393. package/contracts/registry/IRegistry.sol +8 -15
  394. package/contracts/registry/IRelease.sol +26 -0
  395. package/contracts/registry/Registry.sol +12 -3
  396. package/contracts/registry/RegistryAdmin.sol +121 -225
  397. package/contracts/registry/RegistryService.sol +3 -3
  398. package/contracts/registry/RegistryServiceManager.sol +1 -1
  399. package/contracts/registry/ReleaseAdmin.sol +245 -0
  400. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  401. package/contracts/registry/ReleaseRegistry.sol +129 -119
  402. package/contracts/registry/ServiceAuthorizationV3.sol +88 -40
  403. package/contracts/registry/TokenRegistry.sol +5 -7
  404. package/contracts/shared/Component.sol +59 -98
  405. package/contracts/shared/ComponentService.sol +206 -241
  406. package/contracts/shared/ComponentServiceManager.sol +1 -1
  407. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  408. package/contracts/shared/ContractLib.sol +223 -9
  409. package/contracts/shared/IComponent.sol +4 -17
  410. package/contracts/shared/IComponentService.sol +20 -24
  411. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  412. package/contracts/shared/IRegisterable.sol +15 -4
  413. package/contracts/shared/IService.sol +3 -5
  414. package/contracts/shared/InstanceLinkedComponent.sol +2 -18
  415. package/contracts/shared/NftOwnable.sol +4 -4
  416. package/contracts/shared/PolicyHolder.sol +1 -1
  417. package/contracts/shared/Registerable.sol +44 -20
  418. package/contracts/shared/RegistryLinked.sol +7 -13
  419. package/contracts/shared/Service.sol +8 -27
  420. package/contracts/shared/TokenHandler.sol +316 -66
  421. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  422. package/contracts/staking/IStaking.sol +9 -4
  423. package/contracts/staking/Staking.sol +62 -33
  424. package/contracts/staking/StakingService.sol +55 -9
  425. package/contracts/type/Key32.sol +2 -2
  426. package/contracts/type/Key32Set.sol +62 -0
  427. package/contracts/type/NftId.sol +6 -0
  428. package/contracts/type/ObjectType.sol +32 -18
  429. package/contracts/type/RiskId.sol +23 -6
  430. package/contracts/type/RoleId.sol +5 -2
  431. package/contracts/type/Timestamp.sol +0 -5
  432. package/contracts/type/UFixed.sol +9 -119
  433. package/contracts/type/Version.sol +15 -5
  434. package/contracts/upgradeability/ProxyManager.sol +1 -1
  435. package/package.json +3 -3
  436. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  437. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  438. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  439. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  440. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
4
5
  import {IRegistry} from "../registry/IRegistry.sol";
5
6
  import {IInstance} from "../instance/IInstance.sol";
6
7
  import {IComponentService} from "../shared/IComponentService.sol";
@@ -13,7 +14,7 @@ import {IPolicy} from "../instance/module/IPolicy.sol";
13
14
  import {Amount, AmountLib} from "../type/Amount.sol";
14
15
  import {NftId, NftIdLib} from "../type/NftId.sol";
15
16
  import {KEEP_STATE} from "../type/StateId.sol";
16
- import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
17
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
17
18
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
18
19
  import {IDistributionService} from "./IDistributionService.sol";
19
20
  import {UFixed} from "../type/UFixed.sol";
@@ -28,6 +29,7 @@ contract DistributionService is
28
29
  ComponentVerifyingService,
29
30
  IDistributionService
30
31
  {
32
+ IAccountingService private _accountingService;
31
33
  IComponentService private _componentService;
32
34
  IInstanceService private _instanceService;
33
35
  IRegistryService private _registryService;
@@ -41,12 +43,13 @@ contract DistributionService is
41
43
  initializer()
42
44
  {
43
45
  (
44
- address registryAddress,
45
- address authority
46
+ address authority,
47
+ address registry
46
48
  ) = abi.decode(data, (address, address));
47
49
 
48
- _initializeService(registryAddress, authority, owner);
50
+ __Service_init(authority, registry, owner);
49
51
 
52
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
50
53
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
51
54
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
52
55
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
@@ -70,14 +73,14 @@ contract DistributionService is
70
73
  returns (DistributorType distributorType)
71
74
  {
72
75
  (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
73
- InstanceReader instanceReader = instance.getInstanceReader();
76
+ // InstanceReader instanceReader = instance.getInstanceReader();
74
77
 
75
78
  {
76
79
  NftId productNftId = _getProductNftId(distributionNftId);
77
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
80
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
78
81
 
79
- UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
80
- UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
82
+ UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
83
+ UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
81
84
 
82
85
  if (variableFeesPartsTotal > variableDistributionFees) {
83
86
  revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
@@ -136,21 +139,20 @@ contract DistributionService is
136
139
  instance.getInstanceStore().createDistributor(distributorNftId, info);
137
140
  }
138
141
 
139
- // function updateDistributorType(
140
- // NftId distributorNftId,
141
- // DistributorType distributorType,
142
- // bytes memory data
143
- // )
144
- // external
145
- // virtual
146
- // {
147
- // (, IInstance instance) = _getAndVerifyCallingDistribution();
148
- // InstanceReader instanceReader = instance.getInstanceReader();
149
- // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
150
- // distributorInfo.distributorType = distributorType;
151
- // distributorInfo.data = data;
152
- // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
153
- // }
142
+ function changeDistributorType(
143
+ NftId distributorNftId,
144
+ DistributorType distributorType,
145
+ bytes memory data
146
+ )
147
+ external
148
+ virtual
149
+ {
150
+ (,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
151
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
152
+ distributorInfo.distributorType = distributorType;
153
+ distributorInfo.data = data;
154
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
155
+ }
154
156
 
155
157
 
156
158
  function createReferral(
@@ -171,7 +173,7 @@ contract DistributionService is
171
173
  if (bytes(code).length == 0) {
172
174
  revert ErrorIDistributionServiceInvalidReferral(code);
173
175
  }
174
- if (expiryAt.eqz()) {
176
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
175
177
  revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
176
178
  }
177
179
 
@@ -223,7 +225,7 @@ contract DistributionService is
223
225
  if (referralIsValid(distributionNftId, referralId)) {
224
226
  IRegistry registry = getRegistry();
225
227
  IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
226
- IInstance instance = _getInstanceForComponent(registry, distributionInfo);
228
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
227
229
 
228
230
  // update book keeping for referral info
229
231
  IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
@@ -244,7 +246,7 @@ contract DistributionService is
244
246
  {
245
247
  IRegistry registry = getRegistry();
246
248
  IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
247
- IInstance instance = _getInstanceForComponent(registry, distributionInfo);
249
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
248
250
  InstanceReader reader = instance.getInstanceReader();
249
251
  InstanceStore store = instance.getInstanceStore();
250
252
 
@@ -256,12 +258,12 @@ contract DistributionService is
256
258
 
257
259
  // increase distribution balance by commission amount and distribution owner fee
258
260
  Amount commissionAmount = premium.commissionAmount;
259
- _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
261
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
260
262
 
261
263
  // update book keeping for referral info
262
264
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
263
265
 
264
- _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
266
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
265
267
 
266
268
  // update book keeping for distributor info
267
269
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
@@ -269,7 +271,7 @@ contract DistributionService is
269
271
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
270
272
  } else {
271
273
  // increase distribution balance by distribution owner fee
272
- _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
274
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
273
275
  }
274
276
  }
275
277
 
@@ -285,7 +287,7 @@ contract DistributionService is
285
287
  InstanceReader reader = instance.getInstanceReader();
286
288
 
287
289
  IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
288
- address distributionWallet = distributionInfo.wallet;
290
+ address distributionWallet = distributionInfo.tokenHandler.getWallet();
289
291
 
290
292
  Amount commissionAmount = reader.getFeeAmount(distributorNftId);
291
293
 
@@ -303,9 +305,9 @@ contract DistributionService is
303
305
  {
304
306
  InstanceStore store = instance.getInstanceStore();
305
307
  // decrease fee counter for distribution balance
306
- _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
308
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
307
309
  // decrease fee counter for distributor fee
308
- _componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
310
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
309
311
  }
310
312
 
311
313
  // transfer amount to distributor
@@ -328,7 +330,7 @@ contract DistributionService is
328
330
 
329
331
  IRegistry registry = getRegistry();
330
332
  IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
331
- IInstance instance = _getInstanceForComponent(registry, distributionInfo);
333
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
332
334
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
333
335
 
334
336
  if (info.distributorNftId.eqz()) {
@@ -17,7 +17,7 @@ contract DistributionServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  DistributionService svc = new DistributionService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -56,12 +56,11 @@ interface IDistributionService is IService {
56
56
  bytes memory data
57
57
  ) external returns (NftId distributorNftId);
58
58
 
59
- // TODO re-enable and reorganize (service contract too large)
60
- // function updateDistributorType(
61
- // NftId distributorNftId,
62
- // DistributorType distributorType,
63
- // bytes memory data
64
- // ) external;
59
+ function changeDistributorType(
60
+ NftId distributorNftId,
61
+ DistributorType distributorType,
62
+ bytes memory data
63
+ ) external;
65
64
 
66
65
  function createReferral(
67
66
  NftId distributorNftId,
@@ -1,22 +1,23 @@
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 {Amount, AmountLib} from "../../type/Amount.sol";
5
7
  import {BasicPool} from "../../pool/BasicPool.sol";
6
- import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
8
  import {Fee} from "../../type/Fee.sol";
8
9
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
10
+ import {IComponents} from "../../instance/module/IComponents.sol";
9
11
  import {NftId} from "../../type/NftId.sol";
10
12
  import {Seconds} from "../../type/Timestamp.sol";
11
- import {UFixed} from "../../type/UFixed.sol";
13
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
12
14
 
13
15
  contract FirePool is
14
16
  BasicPool
15
- {
16
-
17
+ {
17
18
  constructor(
18
19
  address registry,
19
- NftId instanceNftId,
20
+ NftId fireProductNftId,
20
21
  string memory componentName,
21
22
  address token,
22
23
  IAuthorization authorization
@@ -25,18 +26,28 @@ contract FirePool is
25
26
  address initialOwner = msg.sender;
26
27
  _intialize(
27
28
  registry,
28
- instanceNftId,
29
+ fireProductNftId,
29
30
  componentName,
30
31
  token,
32
+ IComponents.PoolInfo({
33
+ maxBalanceAmount: AmountLib.max(),
34
+ isInterceptingBundleTransfers: false,
35
+ isProcessingConfirmedClaims: false,
36
+ isExternallyManaged: false,
37
+ isVerifyingApplications: false,
38
+ collateralizationLevel: UFixedLib.one(),
39
+ retentionLevel: UFixedLib.one()
40
+ }),
31
41
  authorization,
32
42
  initialOwner);
33
43
  }
34
44
 
35
45
  function _intialize(
36
46
  address registry,
37
- NftId instanceNftId,
47
+ NftId fireProductNftId,
38
48
  string memory componentName,
39
49
  address token,
50
+ IComponents.PoolInfo memory poolInfo,
40
51
  IAuthorization authorization,
41
52
  address initialOwner
42
53
  )
@@ -45,10 +56,11 @@ contract FirePool is
45
56
  {
46
57
  _initializeBasicPool(
47
58
  registry,
48
- instanceNftId,
49
- authorization,
50
- token,
59
+ fireProductNftId,
51
60
  componentName,
61
+ token,
62
+ poolInfo,
63
+ authorization,
52
64
  initialOwner);
53
65
  }
54
66
 
@@ -72,4 +84,7 @@ contract FirePool is
72
84
  netStakedAmount = _stake(bundleNftId, initialAmount);
73
85
  }
74
86
 
87
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
88
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
89
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
75
90
  }
@@ -27,6 +27,7 @@ contract FirePoolAuthorization
27
27
  // authorize public role (open access to any account, only allows to lock target)
28
28
  functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
29
29
  // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.approveTokenHandler.selector, "approveTokenHandler");
30
31
  _authorize(functions, FirePool.createBundle.selector, "createBundle");
31
32
  }
32
33
 
@@ -1,14 +1,18 @@
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 {ACTIVE, PAUSED} from "../../type/StateId.sol";
5
7
  import {Amount, AmountLib} from "../../type/Amount.sol";
6
8
  import {BasicProduct} from "../../product/BasicProduct.sol";
7
9
  import {ClaimId} from "../../type/ClaimId.sol";
8
10
  import {DamageLevel, DAMAGE_SMALL, DAMAGE_MEDIUM, DAMAGE_LARGE} from "./DamageLevel.sol";
11
+ import {FeeLib} from "../../type/Fee.sol";
9
12
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
13
+ import {IComponents} from "../../instance/module/IComponents.sol";
10
14
  import {IPolicy} from "../../instance/module/IPolicy.sol";
11
- import {NftId} from "../../type/NftId.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
12
16
  import {PayoutId} from "../../type/PayoutId.sol";
13
17
  import {POLICY, BUNDLE} from "../../type/ObjectType.sol";
14
18
  import {ReferralLib} from "../../type/Referral.sol";
@@ -65,7 +69,6 @@ contract FireProduct is
65
69
  NftId instanceNftid,
66
70
  string memory componentName,
67
71
  address token,
68
- address pool,
69
72
  IAuthorization authorization
70
73
  )
71
74
  {
@@ -76,17 +79,15 @@ contract FireProduct is
76
79
  instanceNftid,
77
80
  componentName,
78
81
  token,
79
- pool,
80
82
  authorization,
81
83
  initialOwner);
82
84
  }
83
85
 
84
86
  function _initialize(
85
87
  address registry,
86
- NftId instanceNftid,
88
+ NftId instanceNftId,
87
89
  string memory componentName,
88
90
  address token,
89
- address pool,
90
91
  IAuthorization authorization,
91
92
  address initialOwner
92
93
  )
@@ -95,14 +96,30 @@ contract FireProduct is
95
96
  {
96
97
  _initializeBasicProduct(
97
98
  registry,
98
- instanceNftid,
99
- authorization,
100
- initialOwner,
99
+ instanceNftId,
101
100
  componentName,
102
101
  token,
103
- false, // is interceptor
104
- false, // has distribution
105
- 0); // number of oracles
102
+ IComponents.ProductInfo({
103
+ isProcessingFundedClaims: false,
104
+ isInterceptingPolicyTransfers: false,
105
+ hasDistribution: false,
106
+ expectedNumberOfOracles: 0,
107
+ numberOfOracles: 0,
108
+ poolNftId: NftIdLib.zero(),
109
+ distributionNftId: NftIdLib.zero(),
110
+ oracleNftId: new NftId[](0)
111
+ }),
112
+ IComponents.FeeInfo({
113
+ productFee: FeeLib.zero(),
114
+ processingFee: FeeLib.zero(),
115
+ distributionFee: FeeLib.zero(),
116
+ minDistributionOwnerFee: FeeLib.zero(),
117
+ poolFee: FeeLib.zero(),
118
+ stakingFee: FeeLib.zero(),
119
+ performanceFee: FeeLib.zero()
120
+ }),
121
+ authorization,
122
+ initialOwner); // number of oracles
106
123
  }
107
124
 
108
125
  function cities() public view returns (uint256) {
@@ -415,4 +432,7 @@ contract FireProduct is
415
432
  }
416
433
  }
417
434
 
435
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
436
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
437
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
418
438
  }
@@ -25,6 +25,7 @@ contract FireProductAuthorization
25
25
  // authorize public role (open access to any account, only allows to lock target)
26
26
  functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
27
27
  // fully public functions
28
+ _authorize(functions, FireProduct.approveTokenHandler.selector, "approveTokenHandler");
28
29
  _authorize(functions, FireProduct.createApplication.selector, "createApplication");
29
30
 
30
31
  // only owner
@@ -1,6 +1,9 @@
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
+
6
+ import {Amount} from "../../type/Amount.sol";
4
7
  import {BasicDistribution} from "../../distribution/BasicDistribution.sol";
5
8
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
6
9
  import {NftId} from "../../type/NftId.sol";
@@ -47,4 +50,8 @@ contract SimpleDistribution is
47
50
  name,
48
51
  token);
49
52
  }
53
+
54
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
55
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
56
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
50
57
  }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicDistributionAuthorization} from "../../distribution/BasicDistributionAuthorization.sol";
5
+ import {IAccess} from "../../authorization/IAccess.sol";
6
+ import {PUBLIC_ROLE} from "../../type/RoleId.sol";
7
+ import {SimpleDistribution} from "./SimpleDistribution.sol";
8
+
9
+ contract SimpleDistributionAuthorization
10
+ is BasicDistributionAuthorization
11
+ {
12
+ constructor(string memory componentName)
13
+ BasicDistributionAuthorization(componentName)
14
+ {}
15
+
16
+ function _setupTargetAuthorizations()
17
+ internal
18
+ virtual override
19
+ {
20
+ super._setupTargetAuthorizations();
21
+
22
+ // authorize public role (open access to any account, only allows to lock target)
23
+ IAccess.FunctionInfo[] storage functions;
24
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
25
+ _authorize(functions, SimpleDistribution.approveTokenHandler.selector, "approveTokenHandler");
26
+ _authorize(functions, SimpleDistribution.setWallet.selector, "setWallet");
27
+ }
28
+ }
@@ -1,11 +1,14 @@
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 {Amount, AmountLib} from "../../type/Amount.sol";
5
7
  import {BasicPool} from "../../pool/BasicPool.sol";
6
8
  import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
9
  import {Fee} from "../../type/Fee.sol";
8
10
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
11
+ import {IComponents} from "../../instance/module/IComponents.sol";
9
12
  import {NftId} from "../../type/NftId.sol";
10
13
  import {Seconds} from "../../type/Timestamp.sol";
11
14
  import {UFixed} from "../../type/UFixed.sol";
@@ -18,6 +21,7 @@ contract SimplePool is
18
21
  address registry,
19
22
  NftId productNftId,
20
23
  address token,
24
+ IComponents.PoolInfo memory poolInfo,
21
25
  IAuthorization authorization,
22
26
  address initialOwner
23
27
  )
@@ -26,15 +30,18 @@ contract SimplePool is
26
30
  registry,
27
31
  productNftId,
28
32
  token,
33
+ poolInfo,
29
34
  authorization,
30
35
  initialOwner
31
36
  );
32
37
  }
33
38
 
39
+
34
40
  function initialize(
35
41
  address registry,
36
42
  NftId productNftId,
37
43
  address token,
44
+ IComponents.PoolInfo memory poolInfo,
38
45
  IAuthorization authorization,
39
46
  address initialOwner
40
47
  )
@@ -45,12 +52,14 @@ contract SimplePool is
45
52
  _initializeBasicPool(
46
53
  registry,
47
54
  productNftId,
48
- authorization,
49
- token,
50
55
  "SimplePool",
56
+ token,
57
+ poolInfo,
58
+ authorization,
51
59
  initialOwner);
52
60
  }
53
61
 
62
+
54
63
  function createBundle(
55
64
  Fee memory fee,
56
65
  uint256 initialAmount,
@@ -73,4 +82,26 @@ contract SimplePool is
73
82
  netStakedAmountInt = netStakedAmount.toInt();
74
83
  }
75
84
 
85
+
86
+ function fundPoolWallet(
87
+ Amount amount
88
+ )
89
+ external
90
+ {
91
+ _fundPoolWallet(amount);
92
+ }
93
+
94
+
95
+ function defundPoolWallet(
96
+ Amount amount
97
+ )
98
+ external
99
+ {
100
+ _defundPoolWallet(amount);
101
+ }
102
+
103
+
104
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
105
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
106
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
76
107
  }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
5
+ import {IAccess} from "../../authorization/IAccess.sol";
6
+ import {PUBLIC_ROLE} from "../../type/RoleId.sol";
7
+ import {SimplePool} from "./SimplePool.sol";
8
+
9
+ contract SimplePoolAuthorization
10
+ is BasicPoolAuthorization
11
+ {
12
+ constructor(string memory poolName)
13
+ BasicPoolAuthorization(poolName)
14
+ {}
15
+
16
+ function _setupTargetAuthorizations()
17
+ internal
18
+ virtual override
19
+ {
20
+ super._setupTargetAuthorizations();
21
+
22
+ // authorize public role (open access to any account, only allows to lock target)
23
+ IAccess.FunctionInfo[] storage functions;
24
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
25
+ _authorize(functions, SimplePool.approveTokenHandler.selector, "approveTokenHandler");
26
+ _authorize(functions, SimplePool.setWallet.selector, "setWallet");
27
+ }
28
+ }