@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c5694-914

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 (444) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +151 -249
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -213
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +141 -198
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -107
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -66
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +310 -83
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +207 -241
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +132 -230
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +73 -61
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +86 -208
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -216
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +178 -187
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -58
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -125
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -203
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -274
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -221
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -11
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +131 -78
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +258 -195
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +114 -98
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +140 -221
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +285 -33
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  169. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -94
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  185. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Component.sol/Component.json +68 -175
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +73 -61
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  211. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +86 -208
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -29
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +171 -224
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +102 -87
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  263. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  288. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  290. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  301. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +55 -70
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  308. package/contracts/authorization/AccessAdmin.sol +64 -59
  309. package/contracts/authorization/Authorization.sol +111 -39
  310. package/contracts/authorization/IAccess.sol +1 -0
  311. package/contracts/authorization/IAccessAdmin.sol +4 -3
  312. package/contracts/authorization/IAuthorization.sol +13 -7
  313. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  314. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  316. package/contracts/distribution/BasicDistribution.sol +2 -1
  317. package/contracts/distribution/Distribution.sol +7 -17
  318. package/contracts/distribution/DistributionService.sol +63 -44
  319. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  320. package/contracts/distribution/IDistributionComponent.sol +1 -1
  321. package/contracts/examples/fire/DamageLevel.sol +59 -0
  322. package/contracts/examples/fire/FirePool.sol +73 -0
  323. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  324. package/contracts/examples/fire/FireProduct.sol +415 -0
  325. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  326. package/contracts/examples/fire/FireUSD.sol +26 -0
  327. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  328. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  329. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  330. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  331. package/contracts/instance/IInstance.sol +10 -30
  332. package/contracts/instance/IInstanceService.sol +0 -20
  333. package/contracts/instance/Instance.sol +29 -51
  334. package/contracts/instance/InstanceAdmin.sol +23 -31
  335. package/contracts/instance/InstanceAuthorizationV3.sol +10 -19
  336. package/contracts/instance/InstanceReader.sol +91 -18
  337. package/contracts/instance/InstanceService.sol +23 -77
  338. package/contracts/instance/InstanceServiceManager.sol +6 -7
  339. package/contracts/instance/InstanceStore.sol +0 -4
  340. package/contracts/instance/base/ObjectLifecycle.sol +2 -1
  341. package/contracts/instance/module/IComponents.sol +10 -5
  342. package/contracts/instance/module/IPolicy.sol +7 -7
  343. package/contracts/oracle/BasicOracle.sol +0 -1
  344. package/contracts/oracle/IOracleService.sol +2 -1
  345. package/contracts/oracle/Oracle.sol +6 -16
  346. package/contracts/oracle/OracleService.sol +47 -34
  347. package/contracts/oracle/OracleServiceManager.sol +6 -6
  348. package/contracts/pool/BasicPool.sol +14 -26
  349. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  350. package/contracts/pool/BundleService.sol +83 -28
  351. package/contracts/pool/BundleServiceManager.sol +6 -6
  352. package/contracts/pool/IBundleService.sol +9 -0
  353. package/contracts/pool/IPoolComponent.sol +18 -8
  354. package/contracts/pool/IPoolService.sol +21 -14
  355. package/contracts/pool/Pool.sol +48 -39
  356. package/contracts/pool/PoolService.sol +121 -86
  357. package/contracts/pool/PoolServiceManager.sol +4 -4
  358. package/contracts/product/ApplicationService.sol +20 -10
  359. package/contracts/product/ApplicationServiceManager.sol +4 -4
  360. package/contracts/product/BasicProduct.sol +7 -6
  361. package/contracts/product/BasicProductAuthorization.sol +0 -1
  362. package/contracts/product/ClaimService.sol +310 -114
  363. package/contracts/product/ClaimServiceManager.sol +4 -4
  364. package/contracts/product/IClaimService.sol +30 -7
  365. package/contracts/product/IPolicyService.sol +12 -5
  366. package/contracts/product/IPricingService.sol +9 -9
  367. package/contracts/product/IProductComponent.sol +23 -3
  368. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
  369. package/contracts/product/PolicyService.sol +168 -53
  370. package/contracts/product/PolicyServiceManager.sol +4 -4
  371. package/contracts/product/PricingService.sol +12 -13
  372. package/contracts/product/PricingServiceManager.sol +3 -3
  373. package/contracts/product/Product.sol +104 -55
  374. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  375. package/contracts/product/RiskServiceManager.sol +39 -0
  376. package/contracts/registry/ChainNft.sol +68 -38
  377. package/contracts/registry/IRegistry.sol +54 -17
  378. package/contracts/registry/IRegistryService.sol +5 -12
  379. package/contracts/registry/ITransferInterceptor.sol +1 -2
  380. package/contracts/registry/Registry.sol +341 -200
  381. package/contracts/registry/RegistryAdmin.sol +124 -50
  382. package/contracts/registry/RegistryService.sol +35 -46
  383. package/contracts/registry/RegistryServiceManager.sol +2 -2
  384. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  385. package/contracts/registry/ReleaseRegistry.sol +203 -187
  386. package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
  387. package/contracts/shared/Component.sol +29 -32
  388. package/contracts/shared/ComponentService.sol +241 -137
  389. package/contracts/shared/ComponentServiceManager.sol +8 -5
  390. package/contracts/shared/ComponentVerifyingService.sol +22 -13
  391. package/contracts/shared/ContractLib.sol +38 -0
  392. package/contracts/shared/IComponent.sol +6 -2
  393. package/contracts/shared/IComponentService.sol +25 -13
  394. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  395. package/contracts/shared/ILifecycle.sol +3 -1
  396. package/contracts/shared/INftOwnable.sol +2 -0
  397. package/contracts/shared/IPolicyHolder.sol +12 -22
  398. package/contracts/shared/IRegisterable.sol +11 -0
  399. package/contracts/shared/InitializableERC165.sol +2 -2
  400. package/contracts/shared/InstanceLinkedComponent.sol +71 -30
  401. package/contracts/shared/KeyValueStore.sol +1 -1
  402. package/contracts/shared/Lifecycle.sol +15 -4
  403. package/contracts/shared/NftOwnable.sol +26 -6
  404. package/contracts/shared/PolicyHolder.sol +15 -52
  405. package/contracts/shared/Registerable.sol +19 -9
  406. package/contracts/shared/RegistryLinked.sol +3 -2
  407. package/contracts/shared/Service.sol +20 -18
  408. package/contracts/staking/IStaking.sol +2 -1
  409. package/contracts/staking/IStakingService.sol +0 -3
  410. package/contracts/staking/StakeManagerLib.sol +18 -0
  411. package/contracts/staking/Staking.sol +8 -8
  412. package/contracts/staking/StakingManager.sol +8 -6
  413. package/contracts/staking/StakingReader.sol +12 -5
  414. package/contracts/staking/StakingService.sol +17 -17
  415. package/contracts/staking/StakingServiceManager.sol +2 -2
  416. package/contracts/staking/TargetManagerLib.sol +7 -3
  417. package/contracts/type/Amount.sol +15 -0
  418. package/contracts/type/ClaimId.sol +6 -1
  419. package/contracts/type/NftId.sol +1 -0
  420. package/contracts/type/ObjectType.sol +1 -0
  421. package/contracts/type/PayoutId.sol +10 -10
  422. package/contracts/type/RiskId.sol +15 -1
  423. package/contracts/type/RoleId.sol +0 -12
  424. package/contracts/type/Seconds.sol +8 -0
  425. package/contracts/type/StateId.sol +15 -1
  426. package/contracts/type/UFixed.sol +4 -0
  427. package/contracts/upgradeability/ProxyManager.sol +68 -34
  428. package/contracts/upgradeability/Versionable.sol +2 -2
  429. package/package.json +2 -1
  430. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  431. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  432. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  433. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  434. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  435. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  436. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  437. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  438. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  439. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  440. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  441. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  442. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  443. package/contracts/product/ProductServiceManager.sol +0 -39
  444. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -49,7 +49,6 @@ interface IPolicy {
49
49
  RiskId riskId;
50
50
  Amount sumInsuredAmount;
51
51
  Amount premiumAmount; // expected premium at application time
52
- Amount premiumPaidAmount; // actual paid premium
53
52
  Seconds lifetime;
54
53
  // policy application data, no changes after applying for a policy
55
54
  bytes applicationData;
@@ -67,10 +66,10 @@ interface IPolicy {
67
66
  struct ClaimInfo {
68
67
  Amount claimAmount;
69
68
  Amount paidAmount;
70
- uint8 payoutsCount;
71
- uint8 openPayoutsCount;
72
- bytes submissionData; // claim submission data, no changes after submitting the claim
73
- bytes processData; // data that may include information supporting confirm or decline
69
+ uint24 payoutsCount;
70
+ uint24 openPayoutsCount;
71
+ bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
72
+ bytes processData; // use case specific data that may include information supporting confirm or decline
74
73
  Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
75
74
  }
76
75
 
@@ -78,7 +77,8 @@ interface IPolicy {
78
77
  struct PayoutInfo {
79
78
  ClaimId claimId;
80
79
  Amount amount;
81
- bytes data;
82
- Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
80
+ address beneficiary; // for address(0) beneficiary is policy nft owner
81
+ bytes data; // use case specific supporting data
82
+ Timestamp paidAt; // timestamp for actual payout
83
83
  }
84
84
  }
@@ -42,7 +42,6 @@ contract BasicOracle is
42
42
  initialOwner,
43
43
  name,
44
44
  token,
45
- "",
46
45
  "");
47
46
  }
48
47
  }
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IService} from "../shared/IService.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
+ import {ObjectType} from "../type/ObjectType.sol";
6
7
  import {RequestId} from "../type/RequestId.sol";
7
8
  import {StateId} from "../type/StateId.sol";
8
9
  import {Timestamp} from "../type/Timestamp.sol";
@@ -17,7 +18,7 @@ interface IOracleService is IService {
17
18
  event LogOracleServiceRequestCancelled(RequestId requestId, NftId requesterNftId);
18
19
 
19
20
  // create request
20
- error ErrorOracleServiceInstanceMismatch(NftId expectedInstanceNftId, NftId oracleInstanceNftId);
21
+ error ErrorOracleServiceProductMismatch(ObjectType callerObjectType, NftId productNft, NftId oracleParentNftId);
21
22
  error ErrorOracleServiceExpiryInThePast(Timestamp blockTimestamp, Timestamp expiryAt);
22
23
  error ErrorOracleServiceCallbackMethodNameEmpty();
23
24
 
@@ -2,7 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
5
+ import {COMPONENT, PRODUCT, ORACLE} from "../type/ObjectType.sol";
6
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
@@ -27,15 +27,6 @@ abstract contract Oracle is
27
27
  }
28
28
 
29
29
 
30
- function register()
31
- external
32
- virtual
33
- onlyOwner()
34
- {
35
- _getOracleStorage()._componentService.registerOracle();
36
- }
37
-
38
-
39
30
  function request(
40
31
  RequestId requestId,
41
32
  NftId requesterId,
@@ -71,6 +62,7 @@ abstract contract Oracle is
71
62
  return false;
72
63
  }
73
64
 
65
+ /// @dev Not relevant for oracle components
74
66
  function withdrawFees(Amount amount)
75
67
  external
76
68
  virtual
@@ -85,12 +77,11 @@ abstract contract Oracle is
85
77
 
86
78
  function _initializeOracle(
87
79
  address registry,
88
- NftId instanceNftId,
80
+ NftId productNftId,
89
81
  IAuthorization authorization,
90
82
  address initialOwner,
91
83
  string memory name,
92
84
  address token,
93
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
94
85
  bytes memory componentData // component specifidc data
95
86
  )
96
87
  internal
@@ -99,21 +90,20 @@ abstract contract Oracle is
99
90
  {
100
91
  _initializeInstanceLinkedComponent(
101
92
  registry,
102
- instanceNftId,
93
+ productNftId,
103
94
  name,
104
95
  token,
105
96
  ORACLE(),
106
97
  authorization,
107
98
  true,
108
99
  initialOwner,
109
- registryData,
110
100
  componentData);
111
101
 
112
102
  OracleStorage storage $ = _getOracleStorage();
113
- $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
114
103
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
104
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
115
105
 
116
- registerInterface(type(IOracleComponent).interfaceId);
106
+ _registerInterface(type(IOracleComponent).interfaceId);
117
107
  }
118
108
 
119
109
 
@@ -11,7 +11,7 @@ import {IOracleComponent} from "./IOracleComponent.sol";
11
11
  import {IOracleService} from "./IOracleService.sol";
12
12
  import {IRegistry} from "../registry/IRegistry.sol";
13
13
  import {NftId} from "../type/NftId.sol";
14
- import {ObjectType, COMPONENT, ORACLE, INSTANCE} from "../type/ObjectType.sol";
14
+ import {ObjectType, COMPONENT, ORACLE, PRODUCT} from "../type/ObjectType.sol";
15
15
  import {RequestId} from "../type/RequestId.sol";
16
16
  import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
17
17
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
@@ -27,14 +27,16 @@ contract OracleService is
27
27
  bytes memory data
28
28
  )
29
29
  internal
30
- initializer
31
30
  virtual override
31
+ initializer()
32
32
  {
33
- address initialOwner;
34
- address registryAddress;
35
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
36
- initializeService(registryAddress, address(0), owner);
37
- registerInterface(type(IOracleService).interfaceId);
33
+ (
34
+ address registryAddress,
35
+ address authority
36
+ ) = abi.decode(data, (address, address));
37
+
38
+ _initializeService(registryAddress, authority, owner);
39
+ _registerInterface(type(IOracleService).interfaceId);
38
40
  }
39
41
 
40
42
  function request(
@@ -46,6 +48,7 @@ contract OracleService is
46
48
  external
47
49
  virtual
48
50
  // restricted() // add authz
51
+ onlyNftOfType(oracleNftId, ORACLE())
49
52
  returns (
50
53
  RequestId requestId
51
54
  )
@@ -64,35 +67,45 @@ contract OracleService is
64
67
  ORACLE(),
65
68
  true); // only active
66
69
 
67
- // check that requester and oracle share same instance
68
- if (componentInfo.parentNftId != oracleInfo.parentNftId) {
69
- revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
70
- }
70
+ {
71
+ // check that requester and oracle share same product cluster
72
+ if (componentInfo.objectType == PRODUCT()) {
73
+ if (oracleInfo.parentNftId != componentInfo.nftId) {
74
+ revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.nftId, oracleInfo.parentNftId);
75
+ }
76
+ } else {
77
+ if (oracleInfo.parentNftId != componentInfo.parentNftId) {
78
+ revert ErrorOracleServiceProductMismatch(componentInfo.objectType, componentInfo.parentNftId, oracleInfo.parentNftId);
79
+ }
80
+ }
71
81
 
72
- // check expiriyAt >= now
73
- if (expiryAt < TimestampLib.blockTimestamp()) {
74
- revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
75
- }
82
+ // check expiriyAt >= now
83
+ if (expiryAt < TimestampLib.blockTimestamp()) {
84
+ revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
85
+ }
76
86
 
77
- // check callbackMethodName.length > 0
78
- if (bytes(callbackMethodName).length == 0) {
79
- revert ErrorOracleServiceCallbackMethodNameEmpty();
87
+ // check callbackMethodName.length > 0
88
+ if (bytes(callbackMethodName).length == 0) {
89
+ revert ErrorOracleServiceCallbackMethodNameEmpty();
90
+ }
80
91
  }
81
92
 
82
- // create request info
83
- IOracle.RequestInfo memory request = IOracle.RequestInfo({
84
- requesterNftId: componentNftId,
85
- callbackMethodName: callbackMethodName,
86
- oracleNftId: oracleNftId,
87
- requestData: requestData,
88
- responseData: "",
89
- respondedAt: TimestampLib.zero(),
90
- expiredAt: expiryAt,
91
- isCancelled: false
92
- });
93
-
94
- // store request with instance
95
- requestId = instance.getInstanceStore().createRequest(request);
93
+ {
94
+ // create request info
95
+ IOracle.RequestInfo memory request = IOracle.RequestInfo({
96
+ requesterNftId: componentNftId,
97
+ callbackMethodName: callbackMethodName,
98
+ oracleNftId: oracleNftId,
99
+ requestData: requestData,
100
+ responseData: "",
101
+ respondedAt: TimestampLib.zero(),
102
+ expiredAt: expiryAt,
103
+ isCancelled: false
104
+ });
105
+
106
+ // store request with instance
107
+ requestId = instance.getInstanceStore().createRequest(request);
108
+ }
96
109
 
97
110
  // call oracle component
98
111
  IOracleComponent(oracleInfo.objectAddress).request(
@@ -214,7 +227,7 @@ contract OracleService is
214
227
 
215
228
  // call oracle component
216
229
  // TODO add check that oracle is active?
217
- address oracleAddress = getRegistry().getObjectInfo(request.oracleNftId).objectAddress;
230
+ address oracleAddress = getRegistry().getObjectAddress(request.oracleNftId);
218
231
  IOracleComponent(oracleAddress).cancel(requestId);
219
232
 
220
233
  emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
@@ -267,7 +280,7 @@ contract OracleService is
267
280
  returns(IInstance instance)
268
281
  {
269
282
  NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
270
- address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
283
+ address instanceAddress = getRegistry().getObjectAddress(instanceNftId);
271
284
  return IInstance(instanceAddress);
272
285
  }
273
286
 
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- OracleService orclSrv = new OracleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(orclSrv),
19
+ OracleService svc = new OracleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -1,22 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount, AmountLib} from "../type/Amount.sol";
5
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
6
- import {Fee, FeeLib} from "../type/Fee.sol";
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {Fee} from "../type/Fee.sol";
7
6
  import {IAuthorization} from "../authorization/IAuthorization.sol";
8
- import {IBundleService} from "./IBundleService.sol";
9
- import {IPoolComponent} from "./IPoolComponent.sol";
10
- import {IPoolService} from "./IPoolService.sol";
11
- import {IComponents} from "../instance/module/IComponents.sol";
12
- import {IComponentService} from "../shared/IComponentService.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
14
- import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
- import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {BUNDLE} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
16
10
  import {Seconds} from "../type/Seconds.sol";
17
11
  import {Timestamp} from "../type/Timestamp.sol";
18
- import {TokenHandler} from "../shared/TokenHandler.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
12
 
21
13
  import {Pool} from "./Pool.sol";
22
14
 
@@ -26,7 +18,7 @@ abstract contract BasicPool is
26
18
 
27
19
  function _initializeBasicPool(
28
20
  address registry,
29
- NftId instanceNftId,
21
+ NftId productNftId,
30
22
  IAuthorization authorization,
31
23
  address token,
32
24
  string memory name,
@@ -38,13 +30,12 @@ abstract contract BasicPool is
38
30
  {
39
31
  _initializePool(
40
32
  registry,
41
- instanceNftId,
33
+ productNftId,
42
34
  name,
43
35
  token,
44
36
  authorization,
45
37
  false, // isInterceptingNftTransfers,
46
38
  initialOwner,
47
- "", // registryData
48
39
  ""); // componentData
49
40
  }
50
41
 
@@ -56,6 +47,7 @@ abstract contract BasicPool is
56
47
  virtual
57
48
  restricted()
58
49
  onlyBundleOwner(bundleNftId)
50
+ onlyNftOfType(bundleNftId, BUNDLE())
59
51
  {
60
52
  _stake(bundleNftId, amount);
61
53
  }
@@ -69,6 +61,7 @@ abstract contract BasicPool is
69
61
  virtual
70
62
  restricted()
71
63
  onlyBundleOwner(bundleNftId)
64
+ onlyNftOfType(bundleNftId, BUNDLE())
72
65
  {
73
66
  _unstake(bundleNftId, amount);
74
67
  }
@@ -82,6 +75,7 @@ abstract contract BasicPool is
82
75
  virtual
83
76
  restricted()
84
77
  onlyBundleOwner(bundleNftId)
78
+ onlyNftOfType(bundleNftId, BUNDLE())
85
79
  returns(Timestamp newExpiredAt)
86
80
  {
87
81
  return _extend(bundleNftId, lifetimeExtension);
@@ -93,6 +87,7 @@ abstract contract BasicPool is
93
87
  virtual
94
88
  restricted()
95
89
  onlyBundleOwner(bundleNftId)
90
+ onlyNftOfType(bundleNftId, BUNDLE())
96
91
  {
97
92
  _lockBundle(bundleNftId);
98
93
  }
@@ -103,6 +98,7 @@ abstract contract BasicPool is
103
98
  virtual
104
99
  restricted()
105
100
  onlyBundleOwner(bundleNftId)
101
+ onlyNftOfType(bundleNftId, BUNDLE())
106
102
  {
107
103
  _unlockBundle(bundleNftId);
108
104
  }
@@ -113,6 +109,7 @@ abstract contract BasicPool is
113
109
  virtual
114
110
  restricted()
115
111
  onlyBundleOwner(bundleNftId)
112
+ onlyNftOfType(bundleNftId, BUNDLE())
116
113
  {
117
114
  _closeBundle(bundleNftId);
118
115
  }
@@ -126,6 +123,7 @@ abstract contract BasicPool is
126
123
  virtual
127
124
  restricted()
128
125
  onlyBundleOwner(bundleNftId)
126
+ onlyNftOfType(bundleNftId, BUNDLE())
129
127
  {
130
128
  _setBundleFee(bundleNftId, fee);
131
129
  }
@@ -141,16 +139,6 @@ abstract contract BasicPool is
141
139
  }
142
140
 
143
141
 
144
- function setBundleOwnerRole(RoleId bundleOwnerRole)
145
- public
146
- virtual
147
- restricted()
148
- onlyOwner()
149
- {
150
- _setBundleOwnerRole(bundleOwnerRole);
151
- }
152
-
153
-
154
142
  function setFees(
155
143
  Fee memory poolFee,
156
144
  Fee memory stakingFee,
@@ -44,7 +44,6 @@ contract BasicPoolAuthorization
44
44
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
45
45
 
46
46
  _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
47
- _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
48
47
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
48
  _authorize(functions, BasicPool.stake.selector, "stake");
50
49
  _authorize(functions, BasicPool.unstake.selector, "unstake");
@@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol
17
17
  import {Fee} from "../type/Fee.sol";
18
18
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
19
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
20
+ import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
21
  import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
22
22
  import {Seconds} from "../type/Seconds.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
@@ -40,20 +40,20 @@ contract BundleService is
40
40
  bytes memory data
41
41
  )
42
42
  internal
43
- initializer
44
43
  virtual override
44
+ initializer()
45
45
  {
46
- address registryAddress;
47
- address initialOwner;
48
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
49
- // TODO while PoolService is not deployed in PoolServiceManager constructor
50
- // owner is PoolServiceManager deployer
51
- initializeService(registryAddress, address(0), owner);
46
+ (
47
+ address registryAddress,
48
+ address authority
49
+ ) = abi.decode(data, (address, address));
50
+
51
+ _initializeService(registryAddress, authority, owner);
52
52
 
53
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
54
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
55
 
56
- registerInterface(type(IBundleService).interfaceId);
56
+ _registerInterface(type(IBundleService).interfaceId);
57
57
  }
58
58
 
59
59
 
@@ -64,6 +64,8 @@ contract BundleService is
64
64
  external
65
65
  virtual
66
66
  {
67
+ _checkNftType(bundleNftId, BUNDLE());
68
+
67
69
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
68
70
  InstanceReader instanceReader = instance.getInstanceReader();
69
71
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
@@ -94,6 +96,8 @@ contract BundleService is
94
96
  restricted
95
97
  returns(NftId bundleNftId)
96
98
  {
99
+ _checkNftType(poolNftId, POOL());
100
+
97
101
  // register bundle with registry
98
102
  bundleNftId = _registryService.registerBundle(
99
103
  IRegistry.ObjectInfo(
@@ -148,26 +152,35 @@ contract BundleService is
148
152
  virtual
149
153
  restricted()
150
154
  {
155
+ _checkNftType(policyNftId, POLICY());
156
+ _checkNftType(bundleNftId, BUNDLE());
157
+
151
158
  InstanceReader instanceReader = instance.getInstanceReader();
152
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
153
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
154
159
 
155
- // ensure bundle is active and not yet expired
156
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
157
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
160
+ {
161
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
162
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
163
+
164
+ // ensure bundle is active and not yet expired
165
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
166
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
167
+ }
158
168
  }
159
169
 
160
- // ensure bundle capacity is sufficent to collateralize policy
161
170
  InstanceStore instanceStore = instance.getInstanceStore();
162
- (
163
- Amount balanceAmount,
164
- Amount lockedAmount,
165
- Amount feeAmount
166
- ) = instanceStore.getAmounts(bundleNftId);
167
171
 
168
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
169
- if(capacity < collateralAmount) {
170
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
172
+ {
173
+ // ensure bundle capacity is sufficent to collateralize policy
174
+ (
175
+ Amount balanceAmount,
176
+ Amount lockedAmount,
177
+ Amount feeAmount
178
+ ) = instanceStore.getAmounts(bundleNftId);
179
+
180
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
181
+ if(capacity < collateralAmount) {
182
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
183
+ }
171
184
  }
172
185
 
173
186
  // updated locked amount
@@ -182,6 +195,8 @@ contract BundleService is
182
195
  external
183
196
  virtual
184
197
  {
198
+ _checkNftType(bundleNftId, BUNDLE());
199
+
185
200
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
201
 
187
202
  // udpate bundle state
@@ -199,6 +214,8 @@ contract BundleService is
199
214
  external
200
215
  virtual
201
216
  {
217
+ _checkNftType(bundleNftId, BUNDLE());
218
+
202
219
  (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
203
220
 
204
221
  // udpate bundle state
@@ -221,6 +238,8 @@ contract BundleService is
221
238
  restricted
222
239
  returns (Amount unstakedAmount, Amount feeAmount)
223
240
  {
241
+ _checkNftType(bundleNftId, BUNDLE());
242
+
224
243
  InstanceReader instanceReader = instance.getInstanceReader();
225
244
 
226
245
  // ensure no open policies attached to bundle
@@ -254,6 +273,8 @@ contract BundleService is
254
273
  virtual
255
274
  // TODO: restricted() (once #462 is done)
256
275
  {
276
+ _checkNftType(bundleNftId, BUNDLE());
277
+
257
278
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
279
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
259
280
 
@@ -281,6 +302,8 @@ contract BundleService is
281
302
  // TODO: restricted() (once #462 is done)
282
303
  returns (Amount unstakedAmount)
283
304
  {
305
+ _checkNftType(bundleNftId, BUNDLE());
306
+
284
307
  InstanceStore instanceStore = instance.getInstanceStore();
285
308
  (
286
309
  Amount balanceAmount,
@@ -288,7 +311,7 @@ contract BundleService is
288
311
  Amount feeAmount
289
312
  ) = instanceStore.getAmounts(bundleNftId);
290
313
 
291
- Amount unstakedAmount = amount;
314
+ unstakedAmount = amount;
292
315
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
316
 
294
317
  // if amount is max, then unstake all available
@@ -306,8 +329,6 @@ contract BundleService is
306
329
  bundleNftId,
307
330
  unstakedAmount,
308
331
  AmountLib.zero());
309
-
310
- return unstakedAmount;
311
332
  }
312
333
 
313
334
  /// @inheritdoc IBundleService
@@ -317,6 +338,8 @@ contract BundleService is
317
338
  // TODO: restricted() (once #462 is done)
318
339
  returns (Timestamp extendedExpiredAt)
319
340
  {
341
+ _checkNftType(bundleNftId, BUNDLE());
342
+
320
343
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
321
344
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
345
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
@@ -354,6 +377,9 @@ contract BundleService is
354
377
  virtual
355
378
  restricted()
356
379
  {
380
+ _checkNftType(policyNftId, POLICY());
381
+ _checkNftType(bundleNftId, BUNDLE());
382
+
357
383
  instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
358
384
  }
359
385
 
@@ -366,8 +392,10 @@ contract BundleService is
366
392
  virtual
367
393
  restricted
368
394
  {
395
+ _checkNftType(policyNftId, POLICY());
396
+
369
397
  // ensure policy is closeable
370
- if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
398
+ if (!policyIsCloseable(instance, policyNftId)) {
371
399
  revert ErrorBundleServicePolicyNotCloseable(policyNftId);
372
400
  }
373
401
 
@@ -381,13 +409,15 @@ contract BundleService is
381
409
  // TODO: restricted() (once #462 is done)
382
410
  returns (Amount withdrawnAmount)
383
411
  {
412
+ _checkNftType(bundleNftId, BUNDLE());
413
+
384
414
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
415
  InstanceReader reader = instance.getInstanceReader();
386
416
 
387
417
  IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
418
  address poolWallet = poolInfo.wallet;
389
419
 
390
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
420
+ // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
421
 
392
422
  // determine withdrawn amount
393
423
  withdrawnAmount = amount;
@@ -416,6 +446,31 @@ contract BundleService is
416
446
  }
417
447
  }
418
448
 
449
+ /// @inheritdoc IBundleService
450
+ function policyIsCloseable(IInstance instance, NftId policyNftId)
451
+ public
452
+ view
453
+ returns (bool isCloseable)
454
+ {
455
+ _checkNftType(policyNftId, POLICY());
456
+
457
+ IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
458
+
459
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
460
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
461
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
462
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
463
+
464
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
465
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
466
+
467
+ // not closeable: not yet expired
468
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
469
+
470
+ // all conditionsl to close the policy are met
471
+ return true;
472
+ }
473
+
419
474
  /// @dev links policy to bundle
420
475
  function _linkPolicy(IInstance instance, NftId policyNftId)
421
476
  internal