@etherisc/gif-next 0.0.2-f7c17b4-297 → 0.0.2-f7d1200-068

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 (634) hide show
  1. package/README.md +54 -88
  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 +1518 -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 +264 -378
  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 +314 -248
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  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 +290 -2132
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +328 -69
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +402 -2896
  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 +673 -371
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -262
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +115 -74
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -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 -49
  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 +25 -150
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +337 -284
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +320 -339
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1521 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +938 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +297 -380
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1700 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +798 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1339 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +137 -87
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +788 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +816 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IPricingService.sol/IPricingService.json} +203 -226
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +418 -173
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +90 -63
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1335 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +794 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/{components → product}/Product.sol/Product.json +381 -310
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +191 -18
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +199 -138
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +453 -34
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +372 -86
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +199 -115
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1712 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +100 -102
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +236 -52
  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 +106 -18
  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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +113 -20
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +107 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/{components → distribution}/Distribution.sol +179 -192
  319. package/contracts/distribution/DistributionService.sol +336 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +32 -31
  324. package/contracts/instance/IInstance.sol +60 -66
  325. package/contracts/instance/IInstanceService.sol +57 -24
  326. package/contracts/instance/Instance.sol +176 -213
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +180 -65
  330. package/contracts/instance/InstanceService.sol +310 -357
  331. package/contracts/instance/InstanceServiceManager.sol +12 -26
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +104 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  338. package/contracts/instance/module/IAccess.sol +19 -20
  339. package/contracts/instance/module/IBundle.sol +8 -9
  340. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +21 -23
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +52 -16
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +166 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  355. package/contracts/pool/BundleService.sol +450 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +135 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +149 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +559 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  365. package/contracts/product/BasicProduct.sol +52 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +424 -0
  368. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  369. package/contracts/{instance/service → product}/IApplicationService.sol +15 -36
  370. package/contracts/product/IClaimService.sol +100 -0
  371. package/contracts/product/IPolicyService.sol +85 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +556 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +411 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +16 -1
  383. package/contracts/registry/IRegistry.sol +61 -26
  384. package/contracts/registry/IRegistryService.sol +44 -42
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +251 -139
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +70 -101
  389. package/contracts/registry/RegistryServiceManager.sol +23 -32
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +261 -62
  394. package/contracts/shared/Component.sol +281 -0
  395. package/contracts/shared/ComponentService.sol +650 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/{components → shared}/IComponent.sol +30 -27
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +2 -2
  404. package/contracts/shared/IPolicyHolder.sol +29 -10
  405. package/contracts/shared/IRegistryLinked.sol +0 -1
  406. package/contracts/shared/IService.sol +15 -6
  407. package/contracts/shared/InitializableCustom.sol +177 -0
  408. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  409. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  410. package/contracts/shared/KeyValueStore.sol +131 -0
  411. package/contracts/shared/Lifecycle.sol +77 -0
  412. package/contracts/shared/NftIdSet.sol +65 -0
  413. package/contracts/shared/NftOwnable.sol +5 -18
  414. package/contracts/shared/PolicyHolder.sol +41 -23
  415. package/contracts/shared/Registerable.sol +13 -12
  416. package/contracts/shared/RegistryLinked.sol +0 -5
  417. package/contracts/shared/Service.sol +47 -23
  418. package/contracts/shared/TokenHandler.sol +41 -6
  419. package/contracts/staking/IStaking.sol +167 -0
  420. package/contracts/staking/IStakingService.sol +160 -0
  421. package/contracts/staking/StakeManagerLib.sol +231 -0
  422. package/contracts/staking/Staking.sol +516 -0
  423. package/contracts/staking/StakingLifecycle.sol +23 -0
  424. package/contracts/staking/StakingManager.sol +50 -0
  425. package/contracts/staking/StakingReader.sol +183 -0
  426. package/contracts/staking/StakingService.sol +407 -0
  427. package/contracts/staking/StakingServiceManager.sol +44 -0
  428. package/contracts/staking/StakingStore.sol +605 -0
  429. package/contracts/staking/TargetManagerLib.sol +207 -0
  430. package/contracts/{types → type}/AddressSet.sol +1 -1
  431. package/contracts/type/Amount.sol +135 -0
  432. package/contracts/{types → type}/Blocknumber.sol +27 -3
  433. package/contracts/{types → type}/ClaimId.sol +25 -2
  434. package/contracts/{types → type}/Fee.sol +33 -23
  435. package/contracts/{types → type}/NftId.sol +21 -15
  436. package/contracts/{types → type}/NftIdSet.sol +2 -2
  437. package/contracts/type/ObjectType.sol +271 -0
  438. package/contracts/{types → type}/PayoutId.sol +33 -5
  439. package/contracts/{types → type}/Referral.sol +6 -1
  440. package/contracts/type/RequestId.sol +75 -0
  441. package/contracts/{types → type}/RiskId.sol +1 -1
  442. package/contracts/type/RoleId.sol +174 -0
  443. package/contracts/{types → type}/Seconds.sol +40 -1
  444. package/contracts/type/Selector.sol +102 -0
  445. package/contracts/{types → type}/StateId.sol +34 -4
  446. package/contracts/type/String.sol +53 -0
  447. package/contracts/{types → type}/Timestamp.sol +22 -2
  448. package/contracts/{types → type}/UFixed.sol +35 -9
  449. package/contracts/{types → type}/Version.sol +5 -2
  450. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  451. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  452. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  453. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  454. package/package.json +8 -5
  455. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  456. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  457. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  459. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  462. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  463. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  464. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  465. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  467. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  468. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  469. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  470. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  476. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  477. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  479. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  481. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  483. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  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 -743
  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 -935
  493. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -677
  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 -398
  499. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -480
  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/IPoolService.sol/IPoolService.json +0 -336
  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 -1109
  507. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  509. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -716
  511. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  513. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  515. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  517. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  518. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  519. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  520. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  521. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  522. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  523. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  525. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  526. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  527. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  528. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  529. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  530. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  533. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  535. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  537. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  539. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  541. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  543. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  545. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  546. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  547. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  548. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  551. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  553. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  555. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  557. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  559. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  561. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  563. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  564. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  565. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  569. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  571. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  573. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  574. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  575. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  577. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  579. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  582. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  584. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  586. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  588. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  590. package/contracts/components/Component.sol +0 -221
  591. package/contracts/components/IDistributionComponent.sol +0 -100
  592. package/contracts/components/IPoolComponent.sol +0 -151
  593. package/contracts/components/IProductComponent.sol +0 -40
  594. package/contracts/components/Pool.sol +0 -378
  595. package/contracts/components/Product.sol +0 -293
  596. package/contracts/instance/InstanceAccessManager.sol +0 -297
  597. package/contracts/instance/base/ComponentService.sol +0 -134
  598. package/contracts/instance/base/KeyValueStore.sol +0 -172
  599. package/contracts/instance/base/Lifecycle.sol +0 -100
  600. package/contracts/instance/module/ITreasury.sol +0 -23
  601. package/contracts/instance/service/ApplicationService.sol +0 -269
  602. package/contracts/instance/service/BundleService.sol +0 -299
  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 -277
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IBundleService.sol +0 -55
  608. package/contracts/instance/service/IClaimService.sol +0 -61
  609. package/contracts/instance/service/IDistributionService.sol +0 -65
  610. package/contracts/instance/service/IPolicyService.sol +0 -90
  611. package/contracts/instance/service/IPoolService.sol +0 -20
  612. package/contracts/instance/service/IProductService.sol +0 -40
  613. package/contracts/instance/service/PolicyService.sol +0 -476
  614. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  615. package/contracts/instance/service/PoolService.sol +0 -109
  616. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  617. package/contracts/instance/service/ProductService.sol +0 -233
  618. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  619. package/contracts/registry/RegistryAccessManager.sol +0 -216
  620. package/contracts/registry/ReleaseManager.sol +0 -322
  621. package/contracts/shared/ContractDeployerLib.sol +0 -72
  622. package/contracts/test/TestFee.sol +0 -25
  623. package/contracts/test/TestRegisterable.sol +0 -18
  624. package/contracts/test/TestRoleId.sol +0 -14
  625. package/contracts/test/TestService.sol +0 -25
  626. package/contracts/test/TestToken.sol +0 -26
  627. package/contracts/test/TestVersion.sol +0 -44
  628. package/contracts/test/TestVersionable.sol +0 -17
  629. package/contracts/types/ChainId.sol +0 -38
  630. package/contracts/types/NumberId.sol +0 -52
  631. package/contracts/types/ObjectType.sol +0 -156
  632. package/contracts/types/RoleId.sol +0 -95
  633. /package/contracts/{types → type}/DistributorType.sol +0 -0
  634. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,336 @@
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
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
302
+ // TODO: centralize token handling (issue #471)
303
+ distributionInfo.tokenHandler.transfer(distributionWallet, distributor, withdrawnAmount);
304
+ }
305
+ }
306
+
307
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
308
+ if (distributionNftId.eqz() || referralId.eqz()) {
309
+ return false;
310
+ }
311
+
312
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
313
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
314
+
315
+ if (info.distributorNftId.eqz()) {
316
+ return false;
317
+ }
318
+
319
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
320
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
321
+ }
322
+
323
+ function _getInstanceForDistribution(NftId distributionNftId)
324
+ internal
325
+ view
326
+ returns(IInstance instance)
327
+ {
328
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
329
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
330
+ return IInstance(instanceAddress);
331
+ }
332
+
333
+ function _getDomain() internal pure override returns(ObjectType) {
334
+ return DISTRIBUTION();
335
+ }
336
+ }
@@ -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
+ }
@@ -0,0 +1,97 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
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";
13
+
14
+
15
+ interface IDistributionService is IService {
16
+
17
+ error ErrorDistributionServiceCallerNotRegistered(address caller);
18
+ error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
19
+ error ErrorIDistributionServiceCallerNotDistributor(address caller);
20
+ error ErrorIDistributionServiceInvalidReferralId(ReferralId referralId);
21
+ error ErrorIDistributionServiceMaxReferralsExceeded(uint256 maxReferrals);
22
+ error ErrorIDistributionServiceDiscountTooLow(uint256 minDiscountPercentage, uint256 discountPercentage);
23
+ error ErrorIDistributionServiceDiscountTooHigh(uint256 maxDiscountPercentage, uint256 discountPercentage);
24
+ error ErrorIDistributionServiceExpiryTooLong(uint256 maxReferralLifetime, uint256 expiryAt);
25
+ error ErrorIDistributionServiceInvalidReferral(string code);
26
+ error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
27
+ error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
28
+ error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, 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
+
37
+ error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
38
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
39
+
40
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
41
+
42
+ function createDistributorType(
43
+ string memory name,
44
+ UFixed minDiscountPercentage,
45
+ UFixed maxDiscountPercentage,
46
+ UFixed commissionPercentage,
47
+ uint32 maxReferralCount,
48
+ uint32 maxReferralLifetime,
49
+ bool allowSelfReferrals,
50
+ bool allowRenewals,
51
+ bytes memory data
52
+ )
53
+ external
54
+ returns (DistributorType distributorType);
55
+
56
+ function createDistributor(
57
+ address distributor,
58
+ DistributorType distributorType,
59
+ bytes memory data
60
+ ) external returns (NftId distributorNftId);
61
+
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
+
69
+ function createReferral(
70
+ NftId distributorNftId,
71
+ string memory code,
72
+ UFixed discountPercentage,
73
+ uint32 maxReferrals,
74
+ Timestamp expiryAt,
75
+ bytes memory data
76
+ )
77
+ external
78
+ returns (ReferralId referralId);
79
+
80
+ /// @dev callback from product service when selling a policy for a specific referralId
81
+ function processSale(
82
+ NftId distributionNftId,
83
+ ReferralId referralId,
84
+ IPolicy.Premium memory premium
85
+ ) external;
86
+
87
+ function referralIsValid(
88
+ NftId distributorNftId,
89
+ ReferralId referralId
90
+ ) external view returns (bool isValid);
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,39 +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);
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);
25
26
 
26
- error ErrorBundleManagerErrorPolicyAlreadyActivated(NftId policyNftId);
27
- error ErrorBundleManagerErrorBundleLocked(NftId bundleNftId, NftId policyNftId);
28
- error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
29
- error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
30
- error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
31
- 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);
32
33
 
33
34
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
34
35
 
35
- /// @dev links a policy with its bundle
36
- // to link a policy it MUST NOT yet have been activated
37
- // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
36
+ /// @dev links a policy to its bundle
37
+ // to link a policy it MUST NOT yet have been linked
38
38
  function linkPolicy(NftId policyNftId) external restricted() {
39
39
  NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
40
  // decision will likely depend on the decision what to check here and what in the service
@@ -42,11 +42,11 @@ contract BundleManager is
42
42
 
43
43
  // ensure bundle is unlocked (in active set) and registered with this instance
44
44
  if (!_isActive(poolNftId, bundleNftId)) {
45
- revert ErrorBundleManagerErrorBundleLocked(bundleNftId, policyNftId);
45
+ revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
46
46
  }
47
47
 
48
48
  LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
49
- emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
49
+ emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
50
50
  }
51
51
 
52
52
 
@@ -63,11 +63,11 @@ contract BundleManager is
63
63
 
64
64
  // ensure bundle is registered with this instance
65
65
  if (!_contains(poolNftId, bundleNftId)) {
66
- revert ErrorBundleManagerBundleUnknown(bundleNftId);
66
+ revert ErrorBundleSetBundleUnknown(bundleNftId);
67
67
  }
68
68
 
69
69
  LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
- emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
70
+ emit LogBundleSetPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
71
71
  }
72
72
 
73
73
 
@@ -78,25 +78,26 @@ contract BundleManager is
78
78
 
79
79
  // ensure pool is registered with instance
80
80
  if(poolNftId.eqz()) {
81
- revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
81
+ revert ErrorBundleSetBundleNotRegistered(bundleNftId);
82
82
  }
83
83
 
84
84
  _add(poolNftId, bundleNftId);
85
- emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
85
+ emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
86
86
  }
87
87
 
88
- /// @dev unlocked (active) bundles are available to underwrite new policies
88
+
89
+ /// @dev unlocked (active) bundles are available to collateralize new policies
89
90
  function unlock(NftId bundleNftId) external restricted() {
90
91
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
91
92
  _activate(poolNftId, bundleNftId);
92
- emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
93
+ emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
93
94
  }
94
95
 
95
- /// @dev locked (deactivated) bundles may not underwrite any new policies
96
+ /// @dev locked (deactivated) bundles may not collateralize any new policies
96
97
  function lock(NftId bundleNftId) external restricted() {
97
98
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
98
99
  _deactivate(poolNftId, bundleNftId);
99
- emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
100
+ emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
100
101
  }
101
102
 
102
103
  function bundles(NftId poolNftId) external view returns(uint256) {