@etherisc/gif-next 0.0.2-efef0ea-320 → 0.0.2-f02157b-803

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 (368) hide show
  1. package/README.md +144 -26
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +259 -54
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -188
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -238
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -213
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +292 -96
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +388 -78
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -1813
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{base/InstanceBase.sol/InstanceBase.json → IInstanceService.sol/IInstanceService.json} +127 -169
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2238 -1251
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1257 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +703 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +424 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +144 -50
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/IService.sol/IService.json +120 -40
  73. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  75. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  77. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +140 -59
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  81. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  83. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  86. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  87. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  89. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  90. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  91. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  92. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  93. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +295 -86
  95. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +123 -62
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +120 -40
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +120 -40
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +120 -40
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +190 -51
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +380 -139
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
  117. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  118. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  119. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  120. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  121. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  123. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  125. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  127. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  129. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  130. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  131. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  132. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  133. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  134. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  135. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  136. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  137. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +4 -27
  139. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  140. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  141. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  143. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  145. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestService.sol/TestService.json +203 -69
  147. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  149. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  151. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +29 -36
  153. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  154. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  155. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  156. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  159. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  160. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  164. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  166. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  168. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  169. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  170. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  172. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  173. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  174. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  176. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  178. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  180. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  182. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  184. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  186. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  188. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  190. package/contracts/components/BaseComponent.sol +20 -28
  191. package/contracts/components/Distribution.sol +54 -20
  192. package/contracts/components/IBaseComponent.sol +8 -3
  193. package/contracts/components/IDistributionComponent.sol +2 -6
  194. package/contracts/components/IPoolComponent.sol +2 -11
  195. package/contracts/components/IProductComponent.sol +4 -7
  196. package/contracts/components/Pool.sol +100 -76
  197. package/contracts/components/Product.sol +111 -41
  198. package/contracts/experiment/cloning/Cloner.sol +47 -0
  199. package/contracts/instance/AccessManagedSimple.sol +114 -0
  200. package/contracts/instance/AccessManagerSimple.sol +682 -0
  201. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  202. package/contracts/instance/IInstance.sol +17 -42
  203. package/contracts/instance/IInstanceService.sol +17 -0
  204. package/contracts/instance/Instance.sol +421 -59
  205. package/contracts/instance/InstanceAccessManager.sol +288 -0
  206. package/contracts/instance/InstanceReader.sol +280 -0
  207. package/contracts/instance/InstanceService.sol +102 -0
  208. package/contracts/instance/InstanceServiceManager.sol +56 -0
  209. package/contracts/instance/base/ComponentServiceBase.sol +13 -6
  210. package/contracts/instance/base/IInstanceBase.sol +3 -2
  211. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  212. package/contracts/instance/base/ILifecycle.sol +3 -3
  213. package/contracts/instance/base/KeyValueStore.sol +49 -38
  214. package/contracts/instance/base/Lifecycle.sol +1 -1
  215. package/contracts/instance/base/ServiceBase.sol +20 -13
  216. package/contracts/instance/module/IAccess.sol +38 -0
  217. package/contracts/instance/module/IBundle.sol +19 -0
  218. package/contracts/instance/module/IDistribution.sol +39 -0
  219. package/contracts/instance/module/IPolicy.sol +45 -0
  220. package/contracts/instance/module/IRisk.sol +11 -0
  221. package/contracts/instance/module/ISetup.sol +43 -0
  222. package/contracts/instance/module/ITreasury.sol +23 -0
  223. package/contracts/instance/service/ComponentOwnerService.sol +231 -71
  224. package/contracts/instance/service/IComponentOwnerService.sol +0 -2
  225. package/contracts/instance/service/IProductService.sol +2 -2
  226. package/contracts/registry/ChainNft.sol +80 -37
  227. package/contracts/registry/IRegistry.sol +28 -28
  228. package/contracts/registry/IRegistryService.sol +35 -0
  229. package/contracts/registry/ITransferInterceptor.sol +6 -0
  230. package/contracts/registry/Registry.sol +313 -271
  231. package/contracts/registry/RegistryService.sol +439 -0
  232. package/contracts/registry/RegistryServiceManager.sol +64 -0
  233. package/contracts/shared/ContractDeployerLib.sol +72 -0
  234. package/contracts/shared/INftOwnable.sol +22 -0
  235. package/contracts/shared/IRegisterable.sol +8 -15
  236. package/contracts/shared/IVersionable.sol +46 -15
  237. package/contracts/shared/NftOwnable.sol +136 -0
  238. package/contracts/shared/ProxyManager.sol +94 -0
  239. package/contracts/shared/Registerable.sol +62 -59
  240. package/contracts/shared/TokenHandler.sol +27 -0
  241. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  242. package/contracts/shared/Versionable.sol +110 -62
  243. package/contracts/test/TestFee.sol +2 -2
  244. package/contracts/test/TestRegisterable.sol +5 -6
  245. package/contracts/test/TestRoleId.sol +1 -1
  246. package/contracts/test/TestService.sol +5 -11
  247. package/contracts/types/DistributorType.sol +55 -0
  248. package/contracts/types/Fee.sol +3 -3
  249. package/contracts/types/Key32.sol +8 -3
  250. package/contracts/types/NumberId.sol +52 -0
  251. package/contracts/types/ObjectType.sol +35 -14
  252. package/contracts/types/Referral.sol +85 -0
  253. package/contracts/types/RoleId.sol +53 -9
  254. package/contracts/types/StateId.sol +1 -1
  255. package/contracts/types/Timestamp.sol +7 -3
  256. package/contracts/types/UFixed.sol +128 -12
  257. package/contracts/types/Version.sol +1 -0
  258. package/package.json +4 -3
  259. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  260. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  261. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  262. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  263. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  265. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  267. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  268. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  269. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  270. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  271. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  274. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  275. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  277. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  279. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  281. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  282. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  284. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  285. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  286. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  287. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  288. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  289. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  291. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  293. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  295. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  297. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  298. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  300. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  301. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  303. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  305. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  307. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  308. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -507
  309. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  310. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -630
  311. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  312. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -945
  313. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  314. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  315. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  316. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  317. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  318. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -724
  319. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  320. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  321. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +0 -4
  322. package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +0 -248
  323. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  324. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  325. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  326. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  327. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  328. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  329. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  330. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  331. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  332. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  333. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  334. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  335. package/contracts/experiment/statemachine/README.md +0 -112
  336. package/contracts/instance/IInstanceLinked.sol +0 -8
  337. package/contracts/instance/base/InstanceBase.sol +0 -91
  338. package/contracts/instance/base/ModuleBase.sol +0 -57
  339. package/contracts/instance/module/access/Access.sol +0 -149
  340. package/contracts/instance/module/access/IAccess.sol +0 -53
  341. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  342. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  343. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  344. package/contracts/instance/module/component/IComponent.sol +0 -28
  345. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  346. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  347. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  348. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  349. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  350. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  351. package/contracts/instance/module/risk/IRisk.sol +0 -26
  352. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  353. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  354. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  355. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  356. package/contracts/instance/service/DistributionService.sol +0 -59
  357. package/contracts/instance/service/PoolService.sol +0 -149
  358. package/contracts/instance/service/ProductService.sol +0 -509
  359. package/contracts/registry/IChainNft.sol +0 -21
  360. package/contracts/registry/IRegistryLinked.sol +0 -8
  361. package/contracts/registry/RegistryUpgradeable.sol +0 -488
  362. package/contracts/shared/IOwnable.sol +0 -6
  363. package/contracts/shared/Proxy.sol +0 -94
  364. package/contracts/shared/VersionableUpgradeable.sol +0 -136
  365. package/contracts/test/TestDistribution.sol +0 -21
  366. package/contracts/test/TestPool.sol +0 -25
  367. package/contracts/test/TestProduct.sol +0 -72
  368. package/contracts/types/ReferralId.sol +0 -48
@@ -1,41 +1,67 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IRisk} from "../instance/module/risk/IRisk.sol";
5
- import {ITreasury} from "../instance/module/treasury/ITreasury.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {ITreasury} from "../instance/module/ITreasury.sol";
6
8
  import {IProductService} from "../instance/service/IProductService.sol";
7
9
  import {IProductComponent} from "./IProductComponent.sol";
8
- import {NftId} from "../types/NftId.sol";
10
+ import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
9
11
  import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
10
- import {ReferralId} from "../types/ReferralId.sol";
12
+ import {ReferralId} from "../types/Referral.sol";
11
13
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
12
14
  import {StateId} from "../types/StateId.sol";
13
15
  import {Timestamp} from "../types/Timestamp.sol";
14
- import {Fee} from "../types/Fee.sol";
16
+ import {Fee, FeeLib} from "../types/Fee.sol";
15
17
  import {BaseComponent} from "./BaseComponent.sol";
16
18
 
19
+ import {IRegistry} from "../registry/IRegistry.sol";
20
+ import {IRegisterable} from "../shared/IRegisterable.sol";
21
+ import {Registerable} from "../shared/Registerable.sol";
22
+ import {TokenHandler} from "../shared/TokenHandler.sol";
23
+
24
+ import {InstanceReader} from "../instance/InstanceReader.sol";
25
+ import {ISetup} from "../instance/module/ISetup.sol";
26
+ import {Pool} from "../components/Pool.sol";
27
+
28
+ import {zeroNftId} from "../types/NftId.sol";
29
+
17
30
  contract Product is BaseComponent, IProductComponent {
31
+ using NftIdLib for NftId;
32
+
18
33
  IProductService internal _productService;
19
- address internal _pool;
34
+ Pool internal _pool;
20
35
  address internal _distribution;
21
36
  Fee internal _initialProductFee;
22
37
  Fee internal _initialProcessingFee;
23
38
 
39
+ NftId internal _poolNftId;
40
+ NftId internal _distributionNftId;
41
+
24
42
  constructor(
25
43
  address registry,
26
44
  NftId instanceNftid,
27
45
  address token,
46
+ bool isInterceptor,
28
47
  address pool,
29
48
  address distribution,
30
49
  Fee memory productFee,
31
- Fee memory processingFee
32
- ) BaseComponent(registry, instanceNftid, token) {
50
+ Fee memory processingFee,
51
+ address initialOwner
52
+ ) BaseComponent(registry, instanceNftid, zeroNftId(), token, PRODUCT(), isInterceptor, initialOwner) {
33
53
  // TODO add validation
34
- _productService = _instance.getProductService();
35
- _pool = pool;
54
+ // TODO: reactivate when services are available again
55
+ // _productService = _instance.getProductService();
56
+ _pool = Pool(pool);
36
57
  _distribution = distribution;
37
58
  _initialProductFee = productFee;
38
- _initialProcessingFee = processingFee;
59
+ _initialProcessingFee = processingFee;
60
+
61
+ _poolNftId = getRegistry().getNftId(address(_pool));
62
+ _distributionNftId = getRegistry().getNftId(_distribution);
63
+
64
+ _registerInterface(type(IProductComponent).interfaceId);
39
65
  }
40
66
 
41
67
 
@@ -113,7 +139,7 @@ contract Product is BaseComponent, IProductComponent {
113
139
  }
114
140
 
115
141
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
116
- return _instance.getRiskInfo(id);
142
+ return _instance.getInstanceReader().getRiskInfo(id);
117
143
  }
118
144
 
119
145
  function _createApplication(
@@ -172,11 +198,11 @@ contract Product is BaseComponent, IProductComponent {
172
198
  }
173
199
 
174
200
  function getPoolNftId() external view override returns (NftId poolNftId) {
175
- return _registry.getNftId(_pool);
201
+ return getRegistry().getNftId(address(_pool));
176
202
  }
177
203
 
178
204
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
179
- return _registry.getNftId(_distribution);
205
+ return getRegistry().getNftId(_distribution);
180
206
  }
181
207
 
182
208
  // from product component
@@ -191,37 +217,81 @@ contract Product is BaseComponent, IProductComponent {
191
217
  _productService.setFees(productFee, processingFee);
192
218
  }
193
219
 
220
+ function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
221
+ if (getNftId().eq(zeroNftId())) {
222
+ return ISetup.ProductSetupInfo(
223
+ _token,
224
+ TokenHandler(address(0)),
225
+ _distributionNftId,
226
+ _poolNftId,
227
+ FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
228
+ _initialProductFee,
229
+ _initialProcessingFee,
230
+ FeeLib.zeroFee(), //_instance.getPoolFee(_poolNftId)
231
+ FeeLib.zeroFee(), //_instance.getStakingFee(_poolNftId)
232
+ FeeLib.zeroFee() //_instance.getPerformanceFee(_poolNftId)
233
+ );
234
+ }
194
235
 
195
- function getProductFee()
196
- external
197
- view
198
- override
199
- returns (Fee memory productFee)
200
- {
201
- NftId productNftId = getNftId();
202
- if (_instance.hasTreasuryInfo(productNftId)) {
203
- return _instance.getTreasuryInfo(productNftId).productFee;
204
- } else {
205
- return _initialProductFee;
206
- }
236
+ InstanceReader reader = _instance.getInstanceReader();
237
+ return reader.getProductSetupInfo(getNftId());
207
238
  }
208
239
 
209
- function getProcessingFee()
210
- external
211
- view
212
- override
213
- returns (Fee memory processingFee)
240
+ // from IRegisterable
241
+
242
+ // TODO used only once, occupies space
243
+ function getInitialInfo()
244
+ public
245
+ view
246
+ override (IRegisterable, Registerable)
247
+ returns (IRegistry.ObjectInfo memory, bytes memory)
214
248
  {
215
- NftId productNftId = getNftId();
216
- if (_instance.hasTreasuryInfo(productNftId)) {
217
- return _instance.getTreasuryInfo(productNftId).processingFee;
218
- } else {
219
- return _initialProcessingFee;
220
- }
221
- }
249
+ // from Registerable
250
+ (
251
+ IRegistry.ObjectInfo memory productInfo,
252
+ bytes memory data
253
+ ) = super.getInitialInfo();
254
+
255
+ // TODO read pool & distribution fees
256
+ // 1) from pool -> the only option -> pool must be registered first?
257
+ // 2) from instance -> all fees are set into instance at product registration which is ongoing here
258
+ // checks are done in registryProduct() where THIS function is called
259
+ //require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
260
+ //require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
261
+
262
+ // from PoolComponent
263
+ (
264
+ IRegistry.ObjectInfo memory poolInfo,
265
+ bytes memory poolData
266
+ ) = _pool.getInitialInfo();
267
+
268
+ (
269
+ /*IPool.PoolInfo memory info*/,
270
+ /*address wallet*/,
271
+ /*IERC20Metadata token*/,
272
+ Fee memory initialPoolFee,
273
+ Fee memory initialStakingFee,
274
+ Fee memory initialPerformanceFee
275
+ ) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
222
276
 
223
- // from registerable
224
- function getType() public pure override returns (ObjectType) {
225
- return PRODUCT();
277
+ // TODO from DistributionComponent
278
+
279
+ return (
280
+ productInfo,
281
+ abi.encode(
282
+ ISetup.ProductSetupInfo(
283
+ _token,
284
+ TokenHandler(address(0)),
285
+ _distributionNftId,
286
+ _poolNftId,
287
+ FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
288
+ _initialProductFee,
289
+ _initialProcessingFee,
290
+ initialPoolFee,
291
+ initialStakingFee,
292
+ initialPerformanceFee
293
+ )
294
+ )
295
+ );
226
296
  }
227
297
  }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+
6
+
7
+ contract Cloner {
8
+
9
+ Mock1 public mock1;
10
+ Mock2 public mock2;
11
+
12
+ constructor() {
13
+ mock1 = new Mock1();
14
+ mock2 = new Mock2();
15
+ }
16
+
17
+ function createClone(address master)
18
+ external
19
+ returns (address cloned)
20
+ {
21
+ cloned = Clones.clone(master);
22
+ }
23
+ }
24
+
25
+
26
+ contract Mock1 {
27
+ function getValue() external virtual view returns (uint256) {
28
+ return 42;
29
+ }
30
+ }
31
+
32
+ contract Mock2 is Mock1 {
33
+ uint256 internal _value;
34
+
35
+ constructor() {
36
+ _value = 42;
37
+ }
38
+
39
+ function setValue(uint256 value) external virtual {
40
+ _value = value;
41
+ }
42
+
43
+ function getValue() external virtual override view returns (uint256) {
44
+ return _value;
45
+ }
46
+ }
47
+
@@ -0,0 +1,114 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v5.0.0) (access/manager/AccessManaged.sol)
3
+
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {AuthorityUtils} from "@openzeppelin/contracts/access/manager/AuthorityUtils.sol";
7
+ import {Context} from "@openzeppelin/contracts/utils/Context.sol";
8
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
9
+ import {IAuthority} from "@openzeppelin/contracts/access/manager/IAuthority.sol";
10
+
11
+ import {IAccessManagerSimple} from "./IAccessManagerSimple.sol";
12
+
13
+ /**
14
+ * @dev This contract module makes available a {restricted} modifier. Functions decorated with this modifier will be
15
+ * permissioned according to an "authority": a contract like {AccessManager} that follows the {IAuthority} interface,
16
+ * implementing a policy that allows certain callers to access certain functions.
17
+ *
18
+ * IMPORTANT: The `restricted` modifier should never be used on `internal` functions, judiciously used in `public`
19
+ * functions, and ideally only used in `external` functions. See {restricted}.
20
+ */
21
+ abstract contract AccessManagedSimple is Context, IAccessManaged {
22
+ address private _authority;
23
+
24
+ bool private _consumingSchedule;
25
+
26
+ /**
27
+ * @dev Initializes the contract connected to an initial authority.
28
+ */
29
+ constructor(address initialAuthority) {
30
+ _setAuthority(initialAuthority);
31
+ }
32
+
33
+ /**
34
+ * @dev Restricts access to a function as defined by the connected Authority for this contract and the
35
+ * caller and selector of the function that entered the contract.
36
+ *
37
+ * [IMPORTANT]
38
+ * ====
39
+ * In general, this modifier should only be used on `external` functions. It is okay to use it on `public`
40
+ * functions that are used as external entry points and are not called internally. Unless you know what you're
41
+ * doing, it should never be used on `internal` functions. Failure to follow these rules can have critical security
42
+ * implications! This is because the permissions are determined by the function that entered the contract, i.e. the
43
+ * function at the bottom of the call stack, and not the function where the modifier is visible in the source code.
44
+ * ====
45
+ *
46
+ * [WARNING]
47
+ * ====
48
+ * Avoid adding this modifier to the https://docs.soliditylang.org/en/v0.8.20/contracts.html#receive-ether-function[`receive()`]
49
+ * function or the https://docs.soliditylang.org/en/v0.8.20/contracts.html#fallback-function[`fallback()`]. These
50
+ * functions are the only execution paths where a function selector cannot be unambiguosly determined from the calldata
51
+ * since the selector defaults to `0x00000000` in the `receive()` function and similarly in the `fallback()` function
52
+ * if no calldata is provided. (See {_checkCanCall}).
53
+ *
54
+ * The `receive()` function will always panic whereas the `fallback()` may panic depending on the calldata length.
55
+ * ====
56
+ */
57
+ modifier restricted() {
58
+ _checkCanCall(_msgSender(), _msgData());
59
+ _;
60
+ }
61
+
62
+ /// @inheritdoc IAccessManaged
63
+ function authority() public view virtual returns (address) {
64
+ return _authority;
65
+ }
66
+
67
+ /// @inheritdoc IAccessManaged
68
+ function setAuthority(address newAuthority) public virtual {
69
+ address caller = _msgSender();
70
+ if (caller != authority()) {
71
+ revert AccessManagedUnauthorized(caller);
72
+ }
73
+ if (newAuthority.code.length == 0) {
74
+ revert AccessManagedInvalidAuthority(newAuthority);
75
+ }
76
+ _setAuthority(newAuthority);
77
+ }
78
+
79
+ /// @inheritdoc IAccessManaged
80
+ function isConsumingScheduledOp() public view returns (bytes4) {
81
+ return _consumingSchedule ? this.isConsumingScheduledOp.selector : bytes4(0);
82
+ }
83
+
84
+ /**
85
+ * @dev Transfers control to a new authority. Internal function with no access restriction. Allows bypassing the
86
+ * permissions set by the current authority.
87
+ */
88
+ function _setAuthority(address newAuthority) internal virtual {
89
+ _authority = newAuthority;
90
+ emit AuthorityUpdated(newAuthority);
91
+ }
92
+
93
+ /**
94
+ * @dev Reverts if the caller is not allowed to call the function identified by a selector. Panics if the calldata
95
+ * is less than 4 bytes long.
96
+ */
97
+ function _checkCanCall(address caller, bytes calldata data) internal virtual {
98
+ (bool immediate, uint32 delay) = AuthorityUtils.canCallWithDelay(
99
+ authority(),
100
+ caller,
101
+ address(this),
102
+ bytes4(data[0:4])
103
+ );
104
+ if (!immediate) {
105
+ if (delay > 0) {
106
+ _consumingSchedule = true;
107
+ IAccessManagerSimple(authority()).consumeScheduledOp(caller, data);
108
+ _consumingSchedule = false;
109
+ } else {
110
+ revert AccessManagedUnauthorized(caller);
111
+ }
112
+ }
113
+ }
114
+ }