@etherisc/gif-next 0.0.2-9ed3c41-176 → 0.0.2-9f51324-299

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 (548) hide show
  1. package/README.md +100 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -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 +496 -255
  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/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -0
  14. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  16. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +277 -20
  18. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +395 -203
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +143 -19
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +197 -477
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +265 -31
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +119 -380
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +510 -308
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +185 -119
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +123 -194
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +318 -90
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1461 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +644 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2018 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +644 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1404 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1152 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1628 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2405 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +236 -39
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +144 -93
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +256 -123
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +737 -327
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +209 -94
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1080 -357
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +172 -278
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -106
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +921 -728
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +133 -350
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +247 -33
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +117 -136
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +109 -318
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +169 -190
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +140 -98
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +175 -421
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +265 -31
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -235
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +183 -105
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +212 -35
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -212
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -308
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -392
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +472 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +705 -552
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +189 -107
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +188 -180
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +122 -100
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +276 -435
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +265 -31
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +431 -234
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +158 -124
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -229
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +465 -307
  170. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +727 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +155 -109
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +244 -329
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +126 -140
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  179. package/artifacts/contracts/product/Product.sol/Product.json +268 -427
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +342 -42
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  192. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  194. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/Registry.sol/Registry.json +548 -103
  196. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +640 -368
  198. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +104 -90
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -0
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +431 -253
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  211. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  214. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Component.sol/Component.json +67 -277
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +538 -538
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +153 -121
  220. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +661 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +80 -100
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -252
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +106 -136
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -318
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  267. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  268. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +196 -143
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +155 -23
  279. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  280. package/artifacts/contracts/staking/Staking.sol/Staking.json +292 -393
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  282. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +142 -103
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +41 -73
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +224 -171
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -95
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +209 -149
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  296. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +94 -48
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  336. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  339. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +109 -35
  341. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  343. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  345. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  346. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  347. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  349. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  351. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  352. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  353. package/contracts/accounting/AccountingService.sol +261 -0
  354. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  355. package/contracts/accounting/IAccountingService.sol +45 -0
  356. package/contracts/authorization/AccessAdmin.sol +338 -225
  357. package/contracts/authorization/AccessAdminLib.sol +183 -0
  358. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  359. package/contracts/authorization/Authorization.sol +350 -203
  360. package/contracts/authorization/IAccess.sol +13 -4
  361. package/contracts/authorization/IAccessAdmin.sol +69 -35
  362. package/contracts/authorization/IAuthorization.sol +33 -7
  363. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  364. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  365. package/contracts/distribution/BasicDistribution.sol +20 -28
  366. package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
  367. package/contracts/distribution/Distribution.sol +41 -80
  368. package/contracts/distribution/DistributionService.sol +228 -130
  369. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  370. package/contracts/distribution/IDistributionComponent.sol +9 -14
  371. package/contracts/distribution/IDistributionService.sol +40 -22
  372. package/contracts/examples/fire/DamageLevel.sol +59 -0
  373. package/contracts/examples/fire/FirePool.sol +86 -0
  374. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  375. package/contracts/examples/fire/FireProduct.sol +433 -0
  376. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  377. package/contracts/examples/fire/FireUSD.sol +26 -0
  378. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  379. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  380. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  381. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  382. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleProduct.sol +373 -0
  384. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  385. package/contracts/instance/BundleSet.sol +42 -38
  386. package/contracts/instance/IInstance.sol +64 -44
  387. package/contracts/instance/IInstanceService.sol +27 -31
  388. package/contracts/instance/Instance.sol +120 -70
  389. package/contracts/instance/InstanceAdmin.sol +287 -103
  390. package/contracts/instance/InstanceAuthorizationV3.sol +92 -59
  391. package/contracts/instance/InstanceReader.sol +288 -43
  392. package/contracts/instance/InstanceService.sol +207 -191
  393. package/contracts/instance/InstanceServiceManager.sol +8 -13
  394. package/contracts/instance/InstanceStore.sol +24 -2
  395. package/contracts/instance/RiskSet.sol +118 -0
  396. package/contracts/instance/base/BalanceStore.sol +3 -5
  397. package/contracts/instance/base/ObjectCounter.sol +1 -2
  398. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  399. package/contracts/instance/base/ObjectSet.sol +31 -33
  400. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  401. package/contracts/instance/module/IBundle.sol +6 -5
  402. package/contracts/instance/module/IComponents.sol +30 -20
  403. package/contracts/instance/module/IDistribution.sol +21 -9
  404. package/contracts/instance/module/IPolicy.sol +50 -29
  405. package/contracts/instance/module/IRisk.sol +5 -0
  406. package/contracts/mock/Dip.sol +1 -1
  407. package/contracts/oracle/BasicOracle.sol +1 -4
  408. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  409. package/contracts/oracle/IOracle.sol +9 -4
  410. package/contracts/oracle/IOracleComponent.sol +2 -1
  411. package/contracts/oracle/IOracleService.sol +2 -1
  412. package/contracts/oracle/Oracle.sol +21 -24
  413. package/contracts/oracle/OracleService.sol +117 -85
  414. package/contracts/oracle/OracleServiceManager.sol +8 -11
  415. package/contracts/pool/BasicPool.sol +37 -28
  416. package/contracts/pool/BasicPoolAuthorization.sol +36 -9
  417. package/contracts/pool/BundleService.sol +205 -105
  418. package/contracts/pool/BundleServiceManager.sol +8 -11
  419. package/contracts/pool/IBundleService.sol +31 -22
  420. package/contracts/pool/IPoolComponent.sol +20 -10
  421. package/contracts/pool/IPoolService.sol +90 -75
  422. package/contracts/pool/Pool.sol +145 -113
  423. package/contracts/pool/PoolLib.sol +309 -0
  424. package/contracts/pool/PoolService.sol +391 -255
  425. package/contracts/pool/PoolServiceManager.sol +6 -9
  426. package/contracts/product/ApplicationService.sol +127 -81
  427. package/contracts/product/ApplicationServiceManager.sol +6 -6
  428. package/contracts/product/BasicProduct.sol +12 -45
  429. package/contracts/product/BasicProductAuthorization.sol +25 -9
  430. package/contracts/product/ClaimService.sol +373 -175
  431. package/contracts/product/ClaimServiceManager.sol +6 -6
  432. package/contracts/product/IApplicationService.sol +9 -2
  433. package/contracts/product/IClaimService.sol +44 -8
  434. package/contracts/product/IPolicyService.sol +53 -36
  435. package/contracts/product/IPricingService.sol +11 -10
  436. package/contracts/product/IProductComponent.sol +28 -5
  437. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  438. package/contracts/product/PolicyService.sol +436 -271
  439. package/contracts/product/PolicyServiceLib.sol +119 -0
  440. package/contracts/product/PolicyServiceManager.sol +6 -9
  441. package/contracts/product/PricingService.sol +69 -60
  442. package/contracts/product/PricingServiceManager.sol +6 -9
  443. package/contracts/product/Product.sol +168 -93
  444. package/contracts/product/RiskService.sol +154 -0
  445. package/contracts/product/RiskServiceManager.sol +39 -0
  446. package/contracts/registry/ChainNft.sol +72 -40
  447. package/contracts/registry/IRegistry.sol +64 -28
  448. package/contracts/registry/IRegistryService.sol +5 -12
  449. package/contracts/registry/IRelease.sol +29 -0
  450. package/contracts/registry/ITransferInterceptor.sol +1 -2
  451. package/contracts/registry/Registry.sol +357 -203
  452. package/contracts/registry/RegistryAdmin.sol +162 -269
  453. package/contracts/registry/RegistryAuthorization.sol +267 -0
  454. package/contracts/registry/RegistryService.sol +41 -66
  455. package/contracts/registry/RegistryServiceManager.sol +5 -5
  456. package/contracts/registry/ReleaseAdmin.sol +253 -0
  457. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  458. package/contracts/registry/ReleaseRegistry.sol +272 -242
  459. package/contracts/registry/ServiceAuthorizationV3.sol +184 -52
  460. package/contracts/registry/TokenRegistry.sol +10 -9
  461. package/contracts/shared/Component.sol +65 -136
  462. package/contracts/shared/ComponentService.sol +423 -343
  463. package/contracts/shared/ComponentServiceManager.sol +10 -7
  464. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  465. package/contracts/shared/ContractLib.sol +347 -0
  466. package/contracts/shared/IComponent.sol +5 -17
  467. package/contracts/shared/IComponentService.sol +49 -41
  468. package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
  469. package/contracts/shared/ILifecycle.sol +3 -1
  470. package/contracts/shared/INftOwnable.sol +2 -0
  471. package/contracts/shared/IPolicyHolder.sol +12 -22
  472. package/contracts/shared/IRegisterable.sol +23 -1
  473. package/contracts/shared/IService.sol +4 -6
  474. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  475. package/contracts/shared/InstanceLinkedComponent.sol +80 -37
  476. package/contracts/shared/KeyValueStore.sol +1 -1
  477. package/contracts/shared/Lifecycle.sol +15 -4
  478. package/contracts/shared/NftOwnable.sol +31 -11
  479. package/contracts/shared/PolicyHolder.sol +17 -57
  480. package/contracts/shared/Registerable.sol +52 -21
  481. package/contracts/shared/RegistryLinked.sol +9 -14
  482. package/contracts/shared/Service.sol +18 -36
  483. package/contracts/shared/TokenHandler.sol +310 -26
  484. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  485. package/contracts/staking/IStaking.sol +26 -14
  486. package/contracts/staking/IStakingService.sol +19 -4
  487. package/contracts/staking/Staking.sol +117 -82
  488. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
  489. package/contracts/staking/StakingManager.sol +10 -11
  490. package/contracts/staking/StakingReader.sol +23 -29
  491. package/contracts/staking/StakingService.sol +93 -37
  492. package/contracts/staking/StakingServiceManager.sol +8 -7
  493. package/contracts/staking/StakingStore.sol +7 -16
  494. package/contracts/staking/TargetManagerLib.sol +7 -3
  495. package/contracts/type/Amount.sol +27 -5
  496. package/contracts/type/Blocknumber.sol +7 -1
  497. package/contracts/type/ClaimId.sol +6 -1
  498. package/contracts/type/Fee.sol +8 -8
  499. package/contracts/type/Key32.sol +2 -2
  500. package/contracts/type/Key32Set.sol +62 -0
  501. package/contracts/type/NftId.sol +7 -0
  502. package/contracts/type/ObjectType.sol +57 -34
  503. package/contracts/type/PayoutId.sol +10 -10
  504. package/contracts/type/Referral.sol +1 -0
  505. package/contracts/type/RiskId.sol +38 -6
  506. package/contracts/type/RoleId.sol +23 -15
  507. package/contracts/type/Seconds.sol +21 -1
  508. package/contracts/type/Selector.sol +5 -0
  509. package/contracts/type/StateId.sol +15 -1
  510. package/contracts/type/Timestamp.sol +10 -5
  511. package/contracts/type/UFixed.sol +56 -126
  512. package/contracts/type/Version.sol +54 -5
  513. package/contracts/{shared → upgradeability}/ProxyManager.sol +82 -47
  514. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +8 -4
  515. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  516. package/package.json +5 -4
  517. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  518. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  519. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  520. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  521. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  522. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  523. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  524. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  525. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  526. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  528. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  529. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  530. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  531. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  532. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  533. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  534. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  535. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  536. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  537. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  538. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  539. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  540. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  541. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  542. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  543. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  544. package/contracts/instance/module/IAccess.sol +0 -46
  545. package/contracts/product/ProductService.sol +0 -124
  546. package/contracts/product/ProductServiceManager.sol +0 -42
  547. package/contracts/shared/InitializableCustom.sol +0 -177
  548. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,54 +1,37 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IInstance} from "../instance/IInstance.sol";
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
6
5
  import {IComponentService} from "../shared/IComponentService.sol";
6
+ import {IDistribution} from "../instance/module/IDistribution.sol";
7
+ import {IDistributionService} from "./IDistributionService.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
7
9
  import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
8
11
  import {IRegistryService} from "../registry/IRegistryService.sol";
9
- import {InstanceReader} from "../instance/InstanceReader.sol";
10
12
  import {IComponents} from "../instance/module/IComponents.sol";
11
13
  import {IPolicy} from "../instance/module/IPolicy.sol";
12
14
 
13
15
  import {Amount, AmountLib} from "../type/Amount.sol";
14
- import {NftId, NftIdLib} from "../type/NftId.sol";
15
- import {Fee, FeeLib} from "../type/Fee.sol";
16
- import {KEEP_STATE} from "../type/StateId.sol";
17
- import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
- import {Version, VersionLib} from "../type/Version.sol";
19
- import {RoleId} from "../type/RoleId.sol";
20
-
21
- import {IVersionable} from "../shared/IVersionable.sol";
22
- import {Versionable} from "../shared/Versionable.sol";
23
-
24
- import {IService} from "../shared/IService.sol";
16
+ import {ContractLib} from "../shared/ContractLib.sol";
25
17
  import {Service} from "../shared/Service.sol";
26
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
27
- import {InstanceService} from "../instance/InstanceService.sol";
28
- import {IComponent} from "../shared/IComponent.sol";
29
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
30
- import {IDistributionService} from "./IDistributionService.sol";
31
- import {IPricingService} from "../product/IPricingService.sol";
32
-
33
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
34
18
  import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
35
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
36
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
37
- import {Key32} from "../type/Key32.sol";
38
- import {IDistribution} from "../instance/module/IDistribution.sol";
19
+ import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {KEEP_STATE} from "../type/StateId.sol";
21
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
22
+ import {InstanceReader} from "../instance/InstanceReader.sol";
39
23
  import {InstanceStore} from "../instance/InstanceStore.sol";
24
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
25
+ import {Seconds} from "../type/Seconds.sol";
26
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
27
+ import {UFixed} from "../type/UFixed.sol";
40
28
 
41
29
 
42
30
  contract DistributionService is
43
- ComponentVerifyingService,
31
+ Service,
44
32
  IDistributionService
45
33
  {
46
- using NftIdLib for NftId;
47
- using TimestampLib for Timestamp;
48
- using UFixedLib for UFixed;
49
- using FeeLib for Fee;
50
- using ReferralLib for ReferralId;
51
-
34
+ IAccountingService private _accountingService;
52
35
  IComponentService private _componentService;
53
36
  IInstanceService private _instanceService;
54
37
  IRegistryService private _registryService;
@@ -58,21 +41,22 @@ contract DistributionService is
58
41
  bytes memory data
59
42
  )
60
43
  internal
61
- initializer
62
44
  virtual override
45
+ initializer()
63
46
  {
64
- address initialOwner;
65
- address registryAddress;
66
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
- // TODO while DistributionService is not deployed in DistributionServiceManager constructor
68
- // owner is DistributionServiceManager deployer
69
- initializeService(registryAddress, address(0), owner);
47
+ (
48
+ address authority,
49
+ address registry
50
+ ) = abi.decode(data, (address, address));
51
+
52
+ __Service_init(authority, registry, owner);
70
53
 
54
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
71
55
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
72
56
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
73
57
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
74
58
 
75
- registerInterface(type(IDistributionService).interfaceId);
59
+ _registerInterface(type(IDistributionService).interfaceId);
76
60
  }
77
61
 
78
62
 
@@ -82,23 +66,23 @@ contract DistributionService is
82
66
  UFixed maxDiscountPercentage,
83
67
  UFixed commissionPercentage,
84
68
  uint32 maxReferralCount,
85
- uint32 maxReferralLifetime,
69
+ Seconds maxReferralLifetime,
86
70
  bool allowSelfReferrals,
87
71
  bool allowRenewals,
88
72
  bytes memory data
89
73
  )
90
74
  external
75
+ restricted()
91
76
  returns (DistributorType distributorType)
92
77
  {
93
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
94
- InstanceReader instanceReader = instance.getInstanceReader();
78
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution(getRegistry());
95
79
 
96
80
  {
97
- NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
98
- IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
81
+ NftId productNftId = getRegistry().getParentNftId(distributionNftId);
82
+ IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
99
83
 
100
- UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
101
- UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
84
+ UFixed variableDistributionFees = feeInfo.distributionFee.fractionalFee;
85
+ UFixed variableFeesPartsTotal = feeInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
102
86
 
103
87
  if (variableFeesPartsTotal > variableDistributionFees) {
104
88
  revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
@@ -111,16 +95,17 @@ contract DistributionService is
111
95
  }
112
96
 
113
97
  distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
114
- IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
115
- name,
116
- minDiscountPercentage,
117
- maxDiscountPercentage,
118
- commissionPercentage,
119
- maxReferralCount,
120
- maxReferralLifetime,
121
- allowSelfReferrals,
122
- allowRenewals,
123
- data);
98
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
99
+ name: name,
100
+ distributionNftId: distributionNftId,
101
+ minDiscountPercentage: minDiscountPercentage,
102
+ maxDiscountPercentage: maxDiscountPercentage,
103
+ commissionPercentage: commissionPercentage,
104
+ maxReferralCount: maxReferralCount,
105
+ maxReferralLifetime: maxReferralLifetime,
106
+ allowSelfReferrals: allowSelfReferrals,
107
+ allowRenewals: allowRenewals,
108
+ data: data});
124
109
 
125
110
  instance.getInstanceStore().createDistributorType(distributorType, info);
126
111
  }
@@ -133,9 +118,11 @@ contract DistributionService is
133
118
  )
134
119
  external
135
120
  virtual
121
+ restricted()
136
122
  returns (NftId distributorNftId)
137
123
  {
138
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
124
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution(getRegistry());
125
+ _checkDistributionType(instance.getInstanceReader(), distributorType, distributionNftId);
139
126
 
140
127
  distributorNftId = _registryService.registerDistributor(
141
128
  IRegistry.ObjectInfo(
@@ -148,31 +135,33 @@ contract DistributionService is
148
135
  ""
149
136
  ));
150
137
 
151
- IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
152
- distributorType,
153
- true, // active
154
- data,
155
- AmountLib.zero(),
156
- 0);
138
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo({
139
+ distributorType: distributorType,
140
+ active: true,
141
+ numPoliciesSold: 0,
142
+ data: data});
157
143
 
158
144
  instance.getInstanceStore().createDistributor(distributorNftId, info);
159
145
  }
160
146
 
161
- // function updateDistributorType(
162
- // NftId distributorNftId,
163
- // DistributorType distributorType,
164
- // bytes memory data
165
- // )
166
- // external
167
- // virtual
168
- // {
169
- // (, IInstance instance) = _getAndVerifyCallingDistribution();
170
- // InstanceReader instanceReader = instance.getInstanceReader();
171
- // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
172
- // distributorInfo.distributorType = distributorType;
173
- // distributorInfo.data = data;
174
- // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
175
- // }
147
+ function changeDistributorType(
148
+ NftId distributorNftId,
149
+ DistributorType newDistributorType,
150
+ bytes memory data
151
+ )
152
+ external
153
+ virtual
154
+ restricted()
155
+ {
156
+ _checkNftType(distributorNftId, DISTRIBUTOR());
157
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution(getRegistry());
158
+ _checkDistributionType(instance.getInstanceReader(), newDistributorType, distributionNftId);
159
+
160
+ IDistribution.DistributorInfo memory distributorInfo = instance.getInstanceReader().getDistributorInfo(distributorNftId);
161
+ distributorInfo.distributorType = newDistributorType;
162
+ distributorInfo.data = data;
163
+ instance.getInstanceStore().updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
164
+ }
176
165
 
177
166
 
178
167
  function createReferral(
@@ -185,115 +174,224 @@ contract DistributionService is
185
174
  )
186
175
  external
187
176
  virtual
177
+ restricted()
178
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
188
179
  returns (ReferralId referralId)
189
180
  {
190
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
181
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution(getRegistry());
191
182
 
192
183
  if (bytes(code).length == 0) {
193
- revert ErrorIDistributionServiceInvalidReferral(code);
184
+ revert ErrorDistributionServiceInvalidReferral(code);
194
185
  }
195
- if (expiryAt.eqz()) {
196
- revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
186
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
187
+ revert ErrorDistributionServiceExpirationInvalid(expiryAt);
197
188
  }
198
189
 
199
- InstanceReader instanceReader = instance.getInstanceReader();
200
- DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
201
- IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
202
-
203
- if (distributorTypeData.maxReferralCount < maxReferrals) {
204
- revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
205
- }
206
- if (distributorTypeData.minDiscountPercentage > discountPercentage) {
207
- revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
190
+ NftId distributorDistributionNftId = getRegistry().getParentNftId(distributorNftId);
191
+ if (distributorDistributionNftId != distributionNftId) {
192
+ revert ErrorDistributionServiceDistributorDistributionMismatch(distributorNftId, distributorDistributionNftId, distributionNftId);
208
193
  }
209
- if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
210
- revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
211
- }
212
- if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
213
- revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
194
+
195
+ {
196
+ InstanceReader instanceReader = instance.getInstanceReader();
197
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
198
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
199
+
200
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
201
+ revert ErrorDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
202
+ }
203
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
204
+ revert ErrorDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
205
+ }
206
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
207
+ revert ErrorDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
208
+ }
209
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime.toInt()) {
210
+ revert ErrorDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt);
211
+ }
214
212
  }
215
213
 
216
- referralId = ReferralLib.toReferralId(distributionNftId, code);
217
- IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
218
- distributorNftId,
219
- code,
220
- discountPercentage,
221
- maxReferrals,
222
- 0, // used referrals
223
- expiryAt,
224
- data
225
- );
226
-
227
- instance.getInstanceStore().createReferral(referralId, info);
228
- return referralId;
214
+ {
215
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
216
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo({
217
+ distributionNftId: distributionNftId,
218
+ distributorNftId: distributorNftId,
219
+ referralCode: code,
220
+ discountPercentage: discountPercentage,
221
+ maxReferrals: maxReferrals,
222
+ usedReferrals: 0,
223
+ expiryAt: expiryAt,
224
+ data: data
225
+ });
226
+
227
+ instance.getInstanceStore().createReferral(referralId, info);
228
+ }
229
229
  }
230
230
 
231
+ /// @inheritdoc IDistributionService
232
+ function processReferral(
233
+ NftId distributionNftId,
234
+ ReferralId referralId
235
+ )
236
+ external
237
+ virtual
238
+ restricted()
239
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
240
+ {
241
+ if (referralIsValid(distributionNftId, referralId)) {
242
+ IRegistry registry = getRegistry();
243
+ IInstance instance = IInstance(ContractLib.getInstanceForComponent(getRegistry(), distributionNftId));
244
+
245
+ // update book keeping for referral info
246
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
247
+ referralInfo.usedReferrals += 1;
248
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
249
+ }
250
+ }
231
251
 
232
252
  function processSale(
233
253
  NftId distributionNftId, // assume always of distribution type
234
254
  ReferralId referralId,
235
- IPolicy.Premium memory premium
255
+ IPolicy.PremiumInfo memory premium
236
256
  )
237
257
  external
238
258
  virtual
239
- restricted
259
+ restricted()
260
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
240
261
  {
241
- IInstance instance = _getInstanceForDistribution(distributionNftId);
262
+ IRegistry registry = getRegistry();
263
+ IInstance instance = IInstance(ContractLib.getInstanceForComponent(registry, distributionNftId));
242
264
  InstanceReader reader = instance.getInstanceReader();
243
265
  InstanceStore store = instance.getInstanceStore();
244
266
 
245
267
  // get distribution owner fee amount
246
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
268
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
247
269
 
248
270
  // update referral/distributor info if applicable
249
271
  if (referralIsValid(distributionNftId, referralId)) {
250
272
 
251
273
  // increase distribution balance by commission amount and distribution owner fee
252
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
253
- _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
274
+ Amount commissionAmount = premium.commissionAmount;
275
+ _accountingService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
254
276
 
255
277
  // update book keeping for referral info
256
278
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
257
- referralInfo.usedReferrals += 1;
258
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
279
+
280
+ _accountingService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
259
281
 
260
282
  // update book keeping for distributor info
261
283
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
262
- // TODO refactor sum of commission amount into a fee balance for distributors
263
- distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
264
284
  distributorInfo.numPoliciesSold += 1;
265
285
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
266
286
  } else {
267
-
268
287
  // increase distribution balance by distribution owner fee
269
- _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
288
+ _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
270
289
  }
271
290
  }
272
291
 
273
- function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
292
+ /// @inheritdoc IDistributionService
293
+ function withdrawCommission(NftId distributorNftId, Amount amount)
294
+ public
295
+ virtual
296
+ restricted()
297
+ onlyNftOfType(distributorNftId, DISTRIBUTOR())
298
+ returns (Amount withdrawnAmount)
299
+ {
300
+ (NftId distributionNftId, IInstance instance) = _getAndVerifyActiveDistribution(getRegistry());
301
+ InstanceReader reader = instance.getInstanceReader();
302
+
303
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
304
+ // address distributionWallet = distributionInfo.tokenHandler.getWallet();
305
+
306
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
307
+
308
+ // determine withdrawn amount
309
+ withdrawnAmount = amount;
310
+ if (withdrawnAmount.gte(AmountLib.max())) {
311
+ withdrawnAmount = commissionAmount;
312
+ } else {
313
+ if (withdrawnAmount.gt(commissionAmount)) {
314
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
315
+ }
316
+ }
317
+
318
+ // decrease fee counters by withdrawnAmount and update distributor info
319
+ {
320
+ InstanceStore store = instance.getInstanceStore();
321
+ // decrease fee counter for distribution balance
322
+ _accountingService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
323
+ // decrease fee counter for distributor fee
324
+ _accountingService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
325
+ }
326
+
327
+ // transfer amount to distributor
328
+ {
329
+ address distributor = getRegistry().ownerOf(distributorNftId);
330
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
331
+ distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
332
+ }
333
+ }
334
+
335
+ function referralIsValid(NftId distributionNftId, ReferralId referralId)
336
+ public
337
+ view
338
+ onlyNftOfType(distributionNftId, DISTRIBUTION())
339
+ returns (bool isValid)
340
+ {
274
341
  if (distributionNftId.eqz() || referralId.eqz()) {
275
342
  return false;
276
343
  }
277
344
 
278
- IInstance instance = _getInstanceForDistribution(distributionNftId);
345
+ IRegistry registry = getRegistry();
346
+ IInstance instance = IInstance(ContractLib.getInstanceForComponent(registry, distributionNftId));
279
347
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
280
348
 
281
349
  if (info.distributorNftId.eqz()) {
282
350
  return false;
283
351
  }
284
352
 
353
+ // ensure the referral was created on the same distribution
354
+ if(info.distributionNftId != distributionNftId) {
355
+ revert ErrorDistributionServiceReferralDistributionMismatch(referralId, info.distributionNftId, distributionNftId);
356
+ }
357
+
285
358
  isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
286
359
  isValid = isValid && info.usedReferrals < info.maxReferrals;
287
360
  }
288
361
 
289
- function _getInstanceForDistribution(NftId distributionNftId)
362
+ function _checkDistributionType(InstanceReader instanceReader, DistributorType distributorType, NftId expectedDistributionNftId)
363
+ internal
364
+ view
365
+ {
366
+ // enfore distributor type belongs to the calling distribution
367
+ NftId distributorTypeDistributionNftId = instanceReader.getDistributorTypeInfo(distributorType).distributionNftId;
368
+
369
+ if (distributorTypeDistributionNftId != expectedDistributionNftId) {
370
+ revert ErrorDistributionServiceDistributorTypeDistributionMismatch(distributorType, distributorTypeDistributionNftId, expectedDistributionNftId);
371
+ }
372
+ }
373
+
374
+ function _getAndVerifyActiveDistribution(
375
+ IRegistry registry
376
+ )
290
377
  internal
291
378
  view
292
- returns(IInstance instance)
379
+ returns (
380
+ NftId didstributionNftId,
381
+ IInstance instance
382
+ )
293
383
  {
294
- NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
295
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
296
- return IInstance(instanceAddress);
384
+ (
385
+ IRegistry.ObjectInfo memory info,
386
+ address instanceAddress
387
+ ) = ContractLib.getAndVerifyComponent(
388
+ registry,
389
+ msg.sender,
390
+ DISTRIBUTION(),
391
+ true); // only active pools
392
+
393
+ didstributionNftId = info.nftId;
394
+ instance = IInstance(instanceAddress);
297
395
  }
298
396
 
299
397
  function _getDomain() internal pure override returns(ObjectType) {
@@ -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 {DistributionService} from "./DistributionService.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 DistributionServiceManager is ProxyManager {
12
9
 
@@ -15,15 +12,15 @@ contract DistributionServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
- DistributionService distSrv = new DistributionService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
26
- address(distSrv),
19
+ DistributionService svc = new DistributionService{salt: salt}();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
27
24
  data,
28
25
  salt);
29
26
 
@@ -1,26 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
5
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
- import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
6
  import {NftId} from "../type/NftId.sol";
8
- import {DistributorType} from "../type/DistributorType.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
10
- import {Timestamp} from "../type/Timestamp.sol";
11
9
 
12
10
  interface IDistributionComponent is IInstanceLinkedComponent {
13
11
 
14
- error ErrorDistributionNotDistributor(address distributor);
15
- error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
16
-
17
- event LogDistributorUpdated(address to, address caller);
18
-
19
- /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
20
- function isDistributor(address candidate) external view returns (bool);
21
-
22
- /// @dev Returns the distributor Nft Id for the provided address
23
- function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
12
+ event LogDistributorUpdated(address to, address operator);
24
13
 
25
14
  function getDiscountPercentage(
26
15
  string memory referralCode
@@ -45,4 +34,10 @@ interface IDistributionComponent is IInstanceLinkedComponent {
45
34
 
46
35
  /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
47
36
  function isVerifying() external view returns (bool verifying);
37
+
38
+ /// @dev Withdraw commission for the distributor
39
+ /// @param distributorNftId the distributor Nft Id
40
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
41
+ /// @return withdrawnAmount the effective withdrawn amount
42
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
48
43
  }