@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ceed5e3-261

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 (573) hide show
  1. package/README.md +15 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +322 -252
  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 +249 -174
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +271 -83
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +61 -116
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +299 -2118
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +319 -59
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +433 -2856
  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 +642 -327
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +416 -242
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +132 -67
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -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 -49
  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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +283 -213
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +480 -213
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +527 -284
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +129 -90
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +271 -134
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +408 -219
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +80 -64
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/{components → product}/Product.sol/Product.json +433 -282
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +188 -19
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +310 -77
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +430 -34
  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 +373 -98
  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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +769 -98
  132. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  138. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  140. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  142. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  150. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  151. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +101 -114
  158. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  160. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  166. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  167. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
  168. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  170. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  172. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  174. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  176. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  184. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IService.sol/IService.json +96 -19
  186. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  188. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  196. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  202. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  207. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Service.sol/Service.json +104 -22
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  212. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +597 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/{components → distribution}/Distribution.sol +49 -75
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -37
  288. package/contracts/{instance/service → distribution}/IDistributionService.sol +25 -25
  289. package/contracts/instance/BundleManager.sol +15 -14
  290. package/contracts/instance/IInstance.sol +60 -65
  291. package/contracts/instance/IInstanceService.sol +59 -21
  292. package/contracts/instance/Instance.sol +175 -203
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +159 -60
  296. package/contracts/instance/InstanceService.sol +296 -333
  297. package/contracts/instance/InstanceServiceManager.sol +11 -21
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -16
  303. package/contracts/instance/module/IAccess.sol +19 -20
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
  306. package/contracts/instance/module/IDistribution.sol +7 -5
  307. package/contracts/instance/module/IPolicy.sol +53 -16
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  328. package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +46 -21
  343. package/contracts/registry/IRegistryService.sol +39 -37
  344. package/contracts/registry/IServiceAuthorization.sol +35 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +215 -97
  347. package/contracts/registry/RegistryAdmin.sol +333 -0
  348. package/contracts/registry/RegistryService.sol +73 -90
  349. package/contracts/registry/RegistryServiceManager.sol +21 -30
  350. package/contracts/registry/ReleaseManager.sol +400 -195
  351. package/contracts/registry/ServiceAuthorization.sol +86 -0
  352. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  353. package/contracts/registry/TokenRegistry.sol +261 -62
  354. package/contracts/shared/AccessAdmin.sol +759 -0
  355. package/contracts/shared/AccessManagerCustom.sol +741 -0
  356. package/contracts/shared/AccessManagerExtended.sol +481 -0
  357. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  359. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  360. package/contracts/shared/Component.sol +281 -0
  361. package/contracts/shared/ComponentService.sol +617 -0
  362. package/contracts/shared/ComponentServiceManager.sol +35 -0
  363. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  364. package/contracts/shared/ERC165.sol +1 -1
  365. package/contracts/shared/IAccessAdmin.sol +168 -0
  366. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  367. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  368. package/contracts/shared/IComponent.sol +70 -0
  369. package/contracts/shared/IComponentService.sol +102 -0
  370. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  371. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  372. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  373. package/contracts/shared/INftOwnable.sol +2 -2
  374. package/contracts/shared/IPolicyHolder.sol +29 -10
  375. package/contracts/shared/IRegistryLinked.sol +0 -1
  376. package/contracts/shared/IService.sol +14 -7
  377. package/contracts/shared/IVersionable.sol +1 -1
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +3 -16
  384. package/contracts/shared/PolicyHolder.sol +40 -19
  385. package/contracts/shared/ProxyManager.sol +34 -4
  386. package/contracts/shared/Registerable.sol +15 -14
  387. package/contracts/shared/RegistryLinked.sol +0 -5
  388. package/contracts/shared/Service.sol +47 -22
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +1 -1
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/{types → type}/ClaimId.sol +25 -2
  405. package/contracts/{types → type}/Fee.sol +33 -23
  406. package/contracts/{types → type}/NftId.sol +21 -15
  407. package/contracts/{types → type}/NftIdSet.sol +2 -2
  408. package/contracts/type/ObjectType.sol +241 -0
  409. package/contracts/{types → type}/PayoutId.sol +33 -5
  410. package/contracts/{types → type}/Referral.sol +5 -1
  411. package/contracts/type/RequestId.sol +75 -0
  412. package/contracts/{types → type}/RiskId.sol +1 -1
  413. package/contracts/type/RoleId.sol +201 -0
  414. package/contracts/type/Seconds.sol +81 -0
  415. package/contracts/type/Selector.sol +102 -0
  416. package/contracts/{types → type}/StateId.sol +34 -4
  417. package/contracts/type/String.sol +53 -0
  418. package/contracts/{types → type}/Timestamp.sol +23 -14
  419. package/contracts/{types → type}/UFixed.sol +1 -0
  420. package/contracts/{types → type}/Version.sol +2 -1
  421. package/package.json +4 -3
  422. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  423. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  424. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  425. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  428. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  429. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  430. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  431. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  432. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  433. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  434. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  435. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  437. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  438. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  439. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  440. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  442. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  443. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  445. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
  446. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  448. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  450. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  452. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  454. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  456. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1254
  458. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -753
  460. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  461. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  464. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  467. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  468. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  470. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1120
  471. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  472. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  473. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  474. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  475. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  476. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  477. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  479. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  480. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  481. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  482. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  483. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  484. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  485. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  486. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  487. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  488. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  489. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  490. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  491. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  492. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  493. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  494. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  495. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  496. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  497. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  498. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  499. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  500. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  501. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  502. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  504. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  506. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  508. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  511. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  512. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  513. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  514. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  515. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  516. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  517. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  519. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  520. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  521. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  522. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  523. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  524. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  525. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  526. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  527. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  528. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  529. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  533. package/contracts/components/Component.sol +0 -241
  534. package/contracts/components/IComponent.sol +0 -54
  535. package/contracts/components/IPoolComponent.sol +0 -87
  536. package/contracts/components/IProductComponent.sol +0 -39
  537. package/contracts/components/Pool.sol +0 -254
  538. package/contracts/components/Product.sol +0 -285
  539. package/contracts/instance/InstanceAccessManager.sol +0 -297
  540. package/contracts/instance/base/ComponentService.sol +0 -134
  541. package/contracts/instance/base/KeyValueStore.sol +0 -172
  542. package/contracts/instance/module/ITreasury.sol +0 -23
  543. package/contracts/instance/service/ApplicationService.sol +0 -268
  544. package/contracts/instance/service/BundleService.sol +0 -298
  545. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  546. package/contracts/instance/service/ClaimService.sol +0 -151
  547. package/contracts/instance/service/DistributionService.sol +0 -366
  548. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  549. package/contracts/instance/service/IBundleService.sol +0 -54
  550. package/contracts/instance/service/IClaimService.sol +0 -61
  551. package/contracts/instance/service/IPoolService.sol +0 -20
  552. package/contracts/instance/service/IProductService.sol +0 -40
  553. package/contracts/instance/service/PolicyService.sol +0 -476
  554. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  555. package/contracts/instance/service/PoolService.sol +0 -109
  556. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  557. package/contracts/instance/service/ProductService.sol +0 -233
  558. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  559. package/contracts/registry/RegistryAccessManager.sol +0 -216
  560. package/contracts/shared/ContractDeployerLib.sol +0 -72
  561. package/contracts/test/TestFee.sol +0 -25
  562. package/contracts/test/TestRegisterable.sol +0 -18
  563. package/contracts/test/TestRoleId.sol +0 -14
  564. package/contracts/test/TestService.sol +0 -25
  565. package/contracts/test/TestVersion.sol +0 -44
  566. package/contracts/test/TestVersionable.sol +0 -17
  567. package/contracts/test/Usdc.sol +0 -26
  568. package/contracts/types/ChainId.sol +0 -38
  569. package/contracts/types/NumberId.sol +0 -52
  570. package/contracts/types/ObjectType.sol +0 -156
  571. package/contracts/types/RoleId.sol +0 -90
  572. /package/contracts/{types → type}/DistributorType.sol +0 -0
  573. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,80 +1,84 @@
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 _distributionFee;
34
- TokenHandler _tokenHandler;
31
+ IComponentService _componentService;
35
32
  IDistributionService _distributionService;
36
33
  mapping(address distributor => NftId distributorNftId) _distributorNftId;
37
34
  }
38
35
 
36
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
37
+
39
38
  function initializeDistribution(
40
39
  address registry,
41
40
  NftId instanceNftId,
41
+ address initialOwner,
42
42
  string memory name,
43
43
  address token,
44
- Fee memory distributionFee,
45
- address initialOwner,
46
- bytes memory data
44
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
45
+ bytes memory componentData // component specifidc data
47
46
  )
48
47
  public
49
48
  virtual
50
49
  onlyInitializing()
51
50
  {
52
- initializeComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, data);
51
+ initializeInstanceLinkedComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData, componentData);
53
52
 
54
53
  DistributionStorage storage $ = _getDistributionStorage();
55
- // TODO add validation
56
- $._distributionFee = distributionFee;
57
- $._tokenHandler = new TokenHandler(token);
58
- $._distributionService = getInstance().getDistributionService();
54
+ $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
55
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
59
56
 
60
57
  registerInterface(type(IDistributionComponent).interfaceId);
61
58
  }
62
59
 
60
+ function register()
61
+ external
62
+ virtual
63
+ onlyOwner()
64
+ {
65
+ _getDistributionStorage()._componentService.registerDistribution();
66
+ }
67
+
63
68
  function setFees(
64
- Fee memory distributionFee
69
+ Fee memory distributionFee,
70
+ Fee memory minDistributionOwnerFee
65
71
  )
66
72
  external
67
73
  override
68
- onlyOwner
74
+ onlyOwner()
69
75
  restricted()
70
76
  {
71
- _getDistributionStorage()._distributionService.setFees(distributionFee);
77
+ _getDistributionStorage()._componentService.setDistributionFees(
78
+ distributionFee,
79
+ minDistributionOwnerFee);
72
80
  }
73
81
 
74
- function getDistributionFee() external view returns (Fee memory distributionFee) {
75
- DistributionStorage storage $ = _getDistributionStorage();
76
- return $._distributionFee;
77
- }
78
82
 
79
83
  function createDistributorType(
80
84
  string memory name,
@@ -112,7 +116,9 @@ abstract contract Distribution is
112
116
  returns(NftId distributorNftId)
113
117
  {
114
118
  DistributionStorage storage $ = _getDistributionStorage();
115
- require($._distributorNftId[distributor].eqz(), "ERROR:DST-030:ALREADY_DISTRIBUTOR");
119
+ if($._distributorNftId[distributor].gtz()) {
120
+ revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
121
+ }
116
122
 
117
123
  distributorNftId = $._distributionService.createDistributor(
118
124
  distributor,
@@ -132,10 +138,11 @@ abstract contract Distribution is
132
138
  // and add it
133
139
  {
134
140
  DistributionStorage storage $ = _getDistributionStorage();
135
- $._distributionService.updateDistributorType(
136
- distributorNftId,
137
- distributorType,
138
- data);
141
+ // TODO re-enable once implemented
142
+ // $._distributionService.updateDistributorType(
143
+ // distributorNftId,
144
+ // distributorType,
145
+ // data);
139
146
  }
140
147
 
141
148
  /**
@@ -190,7 +197,7 @@ abstract contract Distribution is
190
197
  )
191
198
  {
192
199
  ReferralId referralId = getReferralId(referralCode);
193
- return getInstanceReader().getDiscountPercentage(referralId);
200
+ return _getInstanceReader().getDiscountPercentage(referralId);
194
201
  }
195
202
 
196
203
 
@@ -219,19 +226,6 @@ abstract contract Distribution is
219
226
  return 0 * netPremiumAmount;
220
227
  }
221
228
 
222
- function processSale(
223
- ReferralId referralId,
224
- uint256 premiumAmount
225
- )
226
- external
227
- onlyOwner
228
- restricted()
229
- virtual override
230
- {
231
- DistributionStorage storage $ = _getDistributionStorage();
232
- $._distributionService.processSale(referralId, premiumAmount);
233
- }
234
-
235
229
  function processRenewal(
236
230
  ReferralId referralId,
237
231
  uint256 feeAmount
@@ -244,38 +238,18 @@ abstract contract Distribution is
244
238
  // default is no action
245
239
  }
246
240
 
247
- function getSetupInfo() public view returns (ISetup.DistributionSetupInfo memory setupInfo) {
248
- InstanceReader reader = getInstance().getInstanceReader();
249
- setupInfo = reader.getDistributionSetupInfo(getNftId());
250
-
251
- // fallback to initial setup info (wallet is always != address(0))
252
- if(setupInfo.wallet == address(0)) {
253
- setupInfo = _getInitialSetupInfo();
254
- }
255
- }
256
-
257
- function _getInitialSetupInfo() internal view returns (ISetup.DistributionSetupInfo memory setupInfo) {
258
- DistributionStorage storage $ = _getDistributionStorage();
259
- return ISetup.DistributionSetupInfo(
260
- zeroNftId(),
261
- $._tokenHandler,
262
- $._distributionFee,
263
- address(this)
264
- );
265
- }
266
-
267
241
 
268
- function nftTransferFrom(address from, address to, uint256 tokenId) external virtual override (Component, ITransferInterceptor) {
242
+ function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
269
243
  // keep track of distributor nft owner
270
244
  emit LogDistributorUpdated(to, msg.sender);
271
245
  DistributionStorage storage $ = _getDistributionStorage();
272
- $._distributorNftId[from] = zeroNftId();
273
- $._distributorNftId[to] = toNftId(tokenId);
246
+ $._distributorNftId[from] = NftIdLib.zero();
247
+ $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
274
248
  }
275
249
 
276
250
 
277
251
  /// @dev returns true iff the component needs to be called when selling/renewing policis
278
- function isVerifying() external view returns (bool verifying) {
252
+ function isVerifying() external pure returns (bool verifying) {
279
253
  return true;
280
254
  }
281
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,23 +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 distributionFee
17
+ Fee memory distributionFee,
18
+ Fee memory minDistributionOwnerFee
21
19
  ) external;
22
20
 
23
21
  function createDistributorType(
@@ -44,33 +42,11 @@ interface IDistributionComponent is IComponent {
44
42
  bytes memory data
45
43
  ) external;
46
44
 
47
- /**
48
- * @dev lets distributors create referral codes.
49
- * referral codes need to be unique
50
- * distributor is identified via msg.sender.
51
- */
52
- function createReferral(
53
- NftId distributorNftId,
54
- string memory code,
55
- UFixed discountPercentage,
56
- uint32 maxReferrals,
57
- Timestamp expiryAt,
58
- bytes memory data
59
- ) external returns (ReferralId referralId);
60
-
61
45
  function calculateRenewalFeeAmount(
62
46
  ReferralId referralId,
63
47
  uint256 netPremiumAmount
64
48
  ) external view returns (uint256 feeAmount);
65
49
 
66
- /// @dev callback from product service when selling a policy for a specific referralId
67
- /// the used referral id and the collected fee are provided as parameters
68
- /// the component implementation can then process this information accordingly
69
- function processSale(
70
- ReferralId referralId,
71
- uint256 feeAmount
72
- ) external;
73
-
74
50
  /// @dev callback from product service when a policy is renews for a specific referralId
75
51
  function processRenewal(
76
52
  ReferralId referralId,
@@ -81,8 +57,6 @@ interface IDistributionComponent is IComponent {
81
57
  string memory referralCode
82
58
  ) external view returns (UFixed discountPercentage, ReferralStatus status);
83
59
 
84
- function getDistributionFee() external view returns (Fee memory distibutionFee);
85
-
86
60
  function getReferralId(
87
61
  string memory referralCode
88
62
  ) external returns (ReferralId referralId);