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

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 (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
  }