@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bbb7ced-843

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 (632) hide show
  1. package/README.md +10 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -143
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +292 -1428
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +393 -194
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +392 -2436
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +630 -351
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +578 -321
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +389 -91
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +25 -150
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  47. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  48. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  49. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  50. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  51. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  52. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  53. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  55. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  56. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  66. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  67. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +273 -290
  68. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  72. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  73. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  86. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +211 -235
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  90. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +251 -302
  92. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +270 -220
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  95. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +438 -229
  96. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  97. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +134 -142
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  106. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  107. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  113. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +279 -17
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  117. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +366 -219
  118. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +92 -0
  120. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  121. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  122. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  123. package/artifacts/contracts/registry/Registry.sol/Registry.json +512 -36
  124. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1834 -0
  126. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  127. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +538 -281
  128. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -82
  130. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +990 -233
  132. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +144 -0
  134. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  135. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -96
  136. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1492 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/{components/Pool.sol/Pool.json → shared/Component.sol/Component.json} +410 -367
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +199 -192
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1126 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  162. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  164. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  165. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +271 -133
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +240 -221
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +51 -31
  172. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  174. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  176. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  178. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  181. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IService.sol/IService.json +84 -159
  184. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  186. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  188. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  190. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  192. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  194. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  196. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  198. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  200. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  201. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  206. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  207. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  208. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  210. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  211. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  212. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  214. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  216. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  218. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  220. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  222. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  224. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  226. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  228. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  230. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  232. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  234. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  236. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  238. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  240. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  242. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  244. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  246. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  248. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  250. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  252. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  254. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  256. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  258. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  260. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  262. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  264. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  266. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  272. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  274. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  276. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  278. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  279. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  280. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  284. package/contracts/distribution/Distribution.sol +261 -0
  285. package/contracts/distribution/DistributionService.sol +297 -0
  286. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  287. package/contracts/distribution/IDistributionComponent.sol +66 -0
  288. package/contracts/distribution/IDistributionService.sol +81 -0
  289. package/contracts/instance/BundleManager.sol +22 -25
  290. package/contracts/instance/IInstance.sol +75 -48
  291. package/contracts/instance/IInstanceService.sol +77 -20
  292. package/contracts/instance/Instance.sol +186 -185
  293. package/contracts/instance/InstanceAdmin.sol +331 -0
  294. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  295. package/contracts/instance/InstanceReader.sol +160 -83
  296. package/contracts/instance/InstanceService.sol +330 -236
  297. package/contracts/instance/InstanceServiceManager.sol +12 -22
  298. package/contracts/instance/InstanceStore.sol +269 -0
  299. package/contracts/instance/base/BalanceStore.sol +123 -0
  300. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  301. package/contracts/instance/base/ObjectCounter.sol +21 -0
  302. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -37
  303. package/contracts/instance/module/IAccess.sol +19 -21
  304. package/contracts/instance/module/IBundle.sol +8 -8
  305. package/contracts/instance/module/IComponents.sol +52 -0
  306. package/contracts/instance/module/IDistribution.sol +7 -4
  307. package/contracts/instance/module/IPolicy.sol +56 -17
  308. package/contracts/instance/module/IRisk.sol +1 -1
  309. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  310. package/contracts/oracle/IOracle.sol +20 -0
  311. package/contracts/oracle/IOracleComponent.sol +32 -0
  312. package/contracts/oracle/IOracleService.sol +65 -0
  313. package/contracts/oracle/Oracle.sol +145 -0
  314. package/contracts/oracle/OracleService.sol +278 -0
  315. package/contracts/oracle/OracleServiceManager.sol +42 -0
  316. package/contracts/pool/BundleService.sol +296 -0
  317. package/contracts/pool/BundleServiceManager.sol +42 -0
  318. package/contracts/pool/IBundleService.sol +106 -0
  319. package/contracts/pool/IPoolComponent.sol +112 -0
  320. package/contracts/pool/IPoolService.sol +150 -0
  321. package/contracts/pool/Pool.sol +299 -0
  322. package/contracts/pool/PoolService.sol +452 -0
  323. package/contracts/pool/PoolServiceManager.sol +42 -0
  324. package/contracts/product/ApplicationService.sol +254 -0
  325. package/contracts/product/ApplicationServiceManager.sol +38 -0
  326. package/contracts/product/ClaimService.sol +442 -0
  327. package/contracts/product/ClaimServiceManager.sol +38 -0
  328. package/contracts/product/IApplicationService.sol +62 -0
  329. package/contracts/product/IClaimService.sol +99 -0
  330. package/contracts/product/IPolicyService.sol +78 -0
  331. package/contracts/product/IPricingService.sol +39 -0
  332. package/contracts/product/IProductComponent.sol +42 -0
  333. package/contracts/product/IProductService.sol +33 -0
  334. package/contracts/product/PolicyService.sol +475 -0
  335. package/contracts/product/PolicyServiceManager.sol +42 -0
  336. package/contracts/product/PricingService.sol +300 -0
  337. package/contracts/product/PricingServiceManager.sol +42 -0
  338. package/contracts/product/Product.sol +377 -0
  339. package/contracts/product/ProductService.sol +124 -0
  340. package/contracts/product/ProductServiceManager.sol +42 -0
  341. package/contracts/registry/ChainNft.sol +16 -1
  342. package/contracts/registry/IRegistry.sol +56 -23
  343. package/contracts/registry/IRegistryService.sol +45 -34
  344. package/contracts/registry/IServiceAuthorization.sol +28 -0
  345. package/contracts/registry/ITransferInterceptor.sol +1 -0
  346. package/contracts/registry/Registry.sol +300 -120
  347. package/contracts/registry/RegistryAdmin.sol +331 -0
  348. package/contracts/registry/RegistryService.sol +117 -171
  349. package/contracts/registry/RegistryServiceManager.sol +22 -31
  350. package/contracts/registry/ReleaseManager.sol +561 -206
  351. package/contracts/registry/ServiceAuthorizationV3.sol +246 -0
  352. package/contracts/registry/TokenRegistry.sol +263 -58
  353. package/contracts/shared/AccessAdmin.sol +696 -0
  354. package/contracts/shared/AccessManagerCustom.sol +741 -0
  355. package/contracts/shared/AccessManagerExtended.sol +481 -0
  356. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  357. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  358. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  359. package/contracts/shared/Component.sol +281 -0
  360. package/contracts/shared/ComponentService.sol +617 -0
  361. package/contracts/shared/ComponentServiceManager.sol +35 -0
  362. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  363. package/contracts/shared/ERC165.sol +15 -13
  364. package/contracts/shared/IAccessAdmin.sol +146 -0
  365. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  366. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  367. package/contracts/shared/IComponent.sol +70 -0
  368. package/contracts/shared/IComponentService.sol +102 -0
  369. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  370. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  371. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  372. package/contracts/shared/INftOwnable.sol +13 -12
  373. package/contracts/shared/IPolicyHolder.sol +45 -0
  374. package/contracts/shared/IRegisterable.sol +4 -6
  375. package/contracts/shared/IRegistryLinked.sol +11 -0
  376. package/contracts/shared/IService.sol +14 -5
  377. package/contracts/shared/IVersionable.sol +5 -48
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  380. package/contracts/shared/KeyValueStore.sol +127 -0
  381. package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
  382. package/contracts/shared/NftIdSetManager.sol +65 -0
  383. package/contracts/shared/NftOwnable.sol +59 -86
  384. package/contracts/shared/PolicyHolder.sol +102 -0
  385. package/contracts/shared/ProxyManager.sol +131 -26
  386. package/contracts/shared/Registerable.sol +26 -41
  387. package/contracts/shared/RegistryLinked.sol +43 -0
  388. package/contracts/shared/Service.sol +57 -32
  389. package/contracts/shared/TokenHandler.sol +37 -6
  390. package/contracts/shared/Versionable.sol +4 -92
  391. package/contracts/staking/IStaking.sol +168 -0
  392. package/contracts/staking/IStakingService.sol +153 -0
  393. package/contracts/staking/StakeManagerLib.sol +231 -0
  394. package/contracts/staking/Staking.sol +513 -0
  395. package/contracts/staking/StakingManager.sol +54 -0
  396. package/contracts/staking/StakingReader.sol +187 -0
  397. package/contracts/staking/StakingService.sol +411 -0
  398. package/contracts/staking/StakingServiceManager.sol +44 -0
  399. package/contracts/staking/StakingStore.sol +613 -0
  400. package/contracts/staking/TargetManagerLib.sol +207 -0
  401. package/contracts/{types → type}/AddressSet.sol +1 -1
  402. package/contracts/type/Amount.sol +128 -0
  403. package/contracts/{types → type}/Blocknumber.sol +21 -3
  404. package/contracts/type/ClaimId.sol +75 -0
  405. package/contracts/{types → type}/DistributorType.sol +2 -2
  406. package/contracts/{types → type}/Fee.sol +33 -23
  407. package/contracts/{types → type}/NftId.sol +21 -15
  408. package/contracts/{types → type}/NftIdSet.sol +2 -2
  409. package/contracts/type/ObjectType.sol +241 -0
  410. package/contracts/type/PayoutId.sol +82 -0
  411. package/contracts/{types → type}/Referral.sol +5 -1
  412. package/contracts/type/RequestId.sol +75 -0
  413. package/contracts/{types → type}/RiskId.sol +1 -1
  414. package/contracts/type/RoleId.sol +201 -0
  415. package/contracts/type/Seconds.sol +81 -0
  416. package/contracts/type/Selector.sol +102 -0
  417. package/contracts/{types → type}/StateId.sol +34 -4
  418. package/contracts/type/String.sol +53 -0
  419. package/contracts/{types → type}/Timestamp.sol +23 -14
  420. package/contracts/{types → type}/UFixed.sol +1 -0
  421. package/contracts/{types → type}/Version.sol +2 -1
  422. package/package.json +5 -5
  423. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  424. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  425. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  426. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  427. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  428. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  429. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  430. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  431. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  432. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  433. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  434. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  436. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  438. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  440. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  442. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  443. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  444. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  446. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  448. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  450. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  452. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  454. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  457. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  459. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  461. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  463. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  465. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  467. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  469. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  471. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  473. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  474. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  475. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  476. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  477. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  478. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  479. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  480. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  481. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  482. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  483. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  484. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  485. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
  486. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  487. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +0 -429
  488. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  489. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  491. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  493. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  495. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  497. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  499. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  500. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  501. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  502. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  503. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  504. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  505. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  506. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  510. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  511. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  513. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  514. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  515. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  517. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  518. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  519. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  521. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  522. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  523. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  525. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  526. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  527. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  529. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  531. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  533. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  535. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  537. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  539. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  541. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  542. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  543. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  544. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  546. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  548. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  551. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  554. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  555. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  557. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  559. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  561. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  563. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  564. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  565. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  567. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  571. package/contracts/components/BaseComponent.sol +0 -168
  572. package/contracts/components/Distribution.sol +0 -154
  573. package/contracts/components/IBaseComponent.sol +0 -35
  574. package/contracts/components/IDistributionComponent.sol +0 -44
  575. package/contracts/components/IPoolComponent.sol +0 -66
  576. package/contracts/components/IProductComponent.sol +0 -35
  577. package/contracts/components/Pool.sol +0 -258
  578. package/contracts/components/Product.sol +0 -295
  579. package/contracts/experiment/cloning/Cloner.sol +0 -47
  580. package/contracts/experiment/errors/Require.sol +0 -38
  581. package/contracts/experiment/errors/Revert.sol +0 -44
  582. package/contracts/experiment/inheritance/A.sol +0 -53
  583. package/contracts/experiment/inheritance/B.sol +0 -28
  584. package/contracts/experiment/inheritance/C.sol +0 -34
  585. package/contracts/experiment/inheritance/IA.sol +0 -13
  586. package/contracts/experiment/inheritance/IB.sol +0 -10
  587. package/contracts/experiment/inheritance/IC.sol +0 -12
  588. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  589. package/contracts/experiment/statemachine/ISM.sol +0 -25
  590. package/contracts/experiment/statemachine/SM.sol +0 -57
  591. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  592. package/contracts/experiment/types/TypeA.sol +0 -47
  593. package/contracts/experiment/types/TypeB.sol +0 -29
  594. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  595. package/contracts/instance/IInstanceBase.sol +0 -25
  596. package/contracts/instance/InstanceAccessManager.sol +0 -303
  597. package/contracts/instance/InstanceBase.sol +0 -39
  598. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  599. package/contracts/instance/base/IInstanceBase.sol +0 -21
  600. package/contracts/instance/base/KeyValueStore.sol +0 -172
  601. package/contracts/instance/module/ISetup.sol +0 -46
  602. package/contracts/instance/module/ITreasury.sol +0 -23
  603. package/contracts/instance/service/BundleService.sol +0 -294
  604. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  605. package/contracts/instance/service/DistributionService.sol +0 -120
  606. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  607. package/contracts/instance/service/IBundleService.sol +0 -44
  608. package/contracts/instance/service/IDistributionService.sol +0 -12
  609. package/contracts/instance/service/IPolicyService.sol +0 -94
  610. package/contracts/instance/service/IPoolService.sol +0 -20
  611. package/contracts/instance/service/IProductService.sol +0 -40
  612. package/contracts/instance/service/PolicyService.sol +0 -539
  613. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  614. package/contracts/instance/service/PoolService.sol +0 -145
  615. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  616. package/contracts/instance/service/ProductService.sol +0 -213
  617. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  618. package/contracts/registry/RegistryAccessManager.sol +0 -210
  619. package/contracts/shared/ContractDeployerLib.sol +0 -72
  620. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  621. package/contracts/test/TestFee.sol +0 -25
  622. package/contracts/test/TestRegisterable.sol +0 -18
  623. package/contracts/test/TestRoleId.sol +0 -14
  624. package/contracts/test/TestService.sol +0 -25
  625. package/contracts/test/TestToken.sol +0 -26
  626. package/contracts/test/TestVersion.sol +0 -44
  627. package/contracts/test/TestVersionable.sol +0 -17
  628. package/contracts/types/ChainId.sol +0 -38
  629. package/contracts/types/NumberId.sol +0 -52
  630. package/contracts/types/ObjectType.sol +0 -152
  631. package/contracts/types/RoleId.sol +0 -90
  632. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,34 +1,58 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
5
- import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
6
4
  import {ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
7
5
 
6
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
8
7
  import {IVersionable} from "./IVersionable.sol";
9
8
  import {NftOwnable} from "./NftOwnable.sol";
9
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
10
+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
11
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
12
  import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
13
+ import {Version, VersionLib} from "../type/Version.sol";
14
+ import {NftId} from "../type/NftId.sol";
11
15
 
12
16
  /// @dev manages proxy deployments for upgradable contracs of type IVersionable
13
17
  contract ProxyManager is
14
18
  NftOwnable
15
19
  {
16
20
 
17
- event LogProxyDeployed(address indexed proxy, address initialImplementation);
18
- event LogProxyDeployedWithSalt(address indexed proxy, address initialImplementation);
19
- event LogProxyUpgraded(address indexed proxy, address upgradedImplementation);
21
+ struct VersionInfo {
22
+ Version version;
23
+ address implementation;
24
+ address activatedBy;
25
+ Timestamp activatedAt;
26
+ Blocknumber activatedIn;
27
+ }
28
+
29
+ event LogProxyManagerVersionableDeployed(address indexed proxy, address initialImplementation);
30
+ event LogProxyManagerVersionableUpgraded(address indexed proxy, address upgradedImplementation);
20
31
 
21
- error ErrorAlreadyDeployed();
22
- error ErrorAlreadyDeployedWithSalt();
23
- error ErrorNotYetDeployed();
32
+ error ErrorProxyManagerAlreadyDeployed();
33
+ error ErrorProxyManagerNotYetDeployed();
34
+
35
+ error ErrorProxyManagerZeroVersion();
36
+ error ErrorProxyManagerNextVersionNotIncreasing(Version nextVersion);
24
37
 
25
38
  UpgradableProxyWithAdmin internal _proxy;
26
- bool internal _isDeployed;
39
+
40
+ // state to keep version history
41
+ mapping(Version version => VersionInfo info) _versionHistory;
42
+ Version [] _versions;
27
43
 
28
44
  /// @dev only used to capture proxy owner
29
- constructor()
30
- NftOwnable()
31
- { }
45
+ constructor(address registry)
46
+ {
47
+ initializeProxyManager(registry);
48
+ }
49
+
50
+ function initializeProxyManager(address registry)
51
+ public
52
+ initializer()
53
+ {
54
+ initializeNftOwnable(msg.sender, registry);
55
+ }
32
56
 
33
57
  /// @dev deploy initial contract
34
58
  function deploy(address initialImplementation, bytes memory initializationData)
@@ -37,22 +61,48 @@ contract ProxyManager is
37
61
  onlyOwner()
38
62
  returns (IVersionable versionable)
39
63
  {
40
- if (_isDeployed) { revert ErrorAlreadyDeployed(); }
41
- _isDeployed = true;
64
+ if (_versions.length > 0) {
65
+ revert ErrorProxyManagerAlreadyDeployed();
66
+ }
42
67
 
43
68
  address currentProxyOwner = getOwner(); // used by implementation
44
69
  address initialProxyAdminOwner = address(this); // used by proxy
45
- bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
46
70
 
47
71
  _proxy = new UpgradableProxyWithAdmin(
48
72
  initialImplementation,
49
73
  initialProxyAdminOwner,
50
- data
74
+ getDeployData(currentProxyOwner, initializationData)
51
75
  );
52
76
 
53
77
  versionable = IVersionable(address(_proxy));
78
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
54
79
 
55
- emit LogProxyDeployed(address(_proxy), initialImplementation);
80
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
81
+ }
82
+
83
+ function deployDetermenistic(address initialImplementation, bytes memory initializationData, bytes32 salt)
84
+ public
85
+ virtual
86
+ onlyOwner()
87
+ returns (IVersionable versionable)
88
+ {
89
+ if (_versions.length > 0) {
90
+ revert ErrorProxyManagerAlreadyDeployed();
91
+ }
92
+
93
+ address currentProxyOwner = getOwner();
94
+ address initialProxyAdminOwner = address(this);
95
+
96
+ _proxy = new UpgradableProxyWithAdmin{salt: salt}(
97
+ initialImplementation,
98
+ initialProxyAdminOwner,
99
+ getDeployData(currentProxyOwner, initializationData)
100
+ );
101
+
102
+ versionable = IVersionable(address(_proxy));
103
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
104
+
105
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
56
106
  }
57
107
 
58
108
  /// @dev upgrade existing contract
@@ -62,33 +112,88 @@ contract ProxyManager is
62
112
  onlyOwner()
63
113
  returns (IVersionable versionable)
64
114
  {
65
- if (!_isDeployed) { revert ErrorNotYetDeployed(); }
115
+ if (_versions.length == 0) {
116
+ revert ErrorProxyManagerNotYetDeployed();
117
+ }
66
118
 
67
119
  address currentProxyOwner = getOwner();
68
120
  ProxyAdmin proxyAdmin = getProxy().getProxyAdmin();
69
121
  ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
70
- bytes memory data = getUpgradeData(newImplementation, currentProxyOwner, upgradeData);
71
122
 
72
123
  proxyAdmin.upgradeAndCall(
73
124
  proxy,
74
125
  newImplementation,
75
- data);
126
+ getUpgradeData(upgradeData));
76
127
 
77
128
  versionable = IVersionable(address(_proxy));
129
+ _updateVersionHistory(versionable.getVersion(), newImplementation, currentProxyOwner);
130
+
131
+ emit LogProxyManagerVersionableUpgraded(address(_proxy), newImplementation);
78
132
 
79
- emit LogProxyUpgraded(address(_proxy), newImplementation);
133
+ }
80
134
 
135
+ function linkToProxy() public returns (NftId) {
136
+ return _linkToNftOwnable(address(_proxy));
81
137
  }
82
138
 
83
- function getDeployData(address implementation, address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
84
- return abi.encodeWithSelector(IVersionable.initialize.selector, implementation, proxyOwner, deployData);
139
+ function getDeployData(address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
140
+ return abi.encodeWithSelector(
141
+ IVersionable.initializeVersionable.selector,
142
+ proxyOwner,
143
+ deployData);
85
144
  }
86
145
 
87
- function getUpgradeData(address implementation, address proxyOwner, bytes memory upgradeData) public pure returns (bytes memory data) {
88
- return abi.encodeWithSelector(IVersionable.upgrade.selector, implementation, proxyOwner, upgradeData);
146
+ function getUpgradeData(bytes memory upgradeData) public pure returns (bytes memory data) {
147
+ return abi.encodeWithSelector(
148
+ IVersionable.upgradeVersionable.selector,
149
+ upgradeData);
89
150
  }
90
151
 
91
- function getProxy() public returns (UpgradableProxyWithAdmin) {
152
+ function getProxy() public view returns (UpgradableProxyWithAdmin) {
92
153
  return _proxy;
93
154
  }
155
+
156
+ function getVersion() external view virtual returns(Version) {
157
+ return IVersionable(address(_proxy)).getVersion();
158
+ }
159
+
160
+ function getVersionCount() external view returns(uint256) {
161
+ return _versions.length;
162
+ }
163
+
164
+ function getVersion(uint256 idx) external view returns(Version) {
165
+ return _versions[idx];
166
+ }
167
+
168
+ function getVersionInfo(Version _version) external view returns(VersionInfo memory) {
169
+ return _versionHistory[_version];
170
+ }
171
+
172
+ function _updateVersionHistory(
173
+ Version newVersion,
174
+ address implementation,
175
+ address activatedBy
176
+ )
177
+ private
178
+ {
179
+ if(newVersion == VersionLib.zeroVersion()) {
180
+ revert ErrorProxyManagerZeroVersion();
181
+ }
182
+
183
+ if(_versions.length > 0) {
184
+ if(newVersion.toInt() <= _versions[_versions.length-1].toInt()) {
185
+ revert ErrorProxyManagerNextVersionNotIncreasing(newVersion);
186
+ }
187
+ }
188
+
189
+ // update version history
190
+ _versions.push(newVersion);
191
+ _versionHistory[newVersion] = VersionInfo(
192
+ newVersion,
193
+ implementation,
194
+ activatedBy,
195
+ TimestampLib.blockTimestamp(),
196
+ blockNumber()
197
+ );
198
+ }
94
199
  }
@@ -3,27 +3,20 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
7
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
11
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
13
-
14
- import {ERC165} from "./ERC165.sol";
15
12
 
16
13
  contract Registerable is
17
- ERC165,
18
- Initializable,
19
14
  NftOwnable,
20
15
  IRegisterable
21
16
  {
22
17
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
18
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
19
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
20
  struct RegisterableStorage {
28
21
  NftId _parentNftId;
29
22
  ObjectType _objectType;
@@ -31,39 +24,31 @@ contract Registerable is
31
24
  bytes _data;
32
25
  }
33
26
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
37
- }
38
- }
39
-
40
- function _initializeRegisterable(
27
+ function initializeRegisterable(
41
28
  address registryAddress,
42
29
  NftId parentNftId,
43
30
  ObjectType objectType,
44
31
  bool isInterceptor,
45
32
  address initialOwner,
46
- bytes memory data
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
47
34
  )
48
- internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
35
+ public
50
36
  virtual
37
+ onlyInitializing
51
38
  {
52
- _initializeERC165();
53
- _initializeNftOwnable(
39
+ initializeNftOwnable(
54
40
  initialOwner,
55
41
  registryAddress);
56
42
 
57
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
58
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
46
+ }
59
47
 
60
- RegisterableStorage storage $ = _getRegisterableStorage();
61
48
  $._parentNftId = parentNftId;
62
49
  $._objectType = objectType;
63
50
  $._isInterceptor = isInterceptor;
64
- $._data = data;
65
-
66
- _registerInterface(type(IRegisterable).interfaceId);
51
+ $._data = registryData;
67
52
  }
68
53
 
69
54
 
@@ -71,20 +56,20 @@ contract Registerable is
71
56
  public
72
57
  view
73
58
  virtual
74
- returns (IRegistry.ObjectInfo memory, bytes memory data)
59
+ returns (IRegistry.ObjectInfo memory info)
75
60
  {
76
- RegisterableStorage storage $ = _getRegisterableStorage();
77
- return (
78
- IRegistry.ObjectInfo(
79
- getNftId(),
80
- $._parentNftId,
81
- $._objectType,
82
- $._isInterceptor,
83
- address(this),
84
- getOwner(),
85
- $._data
86
- ),
87
- bytes("")
88
- );
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
65
+
66
+ info = IRegistry.ObjectInfo(
67
+ NftIdLib.zero(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
89
74
  }
90
75
  }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ IRegistry private _registry;
14
+
15
+ /// @dev initialization for upgradable contracts
16
+ // used in _initializeRegisterable
17
+ function initializeRegistryLinked(
18
+ address registryAddress
19
+ )
20
+ public
21
+ virtual
22
+ onlyInitializing()
23
+ {
24
+ if (registryAddress.code.length == 0) {
25
+ revert ErrorNotRegistry(registryAddress);
26
+ }
27
+
28
+ _registry = IRegistry(registryAddress);
29
+
30
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
31
+ if (!isRegistry) {
32
+ revert ErrorNotRegistry(registryAddress);
33
+ }
34
+ } catch {
35
+ revert ErrorNotRegistry(registryAddress);
36
+ }
37
+ }
38
+
39
+
40
+ function getRegistry() public view returns (IRegistry) {
41
+ return _registry;
42
+ }
43
+ }
@@ -1,27 +1,68 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType, SERVICE} from "../types/ObjectType.sol";
5
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
7
6
 
8
- import {Versionable} from "./Versionable.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
9
8
  import {IService} from "./IService.sol";
10
9
  import {IVersionable} from "./IVersionable.sol";
11
- import {RegisterableUpgradable} from "./RegisterableUpgradable.sol";
12
-
13
- import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
+ import {Registerable} from "./Registerable.sol";
13
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
15
+ import {Versionable} from "./Versionable.sol";
14
16
 
15
17
 
16
18
  /// @dev service base contract
17
19
  abstract contract Service is
18
- RegisterableUpgradable,
20
+ Registerable,
21
+ Versionable,
22
+ AccessManagedUpgradeable,
19
23
  IService
20
24
  {
21
- function getDomain() public pure virtual override returns(ObjectType);
22
25
 
23
- function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
24
- return getVersion().toMajorPart();
26
+ uint8 private constant GIF_MAJOR_VERSION = 3;
27
+
28
+
29
+ function initializeService(
30
+ address registry,
31
+ address authority, // real authority for registry service adress(0) for other services
32
+ address initialOwner
33
+ )
34
+ public
35
+ virtual
36
+ onlyInitializing()
37
+ {
38
+ initializeRegisterable(
39
+ registry,
40
+ IRegistry(registry).getNftId(),
41
+ SERVICE(),
42
+ false, // is interceptor
43
+ initialOwner,
44
+ ""); // data
45
+
46
+ // externally provided authority
47
+ if(authority != address(0)) {
48
+ __AccessManaged_init(authority);
49
+ } else {
50
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
51
+
52
+ // copy authority from already registered registry services
53
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
54
+ }
55
+
56
+ registerInterface(type(IAccessManaged).interfaceId);
57
+ registerInterface(type(IService).interfaceId);
58
+ }
59
+
60
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
61
+ return _getDomain();
62
+ }
63
+
64
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
65
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
25
66
  }
26
67
 
27
68
  // from Versionable
@@ -31,28 +72,12 @@ abstract contract Service is
31
72
  virtual override (IVersionable, Versionable)
32
73
  returns(Version)
33
74
  {
34
- return VersionLib.toVersion(3,0,0);
75
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
35
76
  }
36
77
 
37
- function _initializeService(
38
- address registry,
39
- address initialOwner
40
- )
41
- internal
42
- virtual
43
- //onlyInitializing //TODO uncomment when "fully" upgradeable
44
- {
45
- // service must provide its name and version upon registration
46
- bytes memory data = abi.encode(getDomain(), getMajorVersion());
47
- NftId registryNftId = _getRegistryNftId(registry);
48
- bool isInterceptor = false;
49
-
50
- _initializeRegisterable(registry, registryNftId, SERVICE(), isInterceptor, initialOwner, data);
51
- _registerInterface(type(IService).interfaceId);
52
- }
78
+ function _getDomain() internal virtual pure returns (ObjectType);
53
79
 
54
- // this is just a conveniene function, actual validation will be done upon registration
55
- function _getRegistryNftId(address registryAddress) internal view returns (NftId) {
56
- return IRegistry(registryAddress).getNftId(registryAddress);
80
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
81
+ return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
57
82
  }
58
83
  }
@@ -4,6 +4,11 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
8
+
9
+ /// @dev token specific transfer helper
10
+ /// a default token contract is provided via contract constructor
11
+ /// relies internally on oz SafeERC20.safeTransferFrom
7
12
  contract TokenHandler {
8
13
  IERC20Metadata private _token;
9
14
 
@@ -11,17 +16,43 @@ contract TokenHandler {
11
16
  _token = IERC20Metadata(token);
12
17
  }
13
18
 
14
- // TODO add logging
19
+ /// @dev transfer amount default tokens
15
20
  function transfer(
16
21
  address from,
17
22
  address to,
18
- uint256 amount // TODO add authz (only treasury/instance/product/pool/ service)
19
- ) external {
20
- SafeERC20.safeTransferFrom(_token, from, to, amount);
21
- // _token.transferFrom(from, to, amount);
23
+ Amount amount
24
+ )
25
+ external
26
+ {
27
+ SafeERC20.safeTransferFrom(
28
+ _token,
29
+ from,
30
+ to,
31
+ amount.toInt());
32
+ }
33
+
34
+ /// @dev transfer amount of the specified token
35
+ function safeTransferFrom(
36
+ address token,
37
+ address from,
38
+ address to,
39
+ Amount amount
40
+ )
41
+ external
42
+ {
43
+ SafeERC20.safeTransferFrom(
44
+ IERC20Metadata(token),
45
+ from,
46
+ to,
47
+ amount.toInt());
22
48
  }
23
49
 
24
- function getToken() external view returns (IERC20Metadata) {
50
+ /// @dev returns the default token defined for this TokenHandler
51
+ function getToken()
52
+ external
53
+ view
54
+ returns (IERC20Metadata)
55
+ {
25
56
  return _token;
26
57
  }
27
58
  }