@etherisc/gif-next 0.0.2-bf75dbb-287 → 0.0.2-c00cf5d-513

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 (518) 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 +1395 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1583 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +855 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +307 -1339
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +305 -185
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +438 -3004
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +443 -468
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +347 -152
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +322 -347
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1426 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1649 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +783 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IPricingService.sol/IPricingService.json} +245 -177
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IProductComponent.sol/IProductComponent.json} +463 -330
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1217 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +891 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +715 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +323 -127
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +277 -253
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +343 -228
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +292 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +328 -339
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -139
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1058 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +138 -65
  123. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  124. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  125. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  133. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.json +892 -0
  135. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +650 -0
  137. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  139. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  143. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  144. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +257 -74
  145. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  147. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  149. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  151. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  153. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  154. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -47
  159. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  160. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  161. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  162. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +342 -61
  163. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  164. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -53
  165. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  166. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  167. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  169. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  170. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  171. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  173. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  175. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  176. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +202 -219
  177. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  178. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  179. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  181. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  183. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  185. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  186. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  187. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  188. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  189. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  190. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  191. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  193. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  195. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  197. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  198. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  199. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  201. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  203. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  205. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  207. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  209. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  210. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  211. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  212. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  213. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  215. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  217. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  219. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  220. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  221. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  222. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  223. package/contracts/distribution/Distribution.sol +285 -0
  224. package/contracts/distribution/DistributionService.sol +351 -0
  225. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  226. package/contracts/distribution/IDistributionComponent.sol +71 -0
  227. package/contracts/distribution/IDistributionService.sol +87 -0
  228. package/contracts/instance/BundleManager.sol +22 -25
  229. package/contracts/instance/IInstance.sol +58 -35
  230. package/contracts/instance/IInstanceService.sol +53 -15
  231. package/contracts/instance/Instance.sol +150 -370
  232. package/contracts/instance/InstanceAdmin.sol +330 -0
  233. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  234. package/contracts/instance/InstanceReader.sol +102 -49
  235. package/contracts/instance/InstanceService.sol +231 -196
  236. package/contracts/instance/InstanceServiceManager.sol +12 -25
  237. package/contracts/instance/InstanceStore.sol +211 -0
  238. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  239. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  240. package/contracts/instance/base/ILifecycle.sol +3 -3
  241. package/contracts/instance/base/KeyValueStore.sol +44 -47
  242. package/contracts/instance/base/Lifecycle.sol +28 -7
  243. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  244. package/contracts/instance/module/IAccess.sol +29 -21
  245. package/contracts/instance/module/IBundle.sol +11 -8
  246. package/contracts/instance/module/IComponents.sol +41 -0
  247. package/contracts/instance/module/IDistribution.sol +7 -4
  248. package/contracts/instance/module/IPolicy.sol +50 -17
  249. package/contracts/instance/module/IRisk.sol +1 -1
  250. package/contracts/instance/module/ISetup.sol +9 -22
  251. package/contracts/instance/module/ITreasury.sol +2 -2
  252. package/contracts/pool/BundleService.sol +384 -0
  253. package/contracts/pool/BundleServiceManager.sol +42 -0
  254. package/contracts/pool/IBundleService.sol +118 -0
  255. package/contracts/pool/IPoolComponent.sol +114 -0
  256. package/contracts/pool/IPoolService.sol +114 -0
  257. package/contracts/pool/Pool.sol +302 -0
  258. package/contracts/pool/PoolService.sol +404 -0
  259. package/contracts/pool/PoolServiceManager.sol +42 -0
  260. package/contracts/product/ApplicationService.sol +187 -0
  261. package/contracts/product/ApplicationServiceManager.sol +38 -0
  262. package/contracts/product/ClaimService.sol +443 -0
  263. package/contracts/product/ClaimServiceManager.sol +38 -0
  264. package/contracts/product/IApplicationService.sol +62 -0
  265. package/contracts/product/IClaimService.sol +93 -0
  266. package/contracts/product/IPolicyService.sol +80 -0
  267. package/contracts/product/IPricingService.sol +37 -0
  268. package/contracts/product/IProductComponent.sol +41 -0
  269. package/contracts/product/IProductService.sol +40 -0
  270. package/contracts/product/PolicyService.sol +378 -0
  271. package/contracts/product/PolicyServiceManager.sol +42 -0
  272. package/contracts/product/PricingService.sol +276 -0
  273. package/contracts/product/PricingServiceManager.sol +42 -0
  274. package/contracts/product/Product.sol +379 -0
  275. package/contracts/product/ProductService.sol +212 -0
  276. package/contracts/product/ProductServiceManager.sol +42 -0
  277. package/contracts/registry/ChainNft.sol +9 -1
  278. package/contracts/registry/IRegistry.sol +60 -28
  279. package/contracts/registry/IRegistryService.sol +37 -28
  280. package/contracts/registry/ITransferInterceptor.sol +1 -0
  281. package/contracts/registry/Registry.sol +258 -241
  282. package/contracts/registry/RegistryAdmin.sol +141 -0
  283. package/contracts/registry/RegistryService.sol +84 -210
  284. package/contracts/registry/RegistryServiceManager.sol +25 -45
  285. package/contracts/registry/ReleaseManager.sol +462 -0
  286. package/contracts/registry/TokenRegistry.sol +24 -17
  287. package/contracts/shared/AccessManagerCustom.sol +736 -0
  288. package/contracts/shared/AccessManagerExtended.sol +469 -0
  289. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  290. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  291. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  292. package/contracts/shared/Component.sol +271 -0
  293. package/contracts/shared/ComponentService.sol +142 -0
  294. package/contracts/shared/ERC165.sol +14 -12
  295. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  296. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  297. package/contracts/shared/IComponent.sol +90 -0
  298. package/contracts/shared/INftOwnable.sol +12 -11
  299. package/contracts/shared/IPolicyHolder.sol +40 -0
  300. package/contracts/shared/IRegisterable.sol +4 -6
  301. package/contracts/shared/IRegistryLinked.sol +11 -0
  302. package/contracts/shared/IService.sol +7 -4
  303. package/contracts/shared/IVersionable.sol +5 -48
  304. package/contracts/shared/NftOwnable.sol +68 -85
  305. package/contracts/shared/PolicyHolder.sol +94 -0
  306. package/contracts/shared/ProxyManager.sol +131 -25
  307. package/contracts/shared/Registerable.sol +26 -41
  308. package/contracts/shared/RegistryLinked.sol +43 -0
  309. package/contracts/shared/Service.sol +41 -24
  310. package/contracts/shared/TokenHandler.sol +14 -6
  311. package/contracts/shared/Versionable.sol +4 -92
  312. package/contracts/staking/IStakingService.sol +102 -0
  313. package/contracts/staking/StakingService.sol +169 -0
  314. package/contracts/staking/StakingServiceManager.sol +40 -0
  315. package/contracts/type/Amount.sol +109 -0
  316. package/contracts/{types → type}/Blocknumber.sol +1 -0
  317. package/contracts/type/ClaimId.sol +75 -0
  318. package/contracts/{types → type}/DistributorType.sol +2 -2
  319. package/contracts/{types → type}/Fee.sol +17 -8
  320. package/contracts/{types → type}/NftId.sol +8 -0
  321. package/contracts/{types → type}/NftIdSet.sol +1 -1
  322. package/contracts/{types → type}/ObjectType.sol +17 -7
  323. package/contracts/type/PayoutId.sol +82 -0
  324. package/contracts/{types → type}/Referral.sol +4 -0
  325. package/contracts/type/RoleId.sol +139 -0
  326. package/contracts/type/Seconds.sol +54 -0
  327. package/contracts/{types → type}/StateId.sol +7 -2
  328. package/contracts/{types → type}/Timestamp.sol +18 -13
  329. package/contracts/{types → type}/UFixed.sol +1 -0
  330. package/contracts/{types → type}/Version.sol +1 -0
  331. package/package.json +3 -3
  332. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  333. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  334. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  335. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  336. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  337. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  339. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  340. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  341. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  342. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  343. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  344. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  345. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  346. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  347. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  349. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  351. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  387. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  388. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  389. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  390. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  391. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  392. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  393. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  394. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  395. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  396. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  397. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  398. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  399. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  400. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  401. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  402. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  403. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  404. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  405. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  406. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  407. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  408. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  411. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  413. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  415. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  417. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  419. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  420. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  421. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  422. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  423. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  424. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  425. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  426. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  427. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  428. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  429. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  430. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  431. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  432. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  433. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  434. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  435. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  436. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  437. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  438. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  439. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  440. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  441. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  442. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  443. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  444. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  445. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  446. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  447. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  448. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  449. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  451. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  452. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  454. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  455. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  456. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  458. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  459. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  461. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  462. package/contracts/components/BaseComponent.sol +0 -132
  463. package/contracts/components/Distribution.sol +0 -163
  464. package/contracts/components/IBaseComponent.sol +0 -31
  465. package/contracts/components/IDistributionComponent.sol +0 -44
  466. package/contracts/components/IPoolComponent.sol +0 -66
  467. package/contracts/components/IProductComponent.sol +0 -35
  468. package/contracts/components/Pool.sol +0 -267
  469. package/contracts/components/Product.sol +0 -289
  470. package/contracts/experiment/cloning/Cloner.sol +0 -47
  471. package/contracts/experiment/errors/Require.sol +0 -38
  472. package/contracts/experiment/errors/Revert.sol +0 -44
  473. package/contracts/experiment/inheritance/A.sol +0 -53
  474. package/contracts/experiment/inheritance/B.sol +0 -28
  475. package/contracts/experiment/inheritance/C.sol +0 -34
  476. package/contracts/experiment/inheritance/IA.sol +0 -13
  477. package/contracts/experiment/inheritance/IB.sol +0 -10
  478. package/contracts/experiment/inheritance/IC.sol +0 -12
  479. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  480. package/contracts/experiment/statemachine/ISM.sol +0 -25
  481. package/contracts/experiment/statemachine/SM.sol +0 -57
  482. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  483. package/contracts/experiment/types/TypeA.sol +0 -47
  484. package/contracts/experiment/types/TypeB.sol +0 -29
  485. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  486. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  487. package/contracts/instance/IInstanceBase.sol +0 -26
  488. package/contracts/instance/InstanceAccessManager.sol +0 -288
  489. package/contracts/instance/InstanceBase.sol +0 -41
  490. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  491. package/contracts/instance/base/IInstanceBase.sol +0 -23
  492. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  493. package/contracts/instance/service/DistributionService.sol +0 -88
  494. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  495. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  496. package/contracts/instance/service/IDistributionService.sol +0 -12
  497. package/contracts/instance/service/IPoolService.sol +0 -51
  498. package/contracts/instance/service/IProductService.sol +0 -110
  499. package/contracts/instance/service/PoolService.sol +0 -287
  500. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  501. package/contracts/instance/service/ProductService.sol +0 -570
  502. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  503. package/contracts/shared/ContractDeployerLib.sol +0 -72
  504. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  505. package/contracts/test/TestFee.sol +0 -25
  506. package/contracts/test/TestRegisterable.sol +0 -18
  507. package/contracts/test/TestRoleId.sol +0 -14
  508. package/contracts/test/TestService.sol +0 -24
  509. package/contracts/test/TestToken.sol +0 -26
  510. package/contracts/test/TestVersion.sol +0 -44
  511. package/contracts/test/TestVersionable.sol +0 -17
  512. package/contracts/test/Usdc.sol +0 -26
  513. package/contracts/types/ChainId.sol +0 -38
  514. package/contracts/types/NumberId.sol +0 -52
  515. package/contracts/types/RoleId.sol +0 -90
  516. /package/contracts/{types → type}/AddressSet.sol +0 -0
  517. /package/contracts/{types → type}/Key32.sol +0 -0
  518. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,462 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
6
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
7
+
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
10
+ import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
11
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
12
+ import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
13
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
14
+
15
+ import {IService} from "../shared/IService.sol";
16
+ import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
17
+
18
+ import {IRegistry} from "./IRegistry.sol";
19
+ import {Registry} from "./Registry.sol";
20
+ import {IRegistryService} from "./IRegistryService.sol";
21
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
22
+
23
+
24
+ contract ReleaseManager is AccessManaged
25
+ {
26
+ using ObjectTypeLib for ObjectType;
27
+ using TimestampLib for Timestamp;
28
+
29
+ event LogReleaseCreation(
30
+ VersionPart version,
31
+ bytes32 salt,
32
+ address releaseAccessManager
33
+ );
34
+ event LogReleaseActivation(VersionPart version);
35
+
36
+
37
+ // prepareRelease
38
+ error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
39
+
40
+ // registerService
41
+ error ErrorReleaseManagerNotService(IService service);
42
+ error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
43
+
44
+ // activateNextRelease
45
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
46
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
47
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
48
+
49
+ // disableRelease
50
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
51
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
52
+
53
+ // _verifyService
54
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
55
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
56
+
57
+ // _verifyServiceInfo
58
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
59
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
60
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
61
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
62
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
63
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
64
+
65
+ // _verifyServiceAuthorizations
66
+ error ErrorReleaseManagerReleaseEmpty();
67
+ error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
68
+
69
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
70
+
71
+ RegistryAdmin public immutable _admin;
72
+ address public immutable _releaseAccessManagerCodeAddress;
73
+ IRegistry public immutable _registry;
74
+
75
+ mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
76
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
77
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
78
+
79
+ VersionPart immutable internal _initial;// first active version
80
+ VersionPart internal _latest;// latest active version
81
+ VersionPart internal _next;// version to create and activate
82
+
83
+ uint internal _awaitingRegistration; // "services left to register" counter
84
+
85
+ constructor(
86
+ RegistryAdmin admin,
87
+ VersionPart initialVersion,
88
+ AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager)
89
+ AccessManaged(admin.authority())
90
+ {
91
+ _admin = admin;
92
+ _initial = initialVersion;
93
+ _next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
94
+ _registry = new Registry();
95
+ _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
96
+ }
97
+
98
+ /// @dev skips previous release if it was not activated
99
+ function createNextRelease()
100
+ external
101
+ restricted // GIF_ADMIN_ROLE
102
+ returns(VersionPart version)
103
+ {
104
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
105
+ _awaitingRegistration = 0;
106
+ }
107
+
108
+ function prepareNextRelease(
109
+ address[] memory addresses,
110
+ string[] memory names,
111
+ RoleId[][] memory serviceRoles,
112
+ string[][] memory serviceRoleNames,
113
+ RoleId[][] memory functionRoles,
114
+ string[][] memory functionRoleNames,
115
+ bytes4[][][] memory selectors,
116
+ bytes32 salt
117
+ )
118
+ external
119
+ restricted // GIF_MANAGER_ROLE
120
+ returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
121
+ {
122
+ _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
123
+
124
+ version = getNextVersion();
125
+
126
+ // ensures unique salt
127
+ releaseSalt = keccak256(
128
+ bytes.concat(
129
+ bytes32(version.toInt()),
130
+ salt));
131
+
132
+ releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
133
+ AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
134
+ releaseAccessManager.initialize(address(this), version);
135
+
136
+ if(_awaitingRegistration > 0) {
137
+ revert ErrorReleaseManagerReleaseAlreadyCreated(version);
138
+ }
139
+
140
+ _releaseInfo[version].version = version;
141
+ _releaseInfo[version].salt = releaseSalt;
142
+ _releaseInfo[version].addresses = addresses;
143
+ _releaseInfo[version].names = names;
144
+ _releaseInfo[version].serviceRoles = serviceRoles;
145
+ _releaseInfo[version].serviceRoleNames = serviceRoleNames;
146
+ _releaseInfo[version].functionRoles = functionRoles;
147
+ _releaseInfo[version].functionRoleNames = functionRoleNames;
148
+ _releaseInfo[version].selectors = selectors;
149
+ _awaitingRegistration = addresses.length;
150
+
151
+ _releaseAccessManager[version] = releaseAccessManager;
152
+
153
+ emit LogReleaseCreation(version, releaseSalt, releaseAccessManagerAddress);
154
+ }
155
+
156
+ function registerService(IService service)
157
+ external
158
+ restricted // GIF_MANAGER_ROLE
159
+ returns(NftId nftId)
160
+ {
161
+ (
162
+ IRegistry.ObjectInfo memory info,
163
+ ObjectType domain,
164
+ VersionPart version
165
+ ) = _verifyService(service);
166
+
167
+ if(_awaitingRegistration == 0) {
168
+ // TODO either release is not created or registration is finished
169
+ // or just let it panic on underflow?
170
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
171
+ }
172
+
173
+ uint serviceIdx = _awaitingRegistration - 1;
174
+ address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
175
+ // TODO temp, while typescript addresses computation is not implemented
176
+ /*if(address(service) != serviceAddress) {
177
+ revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
178
+ }*/
179
+
180
+ _setServiceAuthorizations(
181
+ _releaseAccessManager[version],
182
+ // TODO temp, while typescript addresses computation is not implemented
183
+ address(service),//serviceAddress,
184
+ _releaseInfo[version].names[serviceIdx],
185
+ _releaseInfo[version].serviceRoles[serviceIdx],
186
+ _releaseInfo[version].serviceRoleNames[serviceIdx],
187
+ _releaseInfo[version].functionRoles[serviceIdx],
188
+ _releaseInfo[version].functionRoleNames[serviceIdx],
189
+ _releaseInfo[version].selectors[serviceIdx]);
190
+
191
+ _awaitingRegistration = serviceIdx;
192
+ _releaseInfo[version].domains.push(domain);// checked in registry
193
+
194
+ nftId = _registry.registerService(info, version, domain);
195
+
196
+ service.linkToRegisteredNftId();
197
+ }
198
+
199
+ function activateNextRelease()
200
+ external
201
+ restricted // GIF_ADMIN_ROLE
202
+ {
203
+ VersionPart version = _next;
204
+ address service = _registry.getServiceAddress(REGISTRY(), version);
205
+
206
+ // release exists, registry service is a MUST
207
+ //if(_releaseAccessManager[version] == address(0)) {
208
+ if(service == address(0)) {
209
+ revert ErrorReleaseManagerReleaseNotCreated(version);
210
+ }
211
+
212
+ // release fully deployed
213
+ if(_awaitingRegistration > 0) {
214
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
215
+ }
216
+
217
+ // release is not activated
218
+ if(_releaseInfo[version].activatedAt.gtz()) {
219
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
220
+ }
221
+
222
+ _latest = version;
223
+
224
+ _releaseVersionByAddress[service] = version;
225
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
226
+
227
+ emit LogReleaseActivation(version);
228
+ }
229
+
230
+ // release becomes disabled after delay expiration (can be reenabled before that)
231
+ function disableRelease(VersionPart version, Seconds disableDelay)
232
+ external
233
+ restricted // GIF_ADMIN_ROLE
234
+ {
235
+ // release was activated
236
+ if(_releaseInfo[version].activatedAt.eqz()) {
237
+ revert ErrorReleaseManagerReleaseNotActivated(version);
238
+ }
239
+
240
+ // release not disabled already
241
+ if(_releaseInfo[version].disabledAt.gtz()) {
242
+ revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
243
+ }
244
+
245
+ disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
246
+
247
+ _releaseAccessManager[version].disable(disableDelay);
248
+
249
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
250
+ }
251
+
252
+ function enableRelease(VersionPart version)
253
+ external
254
+ restricted // GIF_ADMIN_ROLE
255
+ {
256
+ // release was disabled
257
+ //if(_releaseInfo[version].disabledAt.eqz()) {
258
+ // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
259
+ //}
260
+
261
+ // reverts if disable delay expired
262
+ _releaseAccessManager[version].enable();
263
+
264
+ _releaseInfo[version].disabledAt = zeroTimestamp();
265
+ }
266
+
267
+ //--- view functions ----------------------------------------------------//
268
+
269
+ function predictDeterministicAddress(
270
+ address implementation,
271
+ bytes32 salt,
272
+ address deployer
273
+ ) external pure returns (address predicted) {
274
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
275
+ }
276
+
277
+ function isActiveRegistryService(address service) external view returns(bool) {
278
+ VersionPart version = _releaseVersionByAddress[service];
279
+ return isActiveRelease(version);
280
+ }
281
+
282
+ function isActiveRelease(VersionPart version) public view returns(bool) {
283
+ if(_releaseInfo[version].activatedAt.eqz()) { return false; }
284
+ if(_releaseInfo[version].disabledAt.eqz()) { return true; }
285
+ return ltTimestamp(TimestampLib.blockTimestamp(), _releaseInfo[version].disabledAt);
286
+ }
287
+
288
+
289
+ function getRegistry() external view returns(address)
290
+ {
291
+ return (address(_registry));
292
+ }
293
+
294
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
295
+ return _releaseInfo[version];
296
+ }
297
+
298
+ function getNextVersion() public view returns(VersionPart) {
299
+ return _next;
300
+ }
301
+
302
+ function getLatestVersion() external view returns(VersionPart) {
303
+ return _latest;
304
+ }
305
+
306
+ function getInitialVersion() external view returns(VersionPart) {
307
+ return _initial;
308
+ }
309
+
310
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
311
+ return _releaseAccessManager[version];
312
+ }
313
+
314
+ //--- private functions ----------------------------------------------------//
315
+
316
+ function _verifyService(IService service)
317
+ internal
318
+ returns(
319
+ IRegistry.ObjectInfo memory serviceInfo,
320
+ ObjectType serviceDomain,
321
+ VersionPart serviceVersion
322
+ )
323
+ {
324
+ if(!service.supportsInterface(type(IService).interfaceId)) {
325
+ revert ErrorReleaseManagerNotService(service);
326
+ }
327
+
328
+ address owner = msg.sender;
329
+ address serviceAuthority = service.authority();
330
+ serviceVersion = service.getVersion().toMajorPart();
331
+ serviceDomain = service.getDomain();// checked in registry
332
+ serviceInfo = service.getInitialInfo();
333
+
334
+ _verifyServiceInfo(service, serviceInfo, owner);
335
+
336
+ VersionPart releaseVersion = getNextVersion(); // never 0
337
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
338
+
339
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
340
+ if(serviceAuthority != releaseAuthority) {
341
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
342
+ service,
343
+ serviceAuthority,
344
+ releaseAuthority);
345
+ }
346
+
347
+ if(serviceVersion != releaseVersion) {
348
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
349
+ service,
350
+ serviceVersion,
351
+ releaseVersion);
352
+ }
353
+ }
354
+
355
+ function _verifyServiceInfo(
356
+ IService service,
357
+ IRegistry.ObjectInfo memory info,
358
+ address expectedOwner // assume always valid, can not be 0
359
+ )
360
+ internal
361
+ view
362
+ {
363
+ if(info.objectAddress != address(service)) {
364
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
365
+ }
366
+
367
+ if(info.isInterceptor != false) { // service is never interceptor
368
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
369
+ }
370
+
371
+ if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
372
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
373
+ }
374
+
375
+ address owner = info.initialOwner;
376
+
377
+ if(owner != expectedOwner) { // registerable owner protection
378
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
379
+ }
380
+
381
+ if(owner == address(service)) {
382
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
383
+ }
384
+
385
+ if(_registry.isRegistered(owner)) {
386
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
387
+ }
388
+ }
389
+
390
+ function _verifyReleaseAuthorizations(
391
+ address[] memory serviceAddress,
392
+ RoleId[][] memory serviceRoles,
393
+ RoleId[][] memory functionRoles,
394
+ bytes4[][][] memory selectors
395
+ )
396
+ internal
397
+ view
398
+ {
399
+ if(serviceAddress.length == 0) {
400
+ revert ErrorReleaseManagerReleaseEmpty();
401
+ }
402
+
403
+ for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
404
+ {
405
+ for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
406
+ {
407
+ RoleId role = serviceRoles[serviceIdx][roleIdx];
408
+ if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
409
+ revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
410
+ }
411
+ }
412
+ }
413
+ // TODO no duplicate service "domain" role per release
414
+ // TODO no duplicate service roles per service
415
+ // TODO no duplicate service function roles per service
416
+ // TODO no duplicate service function selectors per service
417
+ }
418
+
419
+ function _setServiceAuthorizations(
420
+ AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
421
+ address serviceAddress,
422
+ string memory serviceName,
423
+ RoleId[] memory serviceRoles,
424
+ string[] memory serviceRoleNames,
425
+ RoleId[] memory functionRoles,
426
+ string[] memory functionRoleNames,
427
+ bytes4[][] memory selectors
428
+ )
429
+ internal
430
+ {
431
+ accessManager.createTarget(serviceAddress, serviceName);
432
+
433
+ for(uint idx = 0; idx < functionRoles.length; idx++)
434
+ {
435
+ uint64 roleInt = functionRoles[idx].toInt();
436
+
437
+ if(!accessManager.isRoleExists(roleInt)) {
438
+ accessManager.createRole(roleInt, functionRoleNames[idx]);
439
+ }
440
+
441
+ accessManager.setTargetFunctionRole(
442
+ serviceAddress,
443
+ selectors[idx],
444
+ roleInt);
445
+ }
446
+
447
+ for(uint idx = 0; idx < serviceRoles.length; idx++)
448
+ {
449
+ uint64 roleInt = serviceRoles[idx].toInt();
450
+
451
+ if(!accessManager.isRoleExists(roleInt)) {
452
+ accessManager.createRole(roleInt, serviceRoleNames[idx]);
453
+ }
454
+
455
+ accessManager.grantRole(
456
+ serviceRoles[idx].toInt(),
457
+ serviceAddress,
458
+ 0);
459
+ }
460
+
461
+ }
462
+ }
@@ -6,16 +6,14 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
6
6
 
7
7
  import {IRegisterable} from "../shared/IRegisterable.sol";
8
8
  import {IRegistry} from "./IRegistry.sol";
9
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../types/Version.sol";
9
+ import {VersionPart} from "../type/Version.sol";
10
+ import {REGISTRY} from "../type/ObjectType.sol";
10
11
  import {NftOwnable} from "../shared/NftOwnable.sol";
11
12
 
12
13
  /// @title contract to register token per GIF major release.
13
14
  contract TokenRegistry is
14
15
  NftOwnable
15
16
  {
16
-
17
- string public constant REGISTRY_SERVICE_NAME = "RegistryService";
18
-
19
17
  event LogRegistered(address token, string symbol, uint256 decimals);
20
18
  event LogTokenStateSet(address token, VersionPart majorVersion, bool active);
21
19
 
@@ -28,21 +26,35 @@ contract TokenRegistry is
28
26
  mapping(address token => bool registered) internal _registered;
29
27
  mapping(address token => mapping(VersionPart majorVersion => bool isActive)) internal _active;
30
28
 
31
- constructor()
32
- NftOwnable()
33
- { }
29
+ constructor(
30
+ address registry
31
+ )
32
+ {
33
+ initialize(registry);
34
+ }
35
+
36
+ function initialize(address registry)
37
+ public
38
+ initializer()
39
+ {
40
+ initializeNftOwnable(msg.sender, registry);
41
+ }
34
42
 
35
43
 
36
44
  /// @dev link ownership of token registry to nft owner of registry service
45
+ // TODO see linkToProxy() in ProxyManager, implement similar, decide which nft token registry must be linked to
46
+ // TODO latter registry service will get new release, new address, new nft, TokenRegistry will not catch that -> use AccessManaged only for services
47
+ /*
37
48
  function linkToNftOwnable(address registryAddress)
38
49
  external
39
50
  onlyOwner
40
51
  {
41
52
  IRegistry registry = IRegistry(registryAddress);
42
- address registryServiceAddress = registry.getServiceAddress(REGISTRY_SERVICE_NAME, registry.getMajorVersion());
53
+ address registryServiceAddress = registry.getServiceAddress(REGISTRY(), registry.getNextVersion());
43
54
 
44
- _linkToNftOwnable(registryAddress, registryServiceAddress);
55
+ _linkToNftOwnable(registryServiceAddress);
45
56
  }
57
+ */
46
58
 
47
59
  /// @dev token state is informative, registry have no clue about used tokens
48
60
  // component owner is responsible for token selection and operations
@@ -59,7 +71,7 @@ contract TokenRegistry is
59
71
  // verify valid major version
60
72
  // ensure major version increments is one
61
73
  uint256 version = majorVersion.toInt();
62
- if (version < _registry.getMajorVersionMin().toInt() || version > _registry.getMajorVersionMax().toInt()) {
74
+ if (!getRegistry().isActiveRelease(majorVersion)) {
63
75
  revert TokenMajorVersionInvalid(majorVersion);
64
76
  }
65
77
 
@@ -80,7 +92,7 @@ contract TokenRegistry is
80
92
  return _registered[token];
81
93
  }
82
94
 
83
- function isActive(address token, VersionPart majorVersion) external view returns (bool) {
95
+ function isActive(address token, VersionPart majorVersion) external view returns (bool) {
84
96
  return _active[token][majorVersion];
85
97
  }
86
98
 
@@ -92,12 +104,7 @@ contract TokenRegistry is
92
104
  revert NotContract(token);
93
105
  }
94
106
 
95
- // MUST not be GIF registerable
96
- if(ERC165Checker.supportsInterface(token, type(IRegisterable).interfaceId)) {
97
- revert NotToken(token);
98
- }
99
-
100
- // MUST have decimals > 0
107
+ // MUST have decimals > 0 (indicator that this is in fact an erc20 token)
101
108
  IERC20Metadata erc20 = IERC20Metadata(token);
102
109
  if(erc20.decimals() == 0) {
103
110
  revert TokenDecimalsZero();