@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-ce8fb44-591

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