@etherisc/gif-next 0.0.2-d13bb9e-069 → 0.0.2-d1ee1ae-450

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