@etherisc/gif-next 0.0.2-8e4a894-109 → 0.0.2-8e5f0ee-617

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 (464) hide show
  1. package/README.md +21 -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 +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 +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -339
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +158 -320
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +127 -81
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +151 -251
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +67 -64
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -108
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +71 -72
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +188 -47
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +87 -120
  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 +500 -334
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +277 -96
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1125 -371
  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 +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  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 +1 -1
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -78
  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 +1155 -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/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  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 +1063 -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/pool/BasicPool.sol/BasicPool.json +1477 -0
  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 +1 -1
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +95 -249
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +115 -57
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -51
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +149 -285
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +136 -135
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +197 -335
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +186 -355
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +102 -68
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +97 -152
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +116 -34
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -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 +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +135 -196
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +130 -56
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +30 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +94 -25
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +40 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +253 -148
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +184 -282
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +113 -87
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +167 -159
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +141 -43
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +296 -237
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -203
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +94 -32
  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 +135 -29
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +317 -52
  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 +367 -39
  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 +370 -68
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
  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/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  167. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +692 -92
  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 +314 -138
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +105 -82
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +901 -45
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  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 +1 -1
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -81
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +12 -16
  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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  201. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
  210. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
  216. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +64 -16
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +40 -4
  226. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  227. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  228. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +34 -34
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +76 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  301. package/contracts/authorization/AccessAdmin.sol +591 -0
  302. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  303. package/contracts/authorization/Authorization.sol +218 -0
  304. package/contracts/authorization/IAccess.sol +48 -0
  305. package/contracts/authorization/IAccessAdmin.sol +136 -0
  306. package/contracts/authorization/IAuthorization.sol +54 -0
  307. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  308. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  309. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  310. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  311. package/contracts/distribution/BasicDistribution.sol +149 -0
  312. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  313. package/contracts/distribution/Distribution.sol +144 -146
  314. package/contracts/distribution/DistributionService.sol +64 -110
  315. package/contracts/distribution/DistributionServiceManager.sol +9 -18
  316. package/contracts/distribution/IDistributionComponent.sol +20 -43
  317. package/contracts/distribution/IDistributionService.sol +7 -9
  318. package/contracts/instance/IInstance.sol +21 -12
  319. package/contracts/instance/IInstanceService.sol +41 -22
  320. package/contracts/instance/Instance.sol +111 -86
  321. package/contracts/instance/InstanceAdmin.sol +266 -0
  322. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  323. package/contracts/instance/InstanceReader.sol +84 -47
  324. package/contracts/instance/InstanceService.sol +259 -124
  325. package/contracts/instance/InstanceServiceManager.sol +10 -20
  326. package/contracts/instance/InstanceStore.sol +131 -66
  327. package/contracts/instance/base/BalanceStore.sol +123 -0
  328. package/contracts/instance/base/Cloneable.sol +2 -25
  329. package/contracts/instance/base/ObjectCounter.sol +21 -0
  330. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  331. package/contracts/instance/base/ObjectManager.sol +7 -10
  332. package/contracts/instance/module/IAccess.sol +2 -10
  333. package/contracts/instance/module/IBundle.sol +1 -4
  334. package/contracts/instance/module/IComponents.sol +15 -4
  335. package/contracts/instance/module/IPolicy.sol +12 -5
  336. package/contracts/mock/Dip.sol +26 -0
  337. package/contracts/oracle/BasicOracle.sol +48 -0
  338. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  339. package/contracts/oracle/IOracle.sol +36 -0
  340. package/contracts/oracle/IOracleComponent.sol +32 -0
  341. package/contracts/oracle/IOracleService.sol +65 -0
  342. package/contracts/oracle/Oracle.sol +157 -0
  343. package/contracts/oracle/OracleService.sol +278 -0
  344. package/contracts/oracle/OracleServiceManager.sol +42 -0
  345. package/contracts/pool/BasicPool.sol +164 -0
  346. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  347. package/contracts/pool/BundleService.sol +76 -162
  348. package/contracts/pool/BundleServiceManager.sol +9 -18
  349. package/contracts/pool/IBundleService.sol +4 -16
  350. package/contracts/pool/IPoolComponent.sol +4 -66
  351. package/contracts/pool/IPoolService.sol +45 -9
  352. package/contracts/pool/Pool.sol +150 -141
  353. package/contracts/pool/PoolService.sol +198 -149
  354. package/contracts/pool/PoolServiceManager.sol +9 -18
  355. package/contracts/product/ApplicationService.sol +114 -46
  356. package/contracts/product/ApplicationServiceManager.sol +9 -6
  357. package/contracts/product/BasicProduct.sol +82 -0
  358. package/contracts/product/BasicProductAuthorization.sol +40 -0
  359. package/contracts/product/ClaimService.sol +33 -28
  360. package/contracts/product/ClaimServiceManager.sol +9 -6
  361. package/contracts/product/IApplicationService.sol +1 -1
  362. package/contracts/product/IClaimService.sol +12 -3
  363. package/contracts/product/IPolicyService.sol +6 -8
  364. package/contracts/product/IPricingService.sol +3 -1
  365. package/contracts/product/IProductComponent.sol +9 -11
  366. package/contracts/product/IProductService.sol +1 -8
  367. package/contracts/product/PolicyService.sol +231 -132
  368. package/contracts/product/PolicyServiceManager.sol +9 -21
  369. package/contracts/product/PricingService.sol +78 -53
  370. package/contracts/product/PricingServiceManager.sol +9 -18
  371. package/contracts/product/Product.sol +126 -109
  372. package/contracts/product/ProductService.sol +32 -118
  373. package/contracts/product/ProductServiceManager.sol +9 -21
  374. package/contracts/registry/ChainNft.sol +8 -1
  375. package/contracts/registry/IRegistry.sol +37 -17
  376. package/contracts/registry/IRegistryService.sol +33 -30
  377. package/contracts/registry/Registry.sol +193 -82
  378. package/contracts/registry/RegistryAdmin.sol +365 -0
  379. package/contracts/registry/RegistryService.sol +63 -82
  380. package/contracts/registry/RegistryServiceManager.sol +21 -28
  381. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  382. package/contracts/registry/ReleaseManager.sol +354 -191
  383. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  384. package/contracts/registry/TokenRegistry.sol +261 -62
  385. package/contracts/shared/Component.sol +139 -129
  386. package/contracts/shared/ComponentService.sol +524 -93
  387. package/contracts/shared/ComponentServiceManager.sol +35 -0
  388. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  389. package/contracts/shared/ERC165.sol +1 -1
  390. package/contracts/shared/IComponent.sol +17 -37
  391. package/contracts/shared/IComponentService.sol +102 -0
  392. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  393. package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
  394. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  395. package/contracts/shared/INftOwnable.sol +1 -1
  396. package/contracts/shared/IPolicyHolder.sol +6 -1
  397. package/contracts/shared/IService.sol +8 -1
  398. package/contracts/shared/InitializableCustom.sol +177 -0
  399. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  400. package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -73
  401. package/contracts/shared/Lifecycle.sol +77 -0
  402. package/contracts/shared/NftIdSetManager.sol +65 -0
  403. package/contracts/shared/NftOwnable.sol +2 -13
  404. package/contracts/shared/PolicyHolder.sol +21 -13
  405. package/contracts/shared/ProxyManager.sol +31 -1
  406. package/contracts/shared/Registerable.sol +2 -2
  407. package/contracts/shared/Service.sol +32 -21
  408. package/contracts/shared/TokenHandler.sol +24 -1
  409. package/contracts/staking/IStaking.sol +168 -0
  410. package/contracts/staking/IStakingService.sol +98 -47
  411. package/contracts/staking/StakeManagerLib.sol +231 -0
  412. package/contracts/staking/Staking.sol +513 -0
  413. package/contracts/staking/StakingLifecycle.sol +23 -0
  414. package/contracts/staking/StakingManager.sol +54 -0
  415. package/contracts/staking/StakingReader.sol +187 -0
  416. package/contracts/staking/StakingService.sol +290 -45
  417. package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +11 -4
  418. package/contracts/staking/StakingStore.sol +615 -0
  419. package/contracts/staking/TargetManagerLib.sol +207 -0
  420. package/contracts/type/AddressSet.sol +1 -1
  421. package/contracts/type/Amount.sol +20 -1
  422. package/contracts/type/Blocknumber.sol +20 -3
  423. package/contracts/type/Fee.sol +17 -16
  424. package/contracts/type/NftId.sol +14 -16
  425. package/contracts/type/NftIdSet.sol +1 -1
  426. package/contracts/type/ObjectType.sol +176 -63
  427. package/contracts/type/Referral.sol +1 -1
  428. package/contracts/type/RequestId.sol +75 -0
  429. package/contracts/type/RiskId.sol +1 -1
  430. package/contracts/type/RoleId.sol +117 -40
  431. package/contracts/type/Seconds.sol +27 -0
  432. package/contracts/type/Selector.sol +102 -0
  433. package/contracts/type/StateId.sol +27 -2
  434. package/contracts/type/String.sol +53 -0
  435. package/contracts/type/Timestamp.sol +6 -2
  436. package/contracts/type/UFixed.sol +6 -0
  437. package/contracts/type/Version.sol +1 -1
  438. package/package.json +8 -5
  439. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  440. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  441. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  442. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  443. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  444. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  445. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  447. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  448. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  449. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  450. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  451. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  452. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  453. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  454. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  455. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  456. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
  457. package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
  458. package/contracts/instance/InstanceAccessManager.sol +0 -541
  459. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  460. package/contracts/instance/base/Lifecycle.sol +0 -120
  461. package/contracts/instance/module/ISetup.sol +0 -33
  462. package/contracts/instance/module/ITreasury.sol +0 -23
  463. package/contracts/registry/RegistryAccessManager.sol +0 -216
  464. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -1,6 +1,7 @@
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, AmountLib} from "../type/Amount.sol";
4
5
  import {Seconds} from "../type/Seconds.sol";
5
6
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
6
7
  import {ObjectType} from "../type/ObjectType.sol";
@@ -9,7 +10,6 @@ import {Fee} from "../type/Fee.sol";
9
10
  import {ReferralId} from "../type/Referral.sol";
10
11
  import {RiskId} from "../type/RiskId.sol";
11
12
  import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
12
- import {Amount} from "../type/Amount.sol";
13
13
  import {IRegistry} from "../registry/IRegistry.sol";
14
14
 
15
15
  import {IProductComponent} from "./IProductComponent.sol";
@@ -19,17 +19,16 @@ import {InstanceReader} from "../instance/InstanceReader.sol";
19
19
  import {IComponents} from "../instance/module/IComponents.sol";
20
20
  import {IPolicy} from "../instance/module/IPolicy.sol";
21
21
  import {IBundle} from "../instance/module/IBundle.sol";
22
- import {ISetup} from "../instance/module/ISetup.sol";
23
22
  import {IDistribution} from "../instance/module/IDistribution.sol";
24
23
 
25
- import {ComponentService} from "../shared/ComponentService.sol";
24
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
26
25
 
27
26
  import {IPricingService} from "./IPricingService.sol";
28
27
  import {IDistributionService} from "../distribution/IDistributionService.sol";
29
28
 
30
29
 
31
30
  contract PricingService is
32
- ComponentService,
31
+ ComponentVerifyingService,
33
32
  IPricingService
34
33
  {
35
34
  using UFixedLib for UFixed;
@@ -45,22 +44,18 @@ contract PricingService is
45
44
  virtual override
46
45
  initializer()
47
46
  {
48
- // TODO check this, might no longer be the way, refactor if necessary
49
- address registryAddress;
50
- address initialOwner;
51
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
47
+ (
48
+ address registryAddress,,
49
+ //address managerAddress
50
+ address authority
51
+ ) = abi.decode(data, (address, address, address));
52
52
 
53
- initializeService(registryAddress, address(0), owner);
53
+ initializeService(registryAddress, authority, owner);
54
54
  registerInterface(type(IPricingService).interfaceId);
55
55
 
56
56
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
57
57
  }
58
58
 
59
-
60
- function getDomain() public pure override returns(ObjectType) {
61
- return PRICE();
62
- }
63
-
64
59
  /// @dev calculates the premium amount for the specified attributes
65
60
  /// also returns the various fee components involved with creating a policy
66
61
  function calculatePremium(
@@ -85,14 +80,14 @@ contract PricingService is
85
80
  {
86
81
  // verify product
87
82
  (
88
- IRegistry.ObjectInfo memory productInfo,
83
+ IRegistry.ObjectInfo memory registryInfo,
89
84
  IInstance instance
90
- ) = _getAndVerifyComponentInfoAndInstance(productNftId, PRODUCT());
85
+ ) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
91
86
 
92
87
  reader = instance.getInstanceReader();
93
88
 
94
89
  // calculate net premium
95
- netPremiumAmount = IProductComponent(productInfo.objectAddress).calculateNetPremium(
90
+ netPremiumAmount = IProductComponent(registryInfo.objectAddress).calculateNetPremium(
96
91
  sumInsuredAmount,
97
92
  riskId,
98
93
  lifetime,
@@ -102,46 +97,45 @@ contract PricingService is
102
97
 
103
98
  {
104
99
  // get configurations for all involed objects
105
- ISetup.ProductSetupInfo memory productSetup = reader.getProductSetupInfo(productNftId);
106
-
107
- bytes memory componentData = reader.getComponentInfo(productSetup.poolNftId).data;
108
- IComponents.PoolInfo memory poolInfo = abi.decode(componentData, (IComponents.PoolInfo));
100
+ IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
109
101
 
110
102
  IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
111
- if(bundleInfo.poolNftId != productSetup.poolNftId) {
112
- revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productSetup.poolNftId);
103
+ if(bundleInfo.poolNftId != productInfo.poolNftId) {
104
+ revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
113
105
  }
114
106
 
115
- NftId distributionNftId = productSetup.distributionNftId;
116
- ISetup.DistributionSetupInfo memory distSetup = reader.getDistributionSetupInfo(distributionNftId);
117
-
118
107
  // calculate premium, order is important
119
108
  premium = _getFixedFeeAmounts(
120
109
  netPremiumAmount,
121
- productSetup,
122
- poolInfo,
123
- distSetup,
110
+ productInfo,
124
111
  bundleInfo
125
112
  );
126
113
 
127
114
  premium = _calculateVariableFeeAmounts(
128
115
  premium,
129
- productSetup,
130
- poolInfo,
131
- distSetup,
116
+ productInfo,
132
117
  bundleInfo
133
118
  );
134
119
 
135
120
  premium = _calculateDistributionOwnerFeeAmount(
136
121
  premium,
137
- distSetup,
122
+ productInfo,
138
123
  referralId,
139
- distributionNftId,
140
124
  reader
141
125
  );
142
126
 
127
+ premium = _calculateTargetWalletAmounts(premium);
128
+
143
129
  // sanity check to validate the fee calculation
144
- if (premium.distributionOwnerFeeFixAmount < distSetup.minDistributionOwnerFee.fixedFee) {
130
+ if(AmountLib.toAmount(premium.premiumAmount) !=
131
+ premium.productFeeAmount
132
+ + premium.distributionFeeAndCommissionAmount
133
+ + premium.poolPremiumAndFeeAmount)
134
+ {
135
+ revert ErrorPricingServiceTargetWalletAmountsMismatch();
136
+ }
137
+
138
+ if (premium.distributionOwnerFeeFixAmount < productInfo.minDistributionOwnerFee.fixedFee) {
145
139
  revert ErrorIPricingServiceFeeCalculationMismatch(
146
140
  premium.distributionFeeFixAmount,
147
141
  premium.distributionFeeVarAmount,
@@ -168,13 +162,11 @@ contract PricingService is
168
162
  // internal functions
169
163
  function _getFixedFeeAmounts(
170
164
  Amount netPremiumAmount,
171
- ISetup.ProductSetupInfo memory productInfo,
172
- IComponents.PoolInfo memory poolInfo,
173
- ISetup.DistributionSetupInfo memory distInfo,
165
+ IComponents.ProductInfo memory productInfo,
174
166
  IBundle.BundleInfo memory bundleInfo
175
167
  )
176
168
  internal
177
- view
169
+ pure
178
170
  returns (
179
171
  IPolicy.Premium memory premium
180
172
  )
@@ -187,7 +179,7 @@ contract PricingService is
187
179
  premium.productFeeFixAmount = t;
188
180
  premium.fullPremiumAmount += t;
189
181
 
190
- t = poolInfo.poolFee.fixedFee;
182
+ t = productInfo.poolFee.fixedFee;
191
183
  premium.poolFeeFixAmount = t;
192
184
  premium.fullPremiumAmount += t;
193
185
 
@@ -195,20 +187,18 @@ contract PricingService is
195
187
  premium.bundleFeeFixAmount = t;
196
188
  premium.fullPremiumAmount += t;
197
189
 
198
- t = distInfo.distributionFee.fixedFee;
190
+ t = productInfo.distributionFee.fixedFee;
199
191
  premium.distributionFeeFixAmount = t;
200
192
  premium.fullPremiumAmount += t;
201
193
  }
202
194
 
203
195
  function _calculateVariableFeeAmounts(
204
196
  IPolicy.Premium memory premium,
205
- ISetup.ProductSetupInfo memory productInfo,
206
- IComponents.PoolInfo memory poolInfo,
207
- ISetup.DistributionSetupInfo memory distInfo,
197
+ IComponents.ProductInfo memory productInfo,
208
198
  IBundle.BundleInfo memory bundleInfo
209
199
  )
210
200
  internal
211
- view
201
+ pure
212
202
  returns (
213
203
  IPolicy.Premium memory intermadiatePremium
214
204
  )
@@ -219,7 +209,7 @@ contract PricingService is
219
209
  premium.productFeeVarAmount = t;
220
210
  premium.fullPremiumAmount += t;
221
211
 
222
- t = (netPremiumAmount * poolInfo.poolFee.fractionalFee).toInt();
212
+ t = (netPremiumAmount * productInfo.poolFee.fractionalFee).toInt();
223
213
  premium.poolFeeVarAmount = t;
224
214
  premium.fullPremiumAmount += t;
225
215
 
@@ -227,7 +217,7 @@ contract PricingService is
227
217
  premium.bundleFeeVarAmount = t;
228
218
  premium.fullPremiumAmount += t;
229
219
 
230
- t = (netPremiumAmount * distInfo.distributionFee.fractionalFee).toInt();
220
+ t = (netPremiumAmount * productInfo.distributionFee.fractionalFee).toInt();
231
221
  premium.distributionFeeVarAmount = t;
232
222
  premium.fullPremiumAmount += t;
233
223
 
@@ -236,24 +226,25 @@ contract PricingService is
236
226
 
237
227
  function _calculateDistributionOwnerFeeAmount(
238
228
  IPolicy.Premium memory premium,
239
- ISetup.DistributionSetupInfo memory distInfo,
229
+ IComponents.ProductInfo memory productInfo,
230
+ // ISetup.DistributionSetupInfo memory distInfo,
240
231
  ReferralId referralId,
241
- NftId distributionNftId,
242
232
  InstanceReader reader
243
233
  )
244
234
  internal
245
235
  view
246
236
  returns (IPolicy.Premium memory finalPremium)
247
237
  {
238
+
248
239
  // if the referral is not valid, then the distribution owner gets everything
249
- if (! _distributionService.referralIsValid(distributionNftId, referralId)) {
240
+ if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
250
241
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
251
242
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
252
243
  premium.premiumAmount = premium.fullPremiumAmount;
253
244
  return premium;
254
245
  }
255
246
 
256
- Fee memory minDistributionOwnerFee = distInfo.minDistributionOwnerFee;
247
+ Fee memory minDistributionOwnerFee = productInfo.minDistributionOwnerFee;
257
248
 
258
249
  // if the referral is valid, the the commission and discount are calculated based in the full premium
259
250
  // the remaing amount goes to the distribution owner
@@ -265,11 +256,45 @@ contract PricingService is
265
256
  uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
266
257
  premium.commissionAmount = commissionAmount;
267
258
  premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
268
- premium.distributionOwnerFeeFixAmount = distInfo.minDistributionOwnerFee.fixedFee;
259
+ premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
269
260
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
270
261
  premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
271
262
  }
272
263
 
273
264
  return premium;
274
265
  }
266
+
267
+
268
+ function _calculateTargetWalletAmounts(
269
+ IPolicy.Premium memory premium
270
+ )
271
+ internal
272
+ virtual
273
+ view
274
+ returns (
275
+ IPolicy.Premium memory premiumWithTargetWalletAmounts
276
+ )
277
+ {
278
+ // fees for product owner
279
+ premium.productFeeAmount = AmountLib.toAmount(
280
+ premium.productFeeFixAmount + premium.productFeeVarAmount);
281
+
282
+ // fees for distribution owner + distributor commission
283
+ premium.distributionFeeAndCommissionAmount = AmountLib.toAmount(
284
+ premium.distributionFeeFixAmount + premium.distributionOwnerFeeVarAmount
285
+ + premium.commissionAmount);
286
+
287
+ // net premium + fees for pool owner + bundle owner
288
+ premium.poolPremiumAndFeeAmount = AmountLib.toAmount(
289
+ premium.netPremiumAmount
290
+ + premium.poolFeeFixAmount + premium.poolFeeVarAmount
291
+ + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
292
+
293
+ premiumWithTargetWalletAmounts = premium;
294
+ }
295
+
296
+
297
+ function _getDomain() internal pure override returns(ObjectType) {
298
+ return PRICE();
299
+ }
275
300
  }
@@ -12,31 +12,22 @@ contract PricingServiceManager is ProxyManager {
12
12
 
13
13
  PricingService private _pricingService;
14
14
 
15
- /// @dev initializes proxy manager with distribution service implementation and deploys instance
15
+ /// @dev initializes proxy manager with pricing service implementation and deploys instance
16
16
  constructor(
17
- address registryAddress
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
18
20
  )
19
21
  ProxyManager(registryAddress)
20
22
  {
21
- PricingService pricingSrv = new PricingService();
22
- bytes memory data = abi.encode(registryAddress, address(this));
23
- IVersionable versionable = deploy(
23
+ PricingService pricingSrv = new PricingService{salt: salt}();
24
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
25
+ IVersionable versionable = deployDetermenistic(
24
26
  address(pricingSrv),
25
- data);
27
+ data,
28
+ salt);
26
29
 
27
30
  _pricingService = PricingService(address(versionable));
28
-
29
- // TODO `thi` must have a role or own nft to register service
30
- //Registry registry = Registry(registryAddress);
31
- //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
32
- //RegistryService registryService = RegistryService(registryServiceAddress);
33
- //registryService.registerService(_distributionService);
34
-
35
- // TODO no nft to link yet
36
- // link ownership of instance service manager ot nft owner of instance service
37
- //_linkToNftOwnable(
38
- // address(registryAddress),
39
- // address(_distributionService));
40
31
  }
41
32
 
42
33
  //--- view functions ----------------------------------------------------//
@@ -1,14 +1,16 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {Amount, AmountLib} from "../type/Amount.sol";
7
7
  import {ClaimId} from "../type/ClaimId.sol";
8
- import {Component} from "../shared/Component.sol";
9
- import {Fee} from "../type/Fee.sol";
8
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
+ import {Fee, FeeLib} from "../type/Fee.sol";
10
10
  import {IRisk} from "../instance/module/IRisk.sol";
11
11
  import {IApplicationService} from "./IApplicationService.sol";
12
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
12
14
  import {IPolicyService} from "./IPolicyService.sol";
13
15
  import {IProductService} from "./IProductService.sol";
14
16
  import {IClaimService} from "./IClaimService.sol";
@@ -16,7 +18,7 @@ import {IPricingService} from "./IPricingService.sol";
16
18
  import {IProductComponent} from "./IProductComponent.sol";
17
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
18
20
  import {PayoutId} from "../type/PayoutId.sol";
19
- import {PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
21
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
20
22
  import {ReferralId} from "../type/Referral.sol";
21
23
  import {RiskId, RiskIdLib} from "../type/RiskId.sol";
22
24
  import {Seconds} from "../type/Seconds.sol";
@@ -27,13 +29,12 @@ import {TokenHandler} from "../shared/TokenHandler.sol";
27
29
 
28
30
  import {InstanceReader} from "../instance/InstanceReader.sol";
29
31
  import {IPolicy} from "../instance/module/IPolicy.sol";
30
- import {ISetup} from "../instance/module/ISetup.sol";
31
32
  import {IComponents} from "../instance/module/IComponents.sol";
32
33
  import {Pool} from "../pool/Pool.sol";
33
34
  import {Distribution} from "../distribution/Distribution.sol";
34
35
 
35
36
  abstract contract Product is
36
- Component,
37
+ InstanceLinkedComponent,
37
38
  IProductComponent
38
39
  {
39
40
  // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
@@ -45,33 +46,123 @@ abstract contract Product is
45
46
  IPolicyService _policyService;
46
47
  IClaimService _claimService;
47
48
  IPricingService _pricingService;
48
- Pool _pool;
49
- Distribution _distribution;
50
- Fee _initialProductFee;
51
- Fee _initialProcessingFee;
52
- TokenHandler _tokenHandler;
49
+ IComponentService _componentService;
53
50
  NftId _poolNftId;
54
51
  NftId _distributionNftId;
52
+ Pool _pool;
53
+ Distribution _distribution;
55
54
  }
56
55
 
57
- function initializeProduct(
56
+
57
+ function calculatePremium(
58
+ Amount sumInsuredAmount,
59
+ RiskId riskId,
60
+ Seconds lifetime,
61
+ bytes memory applicationData,
62
+ NftId bundleNftId,
63
+ ReferralId referralId
64
+ )
65
+ external
66
+ view
67
+ override
68
+ returns (Amount premiumAmount)
69
+ {
70
+ IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
71
+ getNftId(),
72
+ riskId,
73
+ sumInsuredAmount,
74
+ lifetime,
75
+ applicationData,
76
+ bundleNftId,
77
+ referralId
78
+ );
79
+
80
+ return AmountLib.toAmount(premium.premiumAmount);
81
+ }
82
+
83
+ function calculateNetPremium(
84
+ Amount sumInsuredAmount,
85
+ RiskId riskId,
86
+ Seconds lifetime,
87
+ bytes memory applicationData
88
+ )
89
+ external
90
+ view
91
+ virtual override
92
+ returns (Amount netPremiumAmount)
93
+ {
94
+ // default 10% of sum insured
95
+ return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
96
+ }
97
+
98
+
99
+ function register()
100
+ external
101
+ virtual
102
+ onlyOwner()
103
+ {
104
+ _getProductStorage()._componentService.registerProduct();
105
+ }
106
+
107
+
108
+ function getInitialProductInfo()
109
+ public
110
+ virtual
111
+ view
112
+ returns (IComponents.ProductInfo memory poolInfo)
113
+ {
114
+ ProductStorage storage $ = _getProductStorage();
115
+
116
+ return IComponents.ProductInfo({
117
+ distributionNftId: $._distributionNftId,
118
+ poolNftId: $._poolNftId,
119
+ productFee: FeeLib.zero(),
120
+ processingFee: FeeLib.zero(),
121
+ distributionFee: FeeLib.zero(),
122
+ minDistributionOwnerFee: FeeLib.zero(),
123
+ poolFee: FeeLib.zero(),
124
+ stakingFee: FeeLib.zero(),
125
+ performanceFee: FeeLib.zero()
126
+ });
127
+ }
128
+
129
+ function getPoolNftId() external view override returns (NftId poolNftId) {
130
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
131
+ }
132
+
133
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
134
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
135
+ }
136
+
137
+
138
+ function _initializeProduct(
58
139
  address registry,
59
140
  NftId instanceNftId,
141
+ IAuthorization authorization,
142
+ address initialOwner,
60
143
  string memory name,
61
144
  address token,
62
145
  bool isInterceptor,
63
146
  address pool,
64
147
  address distribution,
65
- Fee memory productFee,
66
- Fee memory processingFee,
67
- address initialOwner,
68
- bytes memory registryData // writeonly data that will saved in the object info record of the registry
148
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
149
+ bytes memory componentData // writeonly data that will saved in the object info record of the registry
69
150
  )
70
- public
151
+ internal
71
152
  virtual
72
153
  onlyInitializing()
73
154
  {
74
- initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
155
+ _initializeInstanceLinkedComponent(
156
+ registry,
157
+ instanceNftId,
158
+ name,
159
+ token,
160
+ PRODUCT(),
161
+ authorization,
162
+ isInterceptor,
163
+ initialOwner,
164
+ registryData,
165
+ componentData);
75
166
 
76
167
  ProductStorage storage $ = _getProductStorage();
77
168
  // TODO add validation
@@ -81,30 +172,27 @@ abstract contract Product is
81
172
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
82
173
  $._claimService = IClaimService(_getServiceAddress(CLAIM()));
83
174
  $._pricingService = IPricingService(_getServiceAddress(PRICE()));
175
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
84
176
  $._pool = Pool(pool);
85
177
  $._distribution = Distribution(distribution);
86
- $._initialProductFee = productFee;
87
- $._initialProcessingFee = processingFee;
88
- $._tokenHandler = new TokenHandler(token);
89
178
  $._poolNftId = getRegistry().getNftId(pool);
90
179
  $._distributionNftId = getRegistry().getNftId(distribution);
91
180
 
92
181
  registerInterface(type(IProductComponent).interfaceId);
93
182
  }
94
183
 
95
- // from product component
96
- function setFees(
184
+
185
+ function _setFees(
97
186
  Fee memory productFee,
98
187
  Fee memory processingFee
99
188
  )
100
- external
101
- onlyOwner
102
- restricted()
103
- override
189
+ internal
190
+ virtual
104
191
  {
105
- _getProductService().setFees(productFee, processingFee);
192
+ _getProductStorage()._componentService.setProductFees(productFee, processingFee);
106
193
  }
107
194
 
195
+
108
196
  function _createRisk(
109
197
  RiskId id,
110
198
  bytes memory data
@@ -135,10 +223,12 @@ abstract contract Product is
135
223
  );
136
224
  }
137
225
 
226
+
138
227
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
139
228
  return getInstance().getInstanceReader().getRiskInfo(id);
140
229
  }
141
230
 
231
+
142
232
  function _createApplication(
143
233
  address applicationOwner,
144
234
  RiskId riskId,
@@ -223,25 +313,29 @@ abstract contract Product is
223
313
  function _confirmClaim(
224
314
  NftId policyNftId,
225
315
  ClaimId claimId,
226
- Amount confirmedAmount
316
+ Amount confirmedAmount,
317
+ bytes memory data
227
318
  )
228
319
  internal
229
320
  {
230
321
  _getProductStorage()._claimService.confirm(
231
322
  policyNftId,
232
323
  claimId,
233
- confirmedAmount);
324
+ confirmedAmount,
325
+ data);
234
326
  }
235
327
 
236
328
  function _declineClaim(
237
329
  NftId policyNftId,
238
- ClaimId claimId
330
+ ClaimId claimId,
331
+ bytes memory data
239
332
  )
240
333
  internal
241
334
  {
242
335
  _getProductStorage()._claimService.decline(
243
336
  policyNftId,
244
- claimId);
337
+ claimId,
338
+ data);
245
339
  }
246
340
 
247
341
  function _closeClaim(
@@ -282,87 +376,10 @@ abstract contract Product is
282
376
  payoutId);
283
377
  }
284
378
 
285
- function calculatePremium(
286
- Amount sumInsuredAmount,
287
- RiskId riskId,
288
- Seconds lifetime,
289
- bytes memory applicationData,
290
- NftId bundleNftId,
291
- ReferralId referralId
292
- )
293
- external
294
- view
295
- override
296
- returns (Amount premiumAmount)
297
- {
298
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
299
- getNftId(),
300
- riskId,
301
- sumInsuredAmount,
302
- lifetime,
303
- applicationData,
304
- bundleNftId,
305
- referralId
306
- );
307
-
308
- return AmountLib.toAmount(premium.premiumAmount);
309
- }
310
-
311
- function calculateNetPremium(
312
- Amount sumInsuredAmount,
313
- RiskId riskId,
314
- Seconds lifetime,
315
- bytes memory applicationData
316
- )
317
- external
318
- view
319
- virtual override
320
- returns (Amount netPremiumAmount)
321
- {
322
- // default 10% of sum insured
323
- return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
324
- }
325
-
326
379
  function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
327
380
  return RiskIdLib.toRiskId(riskName);
328
381
  }
329
382
 
330
- function getPoolNftId() external view override returns (NftId poolNftId) {
331
- return getRegistry().getNftId(address(_getProductStorage()._pool));
332
- }
333
-
334
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
335
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
336
- }
337
-
338
- function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
339
- InstanceReader reader = getInstance().getInstanceReader();
340
- setupInfo = reader.getProductSetupInfo(getNftId());
341
-
342
- // fallback to initial setup info (wallet is always != address(0))
343
- if(setupInfo.wallet == address(0)) {
344
- setupInfo = _getInitialSetupInfo();
345
- }
346
- }
347
-
348
- function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
349
- ProductStorage storage $ = _getProductStorage();
350
-
351
- ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
352
- IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
353
-
354
- return ISetup.ProductSetupInfo(
355
- getToken(),
356
- $._tokenHandler,
357
- $._distributionNftId,
358
- $._poolNftId,
359
- $._initialProductFee,
360
- $._initialProcessingFee,
361
- false,
362
- getWallet()
363
- );
364
- }
365
-
366
383
  function _getProductStorage() private pure returns (ProductStorage storage $) {
367
384
  assembly {
368
385
  $.slot := PRODUCT_STORAGE_LOCATION_V1