@etherisc/gif-next 0.0.2-b38343e-249 → 0.0.2-b3a9c97-695

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 (690) 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 +271 -464
  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 +303 -303
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +914 -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 +292 -2124
  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 +399 -2883
  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 +676 -369
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +388 -263
  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} +338 -285
  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/pool/BasicPool.sol/BasicPool.json +1432 -0
  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 +907 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +404 -345
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1182 -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 +1644 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +770 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/{components/Pool.sol/Pool.json → product/BasicProduct.sol/BasicProduct.json} +444 -486
  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 +1386 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +834 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +144 -89
  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 +800 -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} +205 -228
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +420 -241
  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 +1355 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +806 -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 +394 -402
  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 +373 -87
  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 +208 -203
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1751 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +824 -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} +101 -103
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
  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/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  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 +24 -23
  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 +114 -21
  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/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +42 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1991 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +773 -0
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  300. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  301. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  306. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  307. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  308. package/contracts/authorization/AccessAdmin.sol +591 -0
  309. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  310. package/contracts/authorization/Authorization.sol +218 -0
  311. package/contracts/authorization/IAccess.sol +48 -0
  312. package/contracts/authorization/IAccessAdmin.sol +136 -0
  313. package/contracts/authorization/IAuthorization.sol +54 -0
  314. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  315. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  316. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  318. package/contracts/distribution/BasicDistribution.sol +138 -0
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  320. package/contracts/{components → distribution}/Distribution.sol +180 -193
  321. package/contracts/distribution/DistributionService.sol +323 -0
  322. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  323. package/contracts/distribution/IDistributionComponent.sol +52 -0
  324. package/contracts/distribution/IDistributionService.sol +95 -0
  325. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +33 -32
  326. package/contracts/instance/IInstance.sol +60 -66
  327. package/contracts/instance/IInstanceService.sol +57 -24
  328. package/contracts/instance/Instance.sol +176 -213
  329. package/contracts/instance/InstanceAdmin.sol +266 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  331. package/contracts/instance/InstanceReader.sol +180 -65
  332. package/contracts/instance/InstanceService.sol +333 -342
  333. package/contracts/instance/InstanceServiceManager.sol +12 -26
  334. package/contracts/instance/InstanceStore.sol +277 -0
  335. package/contracts/instance/base/BalanceStore.sol +123 -0
  336. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  337. package/contracts/instance/base/ObjectCounter.sol +21 -0
  338. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  339. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  340. package/contracts/instance/module/IAccess.sol +19 -20
  341. package/contracts/instance/module/IBundle.sol +8 -8
  342. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +21 -22
  343. package/contracts/instance/module/IDistribution.sol +6 -4
  344. package/contracts/instance/module/IPolicy.sol +53 -16
  345. package/contracts/instance/module/IRisk.sol +1 -1
  346. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  347. package/contracts/oracle/BasicOracle.sol +48 -0
  348. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  349. package/contracts/oracle/IOracle.sol +36 -0
  350. package/contracts/oracle/IOracleComponent.sol +33 -0
  351. package/contracts/oracle/IOracleService.sol +65 -0
  352. package/contracts/oracle/Oracle.sol +166 -0
  353. package/contracts/oracle/OracleService.sol +278 -0
  354. package/contracts/oracle/OracleServiceManager.sol +39 -0
  355. package/contracts/pool/BasicPool.sol +166 -0
  356. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  357. package/contracts/pool/BundleService.sol +437 -0
  358. package/contracts/pool/BundleServiceManager.sol +39 -0
  359. package/contracts/pool/IBundleService.sol +133 -0
  360. package/contracts/pool/IPoolComponent.sol +58 -0
  361. package/contracts/pool/IPoolService.sol +147 -0
  362. package/contracts/pool/Pool.sol +328 -0
  363. package/contracts/pool/PoolService.sol +524 -0
  364. package/contracts/pool/PoolServiceManager.sol +39 -0
  365. package/contracts/product/ApplicationService.sol +250 -0
  366. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  367. package/contracts/product/BasicProduct.sol +52 -0
  368. package/contracts/product/BasicProductAuthorization.sol +43 -0
  369. package/contracts/product/ClaimService.sol +417 -0
  370. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  371. package/contracts/{instance/service → product}/IApplicationService.sol +17 -36
  372. package/contracts/product/IClaimService.sol +100 -0
  373. package/contracts/product/IPolicyService.sol +84 -0
  374. package/contracts/product/IPricingService.sol +39 -0
  375. package/contracts/product/IProductComponent.sol +40 -0
  376. package/contracts/product/IProductService.sol +33 -0
  377. package/contracts/product/PolicyService.sol +595 -0
  378. package/contracts/product/PolicyServiceManager.sol +39 -0
  379. package/contracts/product/PricingService.sol +304 -0
  380. package/contracts/product/PricingServiceManager.sol +39 -0
  381. package/contracts/product/Product.sol +413 -0
  382. package/contracts/product/ProductService.sol +99 -0
  383. package/contracts/product/ProductServiceManager.sol +39 -0
  384. package/contracts/registry/ChainNft.sol +16 -1
  385. package/contracts/registry/IRegistry.sol +61 -26
  386. package/contracts/registry/IRegistryService.sol +44 -42
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +251 -139
  389. package/contracts/registry/RegistryAdmin.sol +365 -0
  390. package/contracts/registry/RegistryService.sol +70 -101
  391. package/contracts/registry/RegistryServiceManager.sol +23 -32
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +485 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  395. package/contracts/registry/TokenRegistry.sol +261 -62
  396. package/contracts/shared/Component.sol +281 -0
  397. package/contracts/shared/ComponentService.sol +640 -0
  398. package/contracts/shared/ComponentServiceManager.sol +35 -0
  399. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  400. package/contracts/shared/IComponent.sol +71 -0
  401. package/contracts/shared/IComponentService.sol +108 -0
  402. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  403. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  404. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  405. package/contracts/shared/INftOwnable.sol +2 -2
  406. package/contracts/shared/IPolicyHolder.sol +29 -10
  407. package/contracts/shared/IRegistryLinked.sol +0 -1
  408. package/contracts/shared/IService.sol +15 -6
  409. package/contracts/shared/InitializableCustom.sol +177 -0
  410. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
  411. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  412. package/contracts/shared/KeyValueStore.sol +131 -0
  413. package/contracts/shared/Lifecycle.sol +77 -0
  414. package/contracts/shared/NftIdSet.sol +65 -0
  415. package/contracts/shared/NftOwnable.sol +5 -18
  416. package/contracts/shared/PolicyHolder.sol +41 -23
  417. package/contracts/shared/Registerable.sol +15 -14
  418. package/contracts/shared/RegistryLinked.sol +0 -5
  419. package/contracts/shared/Service.sol +47 -23
  420. package/contracts/shared/TokenHandler.sol +41 -6
  421. package/contracts/shared/TokenTransferLib.sol +60 -0
  422. package/contracts/staking/IStaking.sol +167 -0
  423. package/contracts/staking/IStakingService.sol +160 -0
  424. package/contracts/staking/StakeManagerLib.sol +231 -0
  425. package/contracts/staking/Staking.sol +516 -0
  426. package/contracts/staking/StakingLifecycle.sol +23 -0
  427. package/contracts/staking/StakingManager.sol +50 -0
  428. package/contracts/staking/StakingReader.sol +183 -0
  429. package/contracts/staking/StakingService.sol +407 -0
  430. package/contracts/staking/StakingServiceManager.sol +44 -0
  431. package/contracts/staking/StakingStore.sol +605 -0
  432. package/contracts/staking/TargetManagerLib.sol +207 -0
  433. package/contracts/{types → type}/AddressSet.sol +1 -1
  434. package/contracts/type/Amount.sol +135 -0
  435. package/contracts/{types → type}/Blocknumber.sol +27 -3
  436. package/contracts/{types → type}/ClaimId.sol +25 -2
  437. package/contracts/{types → type}/Fee.sol +33 -23
  438. package/contracts/{types → type}/NftId.sol +21 -15
  439. package/contracts/{types → type}/NftIdSet.sol +2 -2
  440. package/contracts/type/ObjectType.sol +271 -0
  441. package/contracts/{types → type}/PayoutId.sol +33 -5
  442. package/contracts/{types → type}/Referral.sol +6 -1
  443. package/contracts/type/RequestId.sol +75 -0
  444. package/contracts/{types → type}/RiskId.sol +1 -1
  445. package/contracts/type/RoleId.sol +174 -0
  446. package/contracts/type/Seconds.sol +93 -0
  447. package/contracts/type/Selector.sol +102 -0
  448. package/contracts/{types → type}/StateId.sol +34 -4
  449. package/contracts/type/String.sol +53 -0
  450. package/contracts/{types → type}/Timestamp.sol +34 -15
  451. package/contracts/{types → type}/UFixed.sol +35 -9
  452. package/contracts/{types → type}/Version.sol +5 -2
  453. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  454. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  455. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  456. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  457. package/package.json +8 -5
  458. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  460. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  465. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  472. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  474. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  476. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  478. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  480. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  482. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  484. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  488. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  490. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  492. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  494. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  497. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  499. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  501. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  503. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  505. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  506. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  507. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  508. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  509. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  510. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  511. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  512. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  517. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  519. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  523. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  525. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  526. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  527. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  529. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -743
  531. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  533. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -935
  535. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -677
  537. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -398
  541. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -480
  543. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -336
  546. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1109
  549. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  551. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -716
  553. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  555. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  557. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  559. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  560. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  561. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  562. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  563. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  564. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  565. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  566. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  567. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  568. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  570. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  571. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  572. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  575. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  576. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  577. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  578. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  579. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  580. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  581. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  582. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  583. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  584. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  585. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  587. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  588. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  589. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  590. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  591. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  592. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  593. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  595. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  597. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  599. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  601. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  603. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  605. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  606. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  607. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  609. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  611. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  613. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  615. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  617. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  619. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  622. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  624. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  626. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  628. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  630. package/contracts/components/Component.sol +0 -242
  631. package/contracts/components/IComponent.sol +0 -55
  632. package/contracts/components/IDistributionComponent.sol +0 -100
  633. package/contracts/components/IPoolComponent.sol +0 -87
  634. package/contracts/components/IProductComponent.sol +0 -39
  635. package/contracts/components/Pool.sol +0 -254
  636. package/contracts/components/Product.sol +0 -285
  637. package/contracts/experiment/cloning/Cloner.sol +0 -47
  638. package/contracts/experiment/errors/Require.sol +0 -38
  639. package/contracts/experiment/errors/Revert.sol +0 -44
  640. package/contracts/experiment/inheritance/A.sol +0 -53
  641. package/contracts/experiment/inheritance/B.sol +0 -28
  642. package/contracts/experiment/inheritance/C.sol +0 -34
  643. package/contracts/experiment/inheritance/IA.sol +0 -13
  644. package/contracts/experiment/inheritance/IB.sol +0 -10
  645. package/contracts/experiment/inheritance/IC.sol +0 -12
  646. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  647. package/contracts/experiment/statemachine/ISM.sol +0 -25
  648. package/contracts/experiment/statemachine/SM.sol +0 -57
  649. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  650. package/contracts/experiment/types/TypeA.sol +0 -47
  651. package/contracts/experiment/types/TypeB.sol +0 -29
  652. package/contracts/instance/InstanceAccessManager.sol +0 -297
  653. package/contracts/instance/base/ComponentService.sol +0 -134
  654. package/contracts/instance/base/KeyValueStore.sol +0 -172
  655. package/contracts/instance/base/Lifecycle.sol +0 -100
  656. package/contracts/instance/module/ITreasury.sol +0 -23
  657. package/contracts/instance/service/ApplicationService.sol +0 -268
  658. package/contracts/instance/service/BundleService.sol +0 -298
  659. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  660. package/contracts/instance/service/ClaimService.sol +0 -151
  661. package/contracts/instance/service/DistributionService.sol +0 -277
  662. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  663. package/contracts/instance/service/IBundleService.sol +0 -54
  664. package/contracts/instance/service/IClaimService.sol +0 -61
  665. package/contracts/instance/service/IDistributionService.sol +0 -65
  666. package/contracts/instance/service/IPolicyService.sol +0 -89
  667. package/contracts/instance/service/IPoolService.sol +0 -20
  668. package/contracts/instance/service/IProductService.sol +0 -40
  669. package/contracts/instance/service/PolicyService.sol +0 -474
  670. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  671. package/contracts/instance/service/PoolService.sol +0 -109
  672. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  673. package/contracts/instance/service/ProductService.sol +0 -233
  674. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  675. package/contracts/registry/RegistryAccessManager.sol +0 -216
  676. package/contracts/registry/ReleaseManager.sol +0 -322
  677. package/contracts/shared/ContractDeployerLib.sol +0 -72
  678. package/contracts/test/TestFee.sol +0 -25
  679. package/contracts/test/TestRegisterable.sol +0 -18
  680. package/contracts/test/TestRoleId.sol +0 -14
  681. package/contracts/test/TestService.sol +0 -25
  682. package/contracts/test/TestVersion.sol +0 -44
  683. package/contracts/test/TestVersionable.sol +0 -17
  684. package/contracts/test/Usdc.sol +0 -26
  685. package/contracts/types/ChainId.sol +0 -38
  686. package/contracts/types/NumberId.sol +0 -52
  687. package/contracts/types/ObjectType.sol +0 -156
  688. package/contracts/types/RoleId.sol +0 -90
  689. /package/contracts/{types → type}/DistributorType.sol +0 -0
  690. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,323 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+ import {IComponentService} from "../shared/IComponentService.sol";
7
+ import {IInstanceService} from "../instance/IInstanceService.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {InstanceReader} from "../instance/InstanceReader.sol";
10
+ import {IComponents} from "../instance/module/IComponents.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {Fee, FeeLib} from "../type/Fee.sol";
16
+ import {KEEP_STATE} from "../type/StateId.sol";
17
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
18
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
19
+ import {IDistributionService} from "./IDistributionService.sol";
20
+ import {UFixed} from "../type/UFixed.sol";
21
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
22
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
23
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
24
+ import {IDistribution} from "../instance/module/IDistribution.sol";
25
+ import {InstanceStore} from "../instance/InstanceStore.sol";
26
+ import {TokenTransferLib} from "../shared/TokenTransferLib.sol";
27
+
28
+
29
+ contract DistributionService is
30
+ ComponentVerifyingService,
31
+ IDistributionService
32
+ {
33
+ IComponentService private _componentService;
34
+ IInstanceService private _instanceService;
35
+ IRegistryService private _registryService;
36
+
37
+ function _initialize(
38
+ address owner,
39
+ bytes memory data
40
+ )
41
+ internal
42
+ initializer
43
+ virtual override
44
+ {
45
+ address initialOwner;
46
+ address registryAddress;
47
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
48
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
49
+ // owner is DistributionServiceManager deployer
50
+ initializeService(registryAddress, address(0), owner);
51
+
52
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
53
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
54
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
55
+
56
+ registerInterface(type(IDistributionService).interfaceId);
57
+ }
58
+
59
+
60
+ function createDistributorType(
61
+ string memory name,
62
+ UFixed minDiscountPercentage,
63
+ UFixed maxDiscountPercentage,
64
+ UFixed commissionPercentage,
65
+ uint32 maxReferralCount,
66
+ uint32 maxReferralLifetime,
67
+ bool allowSelfReferrals,
68
+ bool allowRenewals,
69
+ bytes memory data
70
+ )
71
+ external
72
+ returns (DistributorType distributorType)
73
+ {
74
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
75
+ InstanceReader instanceReader = instance.getInstanceReader();
76
+
77
+ {
78
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
79
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
80
+
81
+ UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
82
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
83
+
84
+ if (variableFeesPartsTotal > variableDistributionFees) {
85
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
86
+ }
87
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
88
+
89
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
90
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
91
+ }
92
+ }
93
+
94
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
95
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
96
+ name,
97
+ minDiscountPercentage,
98
+ maxDiscountPercentage,
99
+ commissionPercentage,
100
+ maxReferralCount,
101
+ maxReferralLifetime,
102
+ allowSelfReferrals,
103
+ allowRenewals,
104
+ data);
105
+
106
+ instance.getInstanceStore().createDistributorType(distributorType, info);
107
+ }
108
+
109
+
110
+ function createDistributor(
111
+ address distributor,
112
+ DistributorType distributorType,
113
+ bytes memory data
114
+ )
115
+ external
116
+ virtual
117
+ returns (NftId distributorNftId)
118
+ {
119
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
120
+
121
+ distributorNftId = _registryService.registerDistributor(
122
+ IRegistry.ObjectInfo(
123
+ NftIdLib.zero(),
124
+ distributionNftId,
125
+ DISTRIBUTOR(),
126
+ true, // intercepting property for bundles is defined on pool
127
+ address(0),
128
+ distributor,
129
+ ""
130
+ ));
131
+
132
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
133
+ distributorType,
134
+ true, // active
135
+ data,
136
+ 0);
137
+
138
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
139
+ }
140
+
141
+ // function updateDistributorType(
142
+ // NftId distributorNftId,
143
+ // DistributorType distributorType,
144
+ // bytes memory data
145
+ // )
146
+ // external
147
+ // virtual
148
+ // {
149
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
150
+ // InstanceReader instanceReader = instance.getInstanceReader();
151
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
152
+ // distributorInfo.distributorType = distributorType;
153
+ // distributorInfo.data = data;
154
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
155
+ // }
156
+
157
+
158
+ function createReferral(
159
+ NftId distributorNftId,
160
+ string memory code,
161
+ UFixed discountPercentage,
162
+ uint32 maxReferrals,
163
+ Timestamp expiryAt,
164
+ bytes memory data
165
+ )
166
+ external
167
+ virtual
168
+ returns (ReferralId referralId)
169
+ {
170
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
171
+
172
+ if (bytes(code).length == 0) {
173
+ revert ErrorIDistributionServiceInvalidReferral(code);
174
+ }
175
+ if (expiryAt.eqz()) {
176
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
177
+ }
178
+
179
+ InstanceReader instanceReader = instance.getInstanceReader();
180
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
181
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
182
+
183
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
184
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
185
+ }
186
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
187
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
188
+ }
189
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
190
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
191
+ }
192
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
193
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
194
+ }
195
+
196
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
197
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
198
+ distributorNftId,
199
+ code,
200
+ discountPercentage,
201
+ maxReferrals,
202
+ 0, // used referrals
203
+ expiryAt,
204
+ data
205
+ );
206
+
207
+ instance.getInstanceStore().createReferral(referralId, info);
208
+ return referralId;
209
+ }
210
+
211
+
212
+ function processSale(
213
+ NftId distributionNftId, // assume always of distribution type
214
+ ReferralId referralId,
215
+ IPolicy.Premium memory premium
216
+ )
217
+ external
218
+ virtual
219
+ restricted
220
+ {
221
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
222
+ InstanceReader reader = instance.getInstanceReader();
223
+ InstanceStore store = instance.getInstanceStore();
224
+
225
+ // get distribution owner fee amount
226
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
227
+
228
+ // update referral/distributor info if applicable
229
+ if (referralIsValid(distributionNftId, referralId)) {
230
+
231
+ // increase distribution balance by commission amount and distribution owner fee
232
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
233
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
234
+
235
+ // update book keeping for referral info
236
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
237
+ referralInfo.usedReferrals += 1;
238
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
239
+
240
+ _componentService.increaseDistributorBalance(store, referralInfo.distributorNftId, AmountLib.zero(), commissionAmount);
241
+
242
+ // update book keeping for distributor info
243
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
244
+ distributorInfo.numPoliciesSold += 1;
245
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
246
+ } else {
247
+ // increase distribution balance by distribution owner fee
248
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
249
+ }
250
+ }
251
+
252
+ /// @inheritdoc IDistributionService
253
+ function withdrawCommission(NftId distributorNftId, Amount amount)
254
+ public
255
+ virtual
256
+ // TODO: restricted() (once #462 is done)
257
+ returns (Amount withdrawnAmount)
258
+ {
259
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
260
+ InstanceReader reader = instance.getInstanceReader();
261
+
262
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
263
+ address distributionWallet = distributionInfo.wallet;
264
+
265
+ Amount commissionAmount = reader.getFeeAmount(distributorNftId);
266
+
267
+ // determine withdrawn amount
268
+ withdrawnAmount = amount;
269
+ if (withdrawnAmount.gte(AmountLib.max())) {
270
+ withdrawnAmount = commissionAmount;
271
+ } else {
272
+ if (withdrawnAmount.gt(commissionAmount)) {
273
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, commissionAmount);
274
+ }
275
+ }
276
+
277
+ // decrease fee counters by withdrawnAmount and update distributor info
278
+ {
279
+ InstanceStore store = instance.getInstanceStore();
280
+ // decrease fee counter for distribution balance
281
+ _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
282
+ // decrease fee counter for distributor fee
283
+ _componentService.decreaseDistributorBalance(store, distributorNftId, AmountLib.zero(), withdrawnAmount);
284
+ }
285
+
286
+ // transfer amount to distributor
287
+ {
288
+ address distributor = getRegistry().ownerOf(distributorNftId);
289
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.token), withdrawnAmount);
290
+ TokenTransferLib.distributeTokens(distributionWallet, distributor, withdrawnAmount, distributionInfo.tokenHandler);
291
+ }
292
+ }
293
+
294
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
295
+ if (distributionNftId.eqz() || referralId.eqz()) {
296
+ return false;
297
+ }
298
+
299
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
300
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
301
+
302
+ if (info.distributorNftId.eqz()) {
303
+ return false;
304
+ }
305
+
306
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
307
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
308
+ }
309
+
310
+ function _getInstanceForDistribution(NftId distributionNftId)
311
+ internal
312
+ view
313
+ returns(IInstance instance)
314
+ {
315
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
316
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
317
+ return IInstance(instanceAddress);
318
+ }
319
+
320
+ function _getDomain() internal pure override returns(ObjectType) {
321
+ return DISTRIBUTION();
322
+ }
323
+ }
@@ -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,95 @@
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
+
32
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
33
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
34
+
35
+ error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
36
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
37
+
38
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
39
+
40
+ function createDistributorType(
41
+ string memory name,
42
+ UFixed minDiscountPercentage,
43
+ UFixed maxDiscountPercentage,
44
+ UFixed commissionPercentage,
45
+ uint32 maxReferralCount,
46
+ uint32 maxReferralLifetime,
47
+ bool allowSelfReferrals,
48
+ bool allowRenewals,
49
+ bytes memory data
50
+ )
51
+ external
52
+ returns (DistributorType distributorType);
53
+
54
+ function createDistributor(
55
+ address distributor,
56
+ DistributorType distributorType,
57
+ bytes memory data
58
+ ) external returns (NftId distributorNftId);
59
+
60
+ // TODO re-enable and reorganize (service contract too large)
61
+ // function updateDistributorType(
62
+ // NftId distributorNftId,
63
+ // DistributorType distributorType,
64
+ // bytes memory data
65
+ // ) external;
66
+
67
+ function createReferral(
68
+ NftId distributorNftId,
69
+ string memory code,
70
+ UFixed discountPercentage,
71
+ uint32 maxReferrals,
72
+ Timestamp expiryAt,
73
+ bytes memory data
74
+ )
75
+ external
76
+ returns (ReferralId referralId);
77
+
78
+ /// @dev callback from product service when selling a policy for a specific referralId
79
+ function processSale(
80
+ NftId distributionNftId,
81
+ ReferralId referralId,
82
+ IPolicy.Premium memory premium
83
+ ) external;
84
+
85
+ function referralIsValid(
86
+ NftId distributorNftId,
87
+ ReferralId referralId
88
+ ) external view returns (bool isValid);
89
+
90
+ /// @dev Withdraw commission for the distributor
91
+ /// @param distributorNftId the distributor Nft Id
92
+ /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
93
+ /// @return withdrawnAmount the effective withdrawn amount
94
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
95
+ }
@@ -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,40 +63,41 @@ 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
 
74
- /// @dev add a new bundle to a riskpool registerd with this instance
74
+ /// @dev add a new bundle to a pool registerd with this instance
75
75
  // the corresponding pool is fetched via instance reader
76
76
  function add(NftId bundleNftId) external restricted() {
77
77
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
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) {