@etherisc/gif-next 0.0.2-c6d46bb-892 → 0.0.2-c778291-689

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 (496) hide show
  1. package/README.md +51 -5
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1489 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +178 -395
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +280 -324
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +130 -72
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +169 -263
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +186 -94
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -52
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +93 -126
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +583 -326
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +282 -101
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1230 -365
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +399 -213
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +176 -50
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +204 -32
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +180 -366
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +340 -209
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +226 -452
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +399 -430
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +105 -67
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -158
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +111 -37
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +132 -187
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +129 -55
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +25 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +36 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +217 -73
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +83 -44
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +270 -183
  133. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  134. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -57
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -290
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +117 -91
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +188 -220
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +135 -57
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +344 -341
  145. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
  147. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +439 -39
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -68
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +104 -145
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1252 -203
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -107
  182. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  184. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
  188. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  190. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  201. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -0
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  219. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  224. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1412 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.json +1941 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  283. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  285. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  293. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  297. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  298. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  303. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  304. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  305. package/contracts/authorization/AccessAdmin.sol +591 -0
  306. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  307. package/contracts/authorization/Authorization.sol +217 -0
  308. package/contracts/authorization/IAccess.sol +48 -0
  309. package/contracts/authorization/IAccessAdmin.sol +136 -0
  310. package/contracts/authorization/IAuthorization.sol +54 -0
  311. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  312. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  313. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  314. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  315. package/contracts/distribution/BasicDistribution.sol +138 -0
  316. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  317. package/contracts/distribution/Distribution.sol +162 -152
  318. package/contracts/distribution/DistributionService.sol +124 -137
  319. package/contracts/distribution/DistributionServiceManager.sol +11 -23
  320. package/contracts/distribution/IDistributionComponent.sol +28 -47
  321. package/contracts/distribution/IDistributionService.sol +24 -10
  322. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  323. package/contracts/instance/IInstance.sol +29 -43
  324. package/contracts/instance/IInstanceService.sol +46 -27
  325. package/contracts/instance/Instance.sol +116 -116
  326. package/contracts/instance/InstanceAdmin.sol +285 -0
  327. package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
  328. package/contracts/instance/InstanceReader.sol +106 -52
  329. package/contracts/instance/InstanceService.sol +291 -132
  330. package/contracts/instance/InstanceServiceManager.sol +12 -26
  331. package/contracts/instance/InstanceStore.sol +146 -66
  332. package/contracts/instance/base/BalanceStore.sol +123 -0
  333. package/contracts/instance/base/Cloneable.sol +2 -25
  334. package/contracts/instance/base/ObjectCounter.sol +21 -0
  335. package/contracts/instance/base/ObjectLifecycle.sol +110 -0
  336. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  337. package/contracts/instance/module/IAccess.sol +2 -10
  338. package/contracts/instance/module/IBundle.sol +1 -4
  339. package/contracts/instance/module/IComponents.sol +15 -10
  340. package/contracts/instance/module/IDistribution.sol +0 -1
  341. package/contracts/instance/module/IPolicy.sol +25 -19
  342. package/contracts/mock/Dip.sol +26 -0
  343. package/contracts/oracle/BasicOracle.sol +48 -0
  344. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  345. package/contracts/oracle/IOracle.sol +36 -0
  346. package/contracts/oracle/IOracleComponent.sol +33 -0
  347. package/contracts/oracle/IOracleService.sol +65 -0
  348. package/contracts/oracle/Oracle.sol +167 -0
  349. package/contracts/oracle/OracleService.sol +279 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +166 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  353. package/contracts/pool/BundleService.sol +252 -196
  354. package/contracts/pool/BundleServiceManager.sol +11 -23
  355. package/contracts/pool/IBundleService.sol +35 -19
  356. package/contracts/pool/IPoolComponent.sol +10 -66
  357. package/contracts/pool/IPoolService.sol +79 -33
  358. package/contracts/pool/Pool.sol +168 -144
  359. package/contracts/pool/PoolService.sol +322 -216
  360. package/contracts/pool/PoolServiceManager.sol +11 -23
  361. package/contracts/product/ApplicationService.sol +143 -80
  362. package/contracts/product/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +53 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +36 -62
  366. package/contracts/product/ClaimServiceManager.sol +11 -8
  367. package/contracts/product/IApplicationService.sol +2 -1
  368. package/contracts/product/IClaimService.sol +8 -1
  369. package/contracts/product/IPolicyService.sol +29 -36
  370. package/contracts/product/IPricingService.sol +10 -8
  371. package/contracts/product/IProductComponent.sol +10 -12
  372. package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
  373. package/contracts/product/PolicyService.sol +390 -192
  374. package/contracts/product/PolicyServiceManager.sol +11 -26
  375. package/contracts/product/PricingService.sol +103 -77
  376. package/contracts/product/PricingServiceManager.sol +11 -23
  377. package/contracts/product/Product.sol +156 -128
  378. package/contracts/product/RiskService.sol +97 -0
  379. package/contracts/product/RiskServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +54 -21
  382. package/contracts/registry/IRegistryService.sol +38 -35
  383. package/contracts/registry/Registry.sol +233 -124
  384. package/contracts/registry/RegistryAdmin.sol +374 -0
  385. package/contracts/registry/RegistryService.sol +67 -100
  386. package/contracts/registry/RegistryServiceManager.sol +23 -30
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +141 -144
  392. package/contracts/shared/ComponentService.sol +587 -96
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/shared/IComponent.sol +21 -41
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +1 -1
  401. package/contracts/shared/IPolicyHolder.sol +6 -1
  402. package/contracts/shared/IService.sol +9 -2
  403. package/contracts/shared/InitializableCustom.sol +177 -0
  404. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  405. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  406. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
  407. package/contracts/shared/Lifecycle.sol +77 -0
  408. package/contracts/shared/NftIdSet.sol +65 -0
  409. package/contracts/shared/NftOwnable.sol +4 -15
  410. package/contracts/shared/PolicyHolder.sol +22 -17
  411. package/contracts/shared/Registerable.sol +2 -2
  412. package/contracts/shared/Service.sol +32 -22
  413. package/contracts/shared/TokenHandler.sol +112 -8
  414. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  415. package/contracts/staking/IStaking.sol +167 -0
  416. package/contracts/staking/IStakingService.sol +105 -47
  417. package/contracts/staking/StakeManagerLib.sol +206 -0
  418. package/contracts/staking/Staking.sol +497 -0
  419. package/contracts/staking/StakingLifecycle.sol +23 -0
  420. package/contracts/staking/StakingManager.sol +50 -0
  421. package/contracts/staking/StakingReader.sol +183 -0
  422. package/contracts/staking/StakingService.sol +288 -47
  423. package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +13 -6
  424. package/contracts/staking/StakingStore.sol +605 -0
  425. package/contracts/staking/TargetManagerLib.sol +207 -0
  426. package/contracts/type/AddressSet.sol +1 -1
  427. package/contracts/type/Amount.sol +29 -3
  428. package/contracts/type/Blocknumber.sol +26 -3
  429. package/contracts/type/Fee.sol +17 -16
  430. package/contracts/type/NftId.sol +14 -16
  431. package/contracts/type/NftIdSet.sol +1 -1
  432. package/contracts/type/ObjectType.sol +175 -62
  433. package/contracts/type/Referral.sol +2 -1
  434. package/contracts/type/RequestId.sol +75 -0
  435. package/contracts/type/RiskId.sol +1 -1
  436. package/contracts/type/RoleId.sol +104 -62
  437. package/contracts/type/Seconds.sol +40 -1
  438. package/contracts/type/Selector.sol +102 -0
  439. package/contracts/type/StateId.sol +27 -2
  440. package/contracts/type/String.sol +53 -0
  441. package/contracts/type/Timestamp.sol +17 -3
  442. package/contracts/type/UFixed.sol +34 -9
  443. package/contracts/type/Version.sol +4 -2
  444. package/contracts/{shared → upgradeability}/ProxyManager.sol +33 -4
  445. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  446. package/package.json +8 -5
  447. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  448. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  449. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  451. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  452. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  453. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  454. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  455. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  456. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  457. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  458. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  459. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  460. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  461. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  462. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  463. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  464. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  465. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  466. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  467. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  468. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  469. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  470. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  471. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  472. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  473. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  474. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  475. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  476. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  477. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  478. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  479. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  480. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  481. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  482. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  483. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
  485. package/contracts/instance/InstanceAccessManager.sol +0 -543
  486. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  487. package/contracts/instance/base/Lifecycle.sol +0 -121
  488. package/contracts/instance/module/ISetup.sol +0 -33
  489. package/contracts/instance/module/ITreasury.sol +0 -23
  490. package/contracts/product/ProductService.sol +0 -210
  491. package/contracts/product/ProductServiceManager.sol +0 -54
  492. package/contracts/registry/RegistryAccessManager.sol +0 -216
  493. package/contracts/registry/ReleaseManager.sol +0 -328
  494. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  495. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  496. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -1,54 +1,36 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IRegistry} from "../registry/IRegistry.sol";
5
5
  import {IInstance} from "../instance/IInstance.sol";
6
- import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IInstanceService} from "../instance/IInstanceService.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
7
9
  import {InstanceReader} from "../instance/InstanceReader.sol";
8
- import {ISetup} from "../instance/module/ISetup.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
9
11
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
12
 
11
13
  import {Amount, AmountLib} from "../type/Amount.sol";
12
- import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
13
- import {Fee, FeeLib} from "../type/Fee.sol";
14
- import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
15
  import {KEEP_STATE} from "../type/StateId.sol";
16
- import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, PRICE} from "../type/ObjectType.sol";
17
- import {Version, VersionLib} from "../type/Version.sol";
18
- import {RoleId} from "../type/RoleId.sol";
19
-
20
- import {IVersionable} from "../shared/IVersionable.sol";
21
- import {Versionable} from "../shared/Versionable.sol";
22
-
23
- import {IService} from "../shared/IService.sol";
24
- import {Service} from "../shared/Service.sol";
25
- import {ComponentService} from "../shared/ComponentService.sol";
26
- import {InstanceService} from "../instance/InstanceService.sol";
27
- import {IComponent} from "../shared/IComponent.sol";
28
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
16
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
17
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
29
18
  import {IDistributionService} from "./IDistributionService.sol";
30
- import {IPricingService} from "../product/IPricingService.sol";
31
-
32
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
33
20
  import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
34
- import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
35
- import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
36
- import {Key32} from "../type/Key32.sol";
21
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
22
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
37
23
  import {IDistribution} from "../instance/module/IDistribution.sol";
38
24
  import {InstanceStore} from "../instance/InstanceStore.sol";
39
25
 
40
26
 
41
27
  contract DistributionService is
42
- ComponentService,
28
+ ComponentVerifyingService,
43
29
  IDistributionService
44
30
  {
45
- using NftIdLib for NftId;
46
- using TimestampLib for Timestamp;
47
- using UFixedLib for UFixed;
48
- using FeeLib for Fee;
49
- using ReferralLib for ReferralId;
50
-
51
- address internal _registryAddress;
31
+ IComponentService private _componentService;
32
+ IInstanceService private _instanceService;
33
+ IRegistryService private _registryService;
52
34
 
53
35
  function _initialize(
54
36
  address owner,
@@ -64,74 +46,14 @@ contract DistributionService is
64
46
  // TODO while DistributionService is not deployed in DistributionServiceManager constructor
65
47
  // owner is DistributionServiceManager deployer
66
48
  initializeService(registryAddress, address(0), owner);
67
- registerInterface(type(IDistributionService).interfaceId);
68
- }
69
49
 
70
- function getDomain() public pure override returns(ObjectType) {
71
- return DISTRIBUTION();
72
- }
50
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
51
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
52
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
73
53
 
74
- function register(address distributionAddress)
75
- external
76
- returns(NftId distributionNftId)
77
- {
78
- (
79
- IComponent component,
80
- address owner,
81
- IInstance instance,
82
- NftId instanceNftId
83
- ) = _checkComponentForRegistration(
84
- distributionAddress,
85
- DISTRIBUTION(),
86
- DISTRIBUTION_OWNER_ROLE());
87
-
88
- IRegistry.ObjectInfo memory distributionInfo = getRegistryService().registerDistribution(component, owner);
89
- IDistributionComponent distribution = IDistributionComponent(distributionAddress);
90
- distribution.linkToRegisteredNftId();
91
- distributionNftId = distributionInfo.nftId;
92
-
93
- instance.getInstanceStore().createDistributionSetup(distributionNftId, distribution.getSetupInfo());
94
- // TODO move to distribution?
95
- bytes4[][] memory selectors = new bytes4[][](2);
96
- selectors[0] = new bytes4[](1);
97
- // TODO check if array size should be 1 instead of 2
98
- selectors[1] = new bytes4[](2);
99
-
100
- selectors[0][0] = IDistributionComponent.setFees.selector;
101
- selectors[1][0] = IDistributionComponent.processRenewal.selector;
102
-
103
- RoleId[] memory roles = new RoleId[](2);
104
- roles[0] = DISTRIBUTION_OWNER_ROLE();
105
- roles[1] = PRODUCT_SERVICE_ROLE();
106
-
107
- getInstanceService().createGifTarget(
108
- instanceNftId,
109
- distributionAddress,
110
- distribution.getName(),
111
- selectors,
112
- roles);
54
+ registerInterface(type(IDistributionService).interfaceId);
113
55
  }
114
56
 
115
- function setFees(
116
- Fee memory minDistributionOwnerFee,
117
- Fee memory distributionFee
118
- )
119
- external
120
- override
121
- {
122
- if (minDistributionOwnerFee.fractionalFee > distributionFee.fractionalFee) {
123
- revert ErrorIDistributionServiceMinFeeTooHigh(minDistributionOwnerFee.fractionalFee.toInt(), distributionFee.fractionalFee.toInt());
124
- }
125
-
126
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
127
- InstanceReader instanceReader = instance.getInstanceReader();
128
-
129
- ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
130
- distSetupInfo.minDistributionOwnerFee = minDistributionOwnerFee;
131
- distSetupInfo.distributionFee = distributionFee;
132
-
133
- instance.getInstanceStore().updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
134
- }
135
57
 
136
58
  function createDistributorType(
137
59
  string memory name,
@@ -147,14 +69,23 @@ contract DistributionService is
147
69
  external
148
70
  returns (DistributorType distributorType)
149
71
  {
150
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
72
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
73
+ InstanceReader instanceReader = instance.getInstanceReader();
151
74
 
152
75
  {
153
- ISetup.DistributionSetupInfo memory setupInfo = instance.getInstanceReader().getDistributionSetupInfo(distributionNftId);
154
- UFixed variableFeesPartsTotal = setupInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
155
- UFixed maxDiscountPercentageLimit = setupInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
76
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
77
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
78
+
79
+ UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
80
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
81
+
82
+ if (variableFeesPartsTotal > variableDistributionFees) {
83
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
84
+ }
85
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
86
+
156
87
  if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
157
- revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
88
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
158
89
  }
159
90
  }
160
91
 
@@ -183,11 +114,11 @@ contract DistributionService is
183
114
  virtual
184
115
  returns (NftId distributorNftId)
185
116
  {
186
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
117
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
187
118
 
188
- distributorNftId = getRegistryService().registerDistributor(
119
+ distributorNftId = _registryService.registerDistributor(
189
120
  IRegistry.ObjectInfo(
190
- zeroNftId(),
121
+ NftIdLib.zero(),
191
122
  distributionNftId,
192
123
  DISTRIBUTOR(),
193
124
  true, // intercepting property for bundles is defined on pool
@@ -200,7 +131,6 @@ contract DistributionService is
200
131
  distributorType,
201
132
  true, // active
202
133
  data,
203
- AmountLib.zero(),
204
134
  0);
205
135
 
206
136
  instance.getInstanceStore().createDistributor(distributorNftId, info);
@@ -235,7 +165,7 @@ contract DistributionService is
235
165
  virtual
236
166
  returns (ReferralId referralId)
237
167
  {
238
- (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
168
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
239
169
 
240
170
  if (bytes(code).length == 0) {
241
171
  revert ErrorIDistributionServiceInvalidReferral(code);
@@ -276,56 +206,109 @@ contract DistributionService is
276
206
  return referralId;
277
207
  }
278
208
 
209
+ /// @inheritdoc IDistributionService
210
+ function processReferral(
211
+ NftId distributionNftId,
212
+ ReferralId referralId
213
+ )
214
+ external
215
+ virtual
216
+ restricted
217
+ {
218
+ if (referralIsValid(distributionNftId, referralId)) {
219
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
220
+ // update book keeping for referral info
221
+ IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
222
+ referralInfo.usedReferrals += 1;
223
+ instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
224
+ }
225
+ }
226
+
279
227
  function processSale(
280
228
  NftId distributionNftId, // assume always of distribution type
281
229
  ReferralId referralId,
282
- IPolicy.Premium memory premium,
283
- Amount transferredDistributionFeeAmount
230
+ IPolicy.PremiumInfo memory premium
284
231
  )
285
232
  external
286
233
  virtual
234
+ restricted
287
235
  {
288
- bool isReferral = ! referralId.eqz();
289
- bool referralValid = referralIsValid(distributionNftId, referralId);
290
-
291
- if (isReferral && ! referralValid) {
292
- revert ErrorIDistributionServiceReferralInvalid(distributionNftId, referralId);
293
- }
294
-
295
236
  IInstance instance = _getInstanceForDistribution(distributionNftId);
296
237
  InstanceReader reader = instance.getInstanceReader();
297
238
  InstanceStore store = instance.getInstanceStore();
298
- IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
299
- IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
300
- ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
301
-
302
- Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
303
- Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
304
239
 
305
- if (!(transferredDistributionFeeAmount == distributionOwnerFee + commissionAmount)) {
306
- revert ErrorDistributionServiceInvalidFeeTransferred(transferredDistributionFeeAmount, distributionOwnerFee + commissionAmount);
307
- }
240
+ // get distribution owner fee amount
241
+ Amount distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
308
242
 
243
+ // update referral/distributor info if applicable
244
+ if (referralIsValid(distributionNftId, referralId)) {
309
245
 
310
- if (distributionOwnerFee.gtz()) {
311
- setupInfo.sumDistributionOwnerFees += distributionOwnerFee.toInt();
312
- store.updateDistributionSetup(distributionNftId, setupInfo, KEEP_STATE());
313
- }
246
+ // increase distribution balance by commission amount and distribution owner fee
247
+ Amount commissionAmount = premium.commissionAmount;
248
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
314
249
 
315
- if (isReferral) {
316
- referralInfo.usedReferrals += 1;
317
- store.updateReferral(referralId, referralInfo, KEEP_STATE());
250
+ // update book keeping for referral info
251
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
252
+
253
+ _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
318
254
 
319
- if (commissionAmount.gtz()) {
320
- distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
321
- distributorInfo.numPoliciesSold += 1;
322
- store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
255
+ // update book keeping for distributor info
256
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
257
+ distributorInfo.numPoliciesSold += 1;
258
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
259
+ } else {
260
+ // increase distribution balance by distribution owner fee
261
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
262
+ }
263
+ }
264
+
265
+ /// @inheritdoc IDistributionService
266
+ function withdrawCommission(NftId distributorNftId, Amount amount)
267
+ public
268
+ virtual
269
+ // TODO: restricted() (once #462 is done)
270
+ returns (Amount withdrawnAmount)
271
+ {
272
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
273
+ InstanceReader reader = instance.getInstanceReader();
274
+
275
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
276
+ address distributionWallet = distributionInfo.wallet;
277
+
278
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
279
+
280
+ // determine withdrawn amount
281
+ withdrawnAmount = amount;
282
+ if (withdrawnAmount.gte(AmountLib.max())) {
283
+ withdrawnAmount = commissionAmount;
284
+ } else {
285
+ if (withdrawnAmount.gt(commissionAmount)) {
286
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
323
287
  }
324
288
  }
289
+
290
+ // decrease fee counters by withdrawnAmount and update distributor info
291
+ {
292
+ InstanceStore store = instance.getInstanceStore();
293
+ // decrease fee counter for distribution balance
294
+ _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
295
+ // decrease fee counter for distributor fee
296
+ _componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
297
+ }
298
+
299
+ // transfer amount to distributor
300
+ {
301
+ address distributor = getRegistry().ownerOf(distributorNftId);
302
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
303
+ distributionInfo.tokenHandler.distributeTokens(distributionWallet, distributor, withdrawnAmount);
304
+ }
325
305
  }
326
306
 
327
- // TODO: zero should return false
328
307
  function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
308
+ if (distributionNftId.eqz() || referralId.eqz()) {
309
+ return false;
310
+ }
311
+
329
312
  IInstance instance = _getInstanceForDistribution(distributionNftId);
330
313
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
331
314
 
@@ -346,4 +329,8 @@ contract DistributionService is
346
329
  address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
347
330
  return IInstance(instanceAddress);
348
331
  }
332
+
333
+ function _getDomain() internal pure override returns(ObjectType) {
334
+ return DISTRIBUTION();
335
+ }
349
336
  }
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {DistributionService} from "./DistributionService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract DistributionServiceManager is ProxyManager {
12
9
 
@@ -14,29 +11,20 @@ contract DistributionServiceManager is ProxyManager {
14
11
 
15
12
  /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
13
  constructor(
17
- address registryAddress
18
- )
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
19
18
  ProxyManager(registryAddress)
20
19
  {
21
- DistributionService distSrv = new DistributionService();
22
- bytes memory data = abi.encode(registryAddress, address(this));
23
- IVersionable versionable = deploy(
20
+ DistributionService distSrv = new DistributionService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
24
23
  address(distSrv),
25
- data);
24
+ data,
25
+ salt);
26
26
 
27
27
  _distributionService = DistributionService(address(versionable));
28
-
29
- // TODO `thi` must have a role or own nft to register service
30
- //Registry registry = Registry(registryAddress);
31
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
32
- //RegistryService registryService = RegistryService(registryServiceAddress);
33
- //registryService.registerService(_distributionService);
34
-
35
- // TODO no nft to link yet
36
- // link ownership of instance service manager ot nft owner of instance service
37
- //_linkToNftOwnable(
38
- // address(registryAddress),
39
- // address(_distributionService));
40
28
  }
41
29
 
42
30
  //--- view functions ----------------------------------------------------//
@@ -1,71 +1,52 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../type/Fee.sol";
5
- import {IComponent} from "../shared/IComponent.sol";
6
- import {ISetup} from "../instance/module/ISetup.sol";
7
- import {ReferralId, ReferralStatus} from "../type/Referral.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
6
  import {NftId} from "../type/NftId.sol";
9
- import {DistributorType} from "../type/DistributorType.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
10
8
  import {UFixed} from "../type/UFixed.sol";
11
- import {Timestamp} from "../type/Timestamp.sol";
12
9
 
13
- interface IDistributionComponent is IComponent {
10
+ interface IDistributionComponent is IInstanceLinkedComponent {
14
11
 
15
- event LogDistributorUpdated(address to, address caller);
12
+ error ErrorDistributionNotDistributor(address distributor);
13
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
16
14
 
17
- function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
15
+ event LogDistributorUpdated(address to, address caller);
18
16
 
19
- function setFees(
20
- Fee memory minDistributionOwnerFee,
21
- Fee memory distributionFee
22
- ) external;
17
+ /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
18
+ function isDistributor(address candidate) external view returns (bool);
23
19
 
24
- function createDistributorType(
25
- string memory name,
26
- UFixed minDiscountPercentage,
27
- UFixed maxDiscountPercentage,
28
- UFixed commissionPercentage,
29
- uint32 maxReferralCount,
30
- uint32 maxReferralLifetime,
31
- bool allowSelfReferrals,
32
- bool allowRenewals,
33
- bytes memory data
34
- ) external returns (DistributorType distributorType);
20
+ /// @dev Returns the distributor Nft Id for the provided address
21
+ function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
35
22
 
36
- function createDistributor(
37
- address distributor,
38
- DistributorType distributorType,
39
- bytes memory data
40
- ) external returns(NftId distributorNftId);
23
+ function getDiscountPercentage(
24
+ string memory referralCode
25
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
41
26
 
42
- function updateDistributorType(
43
- NftId distributorNftId,
44
- DistributorType distributorType,
45
- bytes memory data
46
- ) external;
27
+ function getReferralId(
28
+ string memory referralCode
29
+ ) external returns (ReferralId referralId);
47
30
 
48
31
  function calculateRenewalFeeAmount(
49
32
  ReferralId referralId,
50
33
  uint256 netPremiumAmount
51
34
  ) external view returns (uint256 feeAmount);
52
35
 
53
- /// @dev callback from product service when a policy is renews for a specific referralId
36
+ /// @dev Callback function to process a renewal of a policy.
37
+ /// The default implementation is empty.
38
+ /// Overwrite this function to implement a use case specific behaviour.
54
39
  function processRenewal(
55
40
  ReferralId referralId,
56
41
  uint256 feeAmount
57
42
  ) external;
58
43
 
59
- function getDiscountPercentage(
60
- string memory referralCode
61
- ) external view returns (UFixed discountPercentage, ReferralStatus status);
62
-
63
- function getDistributionFee() external view returns (Fee memory distibutionFee);
64
-
65
- function getReferralId(
66
- string memory referralCode
67
- ) external returns (ReferralId referralId);
68
-
69
- /// @dev returns true iff the component needs to be called when selling/renewing policis
44
+ /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
70
45
  function isVerifying() external view returns (bool verifying);
46
+
47
+ /// @dev Withdraw commission for the distributor
48
+ /// @param distributorNftId the distributor Nft Id
49
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
50
+ /// @return withdrawnAmount the effective withdrawn amount
51
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
71
52
  }
@@ -1,9 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
- import {Fee} from "../type/Fee.sol";
7
6
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
7
  import {IService} from "../shared/IService.sol";
9
8
  import {UFixed} from "../type/UFixed.sol";
@@ -13,6 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol";
13
12
 
14
13
 
15
14
  interface IDistributionService is IService {
15
+
16
16
  error ErrorDistributionServiceCallerNotRegistered(address caller);
17
17
  error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
18
18
  error ErrorIDistributionServiceCallerNotDistributor(address caller);
@@ -25,15 +25,17 @@ interface IDistributionService is IService {
25
25
  error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
26
26
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
27
27
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
28
- error ErrorIDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
28
+
29
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
+
31
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
32
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
33
+
29
34
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
30
35
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
31
36
 
32
- function setFees(
33
- Fee memory minDistributionOwnerFee,
34
- Fee memory distributionFee
35
- ) external;
36
-
37
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
38
+
37
39
  function createDistributorType(
38
40
  string memory name,
39
41
  UFixed minDiscountPercentage,
@@ -72,16 +74,28 @@ interface IDistributionService is IService {
72
74
  external
73
75
  returns (ReferralId referralId);
74
76
 
77
+ /// @dev callback from product service when a referral is used.
78
+ /// Calling this will increment the referral usage counter.
79
+ function processReferral(
80
+ NftId distributionNftId,
81
+ ReferralId referralId
82
+ ) external;
83
+
75
84
  /// @dev callback from product service when selling a policy for a specific referralId
76
85
  function processSale(
77
86
  NftId distributionNftId,
78
87
  ReferralId referralId,
79
- IPolicy.Premium memory premium,
80
- Amount transferredDistributionFeeAmount
88
+ IPolicy.PremiumInfo memory premium
81
89
  ) external;
82
90
 
83
91
  function referralIsValid(
84
92
  NftId distributorNftId,
85
93
  ReferralId referralId
86
94
  ) external view returns (bool isValid);
95
+
96
+ /// @dev Withdraw commission for the distributor
97
+ /// @param distributorNftId the distributor Nft Id
98
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
99
+ /// @return withdrawnAmount the effective withdrawn amount
100
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
87
101
  }