@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1bd1936-188

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 (468) hide show
  1. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +72 -139
  3. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +116 -110
  5. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +33 -72
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +66 -89
  9. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +101 -122
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +65 -20
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +139 -198
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -71
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +60 -30
  50. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +152 -173
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +65 -41
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +108 -170
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +164 -211
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +65 -41
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
  64. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
  65. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
  69. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  70. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
  71. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
  73. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
  75. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
  79. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  81. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
  82. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  83. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  84. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -77
  85. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  86. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +44 -83
  87. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/Instance.sol/Instance.json +50 -144
  89. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  90. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +147 -169
  91. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  92. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
  93. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
  95. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +75 -138
  97. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
  99. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
  101. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  102. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
  103. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  104. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
  105. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  106. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  107. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  108. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +1 -1
  109. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  111. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  113. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  114. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
  115. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  117. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  118. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  119. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  120. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  122. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  124. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
  125. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
  127. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
  130. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
  132. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  133. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
  134. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  135. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
  136. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
  138. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  139. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
  140. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  141. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
  142. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  143. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +117 -176
  144. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
  146. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  147. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -71
  148. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  149. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
  150. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  151. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +86 -94
  152. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  153. package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
  154. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  155. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
  156. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  157. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +165 -233
  158. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
  160. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  161. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
  162. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
  164. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  165. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
  166. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  167. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
  168. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  169. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
  170. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
  172. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  173. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
  174. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  175. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
  176. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  177. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +64 -82
  178. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  179. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
  180. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  181. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
  182. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
  184. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  185. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +127 -173
  186. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  187. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
  188. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  189. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
  190. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  191. package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
  192. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  193. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
  194. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  195. package/artifacts/contracts/product/Product.sol/Product.json +57 -72
  196. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  197. package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
  198. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
  200. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  201. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +56 -155
  203. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  204. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
  205. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
  207. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  208. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/Registry.sol/Registry.json +96 -314
  210. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +142 -163
  212. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  213. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
  214. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  215. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
  216. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
  218. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  219. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +150 -159
  220. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  222. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  223. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +185 -127
  224. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  225. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
  226. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  227. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
  228. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
  230. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  231. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +320 -164
  232. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  233. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
  234. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
  236. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  237. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  238. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  239. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  240. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  241. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +38 -96
  243. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
  245. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +226 -82
  247. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
  249. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  250. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
  252. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
  254. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
  256. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  257. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
  258. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
  260. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  261. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  262. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
  263. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  264. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  265. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  266. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
  268. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  269. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
  270. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
  272. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  273. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
  274. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  275. package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  277. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
  278. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  279. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
  280. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  281. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
  282. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +56 -101
  284. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +36 -75
  286. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  287. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  288. package/artifacts/contracts/staking/Staking.sol/Staking.json +109 -170
  289. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
  291. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
  293. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
  295. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +65 -132
  297. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
  299. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  300. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
  301. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  302. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
  303. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  304. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
  305. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  331. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
  332. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  351. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  353. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  354. package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
  355. package/contracts/accounting/AccountingService.sol +6 -5
  356. package/contracts/accounting/AccountingServiceManager.sol +6 -4
  357. package/contracts/accounting/IAccountingService.sol +1 -1
  358. package/contracts/authorization/AccessAdmin.sol +19 -22
  359. package/contracts/authorization/AccessAdminLib.sol +9 -12
  360. package/contracts/authorization/AccessManagerCloneable.sol +48 -24
  361. package/contracts/authorization/Authorization.sol +2 -2
  362. package/contracts/authorization/IAccessAdmin.sol +3 -3
  363. package/contracts/authorization/IServiceAuthorization.sol +1 -1
  364. package/contracts/authorization/ServiceAuthorization.sol +4 -4
  365. package/contracts/distribution/BasicDistribution.sol +2 -0
  366. package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
  367. package/contracts/distribution/Distribution.sol +2 -0
  368. package/contracts/distribution/DistributionService.sol +20 -24
  369. package/contracts/distribution/DistributionServiceManager.sol +6 -4
  370. package/contracts/examples/fire/FirePool.sol +4 -0
  371. package/contracts/examples/fire/FireProduct.sol +4 -0
  372. package/contracts/examples/flight/FlightLib.sol +5 -1
  373. package/contracts/examples/flight/FlightOracle.sol +8 -0
  374. package/contracts/examples/flight/FlightPool.sol +4 -0
  375. package/contracts/examples/flight/FlightProduct.sol +29 -4
  376. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
  377. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
  378. package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
  379. package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
  380. package/contracts/instance/Instance.sol +11 -7
  381. package/contracts/instance/InstanceAdmin.sol +17 -10
  382. package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
  383. package/contracts/instance/InstanceReader.sol +15 -15
  384. package/contracts/instance/InstanceService.sol +20 -18
  385. package/contracts/instance/InstanceServiceManager.sol +6 -4
  386. package/contracts/instance/base/Cloneable.sol +10 -4
  387. package/contracts/instance/base/ObjectSet.sol +2 -2
  388. package/contracts/oracle/BasicOracle.sol +2 -0
  389. package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
  390. package/contracts/oracle/IOracleService.sol +4 -0
  391. package/contracts/oracle/Oracle.sol +4 -3
  392. package/contracts/oracle/OracleService.sol +67 -37
  393. package/contracts/oracle/OracleServiceManager.sol +6 -4
  394. package/contracts/pool/BasicPool.sol +4 -2
  395. package/contracts/pool/BasicPoolAuthorization.sol +4 -5
  396. package/contracts/pool/BundleService.sol +19 -25
  397. package/contracts/pool/BundleServiceManager.sol +7 -5
  398. package/contracts/pool/IPoolService.sol +6 -5
  399. package/contracts/pool/Pool.sol +3 -1
  400. package/contracts/pool/PoolLib.sol +102 -5
  401. package/contracts/pool/PoolService.sol +101 -67
  402. package/contracts/pool/PoolServiceManager.sol +6 -4
  403. package/contracts/product/ApplicationService.sol +34 -13
  404. package/contracts/product/ApplicationServiceManager.sol +6 -4
  405. package/contracts/product/BasicProduct.sol +2 -0
  406. package/contracts/product/BasicProductAuthorization.sol +4 -5
  407. package/contracts/product/ClaimService.sol +34 -10
  408. package/contracts/product/ClaimServiceManager.sol +7 -5
  409. package/contracts/product/IPolicyService.sol +1 -0
  410. package/contracts/product/PolicyService.sol +57 -44
  411. package/contracts/product/PolicyServiceManager.sol +6 -4
  412. package/contracts/product/PricingService.sol +8 -7
  413. package/contracts/product/PricingServiceManager.sol +6 -4
  414. package/contracts/product/Product.sol +2 -0
  415. package/contracts/product/RiskService.sol +40 -8
  416. package/contracts/product/RiskServiceManager.sol +6 -4
  417. package/contracts/registry/IRegistry.sol +14 -20
  418. package/contracts/registry/IRegistryService.sol +14 -10
  419. package/contracts/registry/IRelease.sol +3 -0
  420. package/contracts/registry/Registry.sol +78 -124
  421. package/contracts/registry/RegistryAdmin.sol +22 -11
  422. package/contracts/registry/RegistryAuthorization.sol +3 -4
  423. package/contracts/registry/RegistryService.sol +82 -99
  424. package/contracts/registry/RegistryServiceManager.sol +11 -4
  425. package/contracts/registry/ReleaseAdmin.sol +16 -9
  426. package/contracts/registry/ReleaseRegistry.sol +74 -64
  427. package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
  428. package/contracts/registry/TokenRegistry.sol +15 -6
  429. package/contracts/shared/Component.sol +22 -27
  430. package/contracts/shared/ComponentService.sol +130 -45
  431. package/contracts/shared/ComponentServiceManager.sol +7 -5
  432. package/contracts/shared/ContractLib.sol +93 -359
  433. package/contracts/shared/IComponent.sol +3 -5
  434. package/contracts/shared/IComponentService.sol +14 -0
  435. package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
  436. package/contracts/shared/INftOwnable.sol +2 -0
  437. package/contracts/shared/IRegisterable.sol +3 -14
  438. package/contracts/shared/IRegistryLinked.sol +3 -1
  439. package/contracts/shared/IService.sol +2 -2
  440. package/contracts/shared/InstanceLinkedComponent.sol +64 -29
  441. package/contracts/shared/NftOwnable.sol +22 -9
  442. package/contracts/shared/PolicyHolder.sol +4 -2
  443. package/contracts/shared/Registerable.sol +20 -37
  444. package/contracts/shared/RegistryLinked.sol +23 -4
  445. package/contracts/shared/Service.sol +9 -8
  446. package/contracts/shared/TokenHandler.sol +1 -4
  447. package/contracts/staking/IStaking.sol +2 -2
  448. package/contracts/staking/Staking.sol +33 -28
  449. package/contracts/staking/StakingLib.sol +1 -3
  450. package/contracts/staking/StakingManager.sol +6 -3
  451. package/contracts/staking/StakingReader.sol +17 -9
  452. package/contracts/staking/StakingService.sol +13 -16
  453. package/contracts/staking/StakingServiceManager.sol +8 -4
  454. package/contracts/staking/StakingStore.sol +8 -8
  455. package/contracts/staking/TargetHandler.sol +5 -4
  456. package/contracts/type/Version.sol +16 -15
  457. package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
  458. package/contracts/upgradeability/ProxyManager.sol +54 -46
  459. package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
  460. package/package.json +1 -1
  461. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  462. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
  463. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  464. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
  465. package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
  466. package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
  467. package/contracts/shared/IVersionable.sol +0 -19
  468. package/contracts/shared/Versionable.sol +0 -47
@@ -7,15 +7,19 @@ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
7
  import {IInstance} from "../instance/IInstance.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ObjectType} from "../type/ObjectType.sol";
10
- import {VersionPart} from "../type/Version.sol";
11
10
 
12
11
  /// @dev component base class
13
12
  /// component examples are product, distribution, pool and oracle
14
13
  interface IInstanceLinkedComponent is
15
14
  IAuthorizedComponent
16
15
  {
17
- error ErrorInstanceLinkedComponentInstanceInvalid();
18
- error ErrorInstanceLinkedComponentInstanceMismatch(VersionPart instanceRelease, VersionPart componentRelease);
16
+ error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
17
+ error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
18
+
19
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
20
+ /// @param amount the amount to withdraw
21
+ /// @return withdrawnAmount the amount that was actually withdrawn
22
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
19
23
 
20
24
  /// @dev defines the instance to which this component is linked to
21
25
  function getInstance() external view returns (IInstance instance);
@@ -5,6 +5,7 @@ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
6
  import {IRegistryLinked} from "./IRegistryLinked.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
8
9
 
9
10
  interface INftOwnable is
10
11
  IERC165,
@@ -14,6 +15,7 @@ interface INftOwnable is
14
15
 
15
16
  error ErrorNftOwnableInitialOwnerZero();
16
17
  error ErrorNftOwnableNotOwner(address account);
18
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
17
19
 
18
20
  error ErrorNftOwnableAlreadyLinked(NftId nftId);
19
21
  error ErrorNftOwnableContractNotRegistered(address contractAddress);
@@ -4,11 +4,8 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
8
- import {IVersionable} from "./IVersionable.sol";
9
- import {ObjectType} from "../type/ObjectType.sol";
10
- import {NftId} from "../type/NftId.sol";
11
- import {VersionPart} from "../type/Version.sol";
12
9
 
13
10
  /// @title IRegisterable
14
11
  /// @dev Marks contracts that are intended to be registered in the registry.
@@ -16,7 +13,7 @@ import {VersionPart} from "../type/Version.sol";
16
13
  interface IRegisterable is
17
14
  IAccessManaged,
18
15
  INftOwnable,
19
- IVersionable
16
+ IRelease
20
17
  {
21
18
  // __Registerable_init
22
19
  error ErrorAuthorityInvalid(address authority);
@@ -24,9 +21,6 @@ interface IRegisterable is
24
21
  // onlyActive()
25
22
  error ErrorRegisterableNotActive();
26
23
 
27
- //_checkNftType()
28
- error ErrorRegisterableInvalidType(NftId nftId, ObjectType expectedType, VersionPart expectedRelease);
29
-
30
24
  /// @dev Returns true iff this contract managed by its authority is active.
31
25
  /// Queries the IAccessManaged.authority().
32
26
  function isActive() external view returns (bool active);
@@ -38,10 +32,5 @@ interface IRegisterable is
38
32
  function getInitialInfo()
39
33
  external
40
34
  view
41
- returns (IRegistry.ObjectInfo memory info);
42
-
43
- function getInitialData()
44
- external
45
- view
46
- returns (bytes memory data);
35
+ returns (IRegistry.ObjectInfo memory);
47
36
  }
@@ -5,5 +5,7 @@ import {IRegistry} from "../registry/IRegistry.sol";
5
5
 
6
6
  interface IRegistryLinked {
7
7
 
8
- function getRegistry() external pure returns (IRegistry);
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
9
11
  }
@@ -4,14 +4,14 @@ 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 {IUpgradeable} from "../upgradeability/IUpgradeable.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
 
11
11
  interface IService is
12
12
  IAccessManaged,
13
13
  IRegisterable,
14
- IUpgradeable
14
+ IVersionable
15
15
  {
16
16
  /// @dev returns the domain for this service.
17
17
  /// In any GIF release only one service for any given domain may be deployed.
@@ -33,6 +33,7 @@ abstract contract InstanceLinkedComponent is
33
33
 
34
34
  struct InstanceLinkedComponentStorage {
35
35
  IInstance _instance; // instance for this component
36
+ InstanceReader _instanceReader; // instance reader for this component
36
37
  IAuthorization _initialAuthorization;
37
38
  IComponentService _componentService;
38
39
  IOracleService _oracleService;
@@ -52,7 +53,16 @@ abstract contract InstanceLinkedComponent is
52
53
  }
53
54
 
54
55
 
55
- //function setInstanceReader(address readerAddress);
56
+ /// @inheritdoc IInstanceLinkedComponent
57
+ function withdrawFees(Amount amount)
58
+ external
59
+ virtual
60
+ restricted()
61
+ onlyOwner()
62
+ returns (Amount withdrawnAmount)
63
+ {
64
+ return _withdrawFees(amount);
65
+ }
56
66
 
57
67
  //--- internal functions ------------------------------------------------//
58
68
 
@@ -74,7 +84,6 @@ abstract contract InstanceLinkedComponent is
74
84
  }
75
85
 
76
86
 
77
-
78
87
  function _cancelRequest(RequestId requestId)
79
88
  internal
80
89
  virtual
@@ -99,6 +108,7 @@ abstract contract InstanceLinkedComponent is
99
108
 
100
109
 
101
110
  function __InstanceLinkedComponent_init(
111
+ address registry,
102
112
  NftId parentNftId,
103
113
  string memory name,
104
114
  ObjectType componentType,
@@ -106,25 +116,34 @@ abstract contract InstanceLinkedComponent is
106
116
  bool isInterceptor,
107
117
  address initialOwner
108
118
  )
109
- internal
119
+ internal
110
120
  virtual
111
121
  onlyInitializing()
112
122
  {
113
- IInstance instance = _checkAndGetInstance(parentNftId, componentType);
123
+ // validate registry, nft ids and get parent nft id
124
+ NftId instanceNftId = _checkAndGetInstanceNftId(
125
+ registry,
126
+ parentNftId,
127
+ componentType);
128
+
129
+ // set and check linked instance
130
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
131
+ $._instance = IInstance(
132
+ IRegistry(registry).getObjectAddress(instanceNftId));
114
133
 
115
134
  // set component specific parameters
116
135
  __Component_init(
117
- instance.authority(),
136
+ $._instance.authority(), // instance linked components need to point to instance admin
137
+ registry,
118
138
  parentNftId,
119
139
  name,
120
- componentType,
140
+ componentType,
121
141
  isInterceptor,
122
142
  initialOwner,
123
143
  ""); // registry data
124
144
 
125
145
  // set instance linked specific parameters
126
- InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
127
- $._instance = instance;
146
+ $._instanceReader = $._instance.getInstanceReader();
128
147
  $._initialAuthorization = authorization;
129
148
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
130
149
  $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
@@ -133,35 +152,44 @@ abstract contract InstanceLinkedComponent is
133
152
  _registerInterface(type(IInstanceLinkedComponent).interfaceId);
134
153
  }
135
154
 
136
- function _checkAndGetInstance(
155
+
156
+ function _checkAndGetInstanceNftId(
157
+ address registryAddress,
137
158
  NftId parentNftId,
138
159
  ObjectType componentType
139
160
  )
140
- private
161
+ internal
141
162
  view
142
- returns (IInstance instance)
163
+ returns (NftId instanceNftId)
143
164
  {
144
- NftId instanceNftId;
145
- IRegistry registry = _getRegistry();
146
-
147
- if(componentType == PRODUCT()) {
148
- instanceNftId = parentNftId;
149
- } else {
150
- NftId productNftId = parentNftId;
151
- instanceNftId = registry.getParentNftId(productNftId);
165
+ // if product, then parent is already instance
166
+ if (componentType == PRODUCT()) {
167
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
168
+ return parentNftId;
152
169
  }
153
170
 
154
- IRegistry.ObjectInfo memory info = registry.getObjectInfo(instanceNftId);
171
+ // if not product parent is product, and parent of product is instance
172
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
173
+ return registry.getParentNftId(parentNftId);
174
+ }
155
175
 
156
- if (info.objectType != INSTANCE()) {
157
- revert ErrorInstanceLinkedComponentInstanceInvalid();
158
- }
176
+ /// @dev checks the and gets registry.
177
+ /// validates registry using a provided nft id and expected object type.
178
+ function _checkAndGetRegistry(
179
+ address registryAddress,
180
+ NftId objectNftId,
181
+ ObjectType requiredType
182
+ )
183
+ internal
184
+ view
185
+ returns (IRegistry registry)
186
+ {
187
+ registry = IRegistry(registryAddress);
188
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
159
189
 
160
- if(info.release != getRelease()) {
161
- revert ErrorInstanceLinkedComponentInstanceMismatch(info.release, getRelease());
190
+ if (info.objectType != requiredType) {
191
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
162
192
  }
163
-
164
- instance = IInstance(info.objectAddress);
165
193
  }
166
194
 
167
195
 
@@ -173,7 +201,7 @@ abstract contract InstanceLinkedComponent is
173
201
 
174
202
 
175
203
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
176
- NftId componentNftId = _getRegistry().getNftIdForAddress(address(this));
204
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
177
205
 
178
206
  // if registered, attempt to return component info via instance reader
179
207
  if (componentNftId.gtz()) {
@@ -193,6 +221,13 @@ abstract contract InstanceLinkedComponent is
193
221
 
194
222
  /// @dev returns reader for linked instance
195
223
  function _getInstanceReader() internal view returns (InstanceReader reader) {
196
- return _getInstanceLinkedComponentStorage()._instance.getInstanceReader();
224
+ return _getInstanceLinkedComponentStorage()._instanceReader;
225
+ }
226
+
227
+ function _withdrawFees(Amount amount)
228
+ internal
229
+ returns (Amount withdrawnAmount)
230
+ {
231
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
197
232
  }
198
233
  }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {InitializableERC165} from "./InitializableERC165.sol";
5
5
  import {INftOwnable} from "./INftOwnable.sol";
6
6
  import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
7
8
  import {RegistryLinked} from "./RegistryLinked.sol";
8
9
 
9
10
  contract NftOwnable is
@@ -28,15 +29,28 @@ contract NftOwnable is
28
29
  }
29
30
 
30
31
  modifier onlyNftOwner(NftId nftId) {
31
- if(!_getRegistry().isOwnerOf(nftId, msg.sender)) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
32
33
  revert ErrorNftOwnableNotOwner(msg.sender);
33
34
  }
34
35
  _;
35
36
  }
36
37
 
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
42
+
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(expectedObjectType.eqz() || !getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
46
+ }
47
+ }
48
+
49
+
37
50
  /// @dev Initialization for upgradable contracts.
38
- // used in __Registerable_init, ProxyManager.initialize
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
39
52
  function __NftOwnable_init(
53
+ address registry,
40
54
  address initialOwner
41
55
  )
42
56
  internal
@@ -44,6 +58,7 @@ contract NftOwnable is
44
58
  onlyInitializing()
45
59
  {
46
60
  __ERC165_init();
61
+ __RegistryLinked_init(registry);
47
62
 
48
63
  if(initialOwner == address(0)) {
49
64
  revert ErrorNftOwnableInitialOwnerZero();
@@ -73,7 +88,7 @@ contract NftOwnable is
73
88
  NftOwnableStorage storage $ = _getNftOwnableStorage();
74
89
 
75
90
  if ($._nftId.gtz()) {
76
- return _getRegistry().ownerOf($._nftId);
91
+ return getRegistry().ownerOf($._nftId);
77
92
  }
78
93
 
79
94
  return $._initialOwner;
@@ -93,17 +108,15 @@ contract NftOwnable is
93
108
  revert ErrorNftOwnableAlreadyLinked($._nftId);
94
109
  }
95
110
 
96
- NftId nftId = _getRegistry().getNftIdForAddress(nftOwnableAddress);
97
-
98
- if (nftId.eqz()) {
111
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
99
112
  revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
100
113
  }
101
114
 
102
- $._nftId = nftId;
115
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
103
116
 
104
- emit LogNftOwnableNftLinkedToAddress(nftId, getOwner());
117
+ emit LogNftOwnableNftLinkedToAddress($._nftId, getOwner());
105
118
 
106
- return nftId;
119
+ return $._nftId;
107
120
  }
108
121
 
109
122
 
@@ -23,12 +23,14 @@ contract PolicyHolder is
23
23
  // callbacks must only be allowed from the policy and claim services
24
24
  // will need a release parameter to fetch the right service addresses for the modifiers
25
25
 
26
- function __PolicyHolder_init(
26
+ function _initializePolicyHolder(
27
+ address registryAddress
27
28
  )
28
29
  internal
29
30
  virtual
30
31
  onlyInitializing()
31
32
  {
33
+ __RegistryLinked_init(registryAddress);
32
34
  _initializeERC165();
33
35
  _registerInterface(type(IPolicyHolder).interfaceId);
34
36
  }
@@ -45,7 +47,7 @@ contract PolicyHolder is
45
47
  /// @dev empty default implementation
46
48
  function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
47
49
 
48
- //--- IERC721 functions ---------------//
50
+ //--- IERC165 functions ---------------//
49
51
  function onERC721Received(
50
52
  address, // operator
51
53
  address, // from
@@ -9,16 +9,15 @@ import {ContractLib} from "../shared/ContractLib.sol";
9
9
  import {NftId, NftIdLib} from "../type/NftId.sol";
10
10
  import {NftOwnable} from "../shared/NftOwnable.sol";
11
11
  import {ObjectType} from "../type/ObjectType.sol";
12
- import {Versionable} from "../shared/Versionable.sol";
13
12
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
14
13
 
15
14
  import {IRegistry} from "../registry/IRegistry.sol";
16
15
  import {IRegisterable} from "./IRegisterable.sol";
16
+ import {IRelease} from "../registry/IRelease.sol";
17
17
 
18
18
  abstract contract Registerable is
19
19
  AccessManagedUpgradeable,
20
20
  NftOwnable,
21
- Versionable,
22
21
  IRegisterable
23
22
  {
24
23
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
@@ -38,27 +37,14 @@ abstract contract Registerable is
38
37
  _;
39
38
  }
40
39
 
41
- modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
42
- _checkNftType(nftId, expectedObjectType);
43
- _;
44
- }
45
-
46
- // TODO move to registerables verification library
47
- // TODO and check the owner here?
48
- function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
49
- VersionPart expectedRelease = getRelease();
50
- if(expectedObjectType.eqz() || !_getRegistry().isObjectType(nftId, expectedObjectType, expectedRelease)) {
51
- revert ErrorRegisterableInvalidType(nftId, expectedObjectType, expectedRelease);
52
- }
53
- }
54
-
55
40
  function __Registerable_init(
56
41
  address authority,
42
+ address registry,
57
43
  NftId parentNftId,
58
44
  ObjectType objectType,
59
45
  bool isInterceptor,
60
46
  address initialOwner,
61
- bytes memory data
47
+ bytes memory data // writeonly data that will saved in the object info record of the registry
62
48
  )
63
49
  internal
64
50
  virtual
@@ -68,19 +54,14 @@ abstract contract Registerable is
68
54
  revert ErrorAuthorityInvalid(authority);
69
55
  }
70
56
 
71
- VersionPart release = AccessManagerCloneable(authority).getRelease();
72
-
73
57
  __AccessManaged_init(authority);
74
- __NftOwnable_init(initialOwner);
75
- __Versionable_init(release);
58
+ __NftOwnable_init(registry, initialOwner);
76
59
 
77
60
  RegisterableStorage storage $ = _getRegisterableStorage();
78
61
  $._parentNftId = parentNftId;
79
62
  $._objectType = objectType;
80
63
  $._isInterceptor = isInterceptor;
81
- if(data.length > 0) {
82
- $._data = data;
83
- }
64
+ $._data = data;
84
65
 
85
66
  _registerInterface(type(IAccessManaged).interfaceId);
86
67
  }
@@ -91,6 +72,13 @@ abstract contract Registerable is
91
72
  return !AccessManagerCloneable(authority()).isTargetClosed(address(this));
92
73
  }
93
74
 
75
+
76
+ /// @inheritdoc IRelease
77
+ function getRelease() public virtual view returns (VersionPart release) {
78
+ return AccessManagerCloneable(authority()).getRelease();
79
+ }
80
+
81
+
94
82
  /// @inheritdoc IRegisterable
95
83
  function getInitialInfo()
96
84
  public
@@ -99,19 +87,14 @@ abstract contract Registerable is
99
87
  returns (IRegistry.ObjectInfo memory info)
100
88
  {
101
89
  RegisterableStorage storage $ = _getRegisterableStorage();
102
- return (
103
- IRegistry.ObjectInfo(
104
- NftIdLib.zero(),
105
- $._parentNftId,
106
- $._objectType,
107
- getRelease(),
108
- $._isInterceptor,
109
- address(this))
110
- );
111
- }
112
-
113
- function getInitialData() public view virtual returns (bytes memory data) {
114
- return _getRegisterableStorage()._data;
90
+ return IRegistry.ObjectInfo(
91
+ NftIdLib.zero(),
92
+ $._parentNftId,
93
+ $._objectType,
94
+ $._isInterceptor,
95
+ address(this),
96
+ getOwner(),
97
+ $._data);
115
98
  }
116
99
 
117
100
 
@@ -1,19 +1,38 @@
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";
4
5
 
5
6
  import {ContractLib} from "../shared/ContractLib.sol";
6
7
  import {IRegistry} from "../registry/IRegistry.sol";
7
8
  import {IRegistryLinked} from "./IRegistryLinked.sol";
8
9
 
9
10
  contract RegistryLinked is
11
+ Initializable,
10
12
  IRegistryLinked
11
13
  {
12
- function getRegistry() external pure returns (IRegistry) {
13
- return ContractLib.getRegistry();
14
+
15
+ // priorize simplicity and size over using standard upgradeability structs
16
+ IRegistry private _registry;
17
+
18
+ /// @dev initialization for upgradable contracts
19
+ // used in _initializeRegisterable
20
+ function __RegistryLinked_init(
21
+ address registry
22
+ )
23
+ internal
24
+ virtual
25
+ onlyInitializing()
26
+ {
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
29
+ }
30
+
31
+ _registry = IRegistry(registry);
14
32
  }
15
33
 
16
- function _getRegistry() internal pure returns (IRegistry) {
17
- return ContractLib.getRegistry();
34
+
35
+ function getRegistry() public view returns (IRegistry) {
36
+ return _registry;
18
37
  }
19
38
  }
@@ -5,25 +5,25 @@ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/ut
5
5
 
6
6
  import {IRegistry} from "../registry/IRegistry.sol";
7
7
  import {IService} from "./IService.sol";
8
- import {IVersionable} from "../shared/IVersionable.sol";
8
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
9
9
  import {ObjectType, SERVICE} from "../type/ObjectType.sol";
10
10
  import {Registerable} from "./Registerable.sol";
11
11
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
12
- import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
13
- import {Versionable} from "../shared/Versionable.sol";
14
- import {Upgradeable} from "../upgradeability/Upgradeable.sol";
12
+ import {Version, VersionLib} from "../type/Version.sol";
13
+ import {Versionable} from "../upgradeability/Versionable.sol";
15
14
 
16
15
 
17
16
  /// @dev service base contract
18
17
  abstract contract Service is
19
- Registerable,
20
- Upgradeable,
18
+ Registerable,
19
+ Versionable,
21
20
  ReentrancyGuardUpgradeable,
22
21
  IService
23
22
  {
24
23
 
25
24
  function __Service_init(
26
25
  address authority, // real authority for registry service adress(0) for other services
26
+ address registry,
27
27
  address initialOwner
28
28
  )
29
29
  internal
@@ -34,7 +34,8 @@ abstract contract Service is
34
34
 
35
35
  __Registerable_init(
36
36
  authority,
37
- _getRegistry().getNftId(),
37
+ registry,
38
+ IRegistry(registry).getNftId(),
38
39
  SERVICE(),
39
40
  false, // is interceptor
40
41
  initialOwner,
@@ -61,6 +62,6 @@ abstract contract Service is
61
62
 
62
63
 
63
64
  function _getServiceAddress(ObjectType domain) internal view returns (address) {
64
- return _getRegistry().getServiceAddress(domain, getRelease());
65
+ return getRegistry().getServiceAddress(domain, getRelease());
65
66
  }
66
67
  }
@@ -10,7 +10,6 @@ import {ContractLib} from "../shared/ContractLib.sol";
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
11
  import {NftId} from "../type/NftId.sol";
12
12
  import {SERVICE} from "../type/ObjectType.sol";
13
- import {VersionPart} from "../type/Version.sol";
14
13
 
15
14
 
16
15
  /// @dev Token specific transfer helper base contract.
@@ -50,7 +49,6 @@ contract TokenHandlerBase {
50
49
  IERC20Metadata public immutable TOKEN;
51
50
  address public immutable COMPONENT;
52
51
  NftId public immutable NFT_ID;
53
- VersionPart public immutable RELEASE;
54
52
 
55
53
  address internal _wallet;
56
54
 
@@ -71,7 +69,6 @@ contract TokenHandlerBase {
71
69
  REGISTRY = IRegistry(registry);
72
70
  COMPONENT = component;
73
71
  NFT_ID = REGISTRY.getNftIdForAddress(component);
74
- RELEASE = REGISTRY.getObjectRelease(NFT_ID);
75
72
 
76
73
  if (NFT_ID.eqz()) {
77
74
  revert ErrorTokenHandlerComponentNotRegistered(component);
@@ -257,7 +254,7 @@ contract TokenHandler is
257
254
  error ErrorTokenHandlerNotService(address service);
258
255
 
259
256
  modifier onlyService() {
260
- if (!REGISTRY.isObjectType(msg.sender, SERVICE(), RELEASE)) {
257
+ if (!REGISTRY.isObjectType(msg.sender, SERVICE())) {
261
258
  revert ErrorTokenHandlerNotService(msg.sender);
262
259
  }
263
260
  _;
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IComponent} from "../shared/IComponent.sol";
7
- import {IUpgradeable} from "../upgradeability/IUpgradeable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
 
9
9
  import {Amount} from "../type/Amount.sol";
10
10
  import {Blocknumber} from "../type/Blocknumber.sol";
@@ -22,7 +22,7 @@ import {VersionPart} from "../type/Version.sol";
22
22
 
23
23
  interface IStaking is
24
24
  IComponent,
25
- IUpgradeable
25
+ IVersionable
26
26
  {
27
27
 
28
28
  // owner functions