@etherisc/gif-next 0.0.2-fd275d2-234 → 0.0.2-fd4ee14-428

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 (623) hide show
  1. package/README.md +30 -15
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -164
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +284 -1317
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +453 -169
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +419 -3062
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +630 -351
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +605 -355
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +359 -113
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +300 -357
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +236 -190
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +253 -373
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IProductService.sol/IProductService.json} +124 -166
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +388 -127
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +395 -219
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +576 -182
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1218 -0
  132. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  138. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  140. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  142. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  150. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  152. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  154. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  156. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +208 -209
  158. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  160. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  164. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  166. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  168. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  170. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  172. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  174. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  176. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  182. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  184. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  186. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  188. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  190. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  192. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  195. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  196. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  202. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  203. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  208. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  211. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  212. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  213. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  214. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  216. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  218. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  219. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  220. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  222. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  224. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  226. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  228. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  230. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  232. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  234. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  236. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  238. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  240. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  242. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  244. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  246. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  248. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  250. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  252. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  254. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  256. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  258. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  260. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  262. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  266. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  270. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  272. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  274. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  276. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  278. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  284. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  286. package/contracts/distribution/Distribution.sol +261 -0
  287. package/contracts/distribution/DistributionService.sol +297 -0
  288. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  289. package/contracts/distribution/IDistributionComponent.sol +66 -0
  290. package/contracts/distribution/IDistributionService.sol +81 -0
  291. package/contracts/instance/BundleManager.sol +24 -50
  292. package/contracts/instance/IInstance.sol +67 -36
  293. package/contracts/instance/IInstanceService.sol +82 -17
  294. package/contracts/instance/Instance.sol +181 -372
  295. package/contracts/instance/InstanceAdmin.sol +331 -0
  296. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  297. package/contracts/instance/InstanceReader.sol +160 -83
  298. package/contracts/instance/InstanceService.sol +372 -165
  299. package/contracts/instance/InstanceServiceManager.sol +12 -25
  300. package/contracts/instance/InstanceStore.sol +269 -0
  301. package/contracts/instance/base/BalanceStore.sol +123 -0
  302. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  303. package/contracts/instance/base/ObjectCounter.sol +21 -0
  304. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +17 -32
  305. package/contracts/instance/module/IAccess.sol +29 -21
  306. package/contracts/instance/module/IBundle.sol +8 -8
  307. package/contracts/instance/module/IComponents.sol +52 -0
  308. package/contracts/instance/module/IDistribution.sol +7 -4
  309. package/contracts/instance/module/IPolicy.sol +56 -17
  310. package/contracts/instance/module/IRisk.sol +1 -1
  311. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  312. package/contracts/oracle/IOracle.sol +20 -0
  313. package/contracts/oracle/IOracleComponent.sol +32 -0
  314. package/contracts/oracle/IOracleService.sol +65 -0
  315. package/contracts/oracle/Oracle.sol +145 -0
  316. package/contracts/oracle/OracleService.sol +278 -0
  317. package/contracts/oracle/OracleServiceManager.sol +42 -0
  318. package/contracts/pool/BundleService.sol +296 -0
  319. package/contracts/pool/BundleServiceManager.sol +42 -0
  320. package/contracts/pool/IBundleService.sol +106 -0
  321. package/contracts/pool/IPoolComponent.sol +112 -0
  322. package/contracts/pool/IPoolService.sol +150 -0
  323. package/contracts/pool/Pool.sol +299 -0
  324. package/contracts/pool/PoolService.sol +452 -0
  325. package/contracts/pool/PoolServiceManager.sol +42 -0
  326. package/contracts/product/ApplicationService.sol +254 -0
  327. package/contracts/product/ApplicationServiceManager.sol +38 -0
  328. package/contracts/product/ClaimService.sol +442 -0
  329. package/contracts/product/ClaimServiceManager.sol +38 -0
  330. package/contracts/product/IApplicationService.sol +62 -0
  331. package/contracts/product/IClaimService.sol +99 -0
  332. package/contracts/product/IPolicyService.sol +78 -0
  333. package/contracts/product/IPricingService.sol +39 -0
  334. package/contracts/product/IProductComponent.sol +42 -0
  335. package/contracts/product/IProductService.sol +33 -0
  336. package/contracts/product/PolicyService.sol +475 -0
  337. package/contracts/product/PolicyServiceManager.sol +42 -0
  338. package/contracts/product/PricingService.sol +300 -0
  339. package/contracts/product/PricingServiceManager.sol +42 -0
  340. package/contracts/product/Product.sol +377 -0
  341. package/contracts/product/ProductService.sol +124 -0
  342. package/contracts/product/ProductServiceManager.sol +42 -0
  343. package/contracts/registry/ChainNft.sol +15 -0
  344. package/contracts/registry/IRegistry.sol +73 -30
  345. package/contracts/registry/IRegistryService.sol +47 -28
  346. package/contracts/registry/IServiceAuthorization.sol +35 -0
  347. package/contracts/registry/ITransferInterceptor.sol +1 -0
  348. package/contracts/registry/Registry.sol +382 -248
  349. package/contracts/registry/RegistryAdmin.sol +333 -0
  350. package/contracts/registry/RegistryService.sol +114 -206
  351. package/contracts/registry/RegistryServiceManager.sol +24 -51
  352. package/contracts/registry/ReleaseManager.sol +527 -0
  353. package/contracts/registry/ServiceAuthorization.sol +86 -0
  354. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  355. package/contracts/registry/TokenRegistry.sol +261 -57
  356. package/contracts/shared/AccessAdmin.sol +759 -0
  357. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +281 -232
  358. package/contracts/shared/AccessManagerExtended.sol +481 -0
  359. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  360. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  361. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  362. package/contracts/shared/Component.sol +281 -0
  363. package/contracts/shared/ComponentService.sol +617 -0
  364. package/contracts/shared/ComponentServiceManager.sol +35 -0
  365. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  366. package/contracts/shared/ERC165.sol +15 -13
  367. package/contracts/shared/IAccessAdmin.sol +168 -0
  368. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  369. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  370. package/contracts/shared/IComponent.sol +70 -0
  371. package/contracts/shared/IComponentService.sol +102 -0
  372. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  373. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  374. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  375. package/contracts/shared/INftOwnable.sol +13 -12
  376. package/contracts/shared/IPolicyHolder.sol +45 -0
  377. package/contracts/shared/IRegisterable.sol +4 -6
  378. package/contracts/shared/IRegistryLinked.sol +11 -0
  379. package/contracts/shared/IService.sol +15 -5
  380. package/contracts/shared/IVersionable.sol +5 -48
  381. package/contracts/shared/InitializableCustom.sol +177 -0
  382. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  383. package/contracts/shared/KeyValueStore.sol +127 -0
  384. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  385. package/contracts/shared/NftIdSetManager.sol +65 -0
  386. package/contracts/shared/NftOwnable.sol +59 -86
  387. package/contracts/shared/PolicyHolder.sol +102 -0
  388. package/contracts/shared/ProxyManager.sol +131 -26
  389. package/contracts/shared/Registerable.sol +26 -41
  390. package/contracts/shared/RegistryLinked.sol +43 -0
  391. package/contracts/shared/Service.sol +57 -29
  392. package/contracts/shared/TokenHandler.sol +37 -6
  393. package/contracts/shared/Versionable.sol +4 -92
  394. package/contracts/staking/IStaking.sol +168 -0
  395. package/contracts/staking/IStakingService.sol +153 -0
  396. package/contracts/staking/StakeManagerLib.sol +231 -0
  397. package/contracts/staking/Staking.sol +513 -0
  398. package/contracts/staking/StakingManager.sol +54 -0
  399. package/contracts/staking/StakingReader.sol +187 -0
  400. package/contracts/staking/StakingService.sol +411 -0
  401. package/contracts/staking/StakingServiceManager.sol +44 -0
  402. package/contracts/staking/StakingStore.sol +613 -0
  403. package/contracts/staking/TargetManagerLib.sol +207 -0
  404. package/contracts/{types → type}/AddressSet.sol +1 -1
  405. package/contracts/type/Amount.sol +128 -0
  406. package/contracts/{types → type}/Blocknumber.sol +21 -3
  407. package/contracts/type/ClaimId.sol +75 -0
  408. package/contracts/{types → type}/DistributorType.sol +2 -2
  409. package/contracts/{types → type}/Fee.sol +33 -23
  410. package/contracts/{types → type}/NftId.sol +21 -15
  411. package/contracts/{types → type}/NftIdSet.sol +2 -2
  412. package/contracts/type/ObjectType.sol +241 -0
  413. package/contracts/type/PayoutId.sol +82 -0
  414. package/contracts/{types → type}/Referral.sol +5 -1
  415. package/contracts/type/RequestId.sol +75 -0
  416. package/contracts/{types → type}/RiskId.sol +1 -1
  417. package/contracts/type/RoleId.sol +201 -0
  418. package/contracts/type/Seconds.sol +81 -0
  419. package/contracts/type/Selector.sol +102 -0
  420. package/contracts/{types → type}/StateId.sol +34 -4
  421. package/contracts/type/String.sol +53 -0
  422. package/contracts/{types → type}/Timestamp.sol +23 -14
  423. package/contracts/{types → type}/UFixed.sol +1 -0
  424. package/contracts/{types → type}/Version.sol +2 -1
  425. package/package.json +5 -5
  426. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  428. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  429. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  430. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  432. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  433. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  434. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  435. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  436. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  437. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  438. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  439. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -787
  440. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  441. package/artifacts/contracts/components/Product.sol/Product.json +0 -729
  442. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  444. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  446. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  448. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  450. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  452. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  454. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  456. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  458. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  460. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  462. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  465. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  467. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  469. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  471. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  473. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  475. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  477. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  479. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  481. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  482. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  483. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  484. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  485. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  486. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  487. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  488. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  489. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  490. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  491. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  494. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  495. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  497. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  498. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  500. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  501. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  504. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  506. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  508. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  511. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -971
  515. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  521. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  522. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  523. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  526. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  527. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  528. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  529. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  530. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  531. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  532. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  533. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  534. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  535. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  536. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  537. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  538. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  539. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  540. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  541. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  543. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  545. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  548. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  549. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  551. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  552. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  554. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  556. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  558. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  561. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  564. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  568. package/contracts/components/BaseComponent.sol +0 -91
  569. package/contracts/components/Distribution.sol +0 -163
  570. package/contracts/components/IBaseComponent.sol +0 -25
  571. package/contracts/components/IDistributionComponent.sol +0 -44
  572. package/contracts/components/IPoolComponent.sol +0 -62
  573. package/contracts/components/IProductComponent.sol +0 -35
  574. package/contracts/components/Pool.sol +0 -247
  575. package/contracts/components/Product.sol +0 -289
  576. package/contracts/experiment/cloning/Cloner.sol +0 -47
  577. package/contracts/experiment/errors/Require.sol +0 -38
  578. package/contracts/experiment/errors/Revert.sol +0 -44
  579. package/contracts/experiment/inheritance/A.sol +0 -53
  580. package/contracts/experiment/inheritance/B.sol +0 -28
  581. package/contracts/experiment/inheritance/C.sol +0 -34
  582. package/contracts/experiment/inheritance/IA.sol +0 -13
  583. package/contracts/experiment/inheritance/IB.sol +0 -10
  584. package/contracts/experiment/inheritance/IC.sol +0 -12
  585. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  586. package/contracts/experiment/statemachine/ISM.sol +0 -25
  587. package/contracts/experiment/statemachine/SM.sol +0 -57
  588. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  589. package/contracts/experiment/types/TypeA.sol +0 -47
  590. package/contracts/experiment/types/TypeB.sol +0 -29
  591. package/contracts/instance/AccessManagedSimple.sol +0 -115
  592. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  593. package/contracts/instance/InstanceAccessManager.sol +0 -288
  594. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  595. package/contracts/instance/base/IInstanceBase.sol +0 -23
  596. package/contracts/instance/base/KeyValueStore.sol +0 -172
  597. package/contracts/instance/module/ISetup.sol +0 -46
  598. package/contracts/instance/module/ITreasury.sol +0 -23
  599. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  600. package/contracts/instance/service/DistributionService.sol +0 -88
  601. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  602. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  603. package/contracts/instance/service/IDistributionService.sol +0 -12
  604. package/contracts/instance/service/IPoolService.sol +0 -43
  605. package/contracts/instance/service/IProductService.sol +0 -110
  606. package/contracts/instance/service/PoolService.sol +0 -206
  607. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  608. package/contracts/instance/service/ProductService.sol +0 -561
  609. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  610. package/contracts/shared/ContractDeployerLib.sol +0 -72
  611. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  612. package/contracts/test/TestFee.sol +0 -25
  613. package/contracts/test/TestRegisterable.sol +0 -18
  614. package/contracts/test/TestRoleId.sol +0 -14
  615. package/contracts/test/TestService.sol +0 -24
  616. package/contracts/test/TestToken.sol +0 -26
  617. package/contracts/test/TestVersion.sol +0 -44
  618. package/contracts/test/TestVersionable.sol +0 -17
  619. package/contracts/types/ChainId.sol +0 -38
  620. package/contracts/types/NumberId.sol +0 -52
  621. package/contracts/types/ObjectType.sol +0 -152
  622. package/contracts/types/RoleId.sol +0 -90
  623. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,78 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {PayoutId} from "../type/PayoutId.sol";
11
+ import {ReferralId} from "../type/Referral.sol";
12
+ import {RiskId} from "../type/RiskId.sol";
13
+ import {Seconds} from "../type/Seconds.sol";
14
+ import {StateId} from "../type/StateId.sol";
15
+ import {Timestamp} from "../type/Timestamp.sol";
16
+ import {UFixed} from "../type/UFixed.sol";
17
+ import {Fee} from "../type/Fee.sol";
18
+
19
+ interface IPolicyService is IService {
20
+
21
+ error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
22
+ error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
23
+ error ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(NftId applicationNftId);
24
+
25
+ error ErrorPolicyServicePremiumHigherThanExpected(Amount premiumExpectedAmount, Amount premiumToBePaidAmount);
26
+ error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
27
+ error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
28
+
29
+ error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
30
+ error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
31
+ error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
32
+ error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
33
+ error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
34
+ error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
35
+ error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
36
+ error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
37
+
38
+ error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
39
+ error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
40
+
41
+ /// @dev collateralizes the policy represented by {policyNftId}
42
+ /// sets the policy state to collateralized
43
+ /// may set the policy state to activated and set the activation date
44
+ /// optionally collects premiums and activates the policy.
45
+ /// - premium payment is only attempted if requirePremiumPayment is set to true
46
+ /// - activation is only done if activateAt is a non-zero timestamp
47
+ /// an application can only be collateralized in applied state
48
+ /// only the related product may collateralize an application
49
+ function collateralize(
50
+ NftId policyNftId,
51
+ bool requirePremiumPayment,
52
+ Timestamp activateAt
53
+ ) external;
54
+
55
+ /// @dev declines an application represented by {policyNftId}
56
+ /// an application can only be declined in applied state
57
+ /// only the related product may decline an application
58
+ function decline(NftId policyNftId) external;
59
+
60
+ /// @dev collects the premium token for the specified policy
61
+ function collectPremium(NftId policyNftId, Timestamp activateAt) external;
62
+
63
+ /// @dev activates the specified policy and sets the activation date in the policy metadata
64
+ /// to activate a policy it needs to be in underwritten state
65
+ function activate(NftId policyNftId, Timestamp activateAt) external;
66
+
67
+ /// @dev expires the specified policy and sets the expiry date in the policy metadata
68
+ /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
69
+ /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
70
+ /// this function can only be called by a product. the policy needs to match with the calling product
71
+ function expire(NftId policyNftId) external;
72
+
73
+ /// @dev closes the specified policy and sets the closed data in the policy metadata
74
+ /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
75
+ /// this function can only be called by a product. the policy needs to match with the calling product
76
+ function close(NftId policyNftId) external;
77
+
78
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Seconds} from "../type/Seconds.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {ReferralId} from "../type/Referral.sol";
7
+ import {RiskId} from "../type/RiskId.sol";
8
+ import {Amount} from "../type/Amount.sol";
9
+
10
+ import {IService} from "./IApplicationService.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+
13
+ interface IPricingService is IService
14
+ {
15
+
16
+ error ErrorPricingServiceTargetWalletAmountsMismatch();
17
+ error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
18
+ error ErrorIPricingServiceFeeCalculationMismatch(
19
+ uint256 distributionFeeFixAmount,
20
+ uint256 distributionFeeVarAmount,
21
+ uint256 distributionOwnerFeeFixAmount,
22
+ uint256 distributionOwnerFeeVarAmount,
23
+ uint256 commissionAmount,
24
+ uint256 discountAmount
25
+ );
26
+
27
+ function calculatePremium(
28
+ NftId productNftId,
29
+ RiskId riskId,
30
+ Amount sumInsuredAmount,
31
+ Seconds lifetime,
32
+ bytes memory applicationData,
33
+ NftId bundleNftId,
34
+ ReferralId referralId
35
+ )
36
+ external
37
+ view
38
+ returns (IPolicy.Premium memory premium);
39
+ }
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
6
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ReferralId} from "../type/Referral.sol";
10
+ import {RiskId} from "../type/RiskId.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+
13
+ interface IProductComponent is IInstanceLinkedComponent {
14
+
15
+ function setFees(
16
+ Fee memory productFee,
17
+ Fee memory processingFee
18
+ ) external;
19
+
20
+ function calculatePremium(
21
+ Amount sumInsuredAmount,
22
+ RiskId riskId,
23
+ Seconds lifetime,
24
+ bytes memory applicationData,
25
+ NftId bundleNftId,
26
+ ReferralId referralId
27
+ ) external view returns (Amount premiumAmount);
28
+
29
+ function calculateNetPremium(
30
+ Amount sumInsuredAmount,
31
+ RiskId riskId,
32
+ Seconds lifetime,
33
+ bytes memory applicationData
34
+ ) external view returns (Amount netPremiumAmount);
35
+
36
+
37
+ /// @dev returns initial pool specific infos for this pool
38
+ function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
39
+
40
+ function getPoolNftId() external view returns (NftId poolNftId);
41
+ function getDistributionNftId() external view returns (NftId distributionNftId);
42
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRisk} from "../instance/module/IRisk.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ReferralId} from "../type/Referral.sol";
9
+ import {RiskId} from "../type/RiskId.sol";
10
+ import {StateId} from "../type/StateId.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+ import {UFixed} from "../type/UFixed.sol";
13
+ import {Fee} from "../type/Fee.sol";
14
+
15
+ interface IProductService is IService {
16
+
17
+ function createRisk(
18
+ RiskId riskId,
19
+ bytes memory data
20
+ ) external;
21
+
22
+
23
+ function updateRisk(
24
+ RiskId riskId,
25
+ bytes memory data
26
+ ) external;
27
+
28
+
29
+ function updateRiskState(
30
+ RiskId riskId,
31
+ StateId newState
32
+ ) external;
33
+ }
@@ -0,0 +1,475 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {Product} from "./Product.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IPolicy} from "../instance/module/IPolicy.sol";
10
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
+ import {IRisk} from "../instance/module/IRisk.sol";
12
+ import {IBundle} from "../instance/module/IBundle.sol";
13
+
14
+ import {TokenHandler} from "../shared/TokenHandler.sol";
15
+
16
+ import {Amount, AmountLib} from "../type/Amount.sol";
17
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
18
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
19
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
+ import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
21
+ import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
22
+ import {NftId, NftIdLib} from "../type/NftId.sol";
23
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
24
+ import {ReferralId} from "../type/Referral.sol";
25
+ import {StateId} from "../type/StateId.sol";
26
+ import {VersionPart} from "../type/Version.sol";
27
+
28
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
29
+ import {IApplicationService} from "./IApplicationService.sol";
30
+ import {IBundleService} from "../pool/IBundleService.sol";
31
+ import {IClaimService} from "./IClaimService.sol";
32
+ import {IComponentService} from "../shared/IComponentService.sol";
33
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
34
+ import {InstanceReader} from "../instance/InstanceReader.sol";
35
+ import {InstanceStore} from "../instance/InstanceStore.sol";
36
+ import {IPolicyService} from "./IPolicyService.sol";
37
+ import {IPoolService} from "../pool/IPoolService.sol";
38
+ import {IPricingService} from "./IPricingService.sol";
39
+ import {IService} from "../shared/IService.sol";
40
+ import {Service} from "../shared/Service.sol";
41
+
42
+ contract PolicyService is
43
+ ComponentVerifyingService,
44
+ IPolicyService
45
+ {
46
+ using NftIdLib for NftId;
47
+ using TimestampLib for Timestamp;
48
+
49
+ IApplicationService internal _applicationService;
50
+ IComponentService internal _componentService;
51
+ IBundleService internal _bundleService;
52
+ IClaimService internal _claimService;
53
+ IDistributionService internal _distributionService;
54
+ IPoolService internal _poolService;
55
+ IPricingService internal _pricingService;
56
+
57
+ event LogProductServiceSender(address sender);
58
+
59
+ function _initialize(
60
+ address owner,
61
+ bytes memory data
62
+ )
63
+ internal
64
+ virtual override
65
+ initializer
66
+ {
67
+ (
68
+ address registryAddress,,
69
+ //address managerAddress
70
+ address authority
71
+ ) = abi.decode(data, (address, address, address));
72
+
73
+ initializeService(registryAddress, authority, owner);
74
+
75
+ VersionPart majorVersion = getVersion().toMajorPart();
76
+ _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
77
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
78
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
79
+ _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
80
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
81
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
82
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
83
+
84
+ registerInterface(type(IPolicyService).interfaceId);
85
+ }
86
+
87
+
88
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
89
+ IRegistry.ObjectInfo memory productInfo;
90
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
91
+ product = Product(productInfo.objectAddress);
92
+ }
93
+
94
+
95
+ function decline(
96
+ NftId policyNftId
97
+ )
98
+ external
99
+ override
100
+ {
101
+ revert();
102
+ }
103
+
104
+ event LogDebug(uint idx, string message);
105
+
106
+ /// @dev underwites application which includes the locking of the required collateral from the pool.
107
+ function collateralize(
108
+ NftId applicationNftId, // = policyNftId
109
+ bool requirePremiumPayment,
110
+ Timestamp activateAt
111
+ )
112
+ external
113
+ virtual override
114
+ {
115
+ // check caller is registered product
116
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
117
+ InstanceReader instanceReader = instance.getInstanceReader();
118
+
119
+ // check policy is in state applied
120
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
121
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
122
+ }
123
+
124
+ // check policy matches with calling product
125
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
126
+ if(applicationInfo.productNftId != productNftId) {
127
+ revert ErrorPolicyServicePolicyProductMismatch(
128
+ applicationNftId,
129
+ applicationInfo.productNftId,
130
+ productNftId);
131
+ }
132
+
133
+ StateId newPolicyState = COLLATERALIZED();
134
+
135
+ // actual collateralizaion
136
+ (
137
+ Amount localCollateralAmount,
138
+ Amount totalCollateralAmount
139
+ ) = _poolService.lockCollateral(
140
+ instance,
141
+ address(instanceReader.getComponentInfo(productNftId).token),
142
+ productNftId,
143
+ applicationNftId,
144
+ applicationInfo.bundleNftId,
145
+ applicationInfo.sumInsuredAmount);
146
+
147
+ // optional activation of policy
148
+ if(activateAt > zeroTimestamp()) {
149
+ newPolicyState = ACTIVE();
150
+ applicationInfo.activatedAt = activateAt;
151
+ applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
152
+ }
153
+
154
+ // optional collection of premium
155
+ if(requirePremiumPayment) {
156
+ Amount premiumPaidAmount = _calculateAndCollectPremium(
157
+ instance,
158
+ applicationNftId,
159
+ applicationInfo);
160
+
161
+ applicationInfo.premiumPaidAmount = premiumPaidAmount;
162
+ }
163
+
164
+ // store updated policy info
165
+ instance.getInstanceStore().updatePolicy(
166
+ applicationNftId,
167
+ applicationInfo,
168
+ newPolicyState);
169
+
170
+ // TODO add calling pool contract if it needs to validate application
171
+
172
+ // TODO: add logging
173
+ }
174
+
175
+
176
+ function collectPremium(
177
+ NftId policyNftId,
178
+ Timestamp activateAt
179
+ )
180
+ external
181
+ virtual
182
+ {
183
+ // check caller is registered product
184
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
185
+ InstanceReader instanceReader = instance.getInstanceReader();
186
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
187
+
188
+ // check policy is in state collateralized or active
189
+ if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
190
+ revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
191
+ }
192
+
193
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
194
+
195
+ // check if premium is already collected
196
+ if (policyInfo.premiumPaidAmount.gtz()) {
197
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
198
+ }
199
+
200
+ policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
201
+ instance,
202
+ policyNftId,
203
+ policyInfo);
204
+
205
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
206
+
207
+ if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
208
+ activate(policyNftId, activateAt);
209
+ }
210
+
211
+ // TODO: add logging
212
+ }
213
+
214
+ function activate(NftId policyNftId, Timestamp activateAt) public override {
215
+ // check caller is registered product
216
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
217
+ InstanceReader instanceReader = instance.getInstanceReader();
218
+
219
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
220
+
221
+ require(
222
+ policyInfo.activatedAt.eqz(),
223
+ "ERROR:PRS-020:ALREADY_ACTIVATED");
224
+
225
+ policyInfo.activatedAt = activateAt;
226
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
227
+
228
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
229
+
230
+ // TODO: add logging
231
+ }
232
+
233
+
234
+ function expire(
235
+ NftId policyNftId
236
+ )
237
+ external
238
+ override
239
+ // solhint-disable-next-line no-empty-blocks
240
+ {
241
+
242
+ }
243
+
244
+ function close(
245
+ NftId policyNftId
246
+ )
247
+ external
248
+ override
249
+ {
250
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
251
+ InstanceReader instanceReader = instance.getInstanceReader();
252
+
253
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
254
+
255
+ if (policyInfo.activatedAt.eqz()) {
256
+ revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
257
+ }
258
+
259
+ StateId state = instanceReader.getPolicyState(policyNftId);
260
+ if (state != ACTIVE()) {
261
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
262
+ }
263
+
264
+ if (policyInfo.closedAt.gtz()) {
265
+ revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
266
+ }
267
+
268
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
269
+ if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
270
+ revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
271
+ }
272
+
273
+ if (policyInfo.openClaimsCount > 0) {
274
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
275
+ }
276
+
277
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
278
+
279
+ _poolService.releaseCollateral(
280
+ instance,
281
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
282
+ policyNftId,
283
+ policyInfo);
284
+
285
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
286
+ }
287
+
288
+
289
+ function _calculateAndCollectPremium(
290
+ IInstance instance,
291
+ NftId applicationNftId,
292
+ IPolicy.PolicyInfo memory applicationInfo
293
+ )
294
+ internal
295
+ virtual
296
+ returns (
297
+ Amount premiumPaidAmount
298
+ )
299
+ {
300
+ NftId productNftId = applicationInfo.productNftId;
301
+
302
+ // calculate premium details
303
+ IPolicy.Premium memory premium = _pricingService.calculatePremium(
304
+ productNftId,
305
+ applicationInfo.riskId,
306
+ applicationInfo.sumInsuredAmount,
307
+ applicationInfo.lifetime,
308
+ applicationInfo.applicationData,
309
+ applicationInfo.bundleNftId,
310
+ applicationInfo.referralId);
311
+
312
+
313
+ // update financials and transfer premium tokens
314
+ premiumPaidAmount = _processAndCollect(
315
+ instance,
316
+ productNftId,
317
+ applicationNftId,
318
+ applicationInfo.premiumAmount,
319
+ applicationInfo.bundleNftId,
320
+ applicationInfo.referralId,
321
+ premium);
322
+ }
323
+
324
+
325
+ function _processAndCollect(
326
+ IInstance instance,
327
+ NftId productNftId,
328
+ NftId policyNftId,
329
+ Amount premiumExpectedAmount,
330
+ NftId bundleNftId,
331
+ ReferralId referralId,
332
+ IPolicy.Premium memory premium
333
+ )
334
+ internal
335
+ virtual
336
+ returns (Amount premiumPaidAmount)
337
+ {
338
+ InstanceReader instanceReader = instance.getInstanceReader();
339
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
340
+ address policyHolder = getRegistry().ownerOf(policyNftId);
341
+ premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
342
+
343
+ _checkPremiumBalanceAndAllowance(
344
+ tokenHandler,
345
+ policyHolder,
346
+ premiumExpectedAmount,
347
+ premiumPaidAmount);
348
+
349
+ _processSaleAndTransferFunds(
350
+ instanceReader,
351
+ instance.getInstanceStore(),
352
+ tokenHandler,
353
+ policyHolder,
354
+ productNftId,
355
+ bundleNftId,
356
+ referralId,
357
+ premium);
358
+ }
359
+
360
+
361
+ function _checkPremiumBalanceAndAllowance(
362
+ TokenHandler tokenHandler,
363
+ address policyHolder,
364
+ Amount premiumExpectedAmount,
365
+ Amount premiumPaidAmount
366
+ )
367
+ internal
368
+ virtual
369
+ view
370
+ {
371
+ // TODO decide how to handle this properly
372
+ // not clear if this is the best way to handle this
373
+ if (premiumExpectedAmount < premiumPaidAmount) {
374
+ revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
375
+ }
376
+
377
+ uint256 premiumAmount = premiumPaidAmount.toInt();
378
+ uint256 balance = tokenHandler.getToken().balanceOf(policyHolder);
379
+ uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
380
+
381
+ if (balance < premiumAmount) {
382
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
383
+ }
384
+
385
+ if (allowance < premiumAmount) {
386
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
387
+ }
388
+ }
389
+
390
+
391
+ function _processSaleAndTransferFunds(
392
+ InstanceReader instanceReader,
393
+ InstanceStore instanceStore,
394
+ TokenHandler tokenHandler,
395
+ address policyHolder,
396
+ NftId productNftId,
397
+ NftId bundleNftId,
398
+ ReferralId referralId,
399
+ IPolicy.Premium memory premium
400
+ )
401
+ internal
402
+ virtual
403
+ {
404
+ (
405
+ NftId distributionNftId,
406
+ address distributionWallet,
407
+ address poolWallet,
408
+ address productWallet
409
+ ) = _getDistributionNftAndWallets(
410
+ instanceReader,
411
+ productNftId);
412
+
413
+ // update product fees, distribution and pool fees
414
+ _componentService.increaseProductFees(
415
+ instanceStore,
416
+ productNftId,
417
+ AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
418
+
419
+ // update distribution fees and distributor commission and pool fees
420
+ _distributionService.processSale(
421
+ distributionNftId,
422
+ referralId,
423
+ premium);
424
+
425
+ // update pool and bundle fees
426
+ _poolService.processSale(
427
+ bundleNftId,
428
+ premium);
429
+
430
+ // transfer premium amounts to target wallets
431
+ tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
432
+ tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
433
+ tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
434
+ }
435
+
436
+
437
+ function _getTokenHandlerAndProductWallet(
438
+ InstanceReader instanceReader,
439
+ NftId productNftId
440
+ )
441
+ internal
442
+ virtual
443
+ view
444
+ returns (
445
+ TokenHandler tokenHandler
446
+ )
447
+ {
448
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
449
+ }
450
+
451
+ function _getDistributionNftAndWallets(
452
+ InstanceReader instanceReader,
453
+ NftId productNftId
454
+ )
455
+ internal
456
+ virtual
457
+ view returns (
458
+ NftId distributionNftId,
459
+ address distributionWallet,
460
+ address poolWallet,
461
+ address productWallet
462
+ )
463
+ {
464
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
465
+ distributionNftId = productInfo.distributionNftId;
466
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
467
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
468
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
469
+ }
470
+
471
+
472
+ function _getDomain() internal pure override returns(ObjectType) {
473
+ return POLICY();
474
+ }
475
+ }