@etherisc/gif-next 0.0.2-7d58318-324 → 0.0.2-7d7c399-947

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