@etherisc/gif-next 0.0.2-c34d8ab-035 → 0.0.2-c37bcc5-708

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 (582) hide show
  1. package/README.md +76 -14
  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 +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -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 +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +567 -246
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +343 -173
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +532 -3076
  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 +726 -308
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +566 -268
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +380 -78
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3642 -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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +79 -3
  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 +256 -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 +662 -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 +997 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -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} +297 -358
  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 +1065 -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 +1432 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -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} +233 -200
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -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} +259 -284
  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} +111 -166
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -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 +679 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -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 +521 -59
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +438 -200
  118. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  120. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/Registry.sol/Registry.json +828 -311
  122. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  124. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -352
  126. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +339 -134
  128. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  129. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  130. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  131. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  132. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  133. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  134. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  136. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  144. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  145. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  146. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  148. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  150. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +225 -180
  152. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  153. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  154. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  156. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  158. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  160. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  162. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  164. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  166. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  170. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  172. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  174. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  175. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  176. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IService.sol/IService.json +88 -176
  178. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  180. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  181. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  182. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  183. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  184. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  185. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  186. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  188. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  189. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  190. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  192. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  194. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  200. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Service.sol/Service.json +191 -165
  202. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  204. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  205. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  206. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  208. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  210. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  214. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  216. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  218. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  220. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  222. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  224. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  226. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  227. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  228. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  230. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  238. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  240. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  242. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  244. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  245. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  246. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  248. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  250. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  252. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  254. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  256. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  258. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  260. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  262. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  264. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  266. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  267. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  268. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  270. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  272. package/contracts/distribution/Distribution.sol +261 -0
  273. package/contracts/distribution/DistributionService.sol +298 -0
  274. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  275. package/contracts/distribution/IDistributionComponent.sol +66 -0
  276. package/contracts/distribution/IDistributionService.sol +81 -0
  277. package/contracts/instance/BundleManager.sol +126 -0
  278. package/contracts/instance/IInstance.sol +70 -16
  279. package/contracts/instance/IInstanceService.sol +64 -13
  280. package/contracts/instance/Instance.sol +157 -363
  281. package/contracts/instance/InstanceAdmin.sol +331 -0
  282. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  283. package/contracts/instance/InstanceReader.sol +172 -72
  284. package/contracts/instance/InstanceService.sol +309 -85
  285. package/contracts/instance/InstanceServiceManager.sol +12 -24
  286. package/contracts/instance/InstanceStore.sol +281 -0
  287. package/contracts/instance/base/BalanceStore.sol +118 -0
  288. package/contracts/instance/base/Cloneable.sol +51 -0
  289. package/contracts/instance/base/ObjectCounter.sol +21 -0
  290. package/contracts/instance/base/ObjectManager.sol +82 -0
  291. package/contracts/instance/module/IAccess.sol +29 -21
  292. package/contracts/instance/module/IBundle.sol +8 -7
  293. package/contracts/instance/module/IComponents.sol +52 -0
  294. package/contracts/instance/module/IDistribution.sol +7 -4
  295. package/contracts/instance/module/IPolicy.sol +56 -17
  296. package/contracts/instance/module/IRisk.sol +1 -1
  297. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  298. package/contracts/oracle/IOracle.sol +20 -0
  299. package/contracts/oracle/IOracleComponent.sol +32 -0
  300. package/contracts/oracle/IOracleService.sol +65 -0
  301. package/contracts/oracle/Oracle.sol +145 -0
  302. package/contracts/oracle/OracleService.sol +277 -0
  303. package/contracts/oracle/OracleServiceManager.sol +42 -0
  304. package/contracts/pool/BundleService.sol +296 -0
  305. package/contracts/pool/BundleServiceManager.sol +42 -0
  306. package/contracts/pool/IBundleService.sol +106 -0
  307. package/contracts/pool/IPoolComponent.sol +112 -0
  308. package/contracts/pool/IPoolService.sol +150 -0
  309. package/contracts/pool/Pool.sol +299 -0
  310. package/contracts/pool/PoolService.sol +453 -0
  311. package/contracts/pool/PoolServiceManager.sol +42 -0
  312. package/contracts/product/ApplicationService.sol +254 -0
  313. package/contracts/product/ApplicationServiceManager.sol +38 -0
  314. package/contracts/product/ClaimService.sol +442 -0
  315. package/contracts/product/ClaimServiceManager.sol +38 -0
  316. package/contracts/product/IApplicationService.sol +62 -0
  317. package/contracts/product/IClaimService.sol +99 -0
  318. package/contracts/product/IPolicyService.sol +78 -0
  319. package/contracts/product/IPricingService.sol +39 -0
  320. package/contracts/product/IProductComponent.sol +42 -0
  321. package/contracts/product/IProductService.sol +33 -0
  322. package/contracts/product/PolicyService.sol +475 -0
  323. package/contracts/product/PolicyServiceManager.sol +42 -0
  324. package/contracts/product/PricingService.sol +301 -0
  325. package/contracts/product/PricingServiceManager.sol +42 -0
  326. package/contracts/product/Product.sol +377 -0
  327. package/contracts/product/ProductService.sol +124 -0
  328. package/contracts/product/ProductServiceManager.sol +42 -0
  329. package/contracts/registry/ChainNft.sol +15 -0
  330. package/contracts/registry/IRegistry.sol +79 -13
  331. package/contracts/registry/IRegistryService.sol +51 -17
  332. package/contracts/registry/ITransferInterceptor.sol +1 -0
  333. package/contracts/registry/Registry.sol +397 -244
  334. package/contracts/registry/RegistryAdmin.sol +237 -0
  335. package/contracts/registry/RegistryService.sol +122 -300
  336. package/contracts/registry/RegistryServiceManager.sol +26 -32
  337. package/contracts/registry/ReleaseManager.sol +600 -0
  338. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  339. package/contracts/registry/TokenRegistry.sol +315 -0
  340. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +276 -232
  341. package/contracts/shared/AccessManagerExtended.sol +470 -0
  342. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  343. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  344. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  345. package/contracts/shared/Component.sol +281 -0
  346. package/contracts/shared/ComponentService.sol +618 -0
  347. package/contracts/shared/ComponentServiceManager.sol +35 -0
  348. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  349. package/contracts/shared/ERC165.sol +15 -9
  350. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  351. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  352. package/contracts/shared/IComponent.sol +70 -0
  353. package/contracts/shared/IComponentService.sol +102 -0
  354. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  355. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  356. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  357. package/contracts/shared/INftOwnable.sol +13 -12
  358. package/contracts/shared/IPolicyHolder.sol +45 -0
  359. package/contracts/shared/IRegisterable.sol +4 -6
  360. package/contracts/shared/IRegistryLinked.sol +11 -0
  361. package/contracts/shared/IService.sol +8 -5
  362. package/contracts/shared/IVersionable.sol +5 -48
  363. package/contracts/shared/InitializableCustom.sol +177 -0
  364. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  365. package/contracts/shared/KeyValueStore.sol +127 -0
  366. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  367. package/contracts/shared/NftIdSetManager.sol +65 -0
  368. package/contracts/shared/NftOwnable.sol +60 -89
  369. package/contracts/shared/PolicyHolder.sol +102 -0
  370. package/contracts/shared/ProxyManager.sol +131 -26
  371. package/contracts/shared/Registerable.sol +26 -40
  372. package/contracts/shared/RegistryLinked.sol +43 -0
  373. package/contracts/shared/Service.sol +47 -24
  374. package/contracts/shared/TokenHandler.sol +37 -6
  375. package/contracts/shared/Versionable.sol +4 -92
  376. package/contracts/staking/IStaking.sol +168 -0
  377. package/contracts/staking/IStakingService.sol +149 -0
  378. package/contracts/staking/StakeManagerLib.sol +179 -0
  379. package/contracts/staking/Staking.sol +551 -0
  380. package/contracts/staking/StakingManager.sol +54 -0
  381. package/contracts/staking/StakingReader.sol +187 -0
  382. package/contracts/staking/StakingService.sol +406 -0
  383. package/contracts/staking/StakingServiceManager.sol +45 -0
  384. package/contracts/staking/StakingStore.sol +572 -0
  385. package/contracts/staking/TargetManagerLib.sol +207 -0
  386. package/contracts/{types → type}/AddressSet.sol +1 -1
  387. package/contracts/type/Amount.sol +128 -0
  388. package/contracts/{types → type}/Blocknumber.sol +21 -3
  389. package/contracts/type/ClaimId.sol +75 -0
  390. package/contracts/{types → type}/DistributorType.sol +2 -2
  391. package/contracts/{types → type}/Fee.sol +33 -23
  392. package/contracts/{types → type}/NftId.sol +21 -15
  393. package/contracts/type/NftIdSet.sol +62 -0
  394. package/contracts/{types → type}/ObjectType.sol +32 -16
  395. package/contracts/type/PayoutId.sol +82 -0
  396. package/contracts/{types → type}/Referral.sol +5 -1
  397. package/contracts/type/RequestId.sol +75 -0
  398. package/contracts/{types → type}/RiskId.sol +1 -1
  399. package/contracts/type/RoleId.sol +146 -0
  400. package/contracts/type/Seconds.sol +81 -0
  401. package/contracts/{types → type}/StateId.sol +38 -4
  402. package/contracts/{types → type}/Timestamp.sol +23 -14
  403. package/contracts/{types → type}/UFixed.sol +1 -0
  404. package/contracts/{types → type}/Version.sol +6 -2
  405. package/package.json +6 -5
  406. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  407. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  408. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  409. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  410. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  411. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  412. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  413. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  414. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  415. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  416. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  417. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  418. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  419. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  420. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  421. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  422. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  423. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  424. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  425. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  426. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  427. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  428. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  430. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  432. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  434. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  436. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  438. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  440. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  442. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  444. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  445. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  446. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  447. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  448. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  449. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  450. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  451. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  453. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  455. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  457. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  459. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  461. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  462. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  463. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  464. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  465. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  466. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  467. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  469. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  470. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  472. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  474. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  475. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  476. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  478. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  479. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  480. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  481. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  482. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  483. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  485. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  486. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  487. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  488. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  489. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  490. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  491. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  492. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  493. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  494. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  495. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  496. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  497. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  498. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  499. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  500. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  501. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  502. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  503. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  504. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  505. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  507. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  509. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  511. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  512. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  513. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  514. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  515. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  516. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  517. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  518. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  519. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  520. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  521. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  522. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  523. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  524. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  525. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  526. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  527. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  528. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  529. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  530. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  532. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  533. package/contracts/components/BaseComponent.sol +0 -86
  534. package/contracts/components/Distribution.sol +0 -166
  535. package/contracts/components/IBaseComponent.sol +0 -24
  536. package/contracts/components/IDistributionComponent.sol +0 -43
  537. package/contracts/components/IPoolComponent.sol +0 -62
  538. package/contracts/components/IProductComponent.sol +0 -35
  539. package/contracts/components/Pool.sol +0 -259
  540. package/contracts/components/Product.sol +0 -297
  541. package/contracts/experiment/cloning/Cloner.sol +0 -47
  542. package/contracts/experiment/errors/Require.sol +0 -38
  543. package/contracts/experiment/errors/Revert.sol +0 -44
  544. package/contracts/experiment/inheritance/A.sol +0 -53
  545. package/contracts/experiment/inheritance/B.sol +0 -28
  546. package/contracts/experiment/inheritance/C.sol +0 -34
  547. package/contracts/experiment/inheritance/IA.sol +0 -13
  548. package/contracts/experiment/inheritance/IB.sol +0 -10
  549. package/contracts/experiment/inheritance/IC.sol +0 -12
  550. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  551. package/contracts/experiment/statemachine/ISM.sol +0 -25
  552. package/contracts/experiment/statemachine/SM.sol +0 -57
  553. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  554. package/contracts/experiment/types/TypeA.sol +0 -47
  555. package/contracts/experiment/types/TypeB.sol +0 -29
  556. package/contracts/instance/AccessManagedSimple.sol +0 -122
  557. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  558. package/contracts/instance/InstanceAccessManager.sol +0 -288
  559. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  560. package/contracts/instance/base/IInstanceBase.sol +0 -23
  561. package/contracts/instance/base/KeyValueStore.sol +0 -172
  562. package/contracts/instance/module/ISetup.sol +0 -43
  563. package/contracts/instance/module/ITreasury.sol +0 -23
  564. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  565. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  566. package/contracts/instance/service/IDistributionService.sol +0 -12
  567. package/contracts/instance/service/IPoolService.sol +0 -37
  568. package/contracts/instance/service/IProductService.sol +0 -107
  569. package/contracts/shared/ContractDeployerLib.sol +0 -72
  570. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  571. package/contracts/test/TestFee.sol +0 -25
  572. package/contracts/test/TestRegisterable.sol +0 -18
  573. package/contracts/test/TestRoleId.sol +0 -14
  574. package/contracts/test/TestService.sol +0 -24
  575. package/contracts/test/TestToken.sol +0 -26
  576. package/contracts/test/TestVersion.sol +0 -44
  577. package/contracts/test/TestVersionable.sol +0 -17
  578. package/contracts/types/ChainId.sol +0 -38
  579. package/contracts/types/NftIdSet.sol +0 -60
  580. package/contracts/types/NumberId.sol +0 -52
  581. package/contracts/types/RoleId.sol +0 -82
  582. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,442 @@
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 "./IApplicationService.sol";
6
+
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IProductComponent} from "./IProductComponent.sol";
10
+ import {Product} from "./Product.sol";
11
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
12
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
13
+ import {IInstance} from "../instance/IInstance.sol";
14
+ import {IPolicy} from "../instance/module/IPolicy.sol";
15
+ import {IRisk} from "../instance/module/IRisk.sol";
16
+ import {IBundle} from "../instance/module/IBundle.sol";
17
+ import {IProductService} from "./IProductService.sol";
18
+
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
20
+
21
+ import {IVersionable} from "../shared/IVersionable.sol";
22
+ import {Versionable} from "../shared/Versionable.sol";
23
+
24
+ import {Amount, AmountLib} from "../type/Amount.sol";
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../type/ObjectType.sol";
29
+ import {SUBMITTED, ACTIVE, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
30
+ import {NftId, NftIdLib} from "../type/NftId.sol";
31
+ import {Fee, FeeLib} from "../type/Fee.sol";
32
+ import {ReferralId} from "../type/Referral.sol";
33
+ import {RiskId} from "../type/RiskId.sol";
34
+ import {StateId} from "../type/StateId.sol";
35
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
36
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
37
+ import {Version, VersionLib} from "../type/Version.sol";
38
+
39
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IBundleService} from "../pool/IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "../pool/IPoolService.sol";
44
+ import {IService} from "../shared/IService.sol";
45
+ import {Service} from "../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentVerifyingService,
50
+ IClaimService
51
+ {
52
+
53
+ IPoolService internal _poolService;
54
+
55
+ function _initialize(
56
+ address owner,
57
+ bytes memory data
58
+ )
59
+ internal
60
+ virtual override
61
+ initializer()
62
+ {
63
+ (
64
+ address registryAddress,,
65
+ //address managerAddress
66
+ address authority
67
+ ) = abi.decode(data, (address, address, address));
68
+
69
+ initializeService(registryAddress, authority, owner);
70
+
71
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
72
+
73
+ registerInterface(type(IClaimService).interfaceId);
74
+ }
75
+
76
+
77
+ function getDomain() public pure override returns(ObjectType) {
78
+ return CLAIM();
79
+ }
80
+
81
+ function submit(
82
+ NftId policyNftId,
83
+ Amount claimAmount,
84
+ bytes memory claimData // claim submission data
85
+ )
86
+ external
87
+ virtual
88
+ returns (ClaimId claimId)
89
+ {
90
+ (
91
+ IInstance instance,
92
+ InstanceReader instanceReader,
93
+ IPolicy.PolicyInfo memory policyInfo
94
+ ) = _verifyCallerWithPolicy(policyNftId);
95
+
96
+ // check policy is in its active period
97
+ if(policyInfo.activatedAt.eqz() || TimestampLib.blockTimestamp() >= policyInfo.expiredAt) {
98
+ revert ErrorClaimServicePolicyNotOpen(policyNftId);
99
+ }
100
+
101
+ // check policy including this claim is still within sum insured
102
+ if(policyInfo.payoutAmount + claimAmount > policyInfo.sumInsuredAmount) {
103
+ revert ErrorClaimServiceClaimExceedsSumInsured(
104
+ policyNftId,
105
+ policyInfo.sumInsuredAmount,
106
+ AmountLib.toAmount(policyInfo.payoutAmount.toInt() + claimAmount.toInt()));
107
+ }
108
+
109
+ // create new claim
110
+ claimId = ClaimIdLib.toClaimId(policyInfo.claimsCount + 1);
111
+ instance.getInstanceStore().createClaim(
112
+ policyNftId,
113
+ claimId,
114
+ IPolicy.ClaimInfo(
115
+ claimAmount,
116
+ AmountLib.zero(), // paidAmount
117
+ 0, // payoutsCount
118
+ 0, // openPayoutsCount
119
+ claimData, // claim submission data
120
+ "", // claim processing data
121
+ TimestampLib.zero())); // closedAt
122
+
123
+ // update and save policy info with instance
124
+ policyInfo.claimsCount += 1;
125
+ policyInfo.openClaimsCount += 1;
126
+ // policy claim amount is only updated when claim is confirmed
127
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
128
+
129
+ emit LogClaimServiceClaimSubmitted(policyNftId, claimId, claimAmount);
130
+ }
131
+
132
+
133
+ function confirm(
134
+ NftId policyNftId,
135
+ ClaimId claimId,
136
+ Amount confirmedAmount,
137
+ bytes memory data // claim processing data
138
+ )
139
+ external
140
+ virtual
141
+ {
142
+ (
143
+ IInstance instance,
144
+ InstanceReader instanceReader,
145
+ IPolicy.PolicyInfo memory policyInfo
146
+ ) = _verifyCallerWithPolicy(policyNftId);
147
+
148
+ // check/update claim info
149
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
150
+ claimInfo.claimAmount = confirmedAmount;
151
+ claimInfo.processData = data;
152
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
153
+
154
+ // update and save policy info with instance
155
+ policyInfo.claimAmount = policyInfo.claimAmount + confirmedAmount;
156
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
157
+
158
+ emit LogClaimServiceClaimConfirmed(policyNftId, claimId, confirmedAmount);
159
+ }
160
+
161
+ function decline(
162
+ NftId policyNftId,
163
+ ClaimId claimId,
164
+ bytes memory data // claim processing data
165
+ )
166
+ external
167
+ virtual
168
+ {
169
+ (
170
+ IInstance instance,
171
+ InstanceReader instanceReader,
172
+ IPolicy.PolicyInfo memory policyInfo
173
+ ) = _verifyCallerWithPolicy(policyNftId);
174
+
175
+ // check/update claim info
176
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
177
+ claimInfo.processData = data;
178
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
179
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
180
+
181
+ // update and save policy info with instance
182
+ policyInfo.openClaimsCount -= 1;
183
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
184
+
185
+ emit LogClaimServiceClaimDeclined(policyNftId, claimId);
186
+ }
187
+
188
+ function close(
189
+ NftId policyNftId,
190
+ ClaimId claimId
191
+ )
192
+ external
193
+ virtual
194
+ {
195
+ (
196
+ IInstance instance,
197
+ InstanceReader instanceReader,
198
+ IPolicy.PolicyInfo memory policyInfo
199
+ ) = _verifyCallerWithPolicy(policyNftId);
200
+
201
+ // check/update claim info
202
+ IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, CONFIRMED());
203
+
204
+ // check claim has no open payouts
205
+ if(claimInfo.openPayoutsCount > 0) {
206
+ revert ErrorClaimServiceClaimWithOpenPayouts(
207
+ policyNftId,
208
+ claimId,
209
+ claimInfo.openPayoutsCount);
210
+ }
211
+
212
+ // check claim paid amount matches with claim amount
213
+ if(claimInfo.paidAmount.toInt() < claimInfo.claimAmount.toInt()) {
214
+ revert ErrorClaimServiceClaimWithMissingPayouts(
215
+ policyNftId,
216
+ claimId,
217
+ claimInfo.claimAmount,
218
+ claimInfo.paidAmount);
219
+ }
220
+
221
+ claimInfo.closedAt = TimestampLib.blockTimestamp();
222
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
223
+ }
224
+
225
+
226
+ function createPayout(
227
+ NftId policyNftId,
228
+ ClaimId claimId,
229
+ Amount amount,
230
+ bytes memory data
231
+ )
232
+ external
233
+ returns (PayoutId payoutId)
234
+ {
235
+ (
236
+ IInstance instance,
237
+ InstanceReader instanceReader,
238
+ IPolicy.PolicyInfo memory policyInfo
239
+ ) = _verifyCallerWithPolicy(policyNftId);
240
+
241
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
242
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
243
+
244
+ // TODO add checks
245
+ // claim needs to be open
246
+ // claim.paidAmount + amount <= claim.claimAmount
247
+
248
+ // check/update claim info
249
+ // create payout info with instance
250
+ uint8 claimNo = claimInfo.payoutsCount + 1;
251
+ payoutId = PayoutIdLib.toPayoutId(claimId, claimNo);
252
+ instance.getInstanceStore().createPayout(
253
+ policyNftId,
254
+ payoutId,
255
+ IPolicy.PayoutInfo(
256
+ payoutId.toClaimId(),
257
+ amount,
258
+ data,
259
+ TimestampLib.zero()));
260
+
261
+ // update and save claim info with instance
262
+ claimInfo.payoutsCount += 1;
263
+ claimInfo.openPayoutsCount += 1;
264
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
265
+
266
+ // update and save policy info with instance
267
+ policyInfo.payoutAmount.add(amount);
268
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
269
+
270
+ emit LogClaimServicePayoutCreated(policyNftId, payoutId, amount);
271
+ }
272
+
273
+
274
+ function processPayout(
275
+ NftId policyNftId,
276
+ PayoutId payoutId
277
+ )
278
+ external
279
+ virtual
280
+ {
281
+ (
282
+ IInstance instance,
283
+ InstanceReader instanceReader,
284
+ IPolicy.PolicyInfo memory policyInfo
285
+ ) = _verifyCallerWithPolicy(policyNftId);
286
+
287
+ // TODO add check that payout exists and is open
288
+ IPolicy.PayoutInfo memory payoutInfo = instanceReader.getPayoutInfo(policyNftId, payoutId);
289
+
290
+ // update and save payout info with instance
291
+ payoutInfo.paidAt = TimestampLib.blockTimestamp();
292
+ instance.getInstanceStore().updatePayout(policyNftId, payoutId, payoutInfo, PAID());
293
+
294
+ // TODO update and save claim info with instance
295
+ ClaimId claimId = payoutId.toClaimId();
296
+ Amount payoutAmount = payoutInfo.amount;
297
+ IPolicy.ClaimInfo memory claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
298
+ claimInfo.paidAmount = claimInfo.paidAmount.add(payoutAmount);
299
+ claimInfo.openPayoutsCount -= 1;
300
+
301
+ // check if this payout is closing the linked claim
302
+ // update claim and policy info accordingly
303
+ if(claimInfo.openPayoutsCount == 0 && claimInfo.paidAmount == claimInfo.claimAmount) {
304
+ claimInfo.closedAt == TimestampLib.blockTimestamp();
305
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CLOSED());
306
+
307
+ policyInfo.openClaimsCount -= 1;
308
+ } else {
309
+ instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, KEEP_STATE());
310
+ }
311
+
312
+ // update and save policy info with instance
313
+ policyInfo.payoutAmount = policyInfo.payoutAmount.add(payoutAmount);
314
+ instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
315
+
316
+ // inform pool about payout
317
+ _poolService.reduceCollateral(
318
+ instance,
319
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
320
+ policyNftId,
321
+ policyInfo,
322
+ payoutAmount);
323
+
324
+ // transfer payout token and fee
325
+ (
326
+ Amount netPayoutAmount,
327
+ address beneficiary
328
+ ) = _transferPayoutAmount(
329
+ instanceReader,
330
+ policyNftId,
331
+ policyInfo,
332
+ payoutInfo);
333
+
334
+ // TODO callback IPolicyHolder
335
+
336
+ emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
337
+ }
338
+
339
+ // TODO create (I)TreasuryService that deals with all gif related token transfers
340
+ function _transferPayoutAmount(
341
+ InstanceReader instanceReader,
342
+ NftId policyNftId,
343
+ IPolicy.PolicyInfo memory policyInfo,
344
+ IPolicy.PayoutInfo memory payoutInfo
345
+ )
346
+ internal
347
+ returns (
348
+ Amount netPayoutAmount,
349
+ address beneficiary
350
+ )
351
+ {
352
+ Amount payoutAmount = payoutInfo.amount;
353
+
354
+ if(payoutAmount.gtz()) {
355
+ NftId productNftId = policyInfo.productNftId;
356
+
357
+ // get pool component info from policy or product
358
+ NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
359
+ IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
360
+
361
+ netPayoutAmount = payoutAmount;
362
+ beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
363
+
364
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
365
+ if(FeeLib.gtz(productInfo.processingFee)) {
366
+ // TODO calculate net payout and processing fees
367
+ // TODO transfer processing fees to product wallet
368
+ // TODO inform product to update fee book keeping
369
+ }
370
+
371
+ poolInfo.tokenHandler.transfer(
372
+ poolInfo.wallet,
373
+ beneficiary,
374
+ netPayoutAmount);
375
+ }
376
+ }
377
+
378
+ // internal functions
379
+
380
+ function _getBeneficiary(
381
+ NftId policyNftId,
382
+ ClaimId claimId
383
+ )
384
+ internal
385
+ returns (address beneficiary)
386
+ {
387
+ // TODO check if owner is IPolicyHolder
388
+ // if so, obtain beneficiary from this contract
389
+
390
+ // default beneficiary is policy nft owner
391
+ beneficiary = getRegistry().ownerOf(policyNftId);
392
+ }
393
+
394
+
395
+ function _verifyCallerWithPolicy(
396
+ NftId policyNftId
397
+ )
398
+ internal
399
+ view
400
+ virtual
401
+ returns (
402
+ IInstance instance,
403
+ InstanceReader instanceReader,
404
+ IPolicy.PolicyInfo memory policyInfo
405
+ )
406
+ {
407
+ NftId productNftId;
408
+ (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
409
+ instanceReader = instance.getInstanceReader();
410
+
411
+ // check caller(product) policy match
412
+ policyInfo = instanceReader.getPolicyInfo(policyNftId);
413
+ if(policyInfo.productNftId != productNftId) {
414
+ revert ErrorClaimServicePolicyProductMismatch(policyNftId,
415
+ policyInfo.productNftId,
416
+ productNftId);
417
+ }
418
+ }
419
+
420
+ function _verifyClaim(
421
+ InstanceReader instanceReader,
422
+ NftId policyNftId,
423
+ ClaimId claimId,
424
+ StateId expectedState
425
+ )
426
+ internal
427
+ view
428
+ returns (
429
+ IPolicy.ClaimInfo memory claimInfo
430
+ )
431
+ {
432
+ // check claim is created state
433
+ StateId claimState = instanceReader.getClaimState(policyNftId, claimId);
434
+ if(claimState != expectedState) {
435
+ revert ErrorClaimServiceClaimNotInExpectedState(
436
+ policyNftId, claimId, expectedState, claimState);
437
+ }
438
+
439
+ // get claim info
440
+ claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
441
+ }
442
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ ClaimService svc = new ClaimService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _claimService = ClaimService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getClaimService()
32
+ external
33
+ view
34
+ returns (ClaimService)
35
+ {
36
+ return _claimService;
37
+ }
38
+ }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../instance/module/IPolicy.sol";
5
+ import {IService} from "../shared/IService.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {ReferralId} from "../type/Referral.sol";
11
+ import {RiskId} from "../type/RiskId.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
13
+
14
+ /// @dev gif service responsible for creating applications
15
+ /// only product components may call transaction functions
16
+ interface IApplicationService is IService {
17
+
18
+ error ErrorApplicationServiceNotProduct(NftId callerNftId, ObjectType callerType);
19
+ error ErrorApplicationServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
20
+
21
+ /// @dev creates a new application based on the specified attributes
22
+ /// may only be called by a product component
23
+ function create(
24
+ address applicationOwner,
25
+ RiskId riskId,
26
+ Amount sumInsuredAmount,
27
+ Seconds lifetime,
28
+ NftId bundleNftId,
29
+ ReferralId referralId,
30
+ bytes memory applicationData
31
+ ) external returns (NftId applicationNftId);
32
+
33
+ /// @dev updates application attributes
34
+ /// may only be called while the application is in applied state
35
+ /// may only be called by the referenced product related to applicationNftId
36
+ function adjust(
37
+ NftId applicationNftId,
38
+ RiskId riskId,
39
+ NftId bundleNftId,
40
+ ReferralId referralId,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
43
+ bytes memory applicationData
44
+ ) external;
45
+
46
+ /// @dev creates a new application that extends the provided policy
47
+ /// lifetime will seamlessly extend referenced policy, for closed policies
48
+ /// lifetime will start at underwriting time
49
+ /// product will need to limit the time window for renewal as underwriting
50
+ /// will lock the collateral at underwriting time which might be earlier than activation time
51
+ /// policyNftId needs to refer to an underwritten (or active or closed) policy
52
+ /// may only be called by the referenced product related to policyNftId
53
+ function renew(
54
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
55
+ NftId bundleNftId // will likely need a newer bundle for underwriting
56
+ ) external returns (NftId applicationNftId);
57
+
58
+ /// @dev revokes the application represented by {policyNftId}
59
+ /// an application can only be revoked in applied state
60
+ /// only the application holder may revoke an application
61
+ function revoke(NftId policyNftId) external;
62
+ }
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {PayoutId} from "../type/PayoutId.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {StateId} from "../type/StateId.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+ import {Fee} from "../type/Fee.sol";
16
+
17
+ /// @dev gif service responsible for creating claims and payouts
18
+ /// only product components may call transaction functions
19
+ interface IClaimService is
20
+ IService
21
+ {
22
+
23
+ event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
+ event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
+ event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
+
28
+ event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+
31
+ error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
+ error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
+ error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
34
+
35
+ error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
36
+ error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
37
+ error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
38
+
39
+ /// @dev create a new claim for the specified policy
40
+ /// returns the id of the newly created claim
41
+ /// function can only be called by product, policy needs to match with calling product
42
+ function submit(
43
+ NftId policyNftId,
44
+ Amount claimAmount,
45
+ bytes memory claimData
46
+ ) external returns (ClaimId claimId);
47
+
48
+
49
+ // TODO add claim revoke functionality
50
+
51
+
52
+ /// @dev declines the specified claim
53
+ /// function can only be called by product, policy needs to match with calling product
54
+ function decline(
55
+ NftId policyNftId,
56
+ ClaimId claimId,
57
+ bytes memory data // claim processing data
58
+ ) external;
59
+
60
+
61
+ /// @dev confirms the specified claim and specifies the payout amount
62
+ /// function can only be called by product, policy needs to match with calling product
63
+ function confirm(
64
+ NftId policyNftId,
65
+ ClaimId claimId,
66
+ Amount confirmedAmount,
67
+ bytes memory data // claim processing data
68
+ ) external;
69
+
70
+
71
+ /// @dev closes the specified claim
72
+ /// function can only be called by product, policy needs to match with calling product
73
+ function close(
74
+ NftId policyNftId,
75
+ ClaimId claimId
76
+ ) external;
77
+
78
+
79
+ /// @dev creates a new payout for the specified claim
80
+ /// returns the id of the newly created payout, this id is unique for the specified policy
81
+ /// function can only be called by product, policy needs to match with calling product
82
+ function createPayout(
83
+ NftId policyNftId,
84
+ ClaimId claimId,
85
+ Amount amount,
86
+ bytes memory data
87
+ )
88
+ external
89
+ returns (PayoutId payoutId);
90
+
91
+
92
+ /// @dev processes the specified payout
93
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
94
+ /// function can only be called by product, policy needs to match with calling product
95
+ function processPayout(
96
+ NftId policyNftId,
97
+ PayoutId payoutId
98
+ ) external;
99
+ }