@etherisc/gif-next 0.0.2-917cede-703 → 0.0.2-92c50c2-136

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 (591) hide show
  1. package/README.md +20 -3
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +238 -167
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +117 -111
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +49 -312
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +36 -105
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +225 -2171
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +177 -41
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +378 -2689
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +643 -345
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +262 -182
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -105
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  49. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  50. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  51. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  52. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  56. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  58. package/artifacts/contracts/{components/Product.sol/Product.json → oracle/Oracle.sol/Oracle.json} +255 -276
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  62. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  64. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  66. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  67. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  68. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +55 -61
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  70. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +193 -103
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  72. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +254 -136
  73. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  74. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +298 -109
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  76. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  78. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  80. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  82. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  84. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  87. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +96 -186
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  90. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IClaimService.sol/IClaimService.json} +93 -258
  91. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  93. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  94. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +63 -141
  95. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  96. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +283 -118
  97. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  98. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +11 -61
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  100. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  104. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  107. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  108. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  110. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  114. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +179 -29
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  118. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -53
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  120. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +415 -43
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +367 -73
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -54
  130. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +709 -91
  134. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  136. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  138. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  139. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  140. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  142. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  144. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  152. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  153. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +139 -85
  154. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  156. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  158. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +27 -95
  160. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  161. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  162. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  168. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +110 -84
  170. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  172. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  174. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  178. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  180. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  182. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  184. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  186. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IService.sol/IService.json +17 -6
  188. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  190. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  192. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  194. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  196. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  197. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  198. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  202. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  203. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  208. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  209. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Service.sol/Service.json +17 -6
  211. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  212. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  213. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  214. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  215. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  216. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  218. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  219. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  220. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  222. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  224. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  226. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  228. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  230. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  232. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  234. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  236. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  237. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  238. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  239. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  240. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  242. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  244. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  246. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  248. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  250. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  252. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  254. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  255. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  256. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  258. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  260. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  262. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  264. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  266. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  268. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  270. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  272. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  274. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  276. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  278. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  280. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  282. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  284. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  286. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  288. package/contracts/{components → distribution}/Distribution.sol +41 -64
  289. package/contracts/distribution/DistributionService.sol +297 -0
  290. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  291. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -16
  292. package/contracts/{instance/service → distribution}/IDistributionService.sol +19 -37
  293. package/contracts/instance/BundleManager.sol +5 -5
  294. package/contracts/instance/IInstance.sol +51 -66
  295. package/contracts/instance/IInstanceService.sol +51 -22
  296. package/contracts/instance/Instance.sol +137 -184
  297. package/contracts/instance/InstanceAdmin.sol +331 -0
  298. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  299. package/contracts/instance/InstanceReader.sol +130 -55
  300. package/contracts/instance/InstanceService.sol +258 -297
  301. package/contracts/instance/InstanceServiceManager.sol +11 -21
  302. package/contracts/instance/InstanceStore.sol +272 -0
  303. package/contracts/instance/base/BalanceStore.sol +123 -0
  304. package/contracts/instance/base/Cloneable.sol +28 -0
  305. package/contracts/instance/base/ObjectCounter.sol +21 -0
  306. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  307. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -9
  308. package/contracts/instance/module/IAccess.sol +4 -12
  309. package/contracts/instance/module/IBundle.sol +6 -9
  310. package/contracts/instance/module/IComponents.sol +21 -10
  311. package/contracts/instance/module/IDistribution.sol +7 -6
  312. package/contracts/instance/module/IPolicy.sol +22 -15
  313. package/contracts/instance/module/IRisk.sol +1 -1
  314. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  315. package/contracts/oracle/IOracle.sol +20 -0
  316. package/contracts/oracle/IOracleComponent.sol +32 -0
  317. package/contracts/oracle/IOracleService.sol +65 -0
  318. package/contracts/oracle/Oracle.sol +145 -0
  319. package/contracts/oracle/OracleService.sol +278 -0
  320. package/contracts/oracle/OracleServiceManager.sol +42 -0
  321. package/contracts/pool/BundleService.sol +296 -0
  322. package/contracts/pool/BundleServiceManager.sol +42 -0
  323. package/contracts/{instance/service → pool}/IBundleService.sol +33 -29
  324. package/contracts/{components → pool}/IPoolComponent.sol +16 -17
  325. package/contracts/{instance/service → pool}/IPoolService.sol +70 -22
  326. package/contracts/{components → pool}/Pool.sol +52 -55
  327. package/contracts/pool/PoolService.sol +452 -0
  328. package/contracts/pool/PoolServiceManager.sol +42 -0
  329. package/contracts/product/ApplicationService.sol +254 -0
  330. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  331. package/contracts/product/ClaimService.sol +442 -0
  332. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  333. package/contracts/{instance/service → product}/IApplicationService.sol +13 -29
  334. package/contracts/product/IClaimService.sol +99 -0
  335. package/contracts/product/IPolicyService.sol +78 -0
  336. package/contracts/product/IPricingService.sol +39 -0
  337. package/contracts/product/IProductComponent.sol +42 -0
  338. package/contracts/product/IProductService.sol +33 -0
  339. package/contracts/product/PolicyService.sol +475 -0
  340. package/contracts/product/PolicyServiceManager.sol +42 -0
  341. package/contracts/product/PricingService.sol +300 -0
  342. package/contracts/product/PricingServiceManager.sol +42 -0
  343. package/contracts/{components → product}/Product.sol +89 -83
  344. package/contracts/product/ProductService.sol +124 -0
  345. package/contracts/product/ProductServiceManager.sol +42 -0
  346. package/contracts/registry/ChainNft.sol +8 -1
  347. package/contracts/registry/IRegistry.sol +44 -21
  348. package/contracts/registry/IRegistryService.sol +37 -36
  349. package/contracts/registry/IServiceAuthorization.sol +38 -0
  350. package/contracts/registry/Registry.sol +198 -83
  351. package/contracts/registry/RegistryAdmin.sol +335 -0
  352. package/contracts/registry/RegistryService.sol +71 -87
  353. package/contracts/registry/RegistryServiceManager.sol +21 -30
  354. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  355. package/contracts/registry/ReleaseManager.sol +370 -191
  356. package/contracts/registry/ServiceAuthorization.sol +90 -0
  357. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  358. package/contracts/registry/TokenRegistry.sol +261 -62
  359. package/contracts/shared/AccessAdmin.sol +759 -0
  360. package/contracts/shared/AccessManagerCustom.sol +741 -0
  361. package/contracts/shared/AccessManagerExtended.sol +481 -0
  362. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  363. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  364. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  365. package/contracts/shared/Component.sol +281 -0
  366. package/contracts/shared/ComponentService.sol +620 -0
  367. package/contracts/shared/ComponentServiceManager.sol +35 -0
  368. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  369. package/contracts/shared/ERC165.sol +1 -1
  370. package/contracts/shared/IAccessAdmin.sol +168 -0
  371. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  372. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  373. package/contracts/{components → shared}/IComponent.sol +23 -29
  374. package/contracts/shared/IComponentService.sol +102 -0
  375. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  376. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  377. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  378. package/contracts/shared/INftOwnable.sol +2 -2
  379. package/contracts/shared/IPolicyHolder.sol +29 -10
  380. package/contracts/shared/IRegistryLinked.sol +0 -1
  381. package/contracts/shared/IService.sol +11 -2
  382. package/contracts/shared/IVersionable.sol +1 -1
  383. package/contracts/shared/InitializableCustom.sol +177 -0
  384. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  385. package/contracts/shared/KeyValueStore.sol +131 -0
  386. package/contracts/shared/Lifecycle.sol +77 -0
  387. package/contracts/shared/NftIdSetManager.sol +65 -0
  388. package/contracts/shared/NftOwnable.sol +3 -16
  389. package/contracts/shared/PolicyHolder.sol +40 -19
  390. package/contracts/shared/ProxyManager.sol +34 -4
  391. package/contracts/shared/Registerable.sol +13 -12
  392. package/contracts/shared/RegistryLinked.sol +0 -5
  393. package/contracts/shared/Service.sol +32 -21
  394. package/contracts/shared/TokenHandler.sol +27 -2
  395. package/contracts/shared/Versionable.sol +1 -1
  396. package/contracts/staking/IStaking.sol +168 -0
  397. package/contracts/staking/IStakingService.sol +153 -0
  398. package/contracts/staking/StakeManagerLib.sol +231 -0
  399. package/contracts/staking/Staking.sol +513 -0
  400. package/contracts/staking/StakingLifecycle.sol +23 -0
  401. package/contracts/staking/StakingManager.sol +54 -0
  402. package/contracts/staking/StakingReader.sol +187 -0
  403. package/contracts/staking/StakingService.sol +411 -0
  404. package/contracts/staking/StakingServiceManager.sol +44 -0
  405. package/contracts/staking/StakingStore.sol +615 -0
  406. package/contracts/staking/TargetManagerLib.sol +207 -0
  407. package/contracts/{types → type}/AddressSet.sol +1 -1
  408. package/contracts/{types → type}/Amount.sol +59 -1
  409. package/contracts/{types → type}/Blocknumber.sol +20 -3
  410. package/contracts/{types → type}/Fee.sol +24 -22
  411. package/contracts/{types → type}/NftId.sol +14 -16
  412. package/contracts/{types → type}/NftIdSet.sol +2 -2
  413. package/contracts/type/ObjectType.sol +241 -0
  414. package/contracts/{types → type}/Referral.sol +1 -1
  415. package/contracts/type/RequestId.sol +75 -0
  416. package/contracts/{types → type}/RiskId.sol +1 -1
  417. package/contracts/type/RoleId.sol +201 -0
  418. package/contracts/{types → type}/Seconds.sol +27 -0
  419. package/contracts/type/Selector.sol +102 -0
  420. package/contracts/{types → type}/StateId.sol +27 -2
  421. package/contracts/type/String.sol +53 -0
  422. package/contracts/{types → type}/Timestamp.sol +6 -2
  423. package/contracts/{types → type}/Version.sol +1 -1
  424. package/package.json +6 -3
  425. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  426. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  427. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  428. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  429. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  430. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  432. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  433. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  434. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  435. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  436. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  437. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  438. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  439. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  440. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  442. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  443. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  444. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  445. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  447. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  448. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  449. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  450. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1060
  452. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -681
  454. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1289
  456. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -725
  458. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1040
  460. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -685
  462. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1774
  464. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -793
  466. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  468. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  471. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  472. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1519
  475. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -745
  477. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1433
  479. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -701
  481. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  483. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  485. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  486. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  487. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  488. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  489. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  490. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  491. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  492. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  493. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  495. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  497. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  499. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  500. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  501. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  502. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  503. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  504. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  505. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  506. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  507. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -209
  509. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  511. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  512. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  513. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  514. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  515. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  516. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  517. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  519. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  520. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  521. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  522. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  523. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  524. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  525. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  526. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  527. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  529. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  531. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  533. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  534. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  535. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  536. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  537. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  539. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  543. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  545. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  547. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  549. package/contracts/components/Component.sol +0 -253
  550. package/contracts/components/IProductComponent.sol +0 -40
  551. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  552. package/contracts/instance/Cloneable.sol +0 -51
  553. package/contracts/instance/InstanceAccessManager.sol +0 -527
  554. package/contracts/instance/base/ComponentService.sol +0 -121
  555. package/contracts/instance/base/KeyValueStore.sol +0 -180
  556. package/contracts/instance/base/Lifecycle.sol +0 -117
  557. package/contracts/instance/module/ISetup.sol +0 -33
  558. package/contracts/instance/module/ITreasury.sol +0 -23
  559. package/contracts/instance/service/ApplicationService.sol +0 -355
  560. package/contracts/instance/service/BundleService.sol +0 -443
  561. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  562. package/contracts/instance/service/ClaimService.sol +0 -239
  563. package/contracts/instance/service/DistributionService.sol +0 -431
  564. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  565. package/contracts/instance/service/IClaimService.sol +0 -92
  566. package/contracts/instance/service/IPolicyService.sol +0 -137
  567. package/contracts/instance/service/IProductService.sol +0 -40
  568. package/contracts/instance/service/PolicyService.sol +0 -545
  569. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  570. package/contracts/instance/service/PoolService.sol +0 -336
  571. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  572. package/contracts/instance/service/ProductService.sol +0 -210
  573. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  574. package/contracts/registry/RegistryAccessManager.sol +0 -216
  575. package/contracts/shared/ContractDeployerLib.sol +0 -72
  576. package/contracts/test/TestFee.sol +0 -25
  577. package/contracts/test/TestRegisterable.sol +0 -18
  578. package/contracts/test/TestRoleId.sol +0 -14
  579. package/contracts/test/TestService.sol +0 -25
  580. package/contracts/test/TestVersion.sol +0 -44
  581. package/contracts/test/TestVersionable.sol +0 -17
  582. package/contracts/test/Usdc.sol +0 -26
  583. package/contracts/types/ChainId.sol +0 -38
  584. package/contracts/types/NumberId.sol +0 -52
  585. package/contracts/types/ObjectType.sol +0 -157
  586. package/contracts/types/RoleId.sol +0 -97
  587. /package/contracts/{types → type}/ClaimId.sol +0 -0
  588. /package/contracts/{types → type}/DistributorType.sol +0 -0
  589. /package/contracts/{types → type}/Key32.sol +0 -0
  590. /package/contracts/{types → type}/PayoutId.sol +0 -0
  591. /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -0,0 +1,49 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "VersionPartLib",
4
+ "sourceName": "contracts/type/Version.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "VersionPart",
10
+ "name": "a",
11
+ "type": "uint8"
12
+ }
13
+ ],
14
+ "name": "toInt",
15
+ "outputs": [
16
+ {
17
+ "internalType": "uint256",
18
+ "name": "",
19
+ "type": "uint256"
20
+ }
21
+ ],
22
+ "stateMutability": "pure",
23
+ "type": "function"
24
+ },
25
+ {
26
+ "inputs": [
27
+ {
28
+ "internalType": "uint256",
29
+ "name": "a",
30
+ "type": "uint256"
31
+ }
32
+ ],
33
+ "name": "toVersionPart",
34
+ "outputs": [
35
+ {
36
+ "internalType": "VersionPart",
37
+ "name": "",
38
+ "type": "uint8"
39
+ }
40
+ ],
41
+ "stateMutability": "pure",
42
+ "type": "function"
43
+ }
44
+ ],
45
+ "bytecode": "0x60f4610033600b8282823980515f1a607314602757634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c80638e4ad86c146040578063ac43d834146065575b5f80fd5b604e604b3660046083565b90565b60405160ff90911681526020015b60405180910390f35b607660703660046099565b60ff1690565b604051908152602001605c565b5f602082840312156092575f80fd5b5035919050565b5f6020828403121560a8575f80fd5b813560ff8116811460b7575f80fd5b939250505056fea2646970667358221220577a856f6b9a521e70f52979c1947808212bb1957a370c9e7e460eeb908e722f64736f6c634300081a0033",
46
+ "deployedBytecode": "0x7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c80638e4ad86c146040578063ac43d834146065575b5f80fd5b604e604b3660046083565b90565b60405160ff90911681526020015b60405180910390f35b607660703660046099565b60ff1690565b604051908152602001605c565b5f602082840312156092575f80fd5b5035919050565b5f6020828403121560a8575f80fd5b813560ff8116811460b7575f80fd5b939250505056fea2646970667358221220577a856f6b9a521e70f52979c1947808212bb1957a370c9e7e460eeb908e722f64736f6c634300081a0033",
47
+ "linkReferences": {},
48
+ "deployedLinkReferences": {}
49
+ }
@@ -1,38 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {DISTRIBUTION} from "../types/ObjectType.sol";
5
- import {IDistributionService} from "../instance/service/IDistributionService.sol";
6
- import {IProductService} from "../instance/service/IProductService.sol";
7
- import {NftId, zeroNftId, NftIdLib, toNftId} from "../types/NftId.sol";
8
- import {ReferralId, ReferralStatus, ReferralLib} from "../types/Referral.sol";
9
- import {Fee, FeeLib} from "../types/Fee.sol";
10
- import {Component} from "./Component.sol";
4
+ import {COMPONENT, DISTRIBUTION} from "../type/ObjectType.sol";
5
+ import {IDistributionService} from "./IDistributionService.sol";
6
+ import {IProductService} from "../product/IProductService.sol";
7
+ import {NftId, NftIdLib} from "../type/NftId.sol";
8
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
9
+ import {Fee, FeeLib} from "../type/Fee.sol";
10
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
11
+ import {IComponentService} from "../shared/IComponentService.sol";
11
12
  import {IDistribution} from "../instance/module/IDistribution.sol";
12
13
  import {IDistributionComponent} from "./IDistributionComponent.sol";
13
14
  import {IRegistry} from "../registry/IRegistry.sol";
14
- import {IRegisterable} from "../shared/IRegisterable.sol";
15
- import {ISetup} from "../instance/module/ISetup.sol";
16
- import {Registerable} from "../shared/Registerable.sol";
17
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
18
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
- import {UFixed} from "../types/UFixed.sol";
20
- import {DistributorType} from "../types/DistributorType.sol";
21
- import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
17
+ import {UFixed} from "../type/UFixed.sol";
18
+ import {DistributorType} from "../type/DistributorType.sol";
19
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
22
20
  import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
23
21
 
24
22
 
25
23
  abstract contract Distribution is
26
- Component,
24
+ InstanceLinkedComponent,
27
25
  IDistributionComponent
28
26
  {
29
27
  // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
30
28
  bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
31
29
 
32
30
  struct DistributionStorage {
33
- Fee _minDistributionOwnerFee;
34
- Fee _distributionFee;
35
- TokenHandler _tokenHandler;
31
+ IComponentService _componentService;
36
32
  IDistributionService _distributionService;
37
33
  mapping(address distributor => NftId distributorNftId) _distributorNftId;
38
34
  }
@@ -42,45 +38,47 @@ abstract contract Distribution is
42
38
  function initializeDistribution(
43
39
  address registry,
44
40
  NftId instanceNftId,
41
+ address initialOwner,
45
42
  string memory name,
46
43
  address token,
47
- Fee memory minDistributionOwnerFee,
48
- Fee memory distributionFee,
49
- address initialOwner,
50
- bytes memory registryData // writeonly data that will saved in the object info record of the registry
44
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
45
+ bytes memory componentData // component specifidc data
51
46
  )
52
47
  public
53
48
  virtual
54
49
  onlyInitializing()
55
50
  {
56
- initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData);
51
+ initializeInstanceLinkedComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData, componentData);
57
52
 
58
53
  DistributionStorage storage $ = _getDistributionStorage();
59
- // TODO add validation
60
- $._minDistributionOwnerFee = minDistributionOwnerFee;
61
- $._distributionFee = distributionFee;
62
- $._tokenHandler = new TokenHandler(token);
63
54
  $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
55
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
64
56
 
65
57
  registerInterface(type(IDistributionComponent).interfaceId);
66
58
  }
67
59
 
60
+ function register()
61
+ external
62
+ virtual
63
+ onlyOwner()
64
+ {
65
+ _getDistributionStorage()._componentService.registerDistribution();
66
+ }
67
+
68
68
  function setFees(
69
- Fee memory minDistributionOwnerFee,
70
- Fee memory distributionFee
69
+ Fee memory distributionFee,
70
+ Fee memory minDistributionOwnerFee
71
71
  )
72
72
  external
73
73
  override
74
- onlyOwner
74
+ onlyOwner()
75
75
  restricted()
76
76
  {
77
- _getDistributionStorage()._distributionService.setFees(minDistributionOwnerFee, distributionFee);
77
+ _getDistributionStorage()._componentService.setDistributionFees(
78
+ distributionFee,
79
+ minDistributionOwnerFee);
78
80
  }
79
81
 
80
- function getDistributionFee() external view returns (Fee memory distributionFee) {
81
- DistributionStorage storage $ = _getDistributionStorage();
82
- return $._distributionFee;
83
- }
84
82
 
85
83
  function createDistributorType(
86
84
  string memory name,
@@ -140,10 +138,11 @@ abstract contract Distribution is
140
138
  // and add it
141
139
  {
142
140
  DistributionStorage storage $ = _getDistributionStorage();
143
- $._distributionService.updateDistributorType(
144
- distributorNftId,
145
- distributorType,
146
- data);
141
+ // TODO re-enable once implemented
142
+ // $._distributionService.updateDistributorType(
143
+ // distributorNftId,
144
+ // distributorType,
145
+ // data);
147
146
  }
148
147
 
149
148
  /**
@@ -239,40 +238,18 @@ abstract contract Distribution is
239
238
  // default is no action
240
239
  }
241
240
 
242
- function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
243
- InstanceReader reader = getInstance().getInstanceReader();
244
- setupInfo = reader.getDistributionSetupInfo(getNftId());
245
-
246
- // fallback to initial setup info (wallet is always != address(0))
247
- if(setupInfo.wallet == address(0)) {
248
- setupInfo = _getInitialSetupInfo();
249
- }
250
- }
251
-
252
- function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
253
- DistributionStorage storage $ = _getDistributionStorage();
254
- return ISetup.DistributionSetupInfo(
255
- zeroNftId(),
256
- $._tokenHandler,
257
- $._minDistributionOwnerFee,
258
- $._distributionFee,
259
- address(this),
260
- 0
261
- );
262
- }
263
-
264
241
 
265
242
  function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
266
243
  // keep track of distributor nft owner
267
244
  emit LogDistributorUpdated(to, msg.sender);
268
245
  DistributionStorage storage $ = _getDistributionStorage();
269
- $._distributorNftId[from] = zeroNftId();
270
- $._distributorNftId[to] = toNftId(tokenId);
246
+ $._distributorNftId[from] = NftIdLib.zero();
247
+ $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
271
248
  }
272
249
 
273
250
 
274
251
  /// @dev returns true iff the component needs to be called when selling/renewing policis
275
- function isVerifying() external view returns (bool verifying) {
252
+ function isVerifying() external pure returns (bool verifying) {
276
253
  return true;
277
254
  }
278
255
 
@@ -0,0 +1,297 @@
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 {InstanceAdmin} from "../instance/InstanceAdmin.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IInstanceService} from "../instance/IInstanceService.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {IComponents} from "../instance/module/IComponents.sol";
12
+ import {IPolicy} from "../instance/module/IPolicy.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {NftId, NftIdLib} from "../type/NftId.sol";
16
+ import {Fee, FeeLib} from "../type/Fee.sol";
17
+ import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../type/RoleId.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
19
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
20
+ import {Version, VersionLib} from "../type/Version.sol";
21
+ import {RoleId} from "../type/RoleId.sol";
22
+
23
+ import {IVersionable} from "../shared/IVersionable.sol";
24
+ import {Versionable} from "../shared/Versionable.sol";
25
+
26
+ import {IService} from "../shared/IService.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
29
+ import {InstanceService} from "../instance/InstanceService.sol";
30
+ import {IComponent} from "../shared/IComponent.sol";
31
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
32
+ import {IDistributionService} from "./IDistributionService.sol";
33
+ import {IPricingService} from "../product/IPricingService.sol";
34
+
35
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
36
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
37
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
38
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
39
+ import {Key32} from "../type/Key32.sol";
40
+ import {IDistribution} from "../instance/module/IDistribution.sol";
41
+ import {InstanceStore} from "../instance/InstanceStore.sol";
42
+
43
+
44
+ contract DistributionService is
45
+ ComponentVerifyingService,
46
+ IDistributionService
47
+ {
48
+ using NftIdLib for NftId;
49
+ using TimestampLib for Timestamp;
50
+ using UFixedLib for UFixed;
51
+ using FeeLib for Fee;
52
+ using ReferralLib for ReferralId;
53
+
54
+ IComponentService private _componentService;
55
+ IInstanceService private _instanceService;
56
+ IRegistryService private _registryService;
57
+
58
+ function _initialize(
59
+ address owner,
60
+ bytes memory data
61
+ )
62
+ internal
63
+ initializer
64
+ virtual override
65
+ {
66
+ address initialOwner;
67
+ address registryAddress;
68
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
69
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
70
+ // owner is DistributionServiceManager deployer
71
+ initializeService(registryAddress, address(0), owner);
72
+
73
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
74
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
75
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
76
+
77
+ registerInterface(type(IDistributionService).interfaceId);
78
+ }
79
+
80
+
81
+ function createDistributorType(
82
+ string memory name,
83
+ UFixed minDiscountPercentage,
84
+ UFixed maxDiscountPercentage,
85
+ UFixed commissionPercentage,
86
+ uint32 maxReferralCount,
87
+ uint32 maxReferralLifetime,
88
+ bool allowSelfReferrals,
89
+ bool allowRenewals,
90
+ bytes memory data
91
+ )
92
+ external
93
+ returns (DistributorType distributorType)
94
+ {
95
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
96
+ InstanceReader instanceReader = instance.getInstanceReader();
97
+
98
+ {
99
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
100
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
101
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
102
+ UFixed maxDiscountPercentageLimit = productInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
103
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
104
+ revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
105
+ }
106
+ }
107
+
108
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
109
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
110
+ name,
111
+ minDiscountPercentage,
112
+ maxDiscountPercentage,
113
+ commissionPercentage,
114
+ maxReferralCount,
115
+ maxReferralLifetime,
116
+ allowSelfReferrals,
117
+ allowRenewals,
118
+ data);
119
+
120
+ instance.getInstanceStore().createDistributorType(distributorType, info);
121
+ }
122
+
123
+
124
+ function createDistributor(
125
+ address distributor,
126
+ DistributorType distributorType,
127
+ bytes memory data
128
+ )
129
+ external
130
+ virtual
131
+ returns (NftId distributorNftId)
132
+ {
133
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
134
+
135
+ distributorNftId = _registryService.registerDistributor(
136
+ IRegistry.ObjectInfo(
137
+ NftIdLib.zero(),
138
+ distributionNftId,
139
+ DISTRIBUTOR(),
140
+ true, // intercepting property for bundles is defined on pool
141
+ address(0),
142
+ distributor,
143
+ ""
144
+ ));
145
+
146
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
147
+ distributorType,
148
+ true, // active
149
+ data,
150
+ AmountLib.zero(),
151
+ 0);
152
+
153
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
154
+ }
155
+
156
+ // function updateDistributorType(
157
+ // NftId distributorNftId,
158
+ // DistributorType distributorType,
159
+ // bytes memory data
160
+ // )
161
+ // external
162
+ // virtual
163
+ // {
164
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
165
+ // InstanceReader instanceReader = instance.getInstanceReader();
166
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
167
+ // distributorInfo.distributorType = distributorType;
168
+ // distributorInfo.data = data;
169
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
170
+ // }
171
+
172
+
173
+ function createReferral(
174
+ NftId distributorNftId,
175
+ string memory code,
176
+ UFixed discountPercentage,
177
+ uint32 maxReferrals,
178
+ Timestamp expiryAt,
179
+ bytes memory data
180
+ )
181
+ external
182
+ virtual
183
+ returns (ReferralId referralId)
184
+ {
185
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
186
+
187
+ if (bytes(code).length == 0) {
188
+ revert ErrorIDistributionServiceInvalidReferral(code);
189
+ }
190
+ if (expiryAt.eqz()) {
191
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
192
+ }
193
+
194
+ InstanceReader instanceReader = instance.getInstanceReader();
195
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
196
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
197
+
198
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
199
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
200
+ }
201
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
202
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
203
+ }
204
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
205
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
206
+ }
207
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
208
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
209
+ }
210
+
211
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
212
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
213
+ distributorNftId,
214
+ code,
215
+ discountPercentage,
216
+ maxReferrals,
217
+ 0, // used referrals
218
+ expiryAt,
219
+ data
220
+ );
221
+
222
+ instance.getInstanceStore().createReferral(referralId, info);
223
+ return referralId;
224
+ }
225
+
226
+
227
+ function processSale(
228
+ NftId distributionNftId, // assume always of distribution type
229
+ ReferralId referralId,
230
+ IPolicy.Premium memory premium
231
+ )
232
+ external
233
+ virtual
234
+ restricted
235
+ {
236
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
237
+ InstanceReader reader = instance.getInstanceReader();
238
+ InstanceStore store = instance.getInstanceStore();
239
+
240
+ // get distribution owner fee amount
241
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
242
+
243
+ // update referral/distributor info if applicable
244
+ if (referralIsValid(distributionNftId, referralId)) {
245
+
246
+ // increase distribution balance by commission amount and distribution owner fee
247
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
248
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
249
+
250
+ // update book keeping for referral info
251
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
252
+ referralInfo.usedReferrals += 1;
253
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
254
+
255
+ // update book keeping for distributor info
256
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
257
+ // TODO refactor sum of commission amount into a fee balance for distributors
258
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
259
+ distributorInfo.numPoliciesSold += 1;
260
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
261
+ } else {
262
+
263
+ // increase distribution balance by distribution owner fee
264
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
265
+ }
266
+ }
267
+
268
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
269
+ if (distributionNftId.eqz() || referralId.eqz()) {
270
+ return false;
271
+ }
272
+
273
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
274
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
275
+
276
+ if (info.distributorNftId.eqz()) {
277
+ return false;
278
+ }
279
+
280
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
281
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
282
+ }
283
+
284
+ function _getInstanceForDistribution(NftId distributionNftId)
285
+ internal
286
+ view
287
+ returns(IInstance instance)
288
+ {
289
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
290
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
291
+ return IInstance(instanceAddress);
292
+ }
293
+
294
+ function _getDomain() internal pure override returns(ObjectType) {
295
+ return DISTRIBUTION();
296
+ }
297
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {DistributionService} from "./DistributionService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {REGISTRY} from "../type/ObjectType.sol";
10
+
11
+ contract DistributionServiceManager is ProxyManager {
12
+
13
+ DistributionService private _distributionService;
14
+
15
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ DistributionService distSrv = new DistributionService{salt: salt}();
24
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
25
+ IVersionable versionable = deployDetermenistic(
26
+ address(distSrv),
27
+ data,
28
+ salt);
29
+
30
+ _distributionService = DistributionService(address(versionable));
31
+ }
32
+
33
+ //--- view functions ----------------------------------------------------//
34
+ function getDistributionService()
35
+ external
36
+ view
37
+ returns (DistributionService distributionService)
38
+ {
39
+ return _distributionService;
40
+ }
41
+
42
+ }
@@ -1,24 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {Fee} from "../types/Fee.sol";
5
- import {IComponent} from "./IComponent.sol";
6
- import {ISetup} from "../instance/module/ISetup.sol";
7
- import {ReferralId, ReferralStatus} from "../types/Referral.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {DistributorType} from "../types/DistributorType.sol";
10
- import {UFixed} from "../types/UFixed.sol";
11
- import {Timestamp} from "../types/Timestamp.sol";
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {DistributorType} from "../type/DistributorType.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {Timestamp} from "../type/Timestamp.sol";
12
11
 
13
- interface IDistributionComponent is IComponent {
12
+ interface IDistributionComponent is IInstanceLinkedComponent {
14
13
 
15
14
  event LogDistributorUpdated(address to, address caller);
16
15
 
17
- function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
18
-
19
16
  function setFees(
20
- Fee memory minDistributionOwnerFee,
21
- Fee memory distributionFee
17
+ Fee memory distributionFee,
18
+ Fee memory minDistributionOwnerFee
22
19
  ) external;
23
20
 
24
21
  function createDistributorType(
@@ -60,8 +57,6 @@ interface IDistributionComponent is IComponent {
60
57
  string memory referralCode
61
58
  ) external view returns (UFixed discountPercentage, ReferralStatus status);
62
59
 
63
- function getDistributionFee() external view returns (Fee memory distibutionFee);
64
-
65
60
  function getReferralId(
66
61
  string memory referralCode
67
62
  ) external returns (ReferralId referralId);