@etherisc/gif-next 0.0.2-9addcc0-107 → 0.0.2-9b58b75-869

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 (622) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +184 -326
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1571 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +858 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +181 -238
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +171 -274
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +240 -2316
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +203 -46
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +427 -2916
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +518 -352
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +268 -207
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -102
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +160 -219
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +226 -137
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  100. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +27 -54
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  102. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +169 -286
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service → pool}/IPoolService.sol/IPoolService.json +137 -136
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +1288 -0
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  126. package/artifacts/contracts/{instance/service → product}/IClaimService.sol/IClaimService.json +31 -2
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +112 -43
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  130. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +64 -134
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  134. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +14 -56
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  144. package/artifacts/contracts/{components → product}/Product.sol/Product.json +316 -238
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +182 -28
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +443 -43
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +374 -72
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -41
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -140
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  173. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +106 -83
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1640 -0
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +22 -114
  180. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +77 -82
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +977 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  194. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  199. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  200. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  201. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  203. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  204. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  205. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  206. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  207. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  208. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  209. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -9
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -9
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  215. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +42 -6
  219. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  221. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  223. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  225. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  227. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  229. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  231. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  233. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  235. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  237. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  239. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  241. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  242. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  243. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  244. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  245. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  246. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  247. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  249. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  251. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  255. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  258. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  259. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  260. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  261. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  262. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  263. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  264. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  265. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  266. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  267. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  268. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  269. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  270. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  271. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  277. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  278. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  279. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  282. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +20 -7
  283. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  285. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  287. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  289. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  291. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  292. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  293. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  294. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  295. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  296. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  297. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  298. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  299. package/contracts/authorization/AccessAdmin.sol +591 -0
  300. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  301. package/contracts/authorization/Authorization.sol +218 -0
  302. package/contracts/authorization/IAccess.sol +48 -0
  303. package/contracts/authorization/IAccessAdmin.sol +136 -0
  304. package/contracts/authorization/IAuthorization.sol +54 -0
  305. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  306. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  307. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  308. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  309. package/contracts/distribution/BasicDistribution.sol +138 -0
  310. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  311. package/contracts/{components → distribution}/Distribution.sol +167 -157
  312. package/contracts/distribution/DistributionService.sol +352 -0
  313. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  314. package/contracts/distribution/IDistributionComponent.sol +52 -0
  315. package/contracts/{instance/service → distribution}/IDistributionService.sol +30 -33
  316. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +27 -27
  317. package/contracts/instance/IInstance.sol +54 -72
  318. package/contracts/instance/IInstanceService.sol +50 -21
  319. package/contracts/instance/Instance.sol +150 -214
  320. package/contracts/instance/InstanceAdmin.sol +266 -0
  321. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  322. package/contracts/instance/InstanceReader.sol +101 -62
  323. package/contracts/instance/InstanceService.sol +267 -308
  324. package/contracts/instance/InstanceServiceManager.sol +12 -26
  325. package/contracts/instance/InstanceStore.sol +276 -0
  326. package/contracts/instance/base/BalanceStore.sol +123 -0
  327. package/contracts/instance/base/Cloneable.sol +28 -0
  328. package/contracts/instance/base/ObjectCounter.sol +21 -0
  329. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  330. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  331. package/contracts/instance/module/IAccess.sol +4 -12
  332. package/contracts/instance/module/IBundle.sol +6 -9
  333. package/contracts/instance/module/IComponents.sol +19 -9
  334. package/contracts/instance/module/IDistribution.sol +5 -5
  335. package/contracts/instance/module/IPolicy.sol +19 -12
  336. package/contracts/instance/module/IRisk.sol +1 -1
  337. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  338. package/contracts/oracle/BasicOracle.sol +48 -0
  339. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  340. package/contracts/oracle/IOracle.sol +36 -0
  341. package/contracts/oracle/IOracleComponent.sol +33 -0
  342. package/contracts/oracle/IOracleService.sol +65 -0
  343. package/contracts/oracle/Oracle.sol +166 -0
  344. package/contracts/oracle/OracleService.sol +278 -0
  345. package/contracts/oracle/OracleServiceManager.sol +39 -0
  346. package/contracts/pool/BasicPool.sol +164 -0
  347. package/contracts/pool/BasicPoolAuthorization.sol +52 -0
  348. package/contracts/pool/BundleService.sol +284 -0
  349. package/contracts/pool/BundleServiceManager.sol +39 -0
  350. package/contracts/{instance/service → pool}/IBundleService.sol +15 -27
  351. package/contracts/pool/IPoolComponent.sol +51 -0
  352. package/contracts/{instance/service → pool}/IPoolService.sol +57 -21
  353. package/contracts/pool/Pool.sol +311 -0
  354. package/contracts/pool/PoolService.sol +436 -0
  355. package/contracts/pool/PoolServiceManager.sol +39 -0
  356. package/contracts/product/ApplicationService.sol +230 -0
  357. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  358. package/contracts/product/BasicProduct.sol +82 -0
  359. package/contracts/product/BasicProductAuthorization.sol +43 -0
  360. package/contracts/{instance/service → product}/ClaimService.sol +63 -90
  361. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  362. package/contracts/{instance/service → product}/IApplicationService.sol +10 -27
  363. package/contracts/{instance/service → product}/IClaimService.sol +23 -14
  364. package/contracts/{instance/service → product}/IPolicyService.sol +20 -22
  365. package/contracts/product/IPricingService.sol +39 -0
  366. package/contracts/{components → product}/IProductComponent.sol +16 -17
  367. package/contracts/product/IProductService.sol +33 -0
  368. package/contracts/product/PolicyService.sol +475 -0
  369. package/contracts/product/PolicyServiceManager.sol +39 -0
  370. package/contracts/product/PricingService.sol +300 -0
  371. package/contracts/product/PricingServiceManager.sol +39 -0
  372. package/contracts/{components → product}/Product.sol +145 -125
  373. package/contracts/product/ProductService.sol +99 -0
  374. package/contracts/product/ProductServiceManager.sol +39 -0
  375. package/contracts/registry/ChainNft.sol +8 -1
  376. package/contracts/registry/IRegistry.sol +59 -26
  377. package/contracts/registry/IRegistryService.sol +42 -39
  378. package/contracts/registry/Registry.sol +234 -125
  379. package/contracts/registry/RegistryAdmin.sol +365 -0
  380. package/contracts/registry/RegistryService.sol +69 -99
  381. package/contracts/registry/RegistryServiceManager.sol +23 -32
  382. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  383. package/contracts/registry/ReleaseRegistry.sol +485 -0
  384. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  385. package/contracts/registry/TokenRegistry.sol +261 -62
  386. package/contracts/shared/Component.sol +280 -0
  387. package/contracts/shared/ComponentService.sol +622 -0
  388. package/contracts/shared/ComponentServiceManager.sol +35 -0
  389. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  390. package/contracts/shared/ERC165.sol +1 -1
  391. package/contracts/{components → shared}/IComponent.sol +17 -37
  392. package/contracts/shared/IComponentService.sol +112 -0
  393. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  394. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  395. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  396. package/contracts/shared/INftOwnable.sol +2 -2
  397. package/contracts/shared/IService.sol +10 -3
  398. package/contracts/shared/InitializableCustom.sol +177 -0
  399. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  400. package/contracts/shared/KeyValueStore.sol +131 -0
  401. package/contracts/shared/Lifecycle.sol +77 -0
  402. package/contracts/shared/NftIdSet.sol +65 -0
  403. package/contracts/shared/NftOwnable.sol +3 -14
  404. package/contracts/shared/Registerable.sol +3 -3
  405. package/contracts/shared/Service.sol +32 -22
  406. package/contracts/shared/TokenHandler.sol +25 -2
  407. package/contracts/staking/IStaking.sol +167 -0
  408. package/contracts/staking/IStakingService.sol +160 -0
  409. package/contracts/staking/StakeManagerLib.sol +231 -0
  410. package/contracts/staking/Staking.sol +514 -0
  411. package/contracts/staking/StakingLifecycle.sol +23 -0
  412. package/contracts/staking/StakingManager.sol +50 -0
  413. package/contracts/staking/StakingReader.sol +183 -0
  414. package/contracts/staking/StakingService.sol +411 -0
  415. package/contracts/staking/StakingServiceManager.sol +44 -0
  416. package/contracts/staking/StakingStore.sol +605 -0
  417. package/contracts/staking/TargetManagerLib.sol +207 -0
  418. package/contracts/{types → type}/AddressSet.sol +1 -1
  419. package/contracts/{types → type}/Amount.sol +20 -1
  420. package/contracts/{types → type}/Blocknumber.sol +20 -3
  421. package/contracts/{types → type}/Fee.sol +17 -16
  422. package/contracts/{types → type}/NftId.sol +14 -16
  423. package/contracts/{types → type}/NftIdSet.sol +2 -2
  424. package/contracts/type/ObjectType.sol +271 -0
  425. package/contracts/{types → type}/Referral.sol +1 -1
  426. package/contracts/type/RequestId.sol +75 -0
  427. package/contracts/{types → type}/RiskId.sol +1 -1
  428. package/contracts/type/RoleId.sol +174 -0
  429. package/contracts/{types → type}/Seconds.sol +27 -0
  430. package/contracts/type/Selector.sol +102 -0
  431. package/contracts/{types → type}/StateId.sol +27 -2
  432. package/contracts/type/String.sol +53 -0
  433. package/contracts/{types → type}/Timestamp.sol +6 -2
  434. package/contracts/{types → type}/UFixed.sol +6 -0
  435. package/contracts/{types → type}/Version.sol +4 -2
  436. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  437. package/contracts/{shared → upgradeability}/ProxyManager.sol +36 -7
  438. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  439. package/contracts/{shared → upgradeability}/Versionable.sol +1 -1
  440. package/package.json +8 -5
  441. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  442. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  443. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  444. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  445. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  446. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  447. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  448. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  449. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  450. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  451. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  452. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  453. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  454. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  455. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  456. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  458. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  459. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  460. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  461. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  462. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  463. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  464. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  465. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  466. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  467. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  468. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  469. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1124
  470. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  471. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -688
  472. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  473. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1283
  474. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  475. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -696
  476. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  477. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -1384
  478. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  479. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -752
  480. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  481. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1847
  482. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  483. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -816
  484. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  485. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  486. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  487. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  488. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  489. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  490. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  491. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  492. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1281
  493. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  494. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -740
  495. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1622
  497. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -708
  499. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -864
  501. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  503. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  504. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  505. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  506. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  507. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  508. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  509. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +0 -4
  510. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -189
  511. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  512. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +0 -4
  513. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +0 -302
  514. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  515. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  516. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  517. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  518. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  520. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  521. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  522. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -370
  523. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  525. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -588
  527. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  529. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  531. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  533. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  534. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  535. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  536. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  537. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  538. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -281
  539. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  540. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  541. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  543. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -179
  545. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  547. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -312
  549. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  553. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  554. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  555. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  557. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  559. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -209
  561. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  563. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  565. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  567. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  569. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  573. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  574. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  575. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  577. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  579. package/contracts/components/Component.sol +0 -272
  580. package/contracts/components/IDistributionComponent.sol +0 -71
  581. package/contracts/components/IPoolComponent.sol +0 -114
  582. package/contracts/components/Pool.sol +0 -302
  583. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  584. package/contracts/instance/Cloneable.sol +0 -51
  585. package/contracts/instance/InstanceAccessManager.sol +0 -527
  586. package/contracts/instance/base/ComponentService.sol +0 -130
  587. package/contracts/instance/base/KeyValueStore.sol +0 -149
  588. package/contracts/instance/base/Lifecycle.sol +0 -120
  589. package/contracts/instance/module/ISetup.sol +0 -33
  590. package/contracts/instance/module/ITreasury.sol +0 -23
  591. package/contracts/instance/service/ApplicationService.sol +0 -356
  592. package/contracts/instance/service/BundleService.sol +0 -385
  593. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  594. package/contracts/instance/service/DistributionService.sol +0 -432
  595. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  596. package/contracts/instance/service/IProductService.sol +0 -40
  597. package/contracts/instance/service/PolicyService.sol +0 -372
  598. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  599. package/contracts/instance/service/PoolService.sol +0 -403
  600. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  601. package/contracts/instance/service/ProductService.sol +0 -210
  602. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  603. package/contracts/registry/RegistryAccessManager.sol +0 -216
  604. package/contracts/registry/ReleaseManager.sol +0 -324
  605. package/contracts/shared/ContractDeployerLib.sol +0 -72
  606. package/contracts/shared/IPolicyHolder.sol +0 -40
  607. package/contracts/shared/PolicyHolder.sol +0 -94
  608. package/contracts/test/TestFee.sol +0 -25
  609. package/contracts/test/TestRegisterable.sol +0 -18
  610. package/contracts/test/TestRoleId.sol +0 -14
  611. package/contracts/test/TestService.sol +0 -25
  612. package/contracts/test/TestToken.sol +0 -26
  613. package/contracts/test/TestVersion.sol +0 -44
  614. package/contracts/test/TestVersionable.sol +0 -17
  615. package/contracts/types/ChainId.sol +0 -38
  616. package/contracts/types/NumberId.sol +0 -52
  617. package/contracts/types/ObjectType.sol +0 -157
  618. package/contracts/types/RoleId.sol +0 -97
  619. /package/contracts/{types → type}/ClaimId.sol +0 -0
  620. /package/contracts/{types → type}/DistributorType.sol +0 -0
  621. /package/contracts/{types → type}/Key32.sol +0 -0
  622. /package/contracts/{types → type}/PayoutId.sol +0 -0
@@ -0,0 +1,352 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IRegistryService} from "../registry/IRegistryService.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {IComponents} from "../instance/module/IComponents.sol";
13
+ import {IPolicy} from "../instance/module/IPolicy.sol";
14
+
15
+ import {Amount, AmountLib} from "../type/Amount.sol";
16
+ import {NftId, NftIdLib} from "../type/NftId.sol";
17
+ import {Fee, FeeLib} from "../type/Fee.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
19
+ import {ObjectType, COMPONENT, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
21
+ import {IDistributionService} from "./IDistributionService.sol";
22
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
23
+ import {DistributorType, DistributorTypeLib} from "../type/DistributorType.sol";
24
+ import {ReferralId, ReferralLib} from "../type/Referral.sol";
25
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
26
+ import {IDistribution} from "../instance/module/IDistribution.sol";
27
+ import {InstanceStore} from "../instance/InstanceStore.sol";
28
+ import {TokenHandler} from "../shared/TokenHandler.sol";
29
+
30
+
31
+ contract DistributionService is
32
+ ComponentVerifyingService,
33
+ IDistributionService
34
+ {
35
+ using AmountLib for Amount;
36
+ using NftIdLib for NftId;
37
+ using TimestampLib for Timestamp;
38
+ using UFixedLib for UFixed;
39
+ using FeeLib for Fee;
40
+ using ReferralLib for ReferralId;
41
+
42
+ IComponentService private _componentService;
43
+ IInstanceService private _instanceService;
44
+ IRegistryService private _registryService;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ initializer
52
+ virtual override
53
+ {
54
+ address initialOwner;
55
+ address registryAddress;
56
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
58
+ // owner is DistributionServiceManager deployer
59
+ initializeService(registryAddress, address(0), owner);
60
+
61
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
62
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
63
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
64
+
65
+ registerInterface(type(IDistributionService).interfaceId);
66
+ }
67
+
68
+
69
+ function createDistributorType(
70
+ string memory name,
71
+ UFixed minDiscountPercentage,
72
+ UFixed maxDiscountPercentage,
73
+ UFixed commissionPercentage,
74
+ uint32 maxReferralCount,
75
+ uint32 maxReferralLifetime,
76
+ bool allowSelfReferrals,
77
+ bool allowRenewals,
78
+ bytes memory data
79
+ )
80
+ external
81
+ returns (DistributorType distributorType)
82
+ {
83
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
84
+ InstanceReader instanceReader = instance.getInstanceReader();
85
+
86
+ {
87
+ NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
88
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
89
+
90
+ UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
91
+ UFixed variableFeesPartsTotal = productInfo.minDistributionOwnerFee.fractionalFee + commissionPercentage;
92
+
93
+ if (variableFeesPartsTotal > variableDistributionFees) {
94
+ revert ErrorDistributionServiceVariableFeesTooHight(variableDistributionFees.toInt1000(), variableFeesPartsTotal.toInt1000());
95
+ }
96
+ UFixed maxDiscountPercentageLimit = variableDistributionFees - variableFeesPartsTotal;
97
+
98
+ if (maxDiscountPercentage.gt(maxDiscountPercentageLimit)) {
99
+ revert ErrorDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt1000(), maxDiscountPercentageLimit.toInt1000());
100
+ }
101
+ }
102
+
103
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
104
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
105
+ name,
106
+ minDiscountPercentage,
107
+ maxDiscountPercentage,
108
+ commissionPercentage,
109
+ maxReferralCount,
110
+ maxReferralLifetime,
111
+ allowSelfReferrals,
112
+ allowRenewals,
113
+ data);
114
+
115
+ instance.getInstanceStore().createDistributorType(distributorType, info);
116
+ }
117
+
118
+
119
+ function createDistributor(
120
+ address distributor,
121
+ DistributorType distributorType,
122
+ bytes memory data
123
+ )
124
+ external
125
+ virtual
126
+ returns (NftId distributorNftId)
127
+ {
128
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
129
+
130
+ distributorNftId = _registryService.registerDistributor(
131
+ IRegistry.ObjectInfo(
132
+ NftIdLib.zero(),
133
+ distributionNftId,
134
+ DISTRIBUTOR(),
135
+ true, // intercepting property for bundles is defined on pool
136
+ address(0),
137
+ distributor,
138
+ ""
139
+ ));
140
+
141
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
142
+ distributorType,
143
+ true, // active
144
+ data,
145
+ AmountLib.zero(),
146
+ 0);
147
+
148
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
149
+ }
150
+
151
+ // function updateDistributorType(
152
+ // NftId distributorNftId,
153
+ // DistributorType distributorType,
154
+ // bytes memory data
155
+ // )
156
+ // external
157
+ // virtual
158
+ // {
159
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
160
+ // InstanceReader instanceReader = instance.getInstanceReader();
161
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
162
+ // distributorInfo.distributorType = distributorType;
163
+ // distributorInfo.data = data;
164
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
165
+ // }
166
+
167
+
168
+ function createReferral(
169
+ NftId distributorNftId,
170
+ string memory code,
171
+ UFixed discountPercentage,
172
+ uint32 maxReferrals,
173
+ Timestamp expiryAt,
174
+ bytes memory data
175
+ )
176
+ external
177
+ virtual
178
+ returns (ReferralId referralId)
179
+ {
180
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
181
+
182
+ if (bytes(code).length == 0) {
183
+ revert ErrorIDistributionServiceInvalidReferral(code);
184
+ }
185
+ if (expiryAt.eqz()) {
186
+ revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
187
+ }
188
+
189
+ InstanceReader instanceReader = instance.getInstanceReader();
190
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
191
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
192
+
193
+ if (distributorTypeData.maxReferralCount < maxReferrals) {
194
+ revert ErrorIDistributionServiceMaxReferralsExceeded(distributorTypeData.maxReferralCount);
195
+ }
196
+ if (distributorTypeData.minDiscountPercentage > discountPercentage) {
197
+ revert ErrorIDistributionServiceDiscountTooLow(distributorTypeData.minDiscountPercentage.toInt(), discountPercentage.toInt());
198
+ }
199
+ if (distributorTypeData.maxDiscountPercentage < discountPercentage) {
200
+ revert ErrorIDistributionServiceDiscountTooHigh(distributorTypeData.maxDiscountPercentage.toInt(), discountPercentage.toInt());
201
+ }
202
+ if (expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() > distributorTypeData.maxReferralLifetime) {
203
+ revert ErrorIDistributionServiceExpiryTooLong(distributorTypeData.maxReferralLifetime, expiryAt.toInt());
204
+ }
205
+
206
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
207
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
208
+ distributorNftId,
209
+ code,
210
+ discountPercentage,
211
+ maxReferrals,
212
+ 0, // used referrals
213
+ expiryAt,
214
+ data
215
+ );
216
+
217
+ instance.getInstanceStore().createReferral(referralId, info);
218
+ return referralId;
219
+ }
220
+
221
+
222
+ function processSale(
223
+ NftId distributionNftId, // assume always of distribution type
224
+ ReferralId referralId,
225
+ IPolicy.Premium memory premium
226
+ )
227
+ external
228
+ virtual
229
+ restricted
230
+ {
231
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
232
+ InstanceReader reader = instance.getInstanceReader();
233
+ InstanceStore store = instance.getInstanceStore();
234
+
235
+ // get distribution owner fee amount
236
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
237
+
238
+ // update referral/distributor info if applicable
239
+ if (referralIsValid(distributionNftId, referralId)) {
240
+
241
+ // increase distribution balance by commission amount and distribution owner fee
242
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
243
+ _componentService.increaseDistributionBalance(store, distributionNftId, commissionAmount, distributionOwnerFee);
244
+
245
+ // update book keeping for referral info
246
+ IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
247
+ referralInfo.usedReferrals += 1;
248
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
249
+
250
+ // update book keeping for distributor info
251
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
252
+ // TODO refactor sum of commission amount into a fee balance for distributors
253
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
254
+ distributorInfo.numPoliciesSold += 1;
255
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
256
+ } else {
257
+ // increase distribution balance by distribution owner fee
258
+ _componentService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
259
+ }
260
+ }
261
+
262
+ /// @dev Withdraw commission for the distributor
263
+ /// @param distributorNftId the distributor Nft Id
264
+ /// @param amount the amount to withdraw. If set to UINT256_MAX, the full commission available is withdrawn
265
+ /// @return withdrawnAmount the effective withdrawn amount
266
+ function withdrawCommission(NftId distributorNftId, Amount amount)
267
+ public
268
+ virtual
269
+ // TODO: restricted() (once #462 is done)
270
+ returns (Amount withdrawnAmount)
271
+ {
272
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
273
+ InstanceReader reader = instance.getInstanceReader();
274
+
275
+ IComponents.ComponentInfo memory distributionInfo = reader.getComponentInfo(distributionNftId);
276
+ address distributionWallet = distributionInfo.wallet;
277
+
278
+ IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(distributorNftId);
279
+
280
+ if (!distributorInfo.active) {
281
+ revert ErrorDistributionServiceDistributorNotActive(distributorNftId);
282
+ }
283
+
284
+ // determine withdrawn amount
285
+ withdrawnAmount = amount;
286
+ if (withdrawnAmount.eq(AmountLib.max())) {
287
+ withdrawnAmount = distributorInfo.commissionAmount;
288
+ } else {
289
+ if (withdrawnAmount.gt(distributorInfo.commissionAmount)) {
290
+ revert ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(withdrawnAmount, distributorInfo.commissionAmount);
291
+ }
292
+ }
293
+
294
+ if (withdrawnAmount.eqz()) {
295
+ revert ErrorDistributionServiceCommissionWithdrawAmountIsZero();
296
+ }
297
+
298
+ // check allowance
299
+ IERC20Metadata token = IERC20Metadata(distributionInfo.token);
300
+ uint256 tokenAllowance = token.allowance(distributionWallet, address(distributionInfo.tokenHandler));
301
+ if (tokenAllowance < withdrawnAmount.toInt()) {
302
+ revert ErrorDistributionServiceWalletAllowanceTooSmall(distributionWallet, address(distributionInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
303
+ }
304
+
305
+ // decrease fee counters by withdrawnAmount and update distributor info
306
+ {
307
+ InstanceStore store = instance.getInstanceStore();
308
+ _componentService.decreaseDistributionBalance(store, distributionNftId, withdrawnAmount, AmountLib.zero());
309
+
310
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount - withdrawnAmount;
311
+ store.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
312
+ }
313
+
314
+ // transfer amount to distributor
315
+ {
316
+ address distributor = getRegistry().ownerOf(distributorNftId);
317
+ distributionInfo.tokenHandler.transfer(distributionWallet, distributor, withdrawnAmount);
318
+
319
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(token), withdrawnAmount);
320
+ }
321
+ }
322
+
323
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
324
+ if (distributionNftId.eqz() || referralId.eqz()) {
325
+ return false;
326
+ }
327
+
328
+ IInstance instance = _getInstanceForDistribution(distributionNftId);
329
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
330
+
331
+ if (info.distributorNftId.eqz()) {
332
+ return false;
333
+ }
334
+
335
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
336
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
337
+ }
338
+
339
+ function _getInstanceForDistribution(NftId distributionNftId)
340
+ internal
341
+ view
342
+ returns(IInstance instance)
343
+ {
344
+ NftId instanceNftId = getRegistry().getObjectInfo(distributionNftId).parentNftId;
345
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
346
+ return IInstance(instanceAddress);
347
+ }
348
+
349
+ function _getDomain() internal pure override returns(ObjectType) {
350
+ return DISTRIBUTION();
351
+ }
352
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {DistributionService} from "./DistributionService.sol";
7
+
8
+ contract DistributionServiceManager is ProxyManager {
9
+
10
+ DistributionService private _distributionService;
11
+
12
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ DistributionService distSrv = new DistributionService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(distSrv),
24
+ data,
25
+ salt);
26
+
27
+ _distributionService = DistributionService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getDistributionService()
32
+ external
33
+ view
34
+ returns (DistributionService distributionService)
35
+ {
36
+ return _distributionService;
37
+ }
38
+
39
+ }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
8
+ import {UFixed} from "../type/UFixed.sol";
9
+
10
+ interface IDistributionComponent is IInstanceLinkedComponent {
11
+
12
+ error ErrorDistributionNotDistributor(address distributor);
13
+ error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
14
+
15
+ event LogDistributorUpdated(address to, address caller);
16
+
17
+ /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
18
+ function isDistributor(address candidate) external view returns (bool);
19
+
20
+ /// @dev Returns the distributor Nft Id for the provided address
21
+ function getDistributorNftId(address distributor) external view returns (NftId distributorNftId);
22
+
23
+ function getDiscountPercentage(
24
+ string memory referralCode
25
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
26
+
27
+ function getReferralId(
28
+ string memory referralCode
29
+ ) external returns (ReferralId referralId);
30
+
31
+ function calculateRenewalFeeAmount(
32
+ ReferralId referralId,
33
+ uint256 netPremiumAmount
34
+ ) external view returns (uint256 feeAmount);
35
+
36
+ /// @dev Callback function to process a renewal of a policy.
37
+ /// The default implementation is empty.
38
+ /// Overwrite this function to implement a use case specific behaviour.
39
+ function processRenewal(
40
+ ReferralId referralId,
41
+ uint256 feeAmount
42
+ ) external;
43
+
44
+ /// @dev Returns true to ensure component is called when transferring distributor Nft Ids.
45
+ function isVerifying() external view returns (bool verifying);
46
+
47
+ /// @dev Withdraw commission for the distributor
48
+ /// @param distributorNftId the distributor Nft Id
49
+ /// @param amount the amount to withdraw. If set to UINT256_MAX, the full commission available is withdrawn
50
+ /// @return withdrawnAmount the effective withdrawn amount
51
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
52
+ }
@@ -1,18 +1,19 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../../types/Amount.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
- import {Fee} from "../../types/Fee.sol";
7
- import {IPolicy} from "../module/IPolicy.sol";
8
- import {IService} from "../../shared/IService.sol";
9
- import {UFixed} from "../../types/UFixed.sol";
10
- import {DistributorType} from "../../types/DistributorType.sol";
11
- import {ReferralId} from "../../types/Referral.sol";
12
- import {Timestamp} from "../../types/Timestamp.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {IPolicy} from "../instance/module/IPolicy.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {UFixed} from "../type/UFixed.sol";
10
+ import {DistributorType} from "../type/DistributorType.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
13
 
14
14
 
15
15
  interface IDistributionService is IService {
16
+
16
17
  error ErrorDistributionServiceCallerNotRegistered(address caller);
17
18
  error ErrorIDistributionServiceParentNftIdNotInstance(NftId nftId, NftId parentNftId);
18
19
  error ErrorIDistributionServiceCallerNotDistributor(address caller);
@@ -25,23 +26,20 @@ interface IDistributionService is IService {
25
26
  error ErrorIDistributionServiceExpirationInvalid(Timestamp expiryAt);
26
27
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
27
28
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
28
- error ErrorIDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
29
- error ErrorIDistributionServiceFeeCalculationMismatch(
30
- uint256 distributionFeeFixAmount,
31
- uint256 distributionFeeVarAmount,
32
- uint256 distributionOwnerFeeFixAmount,
33
- uint256 distributionOwnerFeeVarAmount,
34
- uint256 commissionAmount,
35
- uint256 discountAmount
36
- );
29
+
30
+ error ErrorDistributionServiceDistributorNotActive(NftId distributorNftId);
31
+ error ErrorDistributionServiceCommissionWithdrawAmountExceedsLimit(Amount amount, Amount limit);
32
+ error ErrorDistributionServiceCommissionWithdrawAmountIsZero();
33
+ error ErrorDistributionServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
34
+
35
+ error ErrorDistributionServiceVariableFeesTooHight(uint256 maxDiscountPercentage, uint256 limit);
36
+ error ErrorDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
37
+
37
38
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
38
39
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
39
40
 
40
- function setFees(
41
- Fee memory minDistributionOwnerFee,
42
- Fee memory distributionFee
43
- ) external;
44
-
41
+ event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address distributorAddress, address tokenAddress, Amount amount);
42
+
45
43
  function createDistributorType(
46
44
  string memory name,
47
45
  UFixed minDiscountPercentage,
@@ -82,20 +80,19 @@ interface IDistributionService is IService {
82
80
 
83
81
  /// @dev callback from product service when selling a policy for a specific referralId
84
82
  function processSale(
85
- NftId distributionNftId,
86
- ReferralId referralId,
87
- IPolicy.Premium memory premium,
88
- Amount transferredDistributionFeeAmount
89
- ) external;
90
-
91
- function calculateFeeAmount(
92
83
  NftId distributionNftId,
93
84
  ReferralId referralId,
94
85
  IPolicy.Premium memory premium
95
- ) external view returns (IPolicy.Premium memory finalPremium);
86
+ ) external;
96
87
 
97
88
  function referralIsValid(
98
89
  NftId distributorNftId,
99
90
  ReferralId referralId
100
91
  ) external view returns (bool isValid);
101
- }
92
+
93
+ /// @dev Withdraw commission for the distributor
94
+ /// @param distributorNftId the distributor Nft Id
95
+ /// @param amount the amount to withdraw. If set to UINT256_MAX, the full commission available is withdrawn
96
+ /// @return withdrawnAmount the effective withdrawn amount
97
+ function withdrawCommission(NftId distributorNftId, Amount amount) external returns (Amount withdrawnAmount);
98
+ }
@@ -2,34 +2,34 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IInstance} from "./IInstance.sol";
5
- import {INSTANCE} from "../types/ObjectType.sol";
5
+ import {INSTANCE} from "../type/ObjectType.sol";
6
6
  import {InstanceReader} from "./InstanceReader.sol";
7
7
  import {IPolicy} from "../instance/module/IPolicy.sol";
8
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
- import {LibNftIdSet} from "../types/NftIdSet.sol";
10
- import {NftId} from "../types/NftId.sol";
11
- import {TimestampLib} from "../types/Timestamp.sol";
9
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {TimestampLib} from "../type/Timestamp.sol";
12
12
 
13
- import {ObjectManager} from "./ObjectManager.sol";
13
+ import {ObjectSet} from "./base/ObjectSet.sol";
14
14
 
15
- contract BundleManager is
16
- ObjectManager
15
+ contract BundleSet is
16
+ ObjectSet
17
17
  {
18
18
 
19
- event LogBundleManagerPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
- event LogBundleManagerPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
19
+ event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
20
+ event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
21
21
 
22
- event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
23
- event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
- event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
25
- event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
22
+ event LogBundleSetBundleAdded(NftId poolNftId, NftId bundleNftId);
23
+ event LogBundleSetBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
+ event LogBundleSetBundleLocked(NftId poolNftId, NftId bundleNftId);
25
+ event LogBundleSetBundleClosed(NftId poolNftId, NftId bundleNftId);
26
26
 
27
- error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
28
- error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
29
- error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
30
- error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
31
- error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
32
- error ErrorBundleManagerBundleNotRegistered(NftId bundleNftId);
27
+ error ErrorBundleSetPolicyAlreadyActivated(NftId policyNftId);
28
+ error ErrorBundleSetBundleLocked(NftId bundleNftId, NftId policyNftId);
29
+ error ErrorBundleSetPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
30
+ error ErrorBundleSetPolicyNotCloseable(NftId policyNftId);
31
+ error ErrorBundleSetBundleUnknown(NftId bundleNftId);
32
+ error ErrorBundleSetBundleNotRegistered(NftId bundleNftId);
33
33
 
34
34
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
35
35
 
@@ -42,11 +42,11 @@ contract BundleManager is
42
42
 
43
43
  // ensure bundle is unlocked (in active set) and registered with this instance
44
44
  if (!_isActive(poolNftId, bundleNftId)) {
45
- revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
45
+ revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
46
46
  }
47
47
 
48
48
  LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
49
- emit LogBundleManagerPolicyLinked(bundleNftId, policyNftId);
49
+ emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
50
50
  }
51
51
 
52
52
 
@@ -63,11 +63,11 @@ contract BundleManager is
63
63
 
64
64
  // ensure bundle is registered with this instance
65
65
  if (!_contains(poolNftId, bundleNftId)) {
66
- revert ErrorBundleManagerBundleUnknown(bundleNftId);
66
+ revert ErrorBundleSetBundleUnknown(bundleNftId);
67
67
  }
68
68
 
69
69
  LibNftIdSet.remove(_activePolicies[bundleNftId], policyNftId);
70
- emit LogBundleManagerPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
70
+ emit LogBundleSetPolicyUnlinked(policyInfo.bundleNftId, policyNftId);
71
71
  }
72
72
 
73
73
 
@@ -78,11 +78,11 @@ contract BundleManager is
78
78
 
79
79
  // ensure pool is registered with instance
80
80
  if(poolNftId.eqz()) {
81
- revert ErrorBundleManagerBundleNotRegistered(bundleNftId);
81
+ revert ErrorBundleSetBundleNotRegistered(bundleNftId);
82
82
  }
83
83
 
84
84
  _add(poolNftId, bundleNftId);
85
- emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
85
+ emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
86
86
  }
87
87
 
88
88
 
@@ -90,14 +90,14 @@ contract BundleManager is
90
90
  function unlock(NftId bundleNftId) external restricted() {
91
91
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
92
92
  _activate(poolNftId, bundleNftId);
93
- emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
93
+ emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
94
94
  }
95
95
 
96
96
  /// @dev locked (deactivated) bundles may not collateralize any new policies
97
97
  function lock(NftId bundleNftId) external restricted() {
98
98
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
99
99
  _deactivate(poolNftId, bundleNftId);
100
- emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
100
+ emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
101
101
  }
102
102
 
103
103
  function bundles(NftId poolNftId) external view returns(uint256) {