@etherisc/gif-next 0.0.2-d408403-475 → 0.0.2-d442a8c-593

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 (641) hide show
  1. package/README.md +239 -39
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +304 -1639
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +469 -1882
  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 +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1565 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -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/base/Cloneable.sol/Cloneable.json +190 -0
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +376 -316
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → product/IProductService.sol/IProductService.json} +188 -177
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +678 -77
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -107
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +77 -169
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IService.sol/IService.json} +162 -154
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  200. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  201. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  202. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  204. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  206. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  208. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  210. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  212. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  214. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  216. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  218. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  219. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  220. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  222. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  224. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  226. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  228. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  230. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  232. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  234. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  236. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  238. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  240. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  242. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  244. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  246. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  248. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  250. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  252. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  254. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  256. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  258. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  260. package/contracts/distribution/Distribution.sol +261 -0
  261. package/contracts/distribution/DistributionService.sol +298 -0
  262. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  263. package/contracts/distribution/IDistributionComponent.sol +66 -0
  264. package/contracts/distribution/IDistributionService.sol +81 -0
  265. package/contracts/instance/BundleManager.sol +126 -0
  266. package/contracts/instance/IInstance.sol +72 -46
  267. package/contracts/instance/IInstanceService.sol +81 -0
  268. package/contracts/instance/Instance.sol +220 -59
  269. package/contracts/instance/InstanceAdmin.sol +331 -0
  270. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  271. package/contracts/instance/InstanceReader.sol +365 -0
  272. package/contracts/instance/InstanceService.sol +362 -0
  273. package/contracts/instance/InstanceServiceManager.sol +44 -0
  274. package/contracts/instance/InstanceStore.sol +260 -0
  275. package/contracts/instance/base/BalanceStore.sol +118 -0
  276. package/contracts/instance/base/Cloneable.sol +51 -0
  277. package/contracts/instance/base/ObjectManager.sol +82 -0
  278. package/contracts/instance/module/IAccess.sol +46 -0
  279. package/contracts/instance/module/IBundle.sol +20 -0
  280. package/contracts/instance/module/IComponents.sol +52 -0
  281. package/contracts/instance/module/IDistribution.sol +42 -0
  282. package/contracts/instance/module/IPolicy.sol +84 -0
  283. package/contracts/instance/module/IRisk.sol +11 -0
  284. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  285. package/contracts/pool/BundleService.sol +296 -0
  286. package/contracts/pool/BundleServiceManager.sol +42 -0
  287. package/contracts/pool/IBundleService.sol +106 -0
  288. package/contracts/pool/IPoolComponent.sol +112 -0
  289. package/contracts/pool/IPoolService.sol +150 -0
  290. package/contracts/pool/Pool.sol +299 -0
  291. package/contracts/pool/PoolService.sol +453 -0
  292. package/contracts/pool/PoolServiceManager.sol +42 -0
  293. package/contracts/product/ApplicationService.sol +254 -0
  294. package/contracts/product/ApplicationServiceManager.sol +38 -0
  295. package/contracts/product/ClaimService.sol +442 -0
  296. package/contracts/product/ClaimServiceManager.sol +38 -0
  297. package/contracts/product/IApplicationService.sol +62 -0
  298. package/contracts/product/IClaimService.sol +93 -0
  299. package/contracts/product/IPolicyService.sol +78 -0
  300. package/contracts/product/IPricingService.sol +39 -0
  301. package/contracts/product/IProductComponent.sol +42 -0
  302. package/contracts/product/IProductService.sol +33 -0
  303. package/contracts/product/PolicyService.sol +475 -0
  304. package/contracts/product/PolicyServiceManager.sol +42 -0
  305. package/contracts/product/PricingService.sol +301 -0
  306. package/contracts/product/PricingServiceManager.sol +42 -0
  307. package/contracts/product/Product.sol +377 -0
  308. package/contracts/product/ProductService.sol +124 -0
  309. package/contracts/product/ProductServiceManager.sol +42 -0
  310. package/contracts/registry/ChainNft.sol +95 -37
  311. package/contracts/registry/IRegistry.sol +95 -28
  312. package/contracts/registry/IRegistryService.sol +69 -0
  313. package/contracts/registry/ITransferInterceptor.sol +7 -0
  314. package/contracts/registry/Registry.sol +476 -282
  315. package/contracts/registry/RegistryAdmin.sol +237 -0
  316. package/contracts/registry/RegistryService.sol +266 -0
  317. package/contracts/registry/RegistryServiceManager.sol +58 -0
  318. package/contracts/registry/ReleaseManager.sol +599 -0
  319. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  320. package/contracts/registry/TokenRegistry.sol +315 -0
  321. package/contracts/shared/AccessManagerCustom.sol +736 -0
  322. package/contracts/shared/AccessManagerExtended.sol +470 -0
  323. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  324. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  325. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  326. package/contracts/shared/Component.sol +278 -0
  327. package/contracts/shared/ComponentService.sol +596 -0
  328. package/contracts/shared/ComponentServiceManager.sol +35 -0
  329. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  330. package/contracts/shared/ERC165.sol +15 -9
  331. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  332. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  333. package/contracts/shared/IComponent.sol +70 -0
  334. package/contracts/shared/IComponentService.sol +91 -0
  335. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  336. package/contracts/shared/IKeyValueStore.sol +53 -0
  337. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -4
  338. package/contracts/shared/INftOwnable.sol +23 -0
  339. package/contracts/shared/IPolicyHolder.sol +45 -0
  340. package/contracts/shared/IRegisterable.sol +10 -19
  341. package/contracts/shared/IRegistryLinked.sol +11 -0
  342. package/contracts/shared/IService.sol +18 -0
  343. package/contracts/shared/IVersionable.sol +38 -37
  344. package/contracts/shared/InitializableCustom.sol +177 -0
  345. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  346. package/contracts/shared/KeyValueStore.sol +127 -0
  347. package/contracts/{instance/base → shared}/Lifecycle.sol +29 -8
  348. package/contracts/shared/NftIdSetManager.sol +65 -0
  349. package/contracts/shared/NftOwnable.sol +107 -0
  350. package/contracts/shared/PolicyHolder.sol +102 -0
  351. package/contracts/shared/ProxyManager.sol +199 -0
  352. package/contracts/shared/Registerable.sol +54 -65
  353. package/contracts/shared/RegistryLinked.sol +43 -0
  354. package/contracts/shared/Service.sol +77 -0
  355. package/contracts/shared/TokenHandler.sol +58 -0
  356. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  357. package/contracts/shared/Versionable.sol +38 -68
  358. package/contracts/staking/IStaking.sol +168 -0
  359. package/contracts/staking/IStakingService.sol +149 -0
  360. package/contracts/staking/StakeManagerLib.sol +179 -0
  361. package/contracts/staking/Staking.sol +551 -0
  362. package/contracts/staking/StakingManager.sol +54 -0
  363. package/contracts/staking/StakingReader.sol +187 -0
  364. package/contracts/staking/StakingService.sol +406 -0
  365. package/contracts/staking/StakingServiceManager.sol +45 -0
  366. package/contracts/staking/StakingStore.sol +572 -0
  367. package/contracts/staking/TargetManagerLib.sol +207 -0
  368. package/contracts/{types → type}/AddressSet.sol +1 -1
  369. package/contracts/type/Amount.sol +128 -0
  370. package/contracts/{types → type}/Blocknumber.sol +21 -3
  371. package/contracts/type/ClaimId.sol +75 -0
  372. package/contracts/type/DistributorType.sol +55 -0
  373. package/contracts/type/Fee.sol +66 -0
  374. package/contracts/{types → type}/Key32.sol +8 -3
  375. package/contracts/{types → type}/NftId.sol +21 -15
  376. package/contracts/type/NftIdSet.sol +62 -0
  377. package/contracts/{types → type}/ObjectType.sol +53 -15
  378. package/contracts/type/PayoutId.sol +82 -0
  379. package/contracts/type/Referral.sol +89 -0
  380. package/contracts/{types → type}/RiskId.sol +1 -1
  381. package/contracts/type/RoleId.sol +143 -0
  382. package/contracts/type/Seconds.sol +81 -0
  383. package/contracts/{types → type}/StateId.sol +29 -7
  384. package/contracts/{types → type}/Timestamp.sol +22 -13
  385. package/contracts/{types → type}/UFixed.sol +129 -12
  386. package/contracts/{types → type}/Version.sol +15 -2
  387. package/package.json +6 -5
  388. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  389. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  390. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  391. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  392. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  393. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  394. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  395. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  396. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  397. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  398. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  399. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  400. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  401. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  402. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  403. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  404. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  405. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  406. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  408. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  410. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  412. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  414. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  416. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  418. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  420. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  422. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  423. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  424. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  425. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  426. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  427. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  428. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  430. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  432. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  434. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  436. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  438. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  439. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  440. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  441. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  442. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  443. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  444. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  445. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  448. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  449. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  450. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  451. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  452. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  453. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  454. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  455. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  456. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  458. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  460. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  461. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  462. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  463. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  464. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  465. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  466. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  467. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  468. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  469. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  470. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  471. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  472. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  473. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  474. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  475. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  476. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  477. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  479. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  480. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  481. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  482. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  483. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  484. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  486. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  487. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  488. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  489. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  490. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  491. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  492. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  493. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  495. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  497. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  499. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  500. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  501. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  503. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  505. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  506. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  507. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -440
  510. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  513. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  515. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  516. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  517. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  518. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  519. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  520. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  521. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  522. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  523. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  525. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  527. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  529. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  531. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  533. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  535. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  537. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  539. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  540. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  541. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  542. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  543. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  544. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  547. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  549. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  551. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  553. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  556. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  559. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  561. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  562. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  565. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  567. package/contracts/components/BaseComponent.sol +0 -94
  568. package/contracts/components/Distribution.sol +0 -132
  569. package/contracts/components/IBaseComponent.sol +0 -19
  570. package/contracts/components/IDistributionComponent.sol +0 -48
  571. package/contracts/components/IPoolComponent.sol +0 -71
  572. package/contracts/components/IProductComponent.sol +0 -38
  573. package/contracts/components/Pool.sol +0 -235
  574. package/contracts/components/Product.sol +0 -227
  575. package/contracts/experiment/errors/Require.sol +0 -38
  576. package/contracts/experiment/errors/Revert.sol +0 -44
  577. package/contracts/experiment/inheritance/A.sol +0 -53
  578. package/contracts/experiment/inheritance/B.sol +0 -28
  579. package/contracts/experiment/inheritance/C.sol +0 -34
  580. package/contracts/experiment/inheritance/IA.sol +0 -13
  581. package/contracts/experiment/inheritance/IB.sol +0 -10
  582. package/contracts/experiment/inheritance/IC.sol +0 -12
  583. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  584. package/contracts/experiment/statemachine/ISM.sol +0 -25
  585. package/contracts/experiment/statemachine/README.md +0 -112
  586. package/contracts/experiment/statemachine/SM.sol +0 -57
  587. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  588. package/contracts/experiment/types/TypeA.sol +0 -47
  589. package/contracts/experiment/types/TypeB.sol +0 -29
  590. package/contracts/instance/IInstanceLinked.sol +0 -8
  591. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  592. package/contracts/instance/base/IInstanceBase.sol +0 -22
  593. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  594. package/contracts/instance/base/IService.sol +0 -15
  595. package/contracts/instance/base/InstanceBase.sol +0 -91
  596. package/contracts/instance/base/KeyValueStore.sol +0 -161
  597. package/contracts/instance/base/ModuleBase.sol +0 -57
  598. package/contracts/instance/base/ServiceBase.sol +0 -37
  599. package/contracts/instance/module/access/Access.sol +0 -149
  600. package/contracts/instance/module/access/IAccess.sol +0 -53
  601. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  602. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  603. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  604. package/contracts/instance/module/component/IComponent.sol +0 -28
  605. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  606. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  607. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  608. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  609. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  610. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  611. package/contracts/instance/module/risk/IRisk.sol +0 -26
  612. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  613. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  614. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  615. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  616. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  617. package/contracts/instance/service/DistributionService.sol +0 -59
  618. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  619. package/contracts/instance/service/IDistributionService.sol +0 -12
  620. package/contracts/instance/service/IPoolService.sol +0 -37
  621. package/contracts/instance/service/IProductService.sol +0 -107
  622. package/contracts/instance/service/PoolService.sol +0 -149
  623. package/contracts/instance/service/ProductService.sol +0 -509
  624. package/contracts/registry/IChainNft.sol +0 -21
  625. package/contracts/registry/IRegistryLinked.sol +0 -8
  626. package/contracts/shared/IOwnable.sol +0 -6
  627. package/contracts/test/TestDistribution.sol +0 -21
  628. package/contracts/test/TestFee.sol +0 -25
  629. package/contracts/test/TestPool.sol +0 -25
  630. package/contracts/test/TestProduct.sol +0 -72
  631. package/contracts/test/TestRegisterable.sol +0 -19
  632. package/contracts/test/TestRoleId.sol +0 -14
  633. package/contracts/test/TestService.sol +0 -32
  634. package/contracts/test/TestToken.sol +0 -26
  635. package/contracts/test/TestVersion.sol +0 -44
  636. package/contracts/test/TestVersionable.sol +0 -17
  637. package/contracts/types/ChainId.sol +0 -38
  638. package/contracts/types/Fee.sol +0 -56
  639. package/contracts/types/NftIdSet.sol +0 -60
  640. package/contracts/types/ReferralId.sol +0 -48
  641. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,261 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
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";
12
+ import {IDistribution} from "../instance/module/IDistribution.sol";
13
+ import {IDistributionComponent} from "./IDistributionComponent.sol";
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+ import {InstanceReader} from "../instance/InstanceReader.sol";
17
+ import {UFixed} from "../type/UFixed.sol";
18
+ import {DistributorType} from "../type/DistributorType.sol";
19
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
20
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
21
+
22
+
23
+ abstract contract Distribution is
24
+ InstanceLinkedComponent,
25
+ IDistributionComponent
26
+ {
27
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Distribution")) - 1)) & ~bytes32(uint256(0xff));
28
+ bytes32 public constant DISTRIBUTION_STORAGE_LOCATION_V1 = 0xaab7c5ea03d290056d6c060e0833d3ebcbe647f7694616a2ec52738a64b2f900;
29
+
30
+ struct DistributionStorage {
31
+ IComponentService _componentService;
32
+ IDistributionService _distributionService;
33
+ mapping(address distributor => NftId distributorNftId) _distributorNftId;
34
+ }
35
+
36
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
37
+
38
+ function initializeDistribution(
39
+ address registry,
40
+ NftId instanceNftId,
41
+ address initialOwner,
42
+ string memory name,
43
+ address token,
44
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
45
+ bytes memory componentData // component specifidc data
46
+ )
47
+ public
48
+ virtual
49
+ onlyInitializing()
50
+ {
51
+ initializeInstanceLinkedComponent(registry, instanceNftId, name, token, DISTRIBUTION(), true, initialOwner, registryData, componentData);
52
+
53
+ DistributionStorage storage $ = _getDistributionStorage();
54
+ $._distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
55
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
56
+
57
+ registerInterface(type(IDistributionComponent).interfaceId);
58
+ }
59
+
60
+ function register()
61
+ external
62
+ virtual
63
+ onlyOwner()
64
+ {
65
+ _getDistributionStorage()._componentService.registerDistribution();
66
+ }
67
+
68
+ function setFees(
69
+ Fee memory distributionFee,
70
+ Fee memory minDistributionOwnerFee
71
+ )
72
+ external
73
+ override
74
+ onlyOwner()
75
+ restricted()
76
+ {
77
+ _getDistributionStorage()._componentService.setDistributionFees(
78
+ distributionFee,
79
+ minDistributionOwnerFee);
80
+ }
81
+
82
+
83
+ function createDistributorType(
84
+ string memory name,
85
+ UFixed minDiscountPercentage,
86
+ UFixed maxDiscountPercentage,
87
+ UFixed commissionPercentage,
88
+ uint32 maxReferralCount,
89
+ uint32 maxReferralLifetime,
90
+ bool allowSelfReferrals,
91
+ bool allowRenewals,
92
+ bytes memory data
93
+ )
94
+ public
95
+ returns (DistributorType distributorType)
96
+ {
97
+ DistributionStorage storage $ = _getDistributionStorage();
98
+ distributorType = $._distributionService.createDistributorType(
99
+ name,
100
+ minDiscountPercentage,
101
+ maxDiscountPercentage,
102
+ commissionPercentage,
103
+ maxReferralCount,
104
+ maxReferralLifetime,
105
+ allowSelfReferrals,
106
+ allowRenewals,
107
+ data);
108
+ }
109
+
110
+ function createDistributor(
111
+ address distributor,
112
+ DistributorType distributorType,
113
+ bytes memory data
114
+ )
115
+ public
116
+ returns(NftId distributorNftId)
117
+ {
118
+ DistributionStorage storage $ = _getDistributionStorage();
119
+ if($._distributorNftId[distributor].gtz()) {
120
+ revert ErrorDistributionAlreadyDistributor(distributor, $._distributorNftId[distributor]);
121
+ }
122
+
123
+ distributorNftId = $._distributionService.createDistributor(
124
+ distributor,
125
+ distributorType,
126
+ data);
127
+
128
+ $._distributorNftId[distributor] = distributorNftId;
129
+ }
130
+
131
+ function updateDistributorType(
132
+ NftId distributorNftId,
133
+ DistributorType distributorType,
134
+ bytes memory data
135
+ )
136
+ public
137
+ // TODO figure out what we need for authz
138
+ // and add it
139
+ {
140
+ DistributionStorage storage $ = _getDistributionStorage();
141
+ // TODO re-enable once implemented
142
+ // $._distributionService.updateDistributorType(
143
+ // distributorNftId,
144
+ // distributorType,
145
+ // data);
146
+ }
147
+
148
+ /**
149
+ * @dev lets distributors create referral codes.
150
+ * referral codes need to be unique
151
+ */
152
+ function _createReferral(
153
+ NftId distributorNftId,
154
+ string memory code,
155
+ UFixed discountPercentage,
156
+ uint32 maxReferrals,
157
+ Timestamp expiryAt,
158
+ bytes memory data
159
+ )
160
+ internal
161
+ returns (ReferralId referralId)
162
+ {
163
+ DistributionStorage storage $ = _getDistributionStorage();
164
+ referralId = $._distributionService.createReferral(
165
+ distributorNftId,
166
+ code,
167
+ discountPercentage,
168
+ maxReferrals,
169
+ expiryAt,
170
+ data);
171
+ }
172
+
173
+ function isDistributor(address candidate)
174
+ public
175
+ view
176
+ returns (bool)
177
+ {
178
+ DistributionStorage storage $ = _getDistributionStorage();
179
+ return $._distributorNftId[candidate].gtz();
180
+ }
181
+
182
+ function getDistributorNftId(address distributor)
183
+ public
184
+ view
185
+ returns (NftId distributorNftId)
186
+ {
187
+ DistributionStorage storage $ = _getDistributionStorage();
188
+ return $._distributorNftId[distributor];
189
+ }
190
+
191
+ function getDiscountPercentage(string memory referralCode)
192
+ external
193
+ view
194
+ returns (
195
+ UFixed discountPercentage,
196
+ ReferralStatus status
197
+ )
198
+ {
199
+ ReferralId referralId = getReferralId(referralCode);
200
+ return _getInstanceReader().getDiscountPercentage(referralId);
201
+ }
202
+
203
+
204
+ function getReferralId(
205
+ string memory referralCode
206
+ )
207
+ public
208
+ view
209
+ returns (ReferralId referralId)
210
+ {
211
+ return ReferralLib.toReferralId(
212
+ getNftId(),
213
+ referralCode);
214
+ }
215
+
216
+ function calculateRenewalFeeAmount(
217
+ ReferralId referralId,
218
+ uint256 netPremiumAmount
219
+ )
220
+ external
221
+ view
222
+ virtual override
223
+ returns (uint256 feeAmount)
224
+ {
225
+ // default is no fees
226
+ return 0 * netPremiumAmount;
227
+ }
228
+
229
+ function processRenewal(
230
+ ReferralId referralId,
231
+ uint256 feeAmount
232
+ )
233
+ external
234
+ onlyOwner
235
+ restricted()
236
+ virtual override
237
+ {
238
+ // default is no action
239
+ }
240
+
241
+
242
+ function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
243
+ // keep track of distributor nft owner
244
+ emit LogDistributorUpdated(to, msg.sender);
245
+ DistributionStorage storage $ = _getDistributionStorage();
246
+ $._distributorNftId[from] = NftIdLib.zero();
247
+ $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
248
+ }
249
+
250
+
251
+ /// @dev returns true iff the component needs to be called when selling/renewing policis
252
+ function isVerifying() external pure returns (bool verifying) {
253
+ return true;
254
+ }
255
+
256
+ function _getDistributionStorage() private pure returns (DistributionStorage storage $) {
257
+ assembly {
258
+ $.slot := DISTRIBUTION_STORAGE_LOCATION_V1
259
+ }
260
+ }
261
+ }
@@ -0,0 +1,298 @@
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
+ function getDomain() public pure override returns(ObjectType) {
81
+ return DISTRIBUTION();
82
+ }
83
+
84
+
85
+ function createDistributorType(
86
+ string memory name,
87
+ UFixed minDiscountPercentage,
88
+ UFixed maxDiscountPercentage,
89
+ UFixed commissionPercentage,
90
+ uint32 maxReferralCount,
91
+ uint32 maxReferralLifetime,
92
+ bool allowSelfReferrals,
93
+ bool allowRenewals,
94
+ bytes memory data
95
+ )
96
+ external
97
+ returns (DistributorType distributorType)
98
+ {
99
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
100
+ InstanceReader instanceReader = instance.getInstanceReader();
101
+
102
+ {
103
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
104
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
105
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee.add(commissionPercentage);
106
+ UFixed maxDiscountPercentageLimit = productInfo.distributionFee.fractionalFee.sub(variableFeesPartsTotal);
107
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
108
+ revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
109
+ }
110
+ }
111
+
112
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
113
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
114
+ name,
115
+ minDiscountPercentage,
116
+ maxDiscountPercentage,
117
+ commissionPercentage,
118
+ maxReferralCount,
119
+ maxReferralLifetime,
120
+ allowSelfReferrals,
121
+ allowRenewals,
122
+ data);
123
+
124
+ instance.getInstanceStore().createDistributorType(distributorType, info);
125
+ }
126
+
127
+
128
+ function createDistributor(
129
+ address distributor,
130
+ DistributorType distributorType,
131
+ bytes memory data
132
+ )
133
+ external
134
+ virtual
135
+ returns (NftId distributorNftId)
136
+ {
137
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
138
+
139
+ distributorNftId = _registryService.registerDistributor(
140
+ IRegistry.ObjectInfo(
141
+ NftIdLib.zero(),
142
+ distributionNftId,
143
+ DISTRIBUTOR(),
144
+ true, // intercepting property for bundles is defined on pool
145
+ address(0),
146
+ distributor,
147
+ ""
148
+ ));
149
+
150
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
151
+ distributorType,
152
+ true, // active
153
+ data,
154
+ AmountLib.zero(),
155
+ 0);
156
+
157
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
158
+ }
159
+
160
+ // function updateDistributorType(
161
+ // NftId distributorNftId,
162
+ // DistributorType distributorType,
163
+ // bytes memory data
164
+ // )
165
+ // external
166
+ // virtual
167
+ // {
168
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
169
+ // InstanceReader instanceReader = instance.getInstanceReader();
170
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
171
+ // distributorInfo.distributorType = distributorType;
172
+ // distributorInfo.data = data;
173
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
174
+ // }
175
+
176
+
177
+ function createReferral(
178
+ NftId distributorNftId,
179
+ string memory code,
180
+ UFixed discountPercentage,
181
+ uint32 maxReferrals,
182
+ Timestamp expiryAt,
183
+ bytes memory data
184
+ )
185
+ external
186
+ virtual
187
+ returns (ReferralId referralId)
188
+ {
189
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
190
+
191
+ if (bytes(code).length == 0) {
192
+ revert ErrorIDistributionServiceInvalidReferral(code);
193
+ }
194
+ if (expiryAt.eqz()) {
195
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
196
+ }
197
+
198
+ InstanceReader instanceReader = instance.getInstanceReader();
199
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
200
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
201
+
202
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
203
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
204
+ }
205
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
206
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
207
+ }
208
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
209
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
210
+ }
211
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
212
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
213
+ }
214
+
215
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
216
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
217
+ distributorNftId,
218
+ code,
219
+ discountPercentage,
220
+ maxReferrals,
221
+ 0, // used referrals
222
+ expiryAt,
223
+ data
224
+ );
225
+
226
+ instance.getInstanceStore().createReferral(referralId, info);
227
+ return referralId;
228
+ }
229
+
230
+
231
+ function processSale(
232
+ NftId distributionNftId, // assume always of distribution type
233
+ ReferralId referralId,
234
+ IPolicy.Premium memory premium
235
+ )
236
+ external
237
+ virtual
238
+ restricted
239
+ {
240
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
241
+ InstanceReader reader = instance.getInstanceReader();
242
+ InstanceStore store = instance.getInstanceStore();
243
+
244
+ // get distribution owner fee amount
245
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
246
+
247
+ // update referral/distributor info if applicable
248
+ if (referralIsValid(distributionNftId, referralId)) {
249
+
250
+ // increase distribution balance by commission amount and distribution owner fee
251
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
252
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
253
+
254
+ // update book keeping for referral info
255
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
256
+ referralInfo.usedReferrals += 1;
257
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
258
+
259
+ // update book keeping for distributor info
260
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
261
+ // TODO refactor sum of commission amount into a fee balance for distributors
262
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
263
+ distributorInfo.numPoliciesSold += 1;
264
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
265
+ } else {
266
+
267
+ // increase distribution balance by distribution owner fee
268
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
269
+ }
270
+ }
271
+
272
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
273
+ if (distributionNftId.eqz() || referralId.eqz()) {
274
+ return false;
275
+ }
276
+
277
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
278
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
279
+
280
+ if (info.distributorNftId.eqz()) {
281
+ return false;
282
+ }
283
+
284
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
285
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
286
+ }
287
+
288
+ function _getInstanceForDistribution(NftId distributionNftId)
289
+ internal
290
+ view
291
+ returns(IInstance instance)
292
+ {
293
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
294
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
295
+ return IInstance(instanceAddress);
296
+ }
297
+
298
+ }
@@ -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
+ }
@@ -0,0 +1,66 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
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";
11
+
12
+ interface IDistributionComponent is IInstanceLinkedComponent {
13
+
14
+ event LogDistributorUpdated(address to, address caller);
15
+
16
+ function setFees(
17
+ Fee memory distributionFee,
18
+ Fee memory minDistributionOwnerFee
19
+ ) external;
20
+
21
+ function createDistributorType(
22
+ string memory name,
23
+ UFixed minDiscountPercentage,
24
+ UFixed maxDiscountPercentage,
25
+ UFixed commissionPercentage,
26
+ uint32 maxReferralCount,
27
+ uint32 maxReferralLifetime,
28
+ bool allowSelfReferrals,
29
+ bool allowRenewals,
30
+ bytes memory data
31
+ ) external returns (DistributorType distributorType);
32
+
33
+ function createDistributor(
34
+ address distributor,
35
+ DistributorType distributorType,
36
+ bytes memory data
37
+ ) external returns(NftId distributorNftId);
38
+
39
+ function updateDistributorType(
40
+ NftId distributorNftId,
41
+ DistributorType distributorType,
42
+ bytes memory data
43
+ ) external;
44
+
45
+ function calculateRenewalFeeAmount(
46
+ ReferralId referralId,
47
+ uint256 netPremiumAmount
48
+ ) external view returns (uint256 feeAmount);
49
+
50
+ /// @dev callback from product service when a policy is renews for a specific referralId
51
+ function processRenewal(
52
+ ReferralId referralId,
53
+ uint256 feeAmount
54
+ ) external;
55
+
56
+ function getDiscountPercentage(
57
+ string memory referralCode
58
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
59
+
60
+ function getReferralId(
61
+ string memory referralCode
62
+ ) external returns (ReferralId referralId);
63
+
64
+ /// @dev returns true iff the component needs to be called when selling/renewing policis
65
+ function isVerifying() external view returns (bool verifying);
66
+ }