@etherisc/gif-next 0.0.2-f30e0eb-805 → 0.0.2-f36fd21-685

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 (632) hide show
  1. package/README.md +38 -86
  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 -318
  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 +282 -208
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +233 -301
  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 +272 -1967
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +269 -79
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +397 -2762
  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 +783 -332
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +352 -225
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +115 -82
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3581 -0
  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 +10 -118
  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/oracle/IOracleComponent.sol/IOracleComponent.json +802 -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 +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/pool/BasicPool.sol/BasicPool.json +1520 -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 +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 +314 -139
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +299 -251
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +270 -314
  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/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +174 -202
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +733 -0
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +146 -153
  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 +80 -64
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1196 -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 +357 -238
  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 -149
  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 +372 -97
  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 +144 -80
  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} +100 -113
  180. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  181. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +180 -54
  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/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +205 -198
  186. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  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 +3 -10
  192. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -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 +103 -21
  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 +138 -0
  315. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  316. package/contracts/{components → distribution}/Distribution.sol +177 -162
  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 +37 -38
  321. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  322. package/contracts/instance/IInstance.sol +55 -67
  323. package/contracts/instance/IInstanceService.sol +50 -30
  324. package/contracts/instance/Instance.sol +160 -233
  325. package/contracts/instance/InstanceAdmin.sol +266 -0
  326. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  327. package/contracts/instance/InstanceReader.sol +173 -58
  328. package/contracts/instance/InstanceService.sol +281 -333
  329. package/contracts/instance/InstanceServiceManager.sol +12 -26
  330. package/contracts/instance/InstanceStore.sol +277 -0
  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 +5 -13
  337. package/contracts/instance/module/IBundle.sol +8 -9
  338. package/contracts/instance/module/IComponents.sol +21 -5
  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 +166 -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/pool/IBundleService.sol +120 -0
  356. package/contracts/pool/IPoolComponent.sol +58 -0
  357. package/contracts/pool/IPoolService.sol +150 -0
  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 +52 -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 -35
  368. package/contracts/product/IClaimService.sol +99 -0
  369. package/contracts/{instance/service → product}/IPolicyService.sol +38 -30
  370. package/contracts/product/IPricingService.sol +39 -0
  371. package/contracts/product/IProductComponent.sol +40 -0
  372. package/contracts/product/IProductService.sol +33 -0
  373. package/contracts/product/PolicyService.sol +499 -0
  374. package/contracts/product/PolicyServiceManager.sol +39 -0
  375. package/contracts/product/PricingService.sol +300 -0
  376. package/contracts/product/PricingServiceManager.sol +39 -0
  377. package/contracts/{components → product}/Product.sol +218 -110
  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 +44 -42
  383. package/contracts/registry/Registry.sol +234 -125
  384. package/contracts/registry/RegistryAdmin.sol +365 -0
  385. package/contracts/registry/RegistryService.sol +70 -101
  386. package/contracts/registry/RegistryServiceManager.sol +23 -32
  387. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  388. package/contracts/registry/ReleaseRegistry.sol +485 -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/{components → shared}/IComponent.sol +23 -27
  396. package/contracts/shared/IComponentService.sol +108 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +2 -2
  401. package/contracts/shared/IPolicyHolder.sol +29 -10
  402. package/contracts/shared/IRegistryLinked.sol +0 -1
  403. package/contracts/shared/IService.sol +15 -8
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  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 +5 -18
  411. package/contracts/shared/PolicyHolder.sol +41 -23
  412. package/contracts/shared/Registerable.sol +13 -12
  413. package/contracts/shared/RegistryLinked.sol +0 -5
  414. package/contracts/shared/Service.sol +47 -23
  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 +33 -24
  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 -1311
  467. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  468. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  469. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  476. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  479. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  481. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  483. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  485. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  487. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  489. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  491. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  493. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  495. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  497. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  499. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  501. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  503. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  506. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  508. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  510. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  512. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  514. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  516. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  517. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  518. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  519. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  520. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  521. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  522. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  523. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  524. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  525. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  526. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  527. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  528. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  529. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  532. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  534. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  536. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  538. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  539. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  540. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  541. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  542. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  543. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  544. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  545. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  546. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  547. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  552. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  554. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  556. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  558. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  560. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  562. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  563. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  564. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  566. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  568. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  570. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  572. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  574. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  576. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  578. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  582. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  584. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  586. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  588. package/contracts/components/Component.sol +0 -251
  589. package/contracts/components/IDistributionComponent.sol +0 -71
  590. package/contracts/components/IPoolComponent.sol +0 -113
  591. package/contracts/components/IProductComponent.sol +0 -40
  592. package/contracts/components/Pool.sol +0 -299
  593. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  594. package/contracts/instance/Cloneable.sol +0 -51
  595. package/contracts/instance/InstanceAccessManager.sol +0 -522
  596. package/contracts/instance/base/ComponentService.sol +0 -134
  597. package/contracts/instance/base/KeyValueStore.sol +0 -175
  598. package/contracts/instance/base/Lifecycle.sol +0 -109
  599. package/contracts/instance/module/ISetup.sol +0 -33
  600. package/contracts/instance/module/ITreasury.sol +0 -23
  601. package/contracts/instance/service/ApplicationService.sol +0 -350
  602. package/contracts/instance/service/BundleService.sol +0 -336
  603. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  604. package/contracts/instance/service/ClaimService.sol +0 -151
  605. package/contracts/instance/service/DistributionService.sol +0 -467
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IBundleService.sol +0 -62
  608. package/contracts/instance/service/IClaimService.sol +0 -61
  609. package/contracts/instance/service/IPoolService.sol +0 -35
  610. package/contracts/instance/service/IProductService.sol +0 -40
  611. package/contracts/instance/service/PolicyService.sol +0 -403
  612. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  613. package/contracts/instance/service/PoolService.sol +0 -220
  614. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  615. package/contracts/instance/service/ProductService.sol +0 -241
  616. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  617. package/contracts/registry/RegistryAccessManager.sol +0 -216
  618. package/contracts/registry/ReleaseManager.sol +0 -322
  619. package/contracts/shared/ContractDeployerLib.sol +0 -72
  620. package/contracts/test/TestFee.sol +0 -25
  621. package/contracts/test/TestRegisterable.sol +0 -18
  622. package/contracts/test/TestRoleId.sol +0 -14
  623. package/contracts/test/TestService.sol +0 -25
  624. package/contracts/test/TestToken.sol +0 -26
  625. package/contracts/test/TestVersion.sol +0 -44
  626. package/contracts/test/TestVersionable.sol +0 -17
  627. package/contracts/types/ChainId.sol +0 -38
  628. package/contracts/types/NumberId.sol +0 -52
  629. package/contracts/types/ObjectType.sol +0 -157
  630. package/contracts/types/RoleId.sol +0 -97
  631. /package/contracts/{types → type}/DistributorType.sol +0 -0
  632. /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,20 @@
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
+
17
+ error ErrorDistributionServiceCallerNotRegistered(address caller);
15
18
  error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
16
19
  error ErrorIDistributionServiceCallerNotDistributor(address caller);
17
20
  error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
@@ -23,23 +26,19 @@ interface IDistributionService is IService {
23
26
  error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
24
27
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
25
28
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
26
- error ErrorIDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
27
- error ErrorIDistributionServiceFeeCalculationMismatch(
28
- uint256 distributionFeeFixAmount,
29
- uint256 distributionFeeVarAmount,
30
- uint256 distributionOwnerFeeFixAmount,
31
- uint256 distributionOwnerFeeVarAmount,
32
- uint256 commissionAmount,
33
- uint256 discountAmount
34
- );
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
+
35
37
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
36
- 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);
37
41
 
38
- function setFees(
39
- Fee memory minDistributionOwnerFee,
40
- Fee memory distributionFee
41
- ) external;
42
-
43
42
  function createDistributorType(
44
43
  string memory name,
45
44
  UFixed minDiscountPercentage,
@@ -60,11 +59,12 @@ interface IDistributionService is IService {
60
59
  bytes memory data
61
60
  ) external returns (NftId distributorNftId);
62
61
 
63
- function updateDistributorType(
64
- NftId distributorNftId,
65
- DistributorType distributorType,
66
- bytes memory data
67
- ) 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;
68
68
 
69
69
  function createReferral(
70
70
  NftId distributorNftId,
@@ -79,20 +79,19 @@ interface IDistributionService is IService {
79
79
 
80
80
  /// @dev callback from product service when selling a policy for a specific referralId
81
81
  function processSale(
82
- NftId distributionNftId,
83
- ReferralId referralId,
84
- IPolicy.Premium memory premium,
85
- uint256 transferredDistributionFeeAmount
86
- ) external;
87
-
88
- function calculateFeeAmount(
89
82
  NftId distributionNftId,
90
83
  ReferralId referralId,
91
84
  IPolicy.Premium memory premium
92
- ) external view returns (IPolicy.Premium memory finalPremium);
85
+ ) external;
93
86
 
94
87
  function referralIsValid(
95
88
  NftId distributorNftId,
96
89
  ReferralId referralId
97
90
  ) external view returns (bool isValid);
98
- }
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) {