@etherisc/gif-next 0.0.2-de220d6-949 → 0.0.2-de9ede4-391

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