@etherisc/gif-next 0.0.2-98bc1be-984 → 0.0.2-998ff1b-277

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 (494) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +94 -270
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -450
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +260 -233
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -160
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +152 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +28 -178
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1186 -271
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +290 -141
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +57 -224
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -105
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +227 -238
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  69. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  71. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -37
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -315
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +407 -174
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +45 -290
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +45 -576
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -79
  138. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  139. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +358 -318
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +97 -101
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  149. package/artifacts/contracts/product/Product.sol/Product.json +35 -378
  150. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  152. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +337 -380
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  177. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  178. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +247 -185
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -107
  183. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  185. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  186. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -37
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -275
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  233. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +58 -22
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  285. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  287. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  295. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  300. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +586 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  306. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  307. package/contracts/{shared → authorization}/AccessAdmin.sol +158 -325
  308. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  309. package/contracts/authorization/Authorization.sol +217 -0
  310. package/contracts/authorization/IAccess.sol +48 -0
  311. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -55
  312. package/contracts/authorization/IAuthorization.sol +54 -0
  313. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  314. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  315. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  316. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  317. package/contracts/distribution/BasicDistribution.sol +138 -0
  318. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  319. package/contracts/distribution/Distribution.sol +145 -111
  320. package/contracts/distribution/DistributionService.sol +85 -46
  321. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  322. package/contracts/distribution/IDistributionComponent.sol +25 -39
  323. package/contracts/distribution/IDistributionService.sol +23 -3
  324. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  325. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  326. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  327. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  328. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  329. package/contracts/instance/IInstance.sol +14 -38
  330. package/contracts/instance/IInstanceService.sol +13 -18
  331. package/contracts/instance/Instance.sol +68 -102
  332. package/contracts/instance/InstanceAdmin.sol +221 -267
  333. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  334. package/contracts/instance/InstanceReader.sol +54 -16
  335. package/contracts/instance/InstanceService.sol +114 -87
  336. package/contracts/instance/InstanceServiceManager.sol +8 -13
  337. package/contracts/instance/InstanceStore.sol +23 -5
  338. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  339. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  340. package/contracts/instance/module/IBundle.sol +1 -1
  341. package/contracts/instance/module/IComponents.sol +1 -7
  342. package/contracts/instance/module/IDistribution.sol +0 -1
  343. package/contracts/instance/module/IPolicy.sol +22 -22
  344. package/contracts/mock/Dip.sol +1 -1
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +16 -0
  348. package/contracts/oracle/IOracleComponent.sol +2 -1
  349. package/contracts/oracle/Oracle.sol +73 -51
  350. package/contracts/oracle/OracleService.sol +9 -6
  351. package/contracts/oracle/OracleServiceManager.sol +8 -11
  352. package/contracts/pool/BasicPool.sol +166 -0
  353. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  354. package/contracts/pool/BundleService.sol +197 -55
  355. package/contracts/pool/BundleServiceManager.sol +8 -11
  356. package/contracts/pool/IBundleService.sol +33 -5
  357. package/contracts/pool/IPoolComponent.sol +6 -60
  358. package/contracts/pool/IPoolService.sol +36 -26
  359. package/contracts/pool/Pool.sol +165 -138
  360. package/contracts/pool/PoolService.sol +167 -111
  361. package/contracts/pool/PoolServiceManager.sol +6 -9
  362. package/contracts/product/ApplicationService.sol +55 -62
  363. package/contracts/product/ApplicationServiceManager.sol +6 -6
  364. package/contracts/product/BasicProduct.sol +53 -0
  365. package/contracts/product/BasicProductAuthorization.sol +43 -0
  366. package/contracts/product/ClaimService.sol +212 -108
  367. package/contracts/product/ClaimServiceManager.sol +6 -6
  368. package/contracts/product/IApplicationService.sol +1 -0
  369. package/contracts/product/IClaimService.sol +28 -5
  370. package/contracts/product/IPolicyService.sol +31 -32
  371. package/contracts/product/IPricingService.sol +7 -7
  372. package/contracts/product/IProductComponent.sol +7 -10
  373. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  374. package/contracts/product/PolicyService.sol +361 -190
  375. package/contracts/product/PolicyServiceManager.sol +6 -9
  376. package/contracts/product/PricingService.sol +46 -46
  377. package/contracts/product/PricingServiceManager.sol +5 -8
  378. package/contracts/product/Product.sol +162 -114
  379. package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
  380. package/contracts/product/RiskServiceManager.sol +39 -0
  381. package/contracts/registry/ChainNft.sol +65 -32
  382. package/contracts/registry/IRegistry.sol +63 -19
  383. package/contracts/registry/IRegistryService.sol +6 -6
  384. package/contracts/registry/Registry.sol +333 -213
  385. package/contracts/registry/RegistryAdmin.sol +260 -129
  386. package/contracts/registry/RegistryService.sol +6 -20
  387. package/contracts/registry/RegistryServiceManager.sol +4 -4
  388. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  389. package/contracts/registry/ReleaseRegistry.sol +491 -0
  390. package/contracts/registry/ServiceAuthorizationV3.sol +16 -17
  391. package/contracts/registry/TokenRegistry.sol +2 -2
  392. package/contracts/shared/Component.sol +30 -43
  393. package/contracts/shared/ComponentService.sol +103 -79
  394. package/contracts/shared/ComponentServiceManager.sol +10 -7
  395. package/contracts/shared/ComponentVerifyingService.sol +2 -2
  396. package/contracts/shared/ContractLib.sol +38 -0
  397. package/contracts/shared/IComponent.sol +4 -4
  398. package/contracts/shared/IComponentService.sol +15 -9
  399. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  400. package/contracts/shared/IKeyValueStore.sol +1 -0
  401. package/contracts/shared/ILifecycle.sol +1 -2
  402. package/contracts/shared/IPolicyHolder.sol +12 -22
  403. package/contracts/shared/IService.sol +1 -1
  404. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  405. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  406. package/contracts/shared/KeyValueStore.sol +6 -2
  407. package/contracts/shared/Lifecycle.sol +16 -69
  408. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  409. package/contracts/shared/NftOwnable.sol +7 -7
  410. package/contracts/shared/PolicyHolder.sol +14 -58
  411. package/contracts/shared/Registerable.sol +4 -4
  412. package/contracts/shared/RegistryLinked.sol +3 -2
  413. package/contracts/shared/Service.sol +19 -15
  414. package/contracts/shared/TokenHandler.sol +100 -19
  415. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  416. package/contracts/staking/IStaking.sol +3 -3
  417. package/contracts/staking/IStakingService.sol +12 -5
  418. package/contracts/staking/StakeManagerLib.sol +18 -25
  419. package/contracts/staking/Staking.sol +27 -42
  420. package/contracts/staking/StakingLifecycle.sol +23 -0
  421. package/contracts/staking/StakingManager.sol +10 -12
  422. package/contracts/staking/StakingReader.sol +12 -16
  423. package/contracts/staking/StakingService.sol +10 -14
  424. package/contracts/staking/StakingServiceManager.sol +4 -4
  425. package/contracts/staking/StakingStore.sol +15 -23
  426. package/contracts/staking/TargetManagerLib.sol +7 -3
  427. package/contracts/type/Amount.sol +12 -5
  428. package/contracts/type/Blocknumber.sol +7 -1
  429. package/contracts/type/ObjectType.sol +52 -18
  430. package/contracts/type/Referral.sol +1 -0
  431. package/contracts/type/RoleId.sol +55 -82
  432. package/contracts/type/Seconds.sol +21 -1
  433. package/contracts/type/StateId.sol +1 -0
  434. package/contracts/type/Timestamp.sol +11 -1
  435. package/contracts/type/UFixed.sol +34 -9
  436. package/contracts/type/Version.sol +3 -1
  437. package/contracts/{shared → upgradeability}/ProxyManager.sol +70 -38
  438. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  439. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  440. package/package.json +6 -3
  441. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  442. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  443. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  444. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  445. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  446. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  447. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  448. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  449. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  450. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  451. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  452. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  453. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  454. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  455. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  456. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  457. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  458. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  459. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  460. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  461. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  462. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  463. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  464. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  465. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  466. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  467. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  468. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  469. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  471. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  472. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  473. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  474. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  475. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  476. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  477. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  478. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  479. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  480. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  481. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  482. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  483. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  484. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  485. package/contracts/product/ProductServiceManager.sol +0 -42
  486. package/contracts/registry/ReleaseManager.sol +0 -527
  487. package/contracts/shared/AccessManagerCustom.sol +0 -741
  488. package/contracts/shared/AccessManagerExtended.sol +0 -481
  489. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  490. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  491. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  492. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  493. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  494. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -4,22 +4,17 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponent} from "../shared/IComponent.sol";
8
- import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
9
10
  import {IInstance} from "../instance/IInstance.sol";
10
- import {IInstanceService} from "../instance/IInstanceService.sol";
11
- import {IProductService} from "../product/IProductService.sol";
12
- import {IRegisterable} from "../shared/IRegisterable.sol";
13
11
  import {NftId} from "../type/NftId.sol";
14
- import {ObjectType} from "../type/ObjectType.sol";
15
- import {TokenHandler} from "../shared/TokenHandler.sol";
16
12
 
17
13
  /// @dev component base class
18
14
  /// component examples are product, distribution, pool and oracle
19
15
  interface IInstanceLinkedComponent is
20
16
  IComponent
21
17
  {
22
- error ErrorComponentNotProductService(address caller);
23
18
  error ErrorComponentNotInstance(NftId instanceNftId);
24
19
  error ErrorComponentProductNftAlreadySet();
25
20
 
@@ -36,9 +31,17 @@ interface IInstanceLinkedComponent is
36
31
  /// only component owner (nft holder) is authorizes to call this function
37
32
  function unlock() external;
38
33
 
34
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
35
+ /// @param amount the amount to withdraw
36
+ /// @return withdrawnAmount the amount that was actually withdrawn
37
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
38
+
39
39
  /// @dev defines the instance to which this component is linked to
40
40
  function getInstance() external view returns (IInstance instance);
41
41
 
42
+ /// @dev returns the initial component authorization specification.
43
+ function getAuthorization() external view returns (IAuthorization authorization);
44
+
42
45
  /// @dev defines the product to which this component is linked to
43
46
  /// this is only relevant for pool and distribution components
44
47
  function getProductNftId() external view returns (NftId productNftId);
@@ -13,6 +13,7 @@ interface IKeyValueStore is ILifecycle {
13
13
 
14
14
  error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
15
  error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
16
17
  error ErrorKeyValueStoreStateZero(Key32 key);
17
18
  error ErrorKeyValueStoreNotExisting(Key32 key);
18
19
 
@@ -1,13 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../type/NftId.sol";
5
4
  import {ObjectType} from "../type/ObjectType.sol";
6
5
  import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(ObjectType objectType);
11
10
  error ErrorInvalidStateTransition(
12
11
  ObjectType objectType,
13
12
  StateId fromStateId,
@@ -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
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
@@ -4,20 +4,20 @@ pragma solidity ^0.8.20;
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
 
7
- contract ERC165 is
7
+ contract InitializableERC165 is
8
8
  Initializable,
9
9
  IERC165
10
10
  {
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
 
@@ -6,13 +6,14 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {Component} from "./Component.sol";
10
11
  import {IComponentService} from "./IComponentService.sol";
11
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
14
  import {IComponents} from "../instance/module/IComponents.sol";
13
15
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
16
  import {IInstance} from "../instance/IInstance.sol";
15
- import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
17
18
  import {IRegistry} from "../registry/IRegistry.sol";
18
19
  import {NftId} from "../type/NftId.sol";
@@ -35,6 +36,39 @@ abstract contract InstanceLinkedComponent is
35
36
  struct InstanceLinkedComponentStorage {
36
37
  IInstance _instance; // instance for this component
37
38
  InstanceReader _instanceReader; // instance reader for this component
39
+ IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
41
+ }
42
+
43
+ function lock() external onlyOwner {
44
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
45
+ }
46
+
47
+ function unlock() external onlyOwner {
48
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
+ }
50
+
51
+ function getInstance() public view override returns (IInstance instance) {
52
+ return _getInstanceLinkedComponentStorage()._instance;
53
+ }
54
+
55
+ function getProductNftId() public view override returns (NftId productNftId) {
56
+ return getComponentInfo().productNftId;
57
+ }
58
+
59
+ function getAuthorization() external view returns (IAuthorization authorization) {
60
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
61
+ }
62
+
63
+ /// @inheritdoc IInstanceLinkedComponent
64
+ function withdrawFees(Amount amount)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ restricted()
69
+ returns (Amount withdrawnAmount)
70
+ {
71
+ return _withdrawFees(amount);
38
72
  }
39
73
 
40
74
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
@@ -43,18 +77,19 @@ abstract contract InstanceLinkedComponent is
43
77
  }
44
78
  }
45
79
 
46
- function initializeInstanceLinkedComponent(
80
+ function _initializeInstanceLinkedComponent(
47
81
  address registry,
48
82
  NftId instanceNftId,
49
83
  string memory name,
50
84
  address token,
51
85
  ObjectType componentType,
86
+ IAuthorization authorization,
52
87
  bool isInterceptor,
53
88
  address initialOwner,
54
89
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
55
90
  bytes memory componentData // data that will saved with the component info in the instance store
56
91
  )
57
- public
92
+ internal
58
93
  virtual
59
94
  onlyInitializing()
60
95
  {
@@ -68,7 +103,7 @@ abstract contract InstanceLinkedComponent is
68
103
  revert ErrorComponentNotInstance(instanceNftId);
69
104
  }
70
105
 
71
- initializeComponent(
106
+ _initializeComponent(
72
107
  $._instance.authority(),
73
108
  registry,
74
109
  instanceNftId,
@@ -82,9 +117,11 @@ abstract contract InstanceLinkedComponent is
82
117
 
83
118
  // set component state
84
119
  $._instanceReader = $._instance.getInstanceReader();
120
+ $._initialAuthorization = authorization;
121
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
85
122
 
86
- registerInterface(type(IAccessManaged).interfaceId);
87
- registerInterface(type(IInstanceLinkedComponent).interfaceId);
123
+ _registerInterface(type(IAccessManaged).interfaceId);
124
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
88
125
  }
89
126
 
90
127
  /// @dev for instance linked components the wallet address stored in the instance store.
@@ -93,25 +130,9 @@ abstract contract InstanceLinkedComponent is
93
130
  IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
94
131
  }
95
132
 
96
- function lock() external onlyOwner {
97
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
98
- }
99
-
100
- function unlock() external onlyOwner {
101
- IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
102
- }
103
-
104
- function getInstance() public view override returns (IInstance instance) {
105
- return _getInstanceLinkedComponentStorage()._instance;
106
- }
107
-
108
- function getProductNftId() public view override returns (NftId productNftId) {
109
- return getComponentInfo().productNftId;
110
- }
111
-
112
133
 
113
134
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
114
- NftId componentNftId = getRegistry().getNftId(address(this));
135
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
115
136
 
116
137
  // if registered, attempt to return component info via instance reader
117
138
  if (componentNftId.gtz()) {
@@ -134,6 +155,13 @@ abstract contract InstanceLinkedComponent is
134
155
  return _getInstanceLinkedComponentStorage()._instanceReader;
135
156
  }
136
157
 
158
+ function _withdrawFees(Amount amount)
159
+ internal
160
+ returns (Amount withdrawnAmount)
161
+ {
162
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
163
+ }
164
+
137
165
 
138
166
  /// @dev returns the service address for the specified domain
139
167
  /// gets address via lookup from registry using the major version form the linked instance
@@ -11,7 +11,7 @@ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
11
11
  import {Lifecycle} from "./Lifecycle.sol";
12
12
  import {IKeyValueStore} from "./IKeyValueStore.sol";
13
13
 
14
- contract KeyValueStore is
14
+ abstract contract KeyValueStore is
15
15
  Lifecycle,
16
16
  IKeyValueStore
17
17
  {
@@ -34,8 +34,12 @@ contract KeyValueStore is
34
34
  revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
35
  }
36
36
 
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
37
41
  Blocknumber blocknumber = blockBlocknumber();
38
- StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
42
+ StateId initialState = getInitialState(objectType);
39
43
 
40
44
  // set metadata
41
45
  metadata.objectType = objectType;
@@ -1,15 +1,11 @@
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
-
6
- import {NftId} from "../type/NftId.sol";
7
- import {ObjectType, COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
8
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
9
6
  import {ILifecycle} from "./ILifecycle.sol";
10
7
 
11
- contract Lifecycle is
12
- Initializable,
8
+ abstract contract Lifecycle is
13
9
  ILifecycle
14
10
  {
15
11
  mapping(ObjectType objectType => StateId initialState)
@@ -18,16 +14,17 @@ contract Lifecycle is
18
14
  mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
19
15
  private _isValidTransition;
20
16
 
21
- function initializeLifecycle()
22
- public
23
- onlyInitializing
24
- {
25
- _setupBundleLifecycle();
26
- _setupComponentLifecycle();
27
- _setupPolicyLifecycle();
28
- _setupClaimAndPayoutLifecycle();
29
- _setupRiskLifecycle();
30
- _setupRequestLifecycle();
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
31
28
  }
32
29
 
33
30
  function hasLifecycle(
@@ -59,9 +56,9 @@ contract Lifecycle is
59
56
  public
60
57
  view
61
58
  {
62
- // return if no life cycle support
59
+ // revert if no life cycle support
63
60
  if (_initialState[objectType].eqz()) {
64
- return;
61
+ revert ErrorNoLifecycle(objectType);
65
62
  }
66
63
 
67
64
  // enforce valid state transition
@@ -77,54 +74,4 @@ contract Lifecycle is
77
74
  ) public view returns (bool) {
78
75
  return _isValidTransition[objectType][fromId][toId];
79
76
  }
80
-
81
- function _setupComponentLifecycle() internal {
82
- _initialState[COMPONENT()] = ACTIVE();
83
- _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
84
- _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
85
- _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
86
- }
87
-
88
- function _setupBundleLifecycle() internal {
89
- _initialState[BUNDLE()] = ACTIVE();
90
- _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
91
- _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
92
- _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
93
- _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
94
- }
95
-
96
- function _setupPolicyLifecycle() internal {
97
- _initialState[POLICY()] = APPLIED();
98
- _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
99
- _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
100
- _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
101
- _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
102
- _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
103
- _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
104
- }
105
-
106
- function _setupClaimAndPayoutLifecycle() internal {
107
- _initialState[CLAIM()] = SUBMITTED();
108
- _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
109
- _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
110
- _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
111
-
112
- _initialState[PAYOUT()] = EXPECTED();
113
- _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
114
- }
115
-
116
- function _setupRiskLifecycle() internal {
117
- _initialState[RISK()] = ACTIVE();
118
- _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
119
- _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
120
- _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
121
- }
122
-
123
- function _setupRequestLifecycle() internal {
124
- _initialState[REQUEST()] = ACTIVE();
125
- _isValidTransition[REQUEST()][ACTIVE()][FULFILLED()] = true;
126
- _isValidTransition[REQUEST()][ACTIVE()][FAILED()] = true;
127
- _isValidTransition[REQUEST()][FAILED()][FULFILLED()] = true;
128
- _isValidTransition[REQUEST()][ACTIVE()][CANCELLED()] = true;
129
- }
130
77
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {LibNftIdSet} from "../type/NftIdSet.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
6
 
7
- contract NftIdSetManager {
7
+ contract NftIdSet {
8
8
 
9
9
  error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
10
  error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
@@ -1,13 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ERC165} from "./ERC165.sol";
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
5
5
  import {INftOwnable} from "./INftOwnable.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
7
  import {RegistryLinked} from "./RegistryLinked.sol";
8
8
 
9
9
  contract NftOwnable is
10
- ERC165,
10
+ InitializableERC165,
11
11
  RegistryLinked,
12
12
  INftOwnable
13
13
  {
@@ -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();
@@ -93,7 +93,7 @@ contract NftOwnable is
93
93
  revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
94
94
  }
95
95
 
96
- $._nftId = getRegistry().getNftId(nftOwnableAddress);
96
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
97
97
 
98
98
  return $._nftId;
99
99
  }
@@ -1,74 +1,46 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
4
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
5
 
8
6
  import {Amount} from "../type/Amount.sol";
9
7
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ERC165} from "./ERC165.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
11
9
  import {IPolicyHolder} from "./IPolicyHolder.sol";
12
10
  import {NftId} from "../type/NftId.sol";
13
11
  import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
14
12
  import {RegistryLinked} from "./RegistryLinked.sol";
15
- import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
16
14
 
17
15
  /// @dev template implementation for IPolicyHolder
18
16
  contract PolicyHolder is
19
- ERC165,
20
- RegistryLinked, // TODO need upgradeable version
17
+ InitializableERC165,
18
+ RegistryLinked,
21
19
  IPolicyHolder
22
20
  {
23
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.PolicyHolder")) - 1)) & ~bytes32(uint256(0xff));
24
- // TODO fix address
25
- bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
26
-
27
- struct PolicyHolderStorage {
28
- mapping(NftId policyId => mapping(PayoutId payoutId => address beneficiary)) _beneficiary;
29
- address _beneficiaryDefault;
30
- }
31
-
32
- function initializePolicyHolder(
33
- address registryAddress,
34
- address beneficiaryDefault
21
+ function _initializePolicyHolder(
22
+ address registryAddress
35
23
  )
36
- public
24
+ internal
37
25
  virtual
38
26
  onlyInitializing()
39
27
  {
40
- initializeRegistryLinked(registryAddress);
41
-
42
- _getPolicyHolderStorage()._beneficiaryDefault = beneficiaryDefault;
43
-
44
- registerInterface(type(IPolicyHolder).interfaceId);
28
+ _initializeRegistryLinked(registryAddress);
29
+ _initializeERC165();
30
+ _registerInterface(type(IPolicyHolder).interfaceId);
45
31
  }
46
32
 
47
33
  /// @dev empty default implementation
48
- function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external { }
49
-
50
- /// @dev empty default implementation
51
- function policyActivated(NftId policyNftId) external {}
34
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
52
35
 
53
36
  /// @dev empty default implementation
54
- function policyExpired(NftId policyNftId) external {}
37
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
55
38
 
56
39
  /// @dev empty default implementation
57
- function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
40
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
58
41
 
59
42
  /// @dev empty default implementation
60
- function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
61
-
62
- /// @dev returns payout specific beneficiary
63
- /// when no such beneficiary is defined the policy specific beneficiary is returned
64
- function getBeneficiary(NftId policyNftId, PayoutId payoutId) external virtual view returns (address beneficiary) {
65
- beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId];
66
-
67
- // fallback to claim independent beneficiary
68
- if(beneficiary == address(0) && payoutId.gtz()) {
69
- beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][PayoutIdLib.zero()];
70
- }
71
- }
43
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
72
44
 
73
45
  //--- IERC165 functions ---------------//
74
46
  function onERC721Received(
@@ -83,20 +55,4 @@ contract PolicyHolder is
83
55
  {
84
56
  return IERC721Receiver.onERC721Received.selector;
85
57
  }
86
-
87
- /// @dev sets policy specific beneficiary (used when no payout specific beneficiary is defined)
88
- function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
89
- _setBeneficiary(policyNftId, PayoutIdLib.zero(), beneficiary);
90
- }
91
-
92
- /// @dev sets policy and claim specific beneficiary
93
- function _setBeneficiary(NftId policyNftId, PayoutId payoutId, address beneficiary) internal {
94
- _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId] = beneficiary;
95
- }
96
-
97
- function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
98
- assembly {
99
- $.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
100
- }
101
- }
102
58
  }
@@ -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
  {