@etherisc/gif-next 0.0.2-b9366f5-670 → 0.0.2-b98b2b0-875

Sign up to get free protection for your applications and to get access to all the features.
Files changed (382) 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 +33 -52
  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 +2 -2
  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 +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +51 -177
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -147
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +85 -192
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -104
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -0
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
  50. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  51. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +95 -98
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +260 -67
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +71 -51
  68. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  70. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  73. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  77. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  83. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +41 -167
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
  88. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +21 -0
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +21 -147
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +46 -144
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +138 -181
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +102 -102
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +24 -0
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +49 -0
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +171 -102
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +46 -144
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +276 -245
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +95 -83
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -138
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -77
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -170
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +154 -194
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +101 -101
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +35 -8
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +111 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +49 -26
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  139. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +212 -160
  141. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +92 -88
  143. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.json +55 -162
  145. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +68 -88
  147. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  148. package/artifacts/contracts/product/Product.sol/Product.json +46 -170
  149. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.json +25 -132
  151. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -74
  153. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  155. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +239 -20
  157. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  160. package/artifacts/contracts/registry/Registry.sol/Registry.json +437 -81
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  162. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +244 -132
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  172. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  174. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  175. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  176. package/artifacts/contracts/shared/Component.sol/Component.json +21 -147
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  178. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +75 -182
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +89 -99
  181. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  183. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  184. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  185. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +21 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +21 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  199. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  200. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  201. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +21 -147
  202. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  205. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  210. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  212. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  213. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  214. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  216. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  217. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  218. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +21 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  225. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  226. package/artifacts/contracts/staking/Staking.sol/Staking.json +65 -191
  227. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  229. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  230. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +70 -85
  231. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  233. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  235. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  237. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  239. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  240. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  241. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  242. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  244. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  247. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  249. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  251. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  253. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  255. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  256. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  257. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  259. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  261. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  263. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  265. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  267. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  269. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  277. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  279. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  281. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  282. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  283. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
  284. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  285. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  286. package/contracts/authorization/AccessAdmin.sol +25 -24
  287. package/contracts/authorization/Authorization.sol +5 -1
  288. package/contracts/authorization/IAccessAdmin.sol +0 -1
  289. package/contracts/distribution/Distribution.sol +1 -1
  290. package/contracts/distribution/DistributionService.sol +9 -9
  291. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  292. package/contracts/examples/fire/DamageLevel.sol +59 -0
  293. package/contracts/examples/fire/FirePool.sol +75 -0
  294. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  295. package/contracts/examples/fire/FireProduct.sol +413 -0
  296. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  297. package/contracts/examples/fire/FireUSD.sol +26 -0
  298. package/contracts/instance/Instance.sol +2 -2
  299. package/contracts/instance/InstanceAdmin.sol +6 -3
  300. package/contracts/instance/InstanceReader.sol +83 -18
  301. package/contracts/instance/InstanceService.sol +6 -8
  302. package/contracts/instance/InstanceServiceManager.sol +6 -7
  303. package/contracts/instance/module/IComponents.sol +3 -1
  304. package/contracts/instance/module/IPolicy.sol +2 -2
  305. package/contracts/oracle/Oracle.sol +1 -1
  306. package/contracts/oracle/OracleService.sol +10 -8
  307. package/contracts/oracle/OracleServiceManager.sol +6 -6
  308. package/contracts/pool/BundleService.sol +32 -9
  309. package/contracts/pool/BundleServiceManager.sol +6 -6
  310. package/contracts/pool/IBundleService.sol +9 -0
  311. package/contracts/pool/IPoolComponent.sol +18 -8
  312. package/contracts/pool/IPoolService.sol +21 -10
  313. package/contracts/pool/Pool.sol +38 -11
  314. package/contracts/pool/PoolService.sol +81 -27
  315. package/contracts/pool/PoolServiceManager.sol +4 -4
  316. package/contracts/product/ApplicationService.sol +11 -8
  317. package/contracts/product/ApplicationServiceManager.sol +4 -4
  318. package/contracts/product/ClaimService.sol +164 -70
  319. package/contracts/product/ClaimServiceManager.sol +4 -4
  320. package/contracts/product/IClaimService.sol +3 -2
  321. package/contracts/product/IPolicyService.sol +10 -3
  322. package/contracts/product/IProductComponent.sol +17 -3
  323. package/contracts/product/PolicyService.sol +145 -32
  324. package/contracts/product/PolicyServiceManager.sol +4 -4
  325. package/contracts/product/PricingService.sol +4 -5
  326. package/contracts/product/PricingServiceManager.sol +3 -3
  327. package/contracts/product/Product.sol +26 -19
  328. package/contracts/product/RiskService.sol +4 -5
  329. package/contracts/product/RiskServiceManager.sol +4 -4
  330. package/contracts/registry/ChainNft.sol +65 -32
  331. package/contracts/registry/IRegistry.sol +50 -14
  332. package/contracts/registry/IRegistryService.sol +0 -9
  333. package/contracts/registry/Registry.sol +327 -196
  334. package/contracts/registry/RegistryAdmin.sol +140 -50
  335. package/contracts/registry/RegistryService.sol +55 -48
  336. package/contracts/registry/RegistryServiceManager.sol +2 -2
  337. package/contracts/registry/ReleaseRegistry.sol +11 -5
  338. package/contracts/registry/ServiceAuthorizationV3.sol +4 -5
  339. package/contracts/shared/Component.sol +13 -5
  340. package/contracts/shared/ComponentService.sol +6 -6
  341. package/contracts/shared/ComponentServiceManager.sol +8 -5
  342. package/contracts/shared/ComponentVerifyingService.sol +1 -2
  343. package/contracts/shared/ContractLib.sol +38 -0
  344. package/contracts/shared/IComponent.sol +3 -0
  345. package/contracts/shared/IPolicyHolder.sol +12 -22
  346. package/contracts/shared/InitializableERC165.sol +2 -2
  347. package/contracts/shared/InstanceLinkedComponent.sol +4 -5
  348. package/contracts/shared/NftOwnable.sol +4 -4
  349. package/contracts/shared/PolicyHolder.sol +15 -52
  350. package/contracts/shared/Registerable.sol +4 -4
  351. package/contracts/shared/RegistryLinked.sol +3 -2
  352. package/contracts/shared/Service.sol +16 -11
  353. package/contracts/staking/Staking.sol +3 -3
  354. package/contracts/staking/StakingManager.sol +8 -6
  355. package/contracts/staking/StakingReader.sol +12 -5
  356. package/contracts/staking/StakingService.sol +2 -2
  357. package/contracts/staking/StakingServiceManager.sol +2 -2
  358. package/contracts/type/Amount.sol +15 -0
  359. package/contracts/type/ClaimId.sol +6 -1
  360. package/contracts/type/NftId.sol +1 -0
  361. package/contracts/type/ObjectType.sol +1 -0
  362. package/contracts/type/PayoutId.sol +10 -10
  363. package/contracts/type/RiskId.sol +15 -1
  364. package/contracts/type/UFixed.sol +4 -0
  365. package/contracts/upgradeability/ProxyManager.sol +67 -34
  366. package/contracts/upgradeability/Versionable.sol +2 -2
  367. package/package.json +1 -1
  368. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +0 -4
  369. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +0 -1558
  370. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +0 -4
  371. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +0 -1318
  372. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +0 -4
  373. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +0 -1664
  374. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +0 -4
  375. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.json +0 -2125
  376. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  377. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  378. package/contracts/shared/InitializableCustom.sol +0 -177
  379. /package/contracts/{example_components → examples}/unpermissioned/SimpleDistribution.sol +0 -0
  380. /package/contracts/{example_components → examples}/unpermissioned/SimpleOracle.sol +0 -0
  381. /package/contracts/{example_components → examples}/unpermissioned/SimplePool.sol +0 -0
  382. /package/contracts/{example_components → examples}/unpermissioned/SimpleProduct.sol +0 -0
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
8
+
9
+ library ContractLib {
10
+
11
+ function isPolicyHolder(address target) external view returns (bool) {
12
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
13
+ }
14
+
15
+ function isAccessManaged(address target) external view returns (bool) {
16
+ if (!isContract(target)) {
17
+ return false;
18
+ }
19
+
20
+ (bool success, ) = target.staticcall(
21
+ abi.encodeWithSelector(
22
+ IAccessManaged.authority.selector));
23
+
24
+ return success;
25
+ }
26
+
27
+ function isContract(address target) public view returns (bool) {
28
+ uint256 size;
29
+ assembly {
30
+ size := extcodesize(target)
31
+ }
32
+ return size > 0;
33
+ }
34
+
35
+ function supportsInterface(address target, bytes4 interfaceId) external view returns (bool) {
36
+ return ERC165Checker.supportsInterface(target, interfaceId);
37
+ }
38
+ }
@@ -8,6 +8,8 @@ import {Amount} from "../type/Amount.sol";
8
8
  import {IComponents} from "../instance/module/IComponents.sol";
9
9
  import {IRegisterable} from "../shared/IRegisterable.sol";
10
10
  import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType} from "../type/ObjectType.sol";
11
13
  import {TokenHandler} from "../shared/TokenHandler.sol";
12
14
 
13
15
  /// @dev component base class
@@ -18,6 +20,7 @@ interface IComponent is
18
20
  ITransferInterceptor
19
21
  {
20
22
  error ErrorComponentNotChainNft(address caller);
23
+ error ErrorNftNotObjectType(NftId nftId, ObjectType objectType, ObjectType expectedObjectType);
21
24
 
22
25
  error ErrorComponentTokenAddressZero();
23
26
  error ErrorComponentNameLengthZero();
@@ -9,37 +9,27 @@ import {ClaimId} from "../type/ClaimId.sol";
9
9
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
10
  import {NftId} from "../type/NftId.sol";
11
11
  import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
12
13
 
13
- /// @dev generic interface for contracts that need to hold policies and receive payouts
14
- /// GIF will notify policy holder contracts for policy creation and payout execution
14
+ /// @dev Generic interface for contracts that need to hold policies and receive payouts.
15
+ /// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
15
16
  interface IPolicyHolder is
16
17
  IERC165,
17
18
  IERC721Receiver,
18
19
  IRegistryLinked
19
20
  {
20
21
 
21
- /// @dev callback function that will be called after successful policy activation
22
- /// active policies may open claims under the activated policy
23
- function policyActivated(NftId policyNftId) external;
22
+ /// @dev Callback function that will be called after successful policy activation.
23
+ /// Active policies may open claims under the activated policy.
24
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
24
25
 
25
- /// @dev callback function to indicate the specified policy has expired
26
- /// expired policies may no longer open claims
27
- /// it is optional for products to notifiy policy holder of expired claims
28
- function policyExpired(NftId policyNftId) external;
26
+ /// @dev Callback function to indicate the specified policy has expired.
27
+ /// expired policies no longer accept new claims.
28
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
29
29
 
30
- /// @dev request for a payout by the requesting policy
31
- /// the contract implements its use case specific handling for such requests.
32
- /// eg. creation of a pending payout, a corresponding claim against one of the policies held by the IPolicyHolder
33
- function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external;
34
-
35
- /// @dev callback function to notify the confirmation of the specified claim
36
- /// active policies may open claims under the activated policy
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
37
31
  function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
38
32
 
39
- /// @dev callback function that will be called after a successful payout
40
- function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
41
-
42
- /// @dev determines policy and claim specific beneficiary address
43
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
44
- function getBeneficiary(NftId policyNftId, PayoutId payoutId) external view returns (address beneficiary);
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
45
35
  }
@@ -11,13 +11,13 @@ contract InitializableERC165 is
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function initializeERC165() public onlyInitializing() {
14
+ function _initializeERC165() internal onlyInitializing() {
15
15
  _isSupported[type(IERC165).interfaceId] = true;
16
16
  }
17
17
 
18
18
  // @dev register support for provided interfaceId
19
19
  // includes initialization for ERC165_ID if not yet done
20
- function registerInterface(bytes4 interfaceId) public onlyInitializing() {
20
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
21
21
  _isSupported[interfaceId] = true;
22
22
  }
23
23
 
@@ -96,14 +96,13 @@ abstract contract InstanceLinkedComponent is
96
96
  // set and check linked instance
97
97
  InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
98
98
  $._instance = IInstance(
99
- IRegistry(registry).getObjectInfo(
100
- instanceNftId).objectAddress);
99
+ IRegistry(registry).getObjectAddress(instanceNftId));
101
100
 
102
101
  if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
103
102
  revert ErrorComponentNotInstance(instanceNftId);
104
103
  }
105
104
 
106
- initializeComponent(
105
+ _initializeComponent(
107
106
  $._instance.authority(),
108
107
  registry,
109
108
  instanceNftId,
@@ -120,8 +119,8 @@ abstract contract InstanceLinkedComponent is
120
119
  $._initialAuthorization = authorization;
121
120
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
122
121
 
123
- registerInterface(type(IAccessManaged).interfaceId);
124
- registerInterface(type(IInstanceLinkedComponent).interfaceId);
122
+ _registerInterface(type(IAccessManaged).interfaceId);
123
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
125
124
  }
126
125
 
127
126
  /// @dev for instance linked components the wallet address stored in the instance store.
@@ -30,16 +30,16 @@ contract NftOwnable is
30
30
 
31
31
  /// @dev initialization for upgradable contracts
32
32
  // used in _initializeRegisterable
33
- function initializeNftOwnable(
33
+ function _initializeNftOwnable(
34
34
  address initialOwner,
35
35
  address registryAddress
36
36
  )
37
- public
37
+ internal
38
38
  virtual
39
39
  onlyInitializing()
40
40
  {
41
- initializeRegistryLinked(registryAddress);
42
- initializeERC165();
41
+ _initializeRegistryLinked(registryAddress);
42
+ _initializeERC165();
43
43
 
44
44
  if(initialOwner == address(0)) {
45
45
  revert ErrorNftOwnableInitialOwnerZero();
@@ -10,62 +10,41 @@ import {IPolicyHolder} from "./IPolicyHolder.sol";
10
10
  import {NftId} from "../type/NftId.sol";
11
11
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
12
12
  import {RegistryLinked} from "./RegistryLinked.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
13
14
 
14
15
  /// @dev template implementation for IPolicyHolder
15
16
  contract PolicyHolder is
16
17
  InitializableERC165,
17
- RegistryLinked, // TODO need upgradeable version
18
+ RegistryLinked,
18
19
  IPolicyHolder
19
20
  {
20
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.PolicyHolder")) - 1)) & ~bytes32(uint256(0xff));
21
- // TODO fix address
22
- bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
21
+ // TODO add modifier to protect callback functions from unauthorized access
22
+ // callbacks must only be allowed from the policy and claim services
23
+ // will need a release parameter to fetch the right service addresses for the modifiers
23
24
 
24
- struct PolicyHolderStorage {
25
- mapping(NftId policyId => mapping(PayoutId payoutId => address beneficiary)) _beneficiary;
26
- address _beneficiaryDefault;
27
- }
28
-
29
- function initializePolicyHolder(
30
- address registryAddress,
31
- address beneficiaryDefault
25
+ function _initializePolicyHolder(
26
+ address registryAddress
32
27
  )
33
- public
28
+ internal
34
29
  virtual
35
30
  onlyInitializing()
36
31
  {
37
- initializeRegistryLinked(registryAddress);
38
-
39
- _getPolicyHolderStorage()._beneficiaryDefault = beneficiaryDefault;
40
-
41
- registerInterface(type(IPolicyHolder).interfaceId);
32
+ _initializeRegistryLinked(registryAddress);
33
+ _initializeERC165();
34
+ _registerInterface(type(IPolicyHolder).interfaceId);
42
35
  }
43
36
 
44
37
  /// @dev empty default implementation
45
- function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external { }
38
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
46
39
 
47
40
  /// @dev empty default implementation
48
- function policyActivated(NftId policyNftId) external {}
41
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
49
42
 
50
43
  /// @dev empty default implementation
51
- function policyExpired(NftId policyNftId) external {}
44
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
52
45
 
53
46
  /// @dev empty default implementation
54
- function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
55
-
56
- /// @dev empty default implementation
57
- function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
58
-
59
- /// @dev returns payout specific beneficiary
60
- /// when no such beneficiary is defined the policy specific beneficiary is returned
61
- function getBeneficiary(NftId policyNftId, PayoutId payoutId) external virtual view returns (address beneficiary) {
62
- beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId];
63
-
64
- // fallback to claim independent beneficiary
65
- if(beneficiary == address(0) && payoutId.gtz()) {
66
- beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][PayoutIdLib.zero()];
67
- }
68
- }
47
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
69
48
 
70
49
  //--- IERC165 functions ---------------//
71
50
  function onERC721Received(
@@ -80,20 +59,4 @@ contract PolicyHolder is
80
59
  {
81
60
  return IERC721Receiver.onERC721Received.selector;
82
61
  }
83
-
84
- /// @dev sets policy specific beneficiary (used when no payout specific beneficiary is defined)
85
- function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
86
- _setBeneficiary(policyNftId, PayoutIdLib.zero(), beneficiary);
87
- }
88
-
89
- /// @dev sets policy and claim specific beneficiary
90
- function _setBeneficiary(NftId policyNftId, PayoutId payoutId, address beneficiary) internal {
91
- _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId] = beneficiary;
92
- }
93
-
94
- function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
95
- assembly {
96
- $.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
97
- }
98
- }
99
62
  }
@@ -24,7 +24,7 @@ contract Registerable is
24
24
  bytes _data;
25
25
  }
26
26
 
27
- function initializeRegisterable(
27
+ function _initializeRegisterable(
28
28
  address registryAddress,
29
29
  NftId parentNftId,
30
30
  ObjectType objectType,
@@ -32,11 +32,11 @@ contract Registerable is
32
32
  address initialOwner,
33
33
  bytes memory registryData // writeonly data that will saved in the object info record of the registry
34
34
  )
35
- public
35
+ internal
36
36
  virtual
37
- onlyInitializing
37
+ onlyInitializing()
38
38
  {
39
- initializeNftOwnable(
39
+ _initializeNftOwnable(
40
40
  initialOwner,
41
41
  registryAddress);
42
42
 
@@ -10,14 +10,15 @@ contract RegistryLinked is
10
10
  IRegistryLinked
11
11
  {
12
12
 
13
+ // priorize simplicity and size over using standard upgradeability structs
13
14
  IRegistry private _registry;
14
15
 
15
16
  /// @dev initialization for upgradable contracts
16
17
  // used in _initializeRegisterable
17
- function initializeRegistryLinked(
18
+ function _initializeRegistryLinked(
18
19
  address registryAddress
19
20
  )
20
- public
21
+ internal
21
22
  virtual
22
23
  onlyInitializing()
23
24
  {
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
5
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
6
7
 
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
8
9
  import {IService} from "./IService.sol";
@@ -19,28 +20,23 @@ abstract contract Service is
19
20
  Registerable,
20
21
  Versionable,
21
22
  AccessManagedUpgradeable,
23
+ ReentrancyGuardUpgradeable,
22
24
  IService
23
25
  {
24
26
 
25
27
  uint8 private constant GIF_MAJOR_VERSION = 3;
26
28
 
27
29
 
28
- function initializeService(
30
+ function _initializeService(
29
31
  address registry,
30
32
  address authority, // real authority for registry service adress(0) for other services
31
33
  address initialOwner
32
34
  )
33
- public
35
+ internal
34
36
  virtual
35
37
  onlyInitializing()
36
38
  {
37
- initializeRegisterable(
38
- registry,
39
- IRegistry(registry).getNftId(),
40
- SERVICE(),
41
- false, // is interceptor
42
- initialOwner,
43
- ""); // data
39
+ __ReentrancyGuard_init();
44
40
 
45
41
  // externally provided authority
46
42
  if(authority != address(0)) {
@@ -52,8 +48,17 @@ abstract contract Service is
52
48
  __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
53
49
  }
54
50
 
55
- registerInterface(type(IAccessManaged).interfaceId);
56
- registerInterface(type(IService).interfaceId);
51
+ _initializeRegisterable(
52
+ registry,
53
+ IRegistry(registry).getNftId(),
54
+ SERVICE(),
55
+ false, // is interceptor
56
+ initialOwner,
57
+ ""); // data
58
+
59
+
60
+ _registerInterface(type(IAccessManaged).interfaceId);
61
+ _registerInterface(type(IService).interfaceId);
57
62
  }
58
63
 
59
64
  function getDomain() external virtual pure returns(ObjectType serviceDomain) {
@@ -451,7 +451,7 @@ contract Staking is
451
451
  )
452
452
  internal
453
453
  virtual override
454
- initializer
454
+ initializer()
455
455
  {
456
456
  (
457
457
  address registryAddress,
@@ -466,7 +466,7 @@ contract Staking is
466
466
  TokenRegistry tokenRegistry = TokenRegistry(tokenRegistryAddress);
467
467
  address dipTokenAddress = tokenRegistry.getDipTokenAddress();
468
468
 
469
- initializeComponent(
469
+ _initializeComponent(
470
470
  authority,
471
471
  registryAddress,
472
472
  registry.getNftId(),
@@ -486,7 +486,7 @@ contract Staking is
486
486
  $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
487
487
  $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(dipTokenAddress, authority);
488
488
 
489
- registerInterface(type(IStaking).interfaceId);
489
+ _registerInterface(type(IStaking).interfaceId);
490
490
  }
491
491
 
492
492
 
@@ -18,9 +18,9 @@ contract StakingManager is
18
18
  address registry,
19
19
  address tokenRegistry,
20
20
  address stakingStore,
21
- address initialOwner
21
+ address initialOwner,
22
+ bytes32 salt
22
23
  )
23
- ProxyManager(registry)
24
24
  {
25
25
  Staking stakingImplementation = new Staking();
26
26
 
@@ -30,10 +30,12 @@ contract StakingManager is
30
30
  tokenRegistry,
31
31
  stakingStore,
32
32
  initialOwner);
33
-
34
- IVersionable versionable = deploy(
35
- _initialImplementation,
36
- _initializationData);
33
+
34
+ IVersionable versionable = initialize(
35
+ registry,
36
+ _initialImplementation,
37
+ _initializationData,
38
+ salt);
37
39
 
38
40
  _staking = Staking(address(versionable));
39
41
  }
@@ -1,13 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
4
6
  import {IRegistry} from "../registry/IRegistry.sol";
5
7
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
6
8
  import {IStaking} from "../staking/IStaking.sol";
7
9
 
8
10
  import {Amount} from "../type/Amount.sol";
9
11
  import {Blocknumber} from "../type/Blocknumber.sol";
10
- import {InitializableCustom} from "../shared/InitializableCustom.sol";
11
12
  import {NftId} from "../type/NftId.sol";
12
13
  import {STAKE, TARGET} from "../type/ObjectType.sol";
13
14
  import {StakingStore} from "./StakingStore.sol";
@@ -16,16 +17,18 @@ import {UFixed} from "../type/UFixed.sol";
16
17
 
17
18
  contract StakingReader is
18
19
  IRegistryLinked,
19
- InitializableCustom
20
+ Initializable
20
21
  {
21
22
 
22
- error ErrorStakingReaderDependenciesAlreadySet();
23
+ error ErrorStakingReaderUnauthorizedCaler();
23
24
 
25
+ address private _initializeOwner;
24
26
  IRegistry private _registry;
25
27
  IStaking private _staking;
26
28
  StakingStore private _store;
27
29
 
28
- constructor(IRegistry registry) InitializableCustom() {
30
+ constructor(IRegistry registry) {
31
+ _initializeOwner = msg.sender;
29
32
  _registry = registry;
30
33
  }
31
34
 
@@ -34,8 +37,12 @@ contract StakingReader is
34
37
  address stakingStoreAddress
35
38
  )
36
39
  external
37
- initializer
40
+ initializer()
38
41
  {
42
+ if (msg.sender != _initializeOwner) {
43
+ revert ErrorStakingReaderUnauthorizedCaler();
44
+ }
45
+
39
46
  _staking = IStaking(stakingAddress);
40
47
  _store = StakingStore(stakingStoreAddress);
41
48
  }
@@ -331,7 +331,7 @@ contract StakingService is
331
331
  address stakingAddress
332
332
  ) = abi.decode(data, (address, address, address));
333
333
 
334
- initializeService(registryAddress, authority, owner);
334
+ _initializeService(registryAddress, authority, owner);
335
335
 
336
336
  StakingServiceStorage storage $ = _getStakingServiceStorage();
337
337
  $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
@@ -339,7 +339,7 @@ contract StakingService is
339
339
  $._dip = $._staking.getToken();
340
340
  $._tokenHandler = $._staking.getTokenHandler();
341
341
 
342
- registerInterface(type(IStakingService).interfaceId);
342
+ _registerInterface(type(IStakingService).interfaceId);
343
343
  }
344
344
 
345
345
 
@@ -18,14 +18,14 @@ contract StakingServiceManager is
18
18
  address registryAddress,
19
19
  bytes32 salt
20
20
  )
21
- ProxyManager(registryAddress)
22
21
  {
23
22
  StakingService svc = new StakingService();
24
23
  bytes memory data = abi.encode(
25
24
  authority,
26
25
  registryAddress,
27
26
  IRegistry(registryAddress).getStakingAddress());
28
- IVersionable versionable = deployDetermenistic(
27
+ IVersionable versionable = initialize(
28
+ registryAddress,
29
29
  address(svc),
30
30
  data,
31
31
  salt);
@@ -11,7 +11,9 @@ using {
11
11
  eqAmount as ==,
12
12
  nqAmount as !=,
13
13
  ltAmount as <,
14
+ ltAmount as <=,
14
15
  gtAmount as >,
16
+ gteAmount as >=,
15
17
  AmountLib.add,
16
18
  AmountLib.eq,
17
19
  AmountLib.eqz,
@@ -43,10 +45,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) {
43
45
  return AmountLib.lt(a, b);
44
46
  }
45
47
 
48
+ function lteAmount(Amount a, Amount b) pure returns (bool) {
49
+ return AmountLib.lte(a, b);
50
+ }
51
+
46
52
  function gtAmount(Amount a, Amount b) pure returns (bool) {
47
53
  return AmountLib.gt(a, b);
48
54
  }
49
55
 
56
+ function gteAmount(Amount a, Amount b) pure returns (bool) {
57
+ return AmountLib.gte(a, b);
58
+ }
59
+
50
60
  library AmountLib {
51
61
 
52
62
  error ErrorAmountLibValueTooBig(uint256 amount);
@@ -84,6 +94,11 @@ library AmountLib {
84
94
  return Amount.unwrap(a1) < Amount.unwrap(a2);
85
95
  }
86
96
 
97
+ /// @dev return true if amount a1 is less or equal than a2
98
+ function lte(Amount a1, Amount a2) public pure returns (bool) {
99
+ return Amount.unwrap(a1) <= Amount.unwrap(a2);
100
+ }
101
+
87
102
  /// @dev return true if amount a1 is greater than a2
88
103
  function gt(Amount a1, Amount a2) public pure returns (bool) {
89
104
  return Amount.unwrap(a1) > Amount.unwrap(a2);
@@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol";
12
12
  using {
13
13
  eqClaimId as ==,
14
14
  neClaimId as !=,
15
+ ClaimIdLib.eq,
15
16
  ClaimIdLib.eqz,
16
17
  ClaimIdLib.gtz,
17
18
  ClaimIdLib.toInt,
@@ -21,7 +22,7 @@ using {
21
22
 
22
23
  // pure free functions for operators
23
24
  function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
24
- return ClaimId.unwrap(a) == ClaimId.unwrap(b);
25
+ return ClaimIdLib.eq(a, b);
25
26
  }
26
27
 
27
28
  function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
@@ -68,6 +69,10 @@ library ClaimIdLib {
68
69
  return ClaimId.unwrap(a) > 0;
69
70
  }
70
71
 
72
+ function eq(ClaimId a, ClaimId b) public pure returns (bool) {
73
+ return ClaimId.unwrap(a) == ClaimId.unwrap(b);
74
+ }
75
+
71
76
  /// @dev Returns true if the value is zero (== 0).
72
77
  function eqz(ClaimId a) public pure returns (bool) {
73
78
  return ClaimId.unwrap(a) == 0;
@@ -14,6 +14,7 @@ using {
14
14
  NftIdLib.toInt,
15
15
  NftIdLib.gtz,
16
16
  NftIdLib.eqz,
17
+ NftIdLib.eq,
17
18
  NftIdLib.toKeyId,
18
19
  NftIdLib.toKey32
19
20
  } for NftId global;
@@ -9,6 +9,7 @@ using {
9
9
  neObjectType as !=,
10
10
  ObjectTypeLib.toInt,
11
11
  ObjectTypeLib.eqz,
12
+ ObjectTypeLib.eq,
12
13
  ObjectTypeLib.gtz
13
14
  } for ObjectType global;
14
15
 
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- // uint24 allows for 65'535 claims with 255 payouts each per policy
5
- type PayoutId is uint24;
4
+ // uint40 allows for 65'535 claims with 16'777'216 payouts each per policy
5
+ type PayoutId is uint40;
6
6
 
7
7
  import {ClaimId} from "./ClaimId.sol";
8
8
  import {PAYOUT} from "./ObjectType.sol";
@@ -39,21 +39,21 @@ library PayoutIdLib {
39
39
  }
40
40
 
41
41
  /// @dev Converts an uint into a PayoutId.
42
- function toPayoutId(ClaimId claimId, uint8 payoutNo) public pure returns (PayoutId) {
43
- return PayoutId.wrap((ClaimId.unwrap(claimId) << 8) + payoutNo);
42
+ function toPayoutId(ClaimId claimId, uint24 payoutNo) public pure returns (PayoutId) {
43
+ return PayoutId.wrap((uint40(ClaimId.unwrap(claimId)) << 24) + payoutNo);
44
44
  }
45
45
 
46
46
  function toClaimId(PayoutId payoutId) public pure returns (ClaimId) {
47
- return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 8));
47
+ return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 24));
48
48
  }
49
49
 
50
- function toPayoutNo(PayoutId payoutId) public pure returns (uint8) {
51
- return uint8(PayoutId.unwrap(payoutId) & 255);
50
+ function toPayoutNo(PayoutId payoutId) public pure returns (uint24) {
51
+ return uint24(PayoutId.unwrap(payoutId) & 16777215);
52
52
  }
53
53
 
54
54
  /// @dev Converts the PayoutId to a uint.
55
- function toInt(PayoutId a) public pure returns (uint24) {
56
- return uint24(PayoutId.unwrap(a));
55
+ function toInt(PayoutId a) public pure returns (uint40) {
56
+ return PayoutId.unwrap(a);
57
57
  }
58
58
 
59
59
  /// @dev Returns true if the value is non-zero (> 0).
@@ -77,6 +77,6 @@ library PayoutIdLib {
77
77
  bytes31(
78
78
  bytes15(
79
79
  uint120(
80
- (NftId.unwrap(policyNftId) << 24) + PayoutId.unwrap(payoutId)))));
80
+ (NftId.unwrap(policyNftId) << 40) + PayoutId.unwrap(payoutId)))));
81
81
  }
82
82
  }