@etherisc/gif-next 0.0.2-86f4673-518 → 0.0.2-86fb77b-888

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