@etherisc/gif-next 0.0.2-79559e6-556 → 0.0.2-79a4d57-521

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 (757) hide show
  1. package/README.md +85 -23
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +571 -523
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1016 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1501 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +860 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +915 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1008 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +371 -1316
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +440 -166
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +410 -3087
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1916 -0
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1551 -589
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +511 -456
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +351 -119
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3718 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  88. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  100. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  105. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  110. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  112. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  113. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +418 -372
  114. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +733 -0
  116. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +875 -0
  118. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  120. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +764 -0
  122. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  124. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  126. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1261 -0
  128. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +800 -0
  130. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +447 -327
  132. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +907 -0
  134. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1230 -0
  136. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  137. package/artifacts/contracts/pool/Pool.sol/Pool.json +1027 -0
  138. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  140. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1574 -0
  142. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +808 -0
  144. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +813 -0
  146. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +728 -0
  148. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  150. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  152. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1496 -0
  154. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +848 -0
  156. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IApplicationService.sol/IApplicationService.json} +320 -169
  158. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1064 -0
  160. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1017 -0
  162. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +602 -0
  164. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1018 -0
  166. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +172 -185
  168. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1401 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +824 -0
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +930 -0
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +784 -0
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  177. package/artifacts/contracts/product/Product.sol/Product.json +1119 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +677 -112
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +325 -229
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +1017 -150
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1928 -0
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +312 -336
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +341 -123
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -101
  210. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  211. package/artifacts/contracts/shared/Component.sol/Component.json +707 -0
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1571 -0
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +820 -0
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +165 -220
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +632 -0
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1203 -0
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +709 -0
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  233. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +96 -34
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +143 -15
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  243. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  244. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IService.sol/IService.json +137 -159
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  247. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +797 -0
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  251. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +129 -20
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +159 -55
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  264. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Service.sol/Service.json +156 -171
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1447 -0
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1096 -0
  276. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1849 -0
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +788 -0
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1301 -0
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +732 -0
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  293. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  294. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  295. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  296. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  298. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  300. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  302. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  304. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  306. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  308. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  309. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  310. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  312. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  313. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  314. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  316. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  318. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  320. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  322. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +199 -0
  324. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +433 -0
  326. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  328. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  330. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  332. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  334. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  336. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  338. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  340. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  342. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +113 -0
  344. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  346. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  347. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  348. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  350. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  352. package/contracts/accounting/AccountingService.sol +262 -0
  353. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  354. package/contracts/accounting/IAccountingService.sol +45 -0
  355. package/contracts/authorization/AccessAdmin.sol +689 -0
  356. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  357. package/contracts/authorization/Authorization.sol +337 -0
  358. package/contracts/authorization/IAccess.sol +49 -0
  359. package/contracts/authorization/IAccessAdmin.sol +143 -0
  360. package/contracts/authorization/IAuthorization.sol +74 -0
  361. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  362. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  363. package/contracts/distribution/BasicDistribution.sol +139 -0
  364. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  365. package/contracts/distribution/Distribution.sol +287 -0
  366. package/contracts/distribution/DistributionService.sol +357 -0
  367. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  368. package/contracts/distribution/IDistributionComponent.sol +52 -0
  369. package/contracts/distribution/IDistributionService.sol +100 -0
  370. package/contracts/examples/fire/DamageLevel.sol +59 -0
  371. package/contracts/examples/fire/FirePool.sol +90 -0
  372. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  373. package/contracts/examples/fire/FireProduct.sol +438 -0
  374. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  375. package/contracts/examples/fire/FireUSD.sol +26 -0
  376. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  377. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  379. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  380. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  381. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  382. package/contracts/instance/BundleSet.sol +130 -0
  383. package/contracts/instance/IInstance.sol +53 -39
  384. package/contracts/instance/IInstanceService.sol +59 -19
  385. package/contracts/instance/Instance.sol +173 -380
  386. package/contracts/instance/InstanceAdmin.sol +442 -0
  387. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  388. package/contracts/instance/InstanceReader.sol +391 -81
  389. package/contracts/instance/InstanceService.sol +353 -182
  390. package/contracts/instance/InstanceServiceManager.sol +14 -32
  391. package/contracts/instance/InstanceStore.sol +298 -0
  392. package/contracts/instance/RiskSet.sol +118 -0
  393. package/contracts/instance/base/BalanceStore.sol +123 -0
  394. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  395. package/contracts/instance/base/ObjectCounter.sol +20 -0
  396. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  397. package/contracts/instance/base/ObjectSet.sol +77 -0
  398. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  399. package/contracts/instance/module/IBundle.sol +8 -8
  400. package/contracts/instance/module/IComponents.sol +51 -0
  401. package/contracts/instance/module/IDistribution.sol +6 -4
  402. package/contracts/instance/module/IPolicy.sol +59 -19
  403. package/contracts/instance/module/IRisk.sol +4 -1
  404. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  405. package/contracts/oracle/BasicOracle.sol +47 -0
  406. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  407. package/contracts/oracle/IOracle.sol +36 -0
  408. package/contracts/oracle/IOracleComponent.sol +33 -0
  409. package/contracts/oracle/IOracleService.sol +66 -0
  410. package/contracts/oracle/Oracle.sol +156 -0
  411. package/contracts/oracle/OracleService.sol +310 -0
  412. package/contracts/oracle/OracleServiceManager.sol +39 -0
  413. package/contracts/pool/BasicPool.sol +175 -0
  414. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  415. package/contracts/pool/BundleService.sol +395 -0
  416. package/contracts/pool/BundleServiceManager.sol +39 -0
  417. package/contracts/pool/IBundleService.sol +115 -0
  418. package/contracts/pool/IPoolComponent.sol +62 -0
  419. package/contracts/pool/IPoolService.sol +165 -0
  420. package/contracts/pool/Pool.sol +345 -0
  421. package/contracts/pool/PoolLib.sol +216 -0
  422. package/contracts/pool/PoolService.sol +757 -0
  423. package/contracts/pool/PoolServiceManager.sol +39 -0
  424. package/contracts/product/ApplicationService.sol +259 -0
  425. package/contracts/product/ApplicationServiceManager.sol +38 -0
  426. package/contracts/product/BasicProduct.sol +51 -0
  427. package/contracts/product/BasicProductAuthorization.sol +56 -0
  428. package/contracts/product/ClaimService.sol +632 -0
  429. package/contracts/product/ClaimServiceManager.sol +38 -0
  430. package/contracts/product/IApplicationService.sol +66 -0
  431. package/contracts/product/IClaimService.sol +135 -0
  432. package/contracts/product/IPolicyService.sol +97 -0
  433. package/contracts/product/IPricingService.sol +39 -0
  434. package/contracts/product/IProductComponent.sol +62 -0
  435. package/contracts/product/IRiskService.sol +33 -0
  436. package/contracts/product/PolicyService.sol +766 -0
  437. package/contracts/product/PolicyServiceManager.sol +39 -0
  438. package/contracts/product/PricingService.sol +304 -0
  439. package/contracts/product/PricingServiceManager.sol +39 -0
  440. package/contracts/product/Product.sol +478 -0
  441. package/contracts/product/RiskService.sol +145 -0
  442. package/contracts/product/RiskServiceManager.sol +39 -0
  443. package/contracts/registry/ChainNft.sol +82 -35
  444. package/contracts/registry/IRegistry.sol +122 -37
  445. package/contracts/registry/IRegistryService.sol +40 -28
  446. package/contracts/registry/IRelease.sol +26 -0
  447. package/contracts/registry/ITransferInterceptor.sol +1 -1
  448. package/contracts/registry/Registry.sol +555 -273
  449. package/contracts/registry/RegistryAdmin.sol +354 -0
  450. package/contracts/registry/RegistryService.sol +116 -233
  451. package/contracts/registry/RegistryServiceManager.sol +26 -53
  452. package/contracts/registry/ReleaseAdmin.sol +245 -0
  453. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  454. package/contracts/registry/ReleaseRegistry.sol +511 -0
  455. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  456. package/contracts/registry/TokenRegistry.sol +261 -59
  457. package/contracts/shared/Component.sol +227 -0
  458. package/contracts/shared/ComponentService.sol +692 -0
  459. package/contracts/shared/ComponentServiceManager.sol +38 -0
  460. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  461. package/contracts/shared/ContractLib.sol +253 -0
  462. package/contracts/shared/IComponent.sol +61 -0
  463. package/contracts/shared/IComponentService.sol +112 -0
  464. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  465. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  466. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  467. package/contracts/shared/INftOwnable.sol +15 -12
  468. package/contracts/shared/IPolicyHolder.sol +35 -0
  469. package/contracts/shared/IRegisterable.sol +25 -5
  470. package/contracts/shared/IRegistryLinked.sol +11 -0
  471. package/contracts/shared/IService.sol +13 -5
  472. package/contracts/shared/InitializableERC165.sol +27 -0
  473. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  474. package/contracts/shared/KeyValueStore.sol +131 -0
  475. package/contracts/shared/Lifecycle.sol +88 -0
  476. package/contracts/shared/NftIdSet.sol +65 -0
  477. package/contracts/shared/NftOwnable.sol +75 -82
  478. package/contracts/shared/PolicyHolder.sol +62 -0
  479. package/contracts/shared/Registerable.sol +57 -38
  480. package/contracts/shared/RegistryLinked.sol +38 -0
  481. package/contracts/shared/Service.sol +43 -33
  482. package/contracts/shared/TokenHandler.sol +326 -12
  483. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  484. package/contracts/staking/IStaking.sol +165 -0
  485. package/contracts/staking/IStakingService.sol +165 -0
  486. package/contracts/staking/StakeManagerLib.sol +224 -0
  487. package/contracts/staking/Staking.sol +526 -0
  488. package/contracts/staking/StakingLifecycle.sol +23 -0
  489. package/contracts/staking/StakingManager.sol +52 -0
  490. package/contracts/staking/StakingReader.sol +190 -0
  491. package/contracts/staking/StakingService.sol +430 -0
  492. package/contracts/staking/StakingServiceManager.sol +45 -0
  493. package/contracts/staking/StakingStore.sol +605 -0
  494. package/contracts/staking/TargetManagerLib.sol +211 -0
  495. package/contracts/{types → type}/AddressSet.sol +1 -1
  496. package/contracts/type/Amount.sol +150 -0
  497. package/contracts/{types → type}/Blocknumber.sol +27 -3
  498. package/contracts/type/ClaimId.sol +80 -0
  499. package/contracts/{types → type}/DistributorType.sol +2 -2
  500. package/contracts/{types → type}/Fee.sol +33 -23
  501. package/contracts/{types → type}/Key32.sol +2 -2
  502. package/contracts/type/Key32Set.sol +62 -0
  503. package/contracts/{types → type}/NftId.sol +28 -15
  504. package/contracts/{types → type}/NftIdSet.sol +2 -2
  505. package/contracts/type/ObjectType.sol +303 -0
  506. package/contracts/type/PayoutId.sol +82 -0
  507. package/contracts/{types → type}/Referral.sol +6 -1
  508. package/contracts/type/RequestId.sol +75 -0
  509. package/contracts/type/RiskId.sol +74 -0
  510. package/contracts/type/RoleId.sol +182 -0
  511. package/contracts/type/Seconds.sol +101 -0
  512. package/contracts/type/Selector.sol +107 -0
  513. package/contracts/{types → type}/StateId.sol +48 -4
  514. package/contracts/type/String.sol +53 -0
  515. package/contracts/{types → type}/Timestamp.sol +33 -19
  516. package/contracts/{types → type}/UFixed.sol +41 -121
  517. package/contracts/{types → type}/Version.sol +20 -7
  518. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  519. package/contracts/upgradeability/ProxyManager.sol +232 -0
  520. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  521. package/contracts/upgradeability/Versionable.sol +59 -0
  522. package/package.json +11 -7
  523. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  524. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  525. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  526. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  527. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  528. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  529. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  530. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  531. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  532. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  533. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  534. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  535. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  536. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -813
  537. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  538. package/artifacts/contracts/components/Product.sol/Product.json +0 -729
  539. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  541. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  543. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  545. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  547. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  549. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  551. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  553. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  555. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  557. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  559. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  562. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  564. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  566. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  568. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  570. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  572. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  574. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  575. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  576. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  578. package/artifacts/contracts/instance/AccessManagedUpgradeableInitializeable.sol/AccessManagedUpgradeableInitializeable.dbg.json +0 -4
  579. package/artifacts/contracts/instance/AccessManagedUpgradeableInitializeable.sol/AccessManagedUpgradeableInitializeable.json +0 -137
  580. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  581. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  582. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  583. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  584. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  585. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  586. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  587. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  588. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  589. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  590. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  591. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  592. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  593. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  594. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  595. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  596. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  597. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  598. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  599. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  600. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  601. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  602. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  603. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  604. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  605. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  606. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  608. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  610. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  612. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  615. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  617. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  618. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  620. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  622. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  623. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  624. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  625. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  626. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  627. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  628. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  629. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  630. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  631. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  632. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  633. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  634. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  635. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  636. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  637. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  638. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  639. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  640. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  642. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  643. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  644. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  646. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  648. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  650. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  651. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  652. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  653. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  654. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  655. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  656. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  658. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  660. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  662. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  664. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  666. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  668. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  669. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  670. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  672. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  674. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  676. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  678. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  680. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  682. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  684. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  686. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  688. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  690. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  692. package/contracts/components/BaseComponent.sol +0 -91
  693. package/contracts/components/Distribution.sol +0 -163
  694. package/contracts/components/IBaseComponent.sol +0 -25
  695. package/contracts/components/IDistributionComponent.sol +0 -44
  696. package/contracts/components/IPoolComponent.sol +0 -66
  697. package/contracts/components/IProductComponent.sol +0 -35
  698. package/contracts/components/Pool.sol +0 -267
  699. package/contracts/components/Product.sol +0 -289
  700. package/contracts/experiment/cloning/Cloner.sol +0 -47
  701. package/contracts/experiment/errors/Require.sol +0 -38
  702. package/contracts/experiment/errors/Revert.sol +0 -44
  703. package/contracts/experiment/inheritance/A.sol +0 -53
  704. package/contracts/experiment/inheritance/B.sol +0 -28
  705. package/contracts/experiment/inheritance/C.sol +0 -34
  706. package/contracts/experiment/inheritance/IA.sol +0 -13
  707. package/contracts/experiment/inheritance/IB.sol +0 -10
  708. package/contracts/experiment/inheritance/IC.sol +0 -12
  709. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  710. package/contracts/experiment/statemachine/ISM.sol +0 -25
  711. package/contracts/experiment/statemachine/SM.sol +0 -57
  712. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  713. package/contracts/experiment/types/TypeA.sol +0 -47
  714. package/contracts/experiment/types/TypeB.sol +0 -29
  715. package/contracts/instance/AccessManagedUpgradeableInitializeable.sol +0 -17
  716. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  717. package/contracts/instance/BundleManager.sol +0 -129
  718. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  719. package/contracts/instance/IInstanceBase.sol +0 -26
  720. package/contracts/instance/InstanceAccessManager.sol +0 -288
  721. package/contracts/instance/InstanceBase.sol +0 -41
  722. package/contracts/instance/ObjectManager.sol +0 -95
  723. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  724. package/contracts/instance/base/IInstanceBase.sol +0 -23
  725. package/contracts/instance/base/KeyValueStore.sol +0 -172
  726. package/contracts/instance/base/Lifecycle.sol +0 -100
  727. package/contracts/instance/module/IAccess.sol +0 -38
  728. package/contracts/instance/module/ISetup.sol +0 -46
  729. package/contracts/instance/module/ITreasury.sol +0 -23
  730. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  731. package/contracts/instance/service/DistributionService.sol +0 -88
  732. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  733. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  734. package/contracts/instance/service/IDistributionService.sol +0 -12
  735. package/contracts/instance/service/IPoolService.sol +0 -51
  736. package/contracts/instance/service/IProductService.sol +0 -110
  737. package/contracts/instance/service/PoolService.sol +0 -287
  738. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  739. package/contracts/instance/service/ProductService.sol +0 -570
  740. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  741. package/contracts/shared/ContractDeployerLib.sol +0 -72
  742. package/contracts/shared/ERC165.sol +0 -25
  743. package/contracts/shared/ProxyManager.sol +0 -94
  744. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  745. package/contracts/shared/Versionable.sol +0 -147
  746. package/contracts/test/TestFee.sol +0 -25
  747. package/contracts/test/TestRegisterable.sol +0 -18
  748. package/contracts/test/TestRoleId.sol +0 -14
  749. package/contracts/test/TestService.sol +0 -24
  750. package/contracts/test/TestVersion.sol +0 -44
  751. package/contracts/test/TestVersionable.sol +0 -17
  752. package/contracts/test/Usdc.sol +0 -26
  753. package/contracts/types/ChainId.sol +0 -38
  754. package/contracts/types/NumberId.sol +0 -52
  755. package/contracts/types/ObjectType.sol +0 -152
  756. package/contracts/types/RiskId.sol +0 -43
  757. package/contracts/types/RoleId.sol +0 -90
@@ -0,0 +1,766 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {IInstance} from "../instance/IInstance.sol";
13
+ import {IPolicy} from "../instance/module/IPolicy.sol";
14
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
15
+ import {IPolicyService} from "./IPolicyService.sol";
16
+ import {IPoolService} from "../pool/IPoolService.sol";
17
+ import {IPricingService} from "./IPricingService.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+
20
+ import {Amount} from "../type/Amount.sol";
21
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
22
+ import {ContractLib} from "../shared/ContractLib.sol";
23
+ import {NftId} from "../type/NftId.sol";
24
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
25
+ import {ReferralId} from "../type/Referral.sol";
26
+ import {RiskId} from "../type/RiskId.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {StateId} from "../type/StateId.sol";
29
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
30
+ import {TokenHandler} from "../shared/TokenHandler.sol";
31
+ import {VersionPart} from "../type/Version.sol";
32
+
33
+
34
+ contract PolicyService is
35
+ Service,
36
+ IPolicyService
37
+ {
38
+ IAccountingService private _accountingService;
39
+ IComponentService internal _componentService;
40
+ IDistributionService internal _distributionService;
41
+ IPoolService internal _poolService;
42
+ IPricingService internal _pricingService;
43
+
44
+ function _initialize(
45
+ address owner,
46
+ bytes memory data
47
+ )
48
+ internal
49
+ virtual override
50
+ initializer
51
+ {
52
+ (
53
+ address authority,
54
+ address registry
55
+ ) = abi.decode(data, (address, address));
56
+
57
+ __Service_init(authority, registry, owner);
58
+
59
+ VersionPart majorVersion = getVersion().toMajorPart();
60
+ _accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
61
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
62
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
63
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
64
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
65
+
66
+ _registerInterface(type(IPolicyService).interfaceId);
67
+ }
68
+
69
+
70
+ function decline(
71
+ NftId applicationNftId // = policyNftId
72
+ )
73
+ external
74
+ virtual
75
+ nonReentrant()
76
+ {
77
+ // checks
78
+ (IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
79
+
80
+ // check policy is in state applied
81
+ if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
82
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
83
+ }
84
+
85
+ // effects
86
+ // store updated policy info
87
+ instance.getInstanceStore().updatePolicyState(
88
+ applicationNftId,
89
+ DECLINED());
90
+
91
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
92
+ }
93
+
94
+
95
+ /// @inheritdoc IPolicyService
96
+ function createPolicy(
97
+ NftId applicationNftId, // = policyNftId
98
+ Timestamp activateAt
99
+ )
100
+ external
101
+ virtual
102
+ nonReentrant()
103
+ returns (Amount premiumAmount)
104
+ {
105
+ // checks
106
+ (
107
+ IInstance instance,
108
+ NftId productNftId,
109
+ IPolicy.PolicyInfo memory applicationInfo
110
+ ) = _getAndVerifyCallerForPolicy(applicationNftId);
111
+
112
+ // check policy is in state applied
113
+ InstanceReader instanceReader = instance.getInstanceReader();
114
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
115
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
116
+ }
117
+
118
+ // effects
119
+ // actual collateralizaion
120
+ _poolService.lockCollateral(
121
+ instance,
122
+ address(instanceReader.getToken(productNftId)),
123
+ productNftId,
124
+ applicationNftId,
125
+ applicationInfo.bundleNftId,
126
+ applicationInfo.sumInsuredAmount);
127
+
128
+ // optional activation of policy
129
+ if(activateAt.gtz()) {
130
+ applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
131
+ }
132
+
133
+ // update policy and set state to collateralized
134
+ instance.getInstanceStore().updatePolicy(
135
+ applicationNftId,
136
+ applicationInfo,
137
+ COLLATERALIZED());
138
+
139
+ // calculate and store premium
140
+ RiskId riskId = applicationInfo.riskId;
141
+ NftId bundleNftId = applicationInfo.bundleNftId;
142
+
143
+ IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
144
+ productNftId,
145
+ riskId,
146
+ applicationInfo.sumInsuredAmount,
147
+ applicationInfo.lifetime,
148
+ applicationInfo.applicationData,
149
+ bundleNftId,
150
+ applicationInfo.referralId);
151
+
152
+ premiumAmount = premium.fullPremiumAmount;
153
+ instance.getInstanceStore().createPremium(
154
+ applicationNftId,
155
+ premium);
156
+
157
+ // update referral counter if product has linked distributino component
158
+ {
159
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
160
+ if (productInfo.hasDistribution) {
161
+ _distributionService.processReferral(
162
+ productInfo.distributionNftId,
163
+ applicationInfo.referralId);
164
+ }
165
+ }
166
+
167
+ // link policy to risk and bundle
168
+ NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
169
+ instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
170
+ instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
171
+
172
+ // log policy creation before interactions with token and policy holder
173
+ emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
174
+
175
+ // interactions
176
+ // callback to policy holder if applicable
177
+ _policyHolderPolicyActivated(applicationNftId, activateAt);
178
+ }
179
+
180
+
181
+ /// @inheritdoc IPolicyService
182
+ function collectPremium(
183
+ NftId policyNftId,
184
+ Timestamp activateAt
185
+ )
186
+ external
187
+ virtual
188
+ nonReentrant()
189
+ {
190
+ // checks
191
+ (
192
+ IInstance instance,
193
+ NftId productNftId,
194
+ IPolicy.PolicyInfo memory policyInfo
195
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
196
+
197
+ // check policy is in state collateralized
198
+ InstanceReader instanceReader = instance.getInstanceReader();
199
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
200
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
201
+ }
202
+
203
+ // check if premium has already been collected
204
+ if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
205
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
206
+ }
207
+
208
+ // check funds and allowance of policy holder
209
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
210
+ instanceReader.getTokenHandler(
211
+ productNftId).checkBalanceAndAllowance(
212
+ getRegistry().ownerOf(policyNftId),
213
+ premium.premiumAmount,
214
+ false);
215
+
216
+ // )
217
+ // _checkPremiumBalanceAndAllowance(
218
+ // tokenHandler.TOKEN(),
219
+ // address(tokenHandler),
220
+ // getRegistry().ownerOf(policyNftId),
221
+ // premium.premiumAmount);
222
+
223
+ // effects
224
+ _processSale(
225
+ instanceReader,
226
+ instance.getInstanceStore(),
227
+ productNftId,
228
+ policyInfo.bundleNftId,
229
+ policyInfo.referralId,
230
+ premium);
231
+
232
+ // optionally activate policy
233
+ if(activateAt.gtz()) {
234
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
235
+ }
236
+
237
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
238
+ instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
239
+
240
+ // log premium collection before interactions with token
241
+ emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
242
+
243
+ // interactions
244
+ _transferPremiumAmounts(instanceReader, policyNftId, policyInfo.productNftId, premium);
245
+ }
246
+
247
+
248
+ /// @inheritdoc IPolicyService
249
+ function activate(NftId policyNftId, Timestamp activateAt)
250
+ external
251
+ virtual
252
+ nonReentrant()
253
+ {
254
+ // checks
255
+ (
256
+ IInstance instance,,
257
+ IPolicy.PolicyInfo memory policyInfo
258
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
259
+
260
+ // effects
261
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
262
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
263
+
264
+ // log policy activation before interactions with policy holder
265
+ emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
266
+
267
+ // interactions
268
+ // callback to policy holder if applicable
269
+ _policyHolderPolicyActivated(policyNftId, activateAt);
270
+ }
271
+
272
+ /// @inheritdoc IPolicyService
273
+ function adjustActivation(
274
+ NftId policyNftId,
275
+ Timestamp newActivateAt
276
+ )
277
+ external
278
+ virtual
279
+ nonReentrant()
280
+ {
281
+ // checks
282
+ (
283
+ IInstance instance,,
284
+ IPolicy.PolicyInfo memory policyInfo
285
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
286
+
287
+ if (policyInfo.activatedAt.eqz()) {
288
+ revert ErrorPolicyServicePolicyNotActivated(policyNftId);
289
+ }
290
+
291
+ if (newActivateAt < TimestampLib.blockTimestamp()) {
292
+ revert ErrorPolicyServicePolicyActivationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newActivateAt);
293
+ }
294
+
295
+ if (newActivateAt > policyInfo.expiredAt) {
296
+ revert ErrorPolicyServicePolicyActivationTooLate(policyNftId, policyInfo.expiredAt, newActivateAt);
297
+ }
298
+
299
+ Timestamp originalActivatedAt = policyInfo.activatedAt;
300
+
301
+ // effects
302
+ policyInfo.activatedAt = newActivateAt;
303
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
304
+
305
+ // log policy activation before interactions with policy holder
306
+ emit LogPolicyServicePolicyActivatedUpdated(policyNftId, originalActivatedAt, newActivateAt);
307
+
308
+ // interactions
309
+ // callback to policy holder if applicable
310
+ _policyHolderPolicyActivated(policyNftId, newActivateAt);
311
+ }
312
+
313
+
314
+ /// @inheritdoc IPolicyService
315
+ function expire(
316
+ NftId policyNftId,
317
+ Timestamp expireAt
318
+ )
319
+ external
320
+ virtual
321
+ nonReentrant()
322
+ returns (Timestamp expiredAt)
323
+ {
324
+ // checks
325
+ (
326
+ IInstance instance,,
327
+ IPolicy.PolicyInfo memory policyInfo
328
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
329
+
330
+ // more checks, effects + interactions
331
+ return _expire(
332
+ instance,
333
+ policyNftId,
334
+ policyInfo,
335
+ expireAt
336
+ );
337
+ }
338
+
339
+
340
+ /// @inheritdoc IPolicyService
341
+ function expirePolicy(
342
+ IInstance instance,
343
+ NftId policyNftId,
344
+ Timestamp expireAt
345
+ )
346
+ external
347
+ virtual
348
+ nonReentrant()
349
+ returns (Timestamp expiredAt)
350
+ {
351
+ // checks
352
+ _checkNftType(policyNftId, POLICY());
353
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
354
+ policyNftId);
355
+
356
+ // more checks, effects + interactions
357
+ return _expire(
358
+ instance,
359
+ policyNftId,
360
+ policyInfo,
361
+ expireAt
362
+ );
363
+ }
364
+
365
+
366
+ /// @inheritdoc IPolicyService
367
+ function close(
368
+ NftId policyNftId
369
+ )
370
+ external
371
+ virtual
372
+ nonReentrant()
373
+ {
374
+ // checks
375
+ (
376
+ IInstance instance,
377
+ NftId productNftId,
378
+ IPolicy.PolicyInfo memory policyInfo
379
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
380
+ InstanceReader instanceReader = instance.getInstanceReader();
381
+
382
+ // check policy is in a closeable state
383
+ if (!policyIsCloseable(instanceReader, policyNftId)) {
384
+ revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
385
+ }
386
+
387
+ // check that policy has been activated
388
+ RiskId riskId = policyInfo.riskId;
389
+ NftId bundleNftId = policyInfo.bundleNftId;
390
+
391
+ if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
392
+ revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
393
+ }
394
+
395
+ // effects
396
+ // release (remaining) collateral that was blocked by policy
397
+ _poolService.releaseCollateral(
398
+ instance,
399
+ policyNftId,
400
+ policyInfo);
401
+
402
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
403
+
404
+ // update policy state to closed
405
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
406
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
407
+
408
+ // unlink policy from risk and bundle
409
+ NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
410
+ instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
411
+ instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
412
+
413
+ emit LogPolicyServicePolicyClosed(policyNftId);
414
+ }
415
+
416
+
417
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
418
+ public
419
+ view
420
+ returns (bool isCloseable)
421
+ {
422
+ // policy already closed
423
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
424
+ return false;
425
+ }
426
+
427
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
428
+
429
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
430
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
431
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
432
+
433
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
434
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
435
+
436
+ // not closeable: not yet expired
437
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
438
+
439
+ // all conditions to close the policy are met
440
+ return true;
441
+ }
442
+
443
+ /// @dev shared functionality for expire() and policyExpire().
444
+ function _expire(
445
+ IInstance instance,
446
+ NftId policyNftId,
447
+ IPolicy.PolicyInfo memory policyInfo,
448
+ Timestamp expireAt
449
+ )
450
+ internal
451
+ returns (Timestamp expiredAt)
452
+ {
453
+ // checks
454
+ // check policy is active
455
+ StateId policyState = instance.getInstanceReader().getPolicyState(policyNftId);
456
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
457
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
458
+ }
459
+
460
+ // set return value to provided timestamp
461
+ expiredAt = expireAt;
462
+
463
+ // update expiredAt to current block timestamp if not set
464
+ if (expiredAt.eqz()) {
465
+ expiredAt = TimestampLib.blockTimestamp();
466
+ }
467
+
468
+ // check expiredAt represents a valid expiry time
469
+ if (expiredAt >= policyInfo.expiredAt) {
470
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
471
+ }
472
+
473
+ if (expiredAt < TimestampLib.blockTimestamp()) {
474
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
475
+ }
476
+
477
+ // effects
478
+ // update policyInfo with new expiredAt timestamp
479
+ Timestamp originalExpiredAt = policyInfo.expiredAt;
480
+ policyInfo.expiredAt = expiredAt;
481
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
482
+
483
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
484
+
485
+ // interactions
486
+ // callback to policy holder if applicable
487
+ _policyHolderPolicyExpired(policyNftId, expiredAt);
488
+ }
489
+
490
+
491
+ function _activate(
492
+ NftId policyNftId,
493
+ IPolicy.PolicyInfo memory policyInfo,
494
+ Timestamp activateAt
495
+ )
496
+ internal
497
+ virtual
498
+ view
499
+ returns (IPolicy.PolicyInfo memory)
500
+ {
501
+ // fail if policy has already been activated and activateAt is different
502
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
503
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
504
+ }
505
+
506
+ // ignore if policy has already been activated and activateAt is the same
507
+ if (policyInfo.activatedAt == activateAt) {
508
+ return policyInfo;
509
+ }
510
+
511
+ policyInfo.activatedAt = activateAt;
512
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
513
+
514
+ return policyInfo;
515
+ }
516
+
517
+ /// @dev update counters by calling the involved services
518
+ function _processSale(
519
+ InstanceReader instanceReader,
520
+ InstanceStore instanceStore,
521
+ NftId productNftId,
522
+ NftId bundleNftId,
523
+ ReferralId referralId,
524
+ IPolicy.PremiumInfo memory premium
525
+ )
526
+ internal
527
+ virtual
528
+ {
529
+ (NftId distributionNftId,,,) = _getDistributionNftAndWallets(
530
+ instanceReader,
531
+ productNftId);
532
+
533
+ // update product fees, distribution and pool fees
534
+ _accountingService.increaseProductFees(
535
+ instanceStore,
536
+ productNftId,
537
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
538
+
539
+ // update distribution fees and distributor commission and pool fees
540
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
541
+ _distributionService.processSale(
542
+ distributionNftId,
543
+ referralId,
544
+ premium);
545
+ }
546
+
547
+ // update pool and bundle fees
548
+ _poolService.processSale(
549
+ bundleNftId,
550
+ premium);
551
+ }
552
+
553
+
554
+ /// @dev transfer the premium to the wallets the premium is distributed to
555
+ function _transferPremiumAmounts(
556
+ InstanceReader instanceReader,
557
+ NftId policyNftId,
558
+ NftId productNftId,
559
+ IPolicy.PremiumInfo memory premium
560
+ )
561
+ internal
562
+ virtual
563
+ {
564
+ address policyHolder = getRegistry().ownerOf(policyNftId);
565
+
566
+ (
567
+ ,
568
+ address distributionWallet,
569
+ address poolWallet,
570
+ address productWallet
571
+ ) = _getDistributionNftAndWallets(
572
+ instanceReader,
573
+ productNftId);
574
+
575
+ // step 1: collect premium amount from policy holder
576
+ TokenHandler tokenHandler = instanceReader.getTokenHandler(productNftId);
577
+ tokenHandler.pullToken(policyHolder, premium.premiumAmount);
578
+
579
+ // step 2: push distribution fee to distribution wallet
580
+ if (premium.distributionFeeAndCommissionAmount.gtz()) {
581
+ tokenHandler.pushToken(distributionWallet, premium.distributionFeeAndCommissionAmount);
582
+ }
583
+
584
+ // step 3: push pool fee, bundle fee and pool premium to pool wallet
585
+ if (premium.poolPremiumAndFeeAmount.gtz()) {
586
+ tokenHandler.pushToken(poolWallet, premium.poolPremiumAndFeeAmount);
587
+ }
588
+ }
589
+
590
+
591
+ /// @dev checks that policy has been collateralized and has been activated.
592
+ /// does not check if policy has been expired or closed.
593
+ function _policyHasBeenActivated(
594
+ StateId policyState,
595
+ IPolicy.PolicyInfo memory policyInfo
596
+ )
597
+ internal
598
+ view
599
+ returns (bool)
600
+ {
601
+ if (policyState != COLLATERALIZED()) { return false; }
602
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
603
+ return true;
604
+ }
605
+
606
+
607
+ // TODO cleanup
608
+ /// @dev checks the balance and allowance of the policy holder
609
+ // function _checkPremiumBalanceAndAllowance(
610
+ // IERC20Metadata token,
611
+ // address tokenHandlerAddress,
612
+ // address policyHolder,
613
+ // Amount premiumAmount
614
+ // )
615
+ // internal
616
+ // virtual
617
+ // view
618
+ // {
619
+ // uint256 premium = premiumAmount.toInt();
620
+ // uint256 balance = token.balanceOf(policyHolder);
621
+ // uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
622
+
623
+ // if (balance < premium) {
624
+ // revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
625
+ // }
626
+
627
+ // if (allowance < premium) {
628
+ // revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
629
+ // }
630
+ // }
631
+
632
+
633
+ function _policyHolderPolicyActivated(
634
+ NftId policyNftId,
635
+ Timestamp activateAt
636
+ )
637
+ internal
638
+ virtual
639
+ {
640
+ // immediately return if policy is not activated
641
+ if (activateAt.eqz()) {
642
+ return;
643
+ }
644
+
645
+ // get policy holder address
646
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
647
+
648
+ // execute callback if policy holder implements IPolicyHolder
649
+ if (address(policyHolder) != address(0)) {
650
+ policyHolder.policyActivated(policyNftId, activateAt);
651
+ }
652
+ }
653
+
654
+
655
+ function _policyHolderPolicyExpired(
656
+ NftId policyNftId,
657
+ Timestamp expiredAt
658
+ )
659
+ internal
660
+ virtual
661
+ {
662
+ // immediately return if policy is not activated
663
+ if (expiredAt.eqz()) {
664
+ return;
665
+ }
666
+
667
+ // get policy holder address
668
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
669
+
670
+ // execute callback if policy holder implements IPolicyHolder
671
+ if (address(policyHolder) != address(0)) {
672
+ policyHolder.policyExpired(policyNftId, expiredAt);
673
+ }
674
+ }
675
+
676
+
677
+ function _getPolicyHolder(NftId policyNftId)
678
+ internal
679
+ view
680
+ returns (IPolicyHolder policyHolder)
681
+ {
682
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
683
+ policyHolder = IPolicyHolder(policyHolderAddress);
684
+
685
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
686
+ policyHolder = IPolicyHolder(address(0));
687
+ }
688
+ }
689
+
690
+
691
+ // TODO cleanup
692
+ // function _getTokenHandler(
693
+ // InstanceReader instanceReader,
694
+ // NftId productNftId
695
+ // )
696
+ // internal
697
+ // virtual
698
+ // view
699
+ // returns (
700
+ // TokenHandler tokenHandler
701
+ // )
702
+ // {
703
+ // tokenHandler = instanceReader.getTokenHandler(productNftId).tokenHandler;
704
+ // }
705
+
706
+
707
+ function _getDistributionNftAndWallets(
708
+ InstanceReader instanceReader,
709
+ NftId productNftId
710
+ )
711
+ internal
712
+ virtual
713
+ view returns (
714
+ NftId distributionNftId,
715
+ address distributionWallet,
716
+ address poolWallet,
717
+ address productWallet
718
+ )
719
+ {
720
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
721
+ productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
722
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
723
+
724
+ if (productInfo.hasDistribution) {
725
+ distributionNftId = productInfo.distributionNftId;
726
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
727
+ }
728
+ }
729
+
730
+
731
+ function _getAndVerifyCallerForPolicy(NftId policyNftId)
732
+ internal
733
+ virtual
734
+ view
735
+ returns (
736
+ IInstance instance,
737
+ NftId productNftId,
738
+ IPolicy.PolicyInfo memory policyInfo
739
+ )
740
+ {
741
+ (
742
+ IRegistry.ObjectInfo memory productInfo,
743
+ address instanceAddress
744
+ ) = ContractLib.getAndVerifyComponent(
745
+ getRegistry(),
746
+ msg.sender, // caller contract
747
+ PRODUCT(), // caller must be product
748
+ true); // only active caller
749
+
750
+ productNftId = productInfo.nftId;
751
+ instance = IInstance(instanceAddress);
752
+ policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
753
+
754
+ if (policyInfo.productNftId != productNftId) {
755
+ revert ErrorPolicyServicePolicyProductMismatch(
756
+ policyNftId,
757
+ productNftId,
758
+ policyInfo.productNftId);
759
+ }
760
+ }
761
+
762
+
763
+ function _getDomain() internal pure override returns(ObjectType) {
764
+ return POLICY();
765
+ }
766
+ }