@etherisc/gif-next 0.0.2-f080b71-868 → 0.0.2-f083368-470

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 (638) hide show
  1. package/README.md +32 -3
  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 +1548 -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 +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +233 -328
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +213 -239
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +177 -103
  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 +162 -83
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +188 -85
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +155 -170
  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 +818 -387
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +277 -181
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +126 -65
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1465 -561
  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 +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  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 +1185 -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/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +190 -218
  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 +1093 -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/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +297 -153
  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 +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1300 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +786 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +172 -47
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +228 -290
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +294 -60
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1312 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -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 +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +58 -21
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +336 -39
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +178 -106
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service → product}/IPricingService.sol/IPricingService.json +50 -19
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +396 -287
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.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 +199 -125
  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 +443 -43
  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 +367 -73
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  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 +316 -153
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -127
  180. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  220. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  296. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  297. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  298. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  300. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  302. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  303. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  304. package/contracts/authorization/AccessAdmin.sol +591 -0
  305. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  306. package/contracts/authorization/Authorization.sol +218 -0
  307. package/contracts/authorization/IAccess.sol +48 -0
  308. package/contracts/authorization/IAccessAdmin.sol +136 -0
  309. package/contracts/authorization/IAuthorization.sol +54 -0
  310. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  311. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  312. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  313. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  314. package/contracts/distribution/BasicDistribution.sol +149 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +178 -157
  317. package/contracts/distribution/DistributionService.sol +337 -0
  318. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  319. package/contracts/distribution/IDistributionComponent.sol +52 -0
  320. package/contracts/{instance/service → distribution}/IDistributionService.sol +36 -24
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  322. package/contracts/instance/IInstance.sol +50 -24
  323. package/contracts/instance/IInstanceService.sol +49 -41
  324. package/contracts/instance/Instance.sol +137 -110
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +164 -58
  328. package/contracts/instance/InstanceService.sol +285 -162
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +155 -97
  331. package/contracts/instance/base/BalanceStore.sol +123 -0
  332. package/contracts/instance/base/Cloneable.sol +28 -0
  333. package/contracts/instance/base/ObjectCounter.sol +21 -0
  334. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  335. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  336. package/contracts/instance/module/IAccess.sol +4 -12
  337. package/contracts/instance/module/IBundle.sol +6 -9
  338. package/contracts/instance/module/IComponents.sol +20 -10
  339. package/contracts/instance/module/IDistribution.sol +6 -6
  340. package/contracts/instance/module/IPolicy.sol +28 -16
  341. package/contracts/instance/module/IRisk.sol +1 -1
  342. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  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 +170 -0
  349. package/contracts/oracle/OracleService.sol +278 -0
  350. package/contracts/oracle/OracleServiceManager.sol +39 -0
  351. package/contracts/pool/BasicPool.sol +164 -0
  352. package/contracts/pool/BasicPoolAuthorization.sol +55 -0
  353. package/contracts/pool/BundleService.sol +341 -0
  354. package/contracts/pool/BundleServiceManager.sol +39 -0
  355. package/contracts/{instance/service → pool}/IBundleService.sol +47 -21
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/{instance/service → pool}/IPoolService.sol +72 -21
  358. package/contracts/pool/Pool.sol +328 -0
  359. package/contracts/pool/PoolService.sol +434 -0
  360. package/contracts/pool/PoolServiceManager.sol +39 -0
  361. package/contracts/product/ApplicationService.sol +230 -0
  362. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  363. package/contracts/product/BasicProduct.sol +82 -0
  364. package/contracts/product/BasicProductAuthorization.sol +43 -0
  365. package/contracts/product/ClaimService.sol +417 -0
  366. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  367. package/contracts/{instance/service → product}/IApplicationService.sol +15 -17
  368. package/contracts/product/IClaimService.sol +99 -0
  369. package/contracts/{instance/service → product}/IPolicyService.sol +37 -33
  370. package/contracts/{instance/service → product}/IPricingService.sol +14 -11
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +33 -0
  373. package/contracts/product/PolicyService.sol +476 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/{instance/service → product}/PricingService.sol +110 -85
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/{components → product}/Product.sol +210 -114
  378. package/contracts/product/ProductService.sol +99 -0
  379. package/contracts/product/ProductServiceManager.sol +39 -0
  380. package/contracts/registry/ChainNft.sol +8 -1
  381. package/contracts/registry/IRegistry.sol +59 -26
  382. package/contracts/registry/IRegistryService.sol +42 -41
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +69 -103
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +487 -0
  389. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  390. package/contracts/registry/TokenRegistry.sol +261 -62
  391. package/contracts/shared/Component.sol +280 -0
  392. package/contracts/shared/ComponentService.sol +651 -0
  393. package/contracts/shared/ComponentServiceManager.sol +35 -0
  394. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  395. package/contracts/shared/ERC165.sol +1 -1
  396. package/contracts/{components → shared}/IComponent.sol +23 -29
  397. package/contracts/shared/IComponentService.sol +108 -0
  398. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  399. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  400. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  401. package/contracts/shared/INftOwnable.sol +2 -2
  402. package/contracts/shared/IPolicyHolder.sol +29 -10
  403. package/contracts/shared/IRegistryLinked.sol +0 -1
  404. package/contracts/shared/IService.sol +12 -3
  405. package/contracts/shared/InitializableCustom.sol +177 -0
  406. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  407. package/contracts/shared/KeyValueStore.sol +131 -0
  408. package/contracts/shared/Lifecycle.sol +77 -0
  409. package/contracts/shared/NftIdSet.sol +65 -0
  410. package/contracts/shared/NftOwnable.sol +3 -16
  411. package/contracts/shared/PolicyHolder.sol +40 -19
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +32 -22
  415. package/contracts/shared/TokenHandler.sol +27 -2
  416. package/contracts/staking/IStaking.sol +167 -0
  417. package/contracts/staking/IStakingService.sol +160 -0
  418. package/contracts/staking/StakeManagerLib.sol +231 -0
  419. package/contracts/staking/Staking.sol +516 -0
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +50 -0
  422. package/contracts/staking/StakingReader.sol +183 -0
  423. package/contracts/staking/StakingService.sol +411 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +605 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +135 -0
  429. package/contracts/{types → type}/Blocknumber.sol +20 -3
  430. package/contracts/{types → type}/ClaimId.sol +25 -2
  431. package/contracts/{types → type}/Fee.sol +24 -22
  432. package/contracts/{types → type}/NftId.sol +14 -16
  433. package/contracts/{types → type}/NftIdSet.sol +2 -2
  434. package/contracts/type/ObjectType.sol +271 -0
  435. package/contracts/{types → type}/PayoutId.sol +33 -5
  436. package/contracts/{types → type}/Referral.sol +2 -1
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/{types → type}/RiskId.sol +1 -1
  439. package/contracts/type/RoleId.sol +174 -0
  440. package/contracts/{types → type}/Seconds.sol +27 -0
  441. package/contracts/type/Selector.sol +102 -0
  442. package/contracts/{types → type}/StateId.sol +33 -4
  443. package/contracts/type/String.sol +53 -0
  444. package/contracts/{types → type}/Timestamp.sol +10 -1
  445. package/contracts/{types → type}/UFixed.sol +34 -9
  446. package/contracts/{types → type}/Version.sol +4 -2
  447. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  448. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  449. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  450. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  451. package/package.json +8 -5
  452. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  453. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  454. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  456. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  459. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  460. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  461. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  462. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  463. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  464. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  467. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  468. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  469. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  470. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  471. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  476. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  477. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  478. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  479. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  480. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  481. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -860
  483. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -641
  485. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1276
  487. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -717
  489. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -849
  491. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  493. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1539
  495. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -769
  497. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  499. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1166
  507. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  509. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1269
  511. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  513. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +0 -988
  515. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +0 -689
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -872
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  521. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  523. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  524. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  525. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  526. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  527. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  528. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  529. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  530. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  531. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  532. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  535. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  537. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  539. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  541. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  543. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  545. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  546. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  547. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  548. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  549. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  550. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  551. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  553. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  555. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  557. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  559. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  561. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  563. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  565. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  567. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  568. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  569. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  571. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  573. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  574. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  575. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  577. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  579. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  581. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  583. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  587. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  589. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  591. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  592. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  593. package/contracts/components/Component.sol +0 -253
  594. package/contracts/components/IDistributionComponent.sol +0 -71
  595. package/contracts/components/IPoolComponent.sol +0 -113
  596. package/contracts/components/IProductComponent.sol +0 -40
  597. package/contracts/components/Pool.sol +0 -303
  598. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  599. package/contracts/instance/Cloneable.sol +0 -51
  600. package/contracts/instance/InstanceAccessManager.sol +0 -540
  601. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -299
  602. package/contracts/instance/base/ComponentService.sol +0 -147
  603. package/contracts/instance/base/KeyValueStore.sol +0 -180
  604. package/contracts/instance/base/Lifecycle.sol +0 -109
  605. package/contracts/instance/module/ISetup.sol +0 -33
  606. package/contracts/instance/module/ITreasury.sol +0 -23
  607. package/contracts/instance/service/ApplicationService.sol +0 -183
  608. package/contracts/instance/service/BundleService.sol +0 -431
  609. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  610. package/contracts/instance/service/ClaimService.sol +0 -145
  611. package/contracts/instance/service/DistributionService.sol +0 -346
  612. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  613. package/contracts/instance/service/IClaimService.sol +0 -61
  614. package/contracts/instance/service/IProductService.sol +0 -40
  615. package/contracts/instance/service/PolicyService.sol +0 -376
  616. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  617. package/contracts/instance/service/PoolService.sol +0 -303
  618. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  619. package/contracts/instance/service/PricingServiceManager.sol +0 -51
  620. package/contracts/instance/service/ProductService.sol +0 -210
  621. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  622. package/contracts/registry/RegistryAccessManager.sol +0 -216
  623. package/contracts/registry/ReleaseManager.sol +0 -324
  624. package/contracts/shared/ContractDeployerLib.sol +0 -72
  625. package/contracts/test/TestFee.sol +0 -25
  626. package/contracts/test/TestRegisterable.sol +0 -18
  627. package/contracts/test/TestRoleId.sol +0 -14
  628. package/contracts/test/TestService.sol +0 -25
  629. package/contracts/test/TestToken.sol +0 -26
  630. package/contracts/test/TestVersion.sol +0 -44
  631. package/contracts/test/TestVersionable.sol +0 -17
  632. package/contracts/types/Amount.sol +0 -60
  633. package/contracts/types/ChainId.sol +0 -38
  634. package/contracts/types/NumberId.sol +0 -52
  635. package/contracts/types/ObjectType.sol +0 -161
  636. package/contracts/types/RoleId.sol +0 -97
  637. /package/contracts/{types → type}/DistributorType.sol +0 -0
  638. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,337 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IRegistryService} from "../registry/IRegistryService.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
13
+ import {IPolicy} from "../instance/module/IPolicy.sol";
14
+
15
+ import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {NftId, NftIdLib} from "../type/NftId.sol";
17
+ import {Fee, FeeLib} from "../type/Fee.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
19
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
21
+ import {IDistributionService} from "./IDistributionService.sol";
22
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
23
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
24
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
25
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
26
+ import {IDistribution} from "../instance/module/IDistribution.sol";
27
+ import {InstanceStore} from "../instance/InstanceStore.sol";
28
+
29
+
30
+ contract DistributionService is
31
+ ComponentVerifyingService,
32
+ IDistributionService
33
+ {
34
+ IComponentService private _componentService;
35
+ IInstanceService private _instanceService;
36
+ IRegistryService private _registryService;
37
+
38
+ function _initialize(
39
+ address owner,
40
+ bytes memory data
41
+ )
42
+ internal
43
+ initializer
44
+ virtual override
45
+ {
46
+ address initialOwner;
47
+ address registryAddress;
48
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
49
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
50
+ // owner is DistributionServiceManager deployer
51
+ initializeService(registryAddress, address(0), owner);
52
+
53
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
54
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
55
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
56
+
57
+ registerInterface(type(IDistributionService).interfaceId);
58
+ }
59
+
60
+
61
+ function createDistributorType(
62
+ string memory name,
63
+ UFixed minDiscountPercentage,
64
+ UFixed maxDiscountPercentage,
65
+ UFixed commissionPercentage,
66
+ uint32 maxReferralCount,
67
+ uint32 maxReferralLifetime,
68
+ bool allowSelfReferrals,
69
+ bool allowRenewals,
70
+ bytes memory data
71
+ )
72
+ external
73
+ returns (DistributorType distributorType)
74
+ {
75
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
76
+ InstanceReader instanceReader = instance.getInstanceReader();
77
+
78
+ {
79
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
80
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
81
+
82
+ UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
83
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
84
+
85
+ if (variableFeesPartsTotal > variableDistributionFees) {
86
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
87
+ }
88
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
89
+
90
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
91
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
92
+ }
93
+ }
94
+
95
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
96
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
97
+ name,
98
+ minDiscountPercentage,
99
+ maxDiscountPercentage,
100
+ commissionPercentage,
101
+ maxReferralCount,
102
+ maxReferralLifetime,
103
+ allowSelfReferrals,
104
+ allowRenewals,
105
+ data);
106
+
107
+ instance.getInstanceStore().createDistributorType(distributorType, info);
108
+ }
109
+
110
+
111
+ function createDistributor(
112
+ address distributor,
113
+ DistributorType distributorType,
114
+ bytes memory data
115
+ )
116
+ external
117
+ virtual
118
+ returns (NftId distributorNftId)
119
+ {
120
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
121
+
122
+ distributorNftId = _registryService.registerDistributor(
123
+ IRegistry.ObjectInfo(
124
+ NftIdLib.zero(),
125
+ distributionNftId,
126
+ DISTRIBUTOR(),
127
+ true, // intercepting property for bundles is defined on pool
128
+ address(0),
129
+ distributor,
130
+ ""
131
+ ));
132
+
133
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
134
+ distributorType,
135
+ true, // active
136
+ data,
137
+ 0);
138
+
139
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
140
+ }
141
+
142
+ // function updateDistributorType(
143
+ // NftId distributorNftId,
144
+ // DistributorType distributorType,
145
+ // bytes memory data
146
+ // )
147
+ // external
148
+ // virtual
149
+ // {
150
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
151
+ // InstanceReader instanceReader = instance.getInstanceReader();
152
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
153
+ // distributorInfo.distributorType = distributorType;
154
+ // distributorInfo.data = data;
155
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
156
+ // }
157
+
158
+
159
+ function createReferral(
160
+ NftId distributorNftId,
161
+ string memory code,
162
+ UFixed discountPercentage,
163
+ uint32 maxReferrals,
164
+ Timestamp expiryAt,
165
+ bytes memory data
166
+ )
167
+ external
168
+ virtual
169
+ returns (ReferralId referralId)
170
+ {
171
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
172
+
173
+ if (bytes(code).length == 0) {
174
+ revert ErrorIDistributionServiceInvalidReferral(code);
175
+ }
176
+ if (expiryAt.eqz()) {
177
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
178
+ }
179
+
180
+ InstanceReader instanceReader = instance.getInstanceReader();
181
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
182
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
183
+
184
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
185
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
186
+ }
187
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
188
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
189
+ }
190
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
191
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
192
+ }
193
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
194
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
195
+ }
196
+
197
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
198
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
199
+ distributorNftId,
200
+ code,
201
+ discountPercentage,
202
+ maxReferrals,
203
+ 0, // used referrals
204
+ expiryAt,
205
+ data
206
+ );
207
+
208
+ instance.getInstanceStore().createReferral(referralId, info);
209
+ return referralId;
210
+ }
211
+
212
+
213
+ function processSale(
214
+ NftId distributionNftId, // assume always of distribution type
215
+ ReferralId referralId,
216
+ IPolicy.Premium memory premium
217
+ )
218
+ external
219
+ virtual
220
+ restricted
221
+ {
222
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
223
+ InstanceReader reader = instance.getInstanceReader();
224
+ InstanceStore store = instance.getInstanceStore();
225
+
226
+ // get distribution owner fee amount
227
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
228
+
229
+ // update referral/distributor info if applicable
230
+ if (referralIsValid(distributionNftId, referralId)) {
231
+
232
+ // increase distribution balance by commission amount and distribution owner fee
233
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
234
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
235
+
236
+ // update book keeping for referral info
237
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
238
+ referralInfo.usedReferrals += 1;
239
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
240
+
241
+ _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
242
+
243
+ // update book keeping for distributor info
244
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
245
+ distributorInfo.numPoliciesSold += 1;
246
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
247
+ } else {
248
+ // increase distribution balance by distribution owner fee
249
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
250
+ }
251
+ }
252
+
253
+ /// @inheritdoc IDistributionService
254
+ function withdrawCommission(NftId distributorNftId, Amount amount)
255
+ public
256
+ virtual
257
+ // TODO: restricted() (once #462 is done)
258
+ returns (Amount withdrawnAmount)
259
+ {
260
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
261
+ InstanceReader reader = instance.getInstanceReader();
262
+
263
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
264
+ address distributionWallet = distributionInfo.wallet;
265
+
266
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
267
+
268
+ // determine withdrawn amount
269
+ withdrawnAmount = amount;
270
+ if (withdrawnAmount.gte(AmountLib.max())) {
271
+ withdrawnAmount = commissionAmount;
272
+ } else {
273
+ if (withdrawnAmount.gt(commissionAmount)) {
274
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
275
+ }
276
+ }
277
+
278
+ if (withdrawnAmount.eqz()) {
279
+ revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
280
+ }
281
+
282
+ // check allowance
283
+ IERC20Metadata token = IERC20Metadata(distributionInfo.token);
284
+ uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
285
+ if (tokenAllowance < withdrawnAmount.toInt()) {
286
+ revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
287
+ }
288
+
289
+ // decrease fee counters by withdrawnAmount and update distributor info
290
+ {
291
+ InstanceStore store = instance.getInstanceStore();
292
+ // decrease fee counter for distribution balance
293
+ _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
294
+ // decrease fee counter for distributor fee
295
+ _componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
296
+ }
297
+
298
+ // transfer amount to distributor
299
+ {
300
+ address distributor = getRegistry().ownerOf(distributorNftId);
301
+ // TODO: centralize token handling (issue #471)
302
+ distributionInfo.tokenHandler.transfer(distributionWallet, distributor, withdrawnAmount);
303
+
304
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
305
+ }
306
+ }
307
+
308
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
309
+ if (distributionNftId.eqz() || referralId.eqz()) {
310
+ return false;
311
+ }
312
+
313
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
314
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
315
+
316
+ if (info.distributorNftId.eqz()) {
317
+ return false;
318
+ }
319
+
320
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
321
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
322
+ }
323
+
324
+ function _getInstanceForDistribution(NftId distributionNftId)
325
+ internal
326
+ view
327
+ returns(IInstance instance)
328
+ {
329
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
330
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
331
+ return IInstance(instanceAddress);
332
+ }
333
+
334
+ function _getDomain() internal pure override returns(ObjectType) {
335
+ return DISTRIBUTION();
336
+ }
337
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {DistributionService} from "./DistributionService.sol";
7
+
8
+ contract DistributionServiceManager is ProxyManager {
9
+
10
+ DistributionService private _distributionService;
11
+
12
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ DistributionService distSrv = new DistributionService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(distSrv),
24
+ data,
25
+ salt);
26
+
27
+ _distributionService = DistributionService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getDistributionService()
32
+ external
33
+ view
34
+ returns (DistributionService distributionService)
35
+ {
36
+ return _distributionService;
37
+ }
38
+
39
+ }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
8
+ import {UFixed} from "../type/UFixed.sol";
9
+
10
+ interface IDistributionComponent is IInstanceLinkedComponent {
11
+
12
+ error ErrorDistributionNotDistributor(address distributor);
13
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
14
+
15
+ event LogDistributorUpdated(address to, address caller);
16
+
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);
19
+
20
+ /// @dev Returns the distributor Nft Id for the provided address
21
+ function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
22
+
23
+ function getDiscountPercentage(
24
+ string memory referralCode
25
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
26
+
27
+ function getReferralId(
28
+ string memory referralCode
29
+ ) external returns (ReferralId referralId);
30
+
31
+ function calculateRenewalFeeAmount(
32
+ ReferralId referralId,
33
+ uint256 netPremiumAmount
34
+ ) external view returns (uint256 feeAmount);
35
+
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.
39
+ function processRenewal(
40
+ ReferralId referralId,
41
+ uint256 feeAmount
42
+ ) external;
43
+
44
+ /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
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);
52
+ }
@@ -1,17 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {Fee} from "../../types/Fee.sol";
6
- import {IPolicy} from "../module/IPolicy.sol";
7
- import {IService} from "../../shared/IService.sol";
8
- import {UFixed} from "../../types/UFixed.sol";
9
- import {DistributorType} from "../../types/DistributorType.sol";
10
- import {ReferralId} from "../../types/Referral.sol";
11
- import {Timestamp} from "../../types/Timestamp.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {DistributorType} from "../type/DistributorType.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
12
13
 
13
14
 
14
15
  interface IDistributionService is IService {
16
+
15
17
  error ErrorDistributionServiceCallerNotRegistered(address caller);
16
18
  error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
17
19
  error ErrorIDistributionServiceCallerNotDistributor(address caller);
@@ -24,15 +26,19 @@ interface IDistributionService is IService {
24
26
  error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
25
27
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
26
28
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
27
- error ErrorIDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
29
+
30
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
31
+ error ErrorDistributionServiceCommissionWithdrawAmountIsZero();
32
+ error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
33
+
34
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
35
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
36
+
28
37
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
29
- error ErrorIDistributionServiceInvalidFeeTransferred(uint256 transferredDistributionFeeAmount, uint256 expectedDistributionFeeAmount);
38
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
39
+
40
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
30
41
 
31
- function setFees(
32
- Fee memory minDistributionOwnerFee,
33
- Fee memory distributionFee
34
- ) external;
35
-
36
42
  function createDistributorType(
37
43
  string memory name,
38
44
  UFixed minDiscountPercentage,
@@ -53,11 +59,12 @@ interface IDistributionService is IService {
53
59
  bytes memory data
54
60
  ) external returns (NftId distributorNftId);
55
61
 
56
- function updateDistributorType(
57
- NftId distributorNftId,
58
- DistributorType distributorType,
59
- bytes memory data
60
- ) external;
62
+ // TODO re-enable and reorganize (service contract too large)
63
+ // function updateDistributorType(
64
+ // NftId distributorNftId,
65
+ // DistributorType distributorType,
66
+ // bytes memory data
67
+ // ) external;
61
68
 
62
69
  function createReferral(
63
70
  NftId distributorNftId,
@@ -74,12 +81,17 @@ interface IDistributionService is IService {
74
81
  function processSale(
75
82
  NftId distributionNftId,
76
83
  ReferralId referralId,
77
- IPolicy.Premium memory premium,
78
- uint256 transferredDistributionFeeAmount
84
+ IPolicy.Premium memory premium
79
85
  ) external;
80
86
 
81
87
  function referralIsValid(
82
88
  NftId distributorNftId,
83
89
  ReferralId referralId
84
90
  ) external view returns (bool isValid);
85
- }
91
+
92
+ /// @dev Withdraw commission for the distributor
93
+ /// @param distributorNftId the distributor Nft Id
94
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
95
+ /// @return withdrawnAmount the effective withdrawn amount
96
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
97
+ }
@@ -2,40 +2,39 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IInstance} from "./IInstance.sol";
5
- import {INSTANCE} from "../types/ObjectType.sol";
5
+ import {INSTANCE} from "../type/ObjectType.sol";
6
6
  import {InstanceReader} from "./InstanceReader.sol";
7
7
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
- import {LibNftIdSet} from "../types/NftIdSet.sol";
10
- import {NftId} from "../types/NftId.sol";
11
- import {TimestampLib} from "../types/Timestamp.sol";
9
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {TimestampLib} from "../type/Timestamp.sol";
12
12
 
13
- import {ObjectManager} from "./ObjectManager.sol";
13
+ import {ObjectSet} from "./base/ObjectSet.sol";
14
14
 
15
- contract BundleManager is
16
- ObjectManager
15
+ contract BundleSet is
16
+ ObjectSet
17
17
  {
18
18
 
19
- event LogBundleManagerPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
- event LogBundleManagerPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
19
+ event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
+ event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
21
21
 
22
- event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
23
- event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
- event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
25
- event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
22
+ event LogBundleSetBundleAdded(NftId poolNftId, NftId bundleNftId);
23
+ event LogBundleSetBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
+ event LogBundleSetBundleLocked(NftId poolNftId, NftId bundleNftId);
25
+ event LogBundleSetBundleClosed(NftId poolNftId, NftId bundleNftId);
26
26
 
27
- error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
28
- error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
29
- error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
30
- error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
31
- error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
32
- error ErrorBundleManagerBundleNotRegistered(NftId bundleNftId);
27
+ error ErrorBundleSetPolicyAlreadyActivated(NftId policyNftId);
28
+ error ErrorBundleSetBundleLocked(NftId bundleNftId, NftId policyNftId);
29
+ error ErrorBundleSetPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
30
+ error ErrorBundleSetPolicyNotCloseable(NftId policyNftId);
31
+ error ErrorBundleSetBundleUnknown(NftId bundleNftId);
32
+ error ErrorBundleSetBundleNotRegistered(NftId bundleNftId);
33
33
 
34
34
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
35
35
 
36
36
  /// @dev links a policy to its bundle
37
- // to link a policy it MUST NOT yet have been activated
38
- // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
37
+ // to link a policy it MUST NOT yet have been linked
39
38
  function linkPolicy(NftId policyNftId) external restricted() {
40
39
  NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
41
40
  // decision will likely depend on the decision what to check here and what in the service
@@ -43,11 +42,11 @@ contract BundleManager is
43
42
 
44
43
  // ensure bundle is unlocked (in active set) and registered with this instance
45
44
  if (!_isActive(poolNftId, bundleNftId)) {
46
- revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
45
+ revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
47
46
  }
48
47
 
49
48
  LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
50
- emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
49
+ emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
51
50
  }
52
51
 
53
52
 
@@ -64,11 +63,11 @@ contract BundleManager is
64
63
 
65
64
  // ensure bundle is registered with this instance
66
65
  if (!_contains(poolNftId, bundleNftId)) {
67
- revert ErrorBundleManagerBundleUnknown(bundleNftId);
66
+ revert ErrorBundleSetBundleUnknown(bundleNftId);
68
67
  }
69
68
 
70
69
  LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
71
- emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
70
+ emit LogBundleSetPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
72
71
  }
73
72
 
74
73
 
@@ -79,26 +78,26 @@ contract BundleManager is
79
78
 
80
79
  // ensure pool is registered with instance
81
80
  if(poolNftId.eqz()) {
82
- revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
81
+ revert ErrorBundleSetBundleNotRegistered(bundleNftId);
83
82
  }
84
83
 
85
84
  _add(poolNftId, bundleNftId);
86
- emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
85
+ emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
87
86
  }
88
87
 
89
88
 
90
- /// @dev unlocked (active) bundles are available to underwrite new policies
89
+ /// @dev unlocked (active) bundles are available to collateralize new policies
91
90
  function unlock(NftId bundleNftId) external restricted() {
92
91
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
93
92
  _activate(poolNftId, bundleNftId);
94
- emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
93
+ emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
95
94
  }
96
95
 
97
- /// @dev locked (deactivated) bundles may not underwrite any new policies
96
+ /// @dev locked (deactivated) bundles may not collateralize any new policies
98
97
  function lock(NftId bundleNftId) external restricted() {
99
98
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
100
99
  _deactivate(poolNftId, bundleNftId);
101
- emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
100
+ emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
102
101
  }
103
102
 
104
103
  function bundles(NftId poolNftId) external view returns(uint256) {