@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e43a6c3-340
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.
- package/README.md +108 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +204 -31
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -59
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +245 -65
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +314 -41
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +325 -1744
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2300 -1340
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1388 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +891 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +488 -0
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +149 -2
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +178 -41
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +212 -22
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +80 -3
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -3
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +230 -24
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +456 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +294 -99
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +297 -18
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +249 -137
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +447 -39
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +107 -42
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +137 -39
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +106 -94
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +142 -14
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
- package/contracts/components/BaseComponent.sol +16 -4
- package/contracts/components/Distribution.sol +21 -16
- package/contracts/components/IBaseComponent.sol +9 -3
- package/contracts/components/IDistributionComponent.sol +2 -4
- package/contracts/components/IPoolComponent.sol +0 -2
- package/contracts/components/IProductComponent.sol +2 -4
- package/contracts/components/Pool.sol +24 -27
- package/contracts/components/Product.sol +41 -43
- package/contracts/experiment/cloning/Cloner.sol +47 -0
- package/contracts/instance/AccessManagedSimple.sol +115 -0
- package/contracts/instance/AccessManagerSimple.sol +692 -0
- package/contracts/instance/IAccessManagerSimple.sol +391 -0
- package/contracts/instance/IInstance.sol +32 -47
- package/contracts/instance/IInstanceService.sol +30 -0
- package/contracts/instance/Instance.sol +423 -65
- package/contracts/instance/InstanceAccessManager.sol +288 -0
- package/contracts/instance/InstanceReader.sol +306 -0
- package/contracts/instance/InstanceService.sol +183 -0
- package/contracts/instance/InstanceServiceManager.sol +57 -0
- package/contracts/instance/base/ComponentServiceBase.sol +83 -8
- package/contracts/instance/base/IKeyValueStore.sol +13 -14
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +49 -38
- package/contracts/instance/base/Lifecycle.sol +1 -1
- package/contracts/instance/module/IAccess.sol +38 -0
- package/contracts/instance/module/IBundle.sol +20 -0
- package/contracts/instance/module/IDistribution.sol +39 -0
- package/contracts/instance/module/IPolicy.sol +45 -0
- package/contracts/instance/module/IRisk.sol +11 -0
- package/contracts/instance/module/ISetup.sol +44 -0
- package/contracts/instance/module/ITreasury.sol +23 -0
- package/contracts/instance/service/ComponentOwnerService.sol +145 -100
- package/contracts/instance/service/DistributionService.sol +49 -15
- package/contracts/instance/service/DistributionServiceManager.sol +54 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +1 -1
- package/contracts/instance/service/IPoolService.sol +1 -1
- package/contracts/instance/service/IProductService.sol +3 -3
- package/contracts/instance/service/PoolService.sol +97 -52
- package/contracts/instance/service/PoolServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +40 -25
- package/contracts/registry/IRegistry.sol +48 -27
- package/contracts/registry/IRegistryService.sol +36 -15
- package/contracts/registry/Registry.sol +167 -168
- package/contracts/registry/RegistryService.sol +149 -166
- package/contracts/registry/RegistryServiceManager.sol +38 -10
- package/contracts/registry/TokenRegistry.sol +111 -0
- package/contracts/shared/ERC165.sol +7 -3
- package/contracts/shared/INftOwnable.sol +22 -0
- package/contracts/shared/IRegisterable.sol +3 -8
- package/contracts/{instance/base → shared}/IService.sol +3 -3
- package/contracts/shared/NftOwnable.sol +83 -34
- package/contracts/shared/ProxyManager.sol +3 -12
- package/contracts/shared/Registerable.sol +15 -42
- package/contracts/shared/RegisterableUpgradable.sol +16 -0
- package/contracts/shared/Service.sol +55 -0
- package/contracts/shared/TokenHandler.sol +27 -0
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +3 -3
- package/contracts/test/TestFee.sol +2 -2
- package/contracts/test/TestRoleId.sol +1 -1
- package/contracts/test/TestService.sol +3 -5
- package/contracts/types/DistributorType.sol +55 -0
- package/contracts/types/Fee.sol +3 -3
- package/contracts/types/Key32.sol +8 -3
- package/contracts/types/NumberId.sol +52 -0
- package/contracts/types/ObjectType.sol +35 -14
- package/contracts/types/Referral.sol +85 -0
- package/contracts/types/RoleId.sol +60 -9
- package/contracts/types/StateId.sol +5 -1
- package/contracts/types/Timestamp.sol +7 -3
- package/contracts/types/UFixed.sol +128 -12
- package/contracts/types/Version.sol +4 -1
- package/package.json +4 -3
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
- package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/contracts/instance/IInstanceLinked.sol +0 -8
- package/contracts/instance/base/InstanceBase.sol +0 -89
- package/contracts/instance/base/ModuleBase.sol +0 -57
- package/contracts/instance/base/ServiceBase.sol +0 -43
- package/contracts/instance/module/access/Access.sol +0 -149
- package/contracts/instance/module/access/IAccess.sol +0 -53
- package/contracts/instance/module/bundle/BundleModule.sol +0 -134
- package/contracts/instance/module/bundle/IBundle.sol +0 -53
- package/contracts/instance/module/component/ComponentModule.sol +0 -71
- package/contracts/instance/module/component/IComponent.sol +0 -28
- package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
- package/contracts/instance/module/distribution/IDistribution.sol +0 -10
- package/contracts/instance/module/policy/IPolicy.sol +0 -63
- package/contracts/instance/module/policy/PolicyModule.sol +0 -91
- package/contracts/instance/module/pool/IPoolModule.sol +0 -41
- package/contracts/instance/module/pool/PoolModule.sol +0 -95
- package/contracts/instance/module/risk/IRisk.sol +0 -26
- package/contracts/instance/module/risk/RiskModule.sol +0 -62
- package/contracts/instance/module/treasury/ITreasury.sol +0 -84
- package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
- package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
- package/contracts/instance/service/ProductService.sol +0 -510
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/IOwnable.sol +0 -6
- package/contracts/test/TestDistribution.sol +0 -22
- package/contracts/test/TestPool.sol +0 -27
- package/contracts/test/TestProduct.sol +0 -74
- package/contracts/types/ReferralId.sol +0 -48
@@ -4,20 +4,26 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {ObjectType, POOL} from "../types/ObjectType.sol";
|
5
5
|
import {IProductService} from "../instance/service/IProductService.sol";
|
6
6
|
import {IPoolService} from "../instance/service/IPoolService.sol";
|
7
|
-
import {NftId} from "../types/NftId.sol";
|
7
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
8
8
|
import {Fee} from "../types/Fee.sol";
|
9
9
|
import {UFixed} from "../types/UFixed.sol";
|
10
10
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
11
11
|
import {BaseComponent} from "./BaseComponent.sol";
|
12
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
13
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
12
14
|
|
13
15
|
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
-
|
15
|
-
import {
|
16
|
+
|
17
|
+
// import {IPool} from "../instance/module/pool/IPoolModule.sol";
|
18
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
19
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
20
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
21
|
|
17
22
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
18
23
|
import {Registerable} from "../shared/Registerable.sol";
|
19
24
|
|
20
25
|
contract Pool is BaseComponent, IPoolComponent {
|
26
|
+
using NftIdLib for NftId;
|
21
27
|
|
22
28
|
bool internal _isVerifying;
|
23
29
|
UFixed internal _collateralizationLevel;
|
@@ -69,7 +75,8 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
69
75
|
_initialPerformanceFee = performanceFee;
|
70
76
|
|
71
77
|
_poolService = _instance.getPoolService();
|
72
|
-
|
78
|
+
// TODO: reactivate when services are available again
|
79
|
+
// _productService = _instance.getProductService();
|
73
80
|
|
74
81
|
_registerInterface(type(IPoolComponent).interfaceId);
|
75
82
|
}
|
@@ -160,20 +167,10 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
160
167
|
{
|
161
168
|
_poolService.setBundleFee(bundleNftId, fee);
|
162
169
|
}
|
163
|
-
|
164
|
-
function
|
165
|
-
|
166
|
-
|
167
|
-
override
|
168
|
-
returns (Fee memory, Fee memory, Fee memory)
|
169
|
-
{
|
170
|
-
NftId productNftId = _instance.getProductNftId(getNftId());
|
171
|
-
//if (_instance.hasTreasuryInfo(productNftId)) {
|
172
|
-
ITreasury.TreasuryInfo memory info = _instance.getTreasuryInfo(productNftId);
|
173
|
-
return (info.poolFee, info.stakingFee, info.performanceFee);
|
174
|
-
//} else {
|
175
|
-
// return (_initialPoolFee, _initialStakingFee, _initialPerformanceFee);
|
176
|
-
//}
|
170
|
+
|
171
|
+
function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
|
172
|
+
InstanceReader reader = _instance.getInstanceReader();
|
173
|
+
return reader.getPoolSetupInfo(getNftId());
|
177
174
|
}
|
178
175
|
|
179
176
|
// from IRegisterable
|
@@ -188,21 +185,21 @@ contract Pool is BaseComponent, IPoolComponent {
|
|
188
185
|
{
|
189
186
|
(
|
190
187
|
IRegistry.ObjectInfo memory info,
|
191
|
-
bytes memory data
|
192
188
|
) = super.getInitialInfo();
|
193
189
|
|
194
190
|
return (
|
195
191
|
info,
|
196
192
|
abi.encode(
|
197
|
-
|
193
|
+
ISetup.PoolSetupInfo(
|
194
|
+
_productNftId,
|
195
|
+
TokenHandler(address(_token)),
|
196
|
+
_collateralizationLevel,
|
197
|
+
_initialPoolFee,
|
198
|
+
_initialStakingFee,
|
199
|
+
_initialPerformanceFee,
|
198
200
|
_isVerifying,
|
199
|
-
|
200
|
-
)
|
201
|
-
_wallet,
|
202
|
-
_token,
|
203
|
-
_initialPoolFee,
|
204
|
-
_initialStakingFee,
|
205
|
-
_initialPerformanceFee
|
201
|
+
_wallet
|
202
|
+
)
|
206
203
|
)
|
207
204
|
);
|
208
205
|
}
|
@@ -1,15 +1,15 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {IERC20Metadata} from "@
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {IRisk} from "../instance/module/
|
7
|
-
import {ITreasury} from "../instance/module/
|
6
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {ITreasury} from "../instance/module/ITreasury.sol";
|
8
8
|
import {IProductService} from "../instance/service/IProductService.sol";
|
9
9
|
import {IProductComponent} from "./IProductComponent.sol";
|
10
|
-
import {NftId, zeroNftId} from "../types/NftId.sol";
|
10
|
+
import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
|
11
11
|
import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
|
12
|
-
import {ReferralId} from "../types/
|
12
|
+
import {ReferralId} from "../types/Referral.sol";
|
13
13
|
import {RiskId, RiskIdLib} from "../types/RiskId.sol";
|
14
14
|
import {StateId} from "../types/StateId.sol";
|
15
15
|
import {Timestamp} from "../types/Timestamp.sol";
|
@@ -19,11 +19,17 @@ import {BaseComponent} from "./BaseComponent.sol";
|
|
19
19
|
import {IRegistry} from "../registry/IRegistry.sol";
|
20
20
|
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
21
|
import {Registerable} from "../shared/Registerable.sol";
|
22
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
23
|
|
23
|
-
import {
|
24
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
|
+
import {ISetup} from "../instance/module/ISetup.sol";
|
24
26
|
import {Pool} from "../components/Pool.sol";
|
25
27
|
|
28
|
+
import {zeroNftId} from "../types/NftId.sol";
|
29
|
+
|
26
30
|
contract Product is BaseComponent, IProductComponent {
|
31
|
+
using NftIdLib for NftId;
|
32
|
+
|
27
33
|
IProductService internal _productService;
|
28
34
|
Pool internal _pool;
|
29
35
|
address internal _distribution;
|
@@ -45,7 +51,8 @@ contract Product is BaseComponent, IProductComponent {
|
|
45
51
|
address initialOwner
|
46
52
|
) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
|
47
53
|
// TODO add validation
|
48
|
-
|
54
|
+
// TODO: reactivate when services are available again
|
55
|
+
// _productService = _instance.getProductService();
|
49
56
|
_pool = Pool(pool);
|
50
57
|
_distribution = distribution;
|
51
58
|
_initialProductFee = productFee;
|
@@ -132,7 +139,7 @@ contract Product is BaseComponent, IProductComponent {
|
|
132
139
|
}
|
133
140
|
|
134
141
|
function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
|
135
|
-
return _instance.getRiskInfo(id);
|
142
|
+
return _instance.getInstanceReader().getRiskInfo(id);
|
136
143
|
}
|
137
144
|
|
138
145
|
function _createApplication(
|
@@ -210,33 +217,24 @@ contract Product is BaseComponent, IProductComponent {
|
|
210
217
|
_productService.setFees(productFee, processingFee);
|
211
218
|
}
|
212
219
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
override
|
232
|
-
returns (Fee memory processingFee)
|
233
|
-
{
|
234
|
-
NftId productNftId = getNftId();
|
235
|
-
if (_instance.hasTreasuryInfo(productNftId)) {
|
236
|
-
return _instance.getTreasuryInfo(productNftId).processingFee;
|
237
|
-
} else {
|
238
|
-
return _initialProcessingFee;
|
239
|
-
}
|
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
|
+
}
|
235
|
+
|
236
|
+
InstanceReader reader = _instance.getInstanceReader();
|
237
|
+
return reader.getProductSetupInfo(getNftId());
|
240
238
|
}
|
241
239
|
|
242
240
|
// from IRegisterable
|
@@ -274,25 +272,25 @@ contract Product is BaseComponent, IProductComponent {
|
|
274
272
|
Fee memory initialPoolFee,
|
275
273
|
Fee memory initialStakingFee,
|
276
274
|
Fee memory initialPerformanceFee
|
277
|
-
) = abi.decode(poolData, (
|
275
|
+
) = abi.decode(poolData, (ISetup.PoolSetupInfo, address, IERC20Metadata, Fee, Fee, Fee));
|
278
276
|
|
279
277
|
// TODO from DistributionComponent
|
280
278
|
|
281
279
|
return (
|
282
280
|
productInfo,
|
283
281
|
abi.encode(
|
284
|
-
|
285
|
-
_poolNftId,
|
286
|
-
_distributionNftId,
|
282
|
+
ISetup.ProductSetupInfo(
|
287
283
|
_token,
|
284
|
+
TokenHandler(address(0)),
|
285
|
+
_distributionNftId,
|
286
|
+
_poolNftId,
|
287
|
+
FeeLib.zeroFee(), //_instance.getDistributionFee(_distributionNftId)
|
288
288
|
_initialProductFee,
|
289
289
|
_initialProcessingFee,
|
290
290
|
initialPoolFee,
|
291
291
|
initialStakingFee,
|
292
|
-
initialPerformanceFee
|
293
|
-
|
294
|
-
),
|
295
|
-
_wallet
|
292
|
+
initialPerformanceFee
|
293
|
+
)
|
296
294
|
)
|
297
295
|
);
|
298
296
|
}
|
@@ -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,115 @@
|
|
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
|
+
bool private _initialized;
|
23
|
+
address private _authority;
|
24
|
+
|
25
|
+
bool private _consumingSchedule;
|
26
|
+
|
27
|
+
function initializeAccessManagedSimple(address initialAuthority) internal {
|
28
|
+
require(!_initialized, "AccessManaged: already initialized");
|
29
|
+
_setAuthority(initialAuthority);
|
30
|
+
_initialized = true;
|
31
|
+
}
|
32
|
+
|
33
|
+
|
34
|
+
/**
|
35
|
+
* @dev Restricts access to a function as defined by the connected Authority for this contract and the
|
36
|
+
* caller and selector of the function that entered the contract.
|
37
|
+
*
|
38
|
+
* [IMPORTANT]
|
39
|
+
* ====
|
40
|
+
* In general, this modifier should only be used on `external` functions. It is okay to use it on `public`
|
41
|
+
* functions that are used as external entry points and are not called internally. Unless you know what you're
|
42
|
+
* doing, it should never be used on `internal` functions. Failure to follow these rules can have critical security
|
43
|
+
* implications! This is because the permissions are determined by the function that entered the contract, i.e. the
|
44
|
+
* function at the bottom of the call stack, and not the function where the modifier is visible in the source code.
|
45
|
+
* ====
|
46
|
+
*
|
47
|
+
* [WARNING]
|
48
|
+
* ====
|
49
|
+
* Avoid adding this modifier to the https://docs.soliditylang.org/en/v0.8.20/contracts.html#receive-ether-function[`receive()`]
|
50
|
+
* function or the https://docs.soliditylang.org/en/v0.8.20/contracts.html#fallback-function[`fallback()`]. These
|
51
|
+
* functions are the only execution paths where a function selector cannot be unambiguosly determined from the calldata
|
52
|
+
* since the selector defaults to `0x00000000` in the `receive()` function and similarly in the `fallback()` function
|
53
|
+
* if no calldata is provided. (See {_checkCanCall}).
|
54
|
+
*
|
55
|
+
* The `receive()` function will always panic whereas the `fallback()` may panic depending on the calldata length.
|
56
|
+
* ====
|
57
|
+
*/
|
58
|
+
modifier restricted() {
|
59
|
+
_checkCanCall(_msgSender(), _msgData());
|
60
|
+
_;
|
61
|
+
}
|
62
|
+
|
63
|
+
/// @inheritdoc IAccessManaged
|
64
|
+
function authority() public view virtual returns (address) {
|
65
|
+
return _authority;
|
66
|
+
}
|
67
|
+
|
68
|
+
/// @inheritdoc IAccessManaged
|
69
|
+
function setAuthority(address newAuthority) public virtual {
|
70
|
+
address caller = _msgSender();
|
71
|
+
if (caller != authority()) {
|
72
|
+
revert AccessManagedUnauthorized(caller);
|
73
|
+
}
|
74
|
+
if (newAuthority.code.length == 0) {
|
75
|
+
revert AccessManagedInvalidAuthority(newAuthority);
|
76
|
+
}
|
77
|
+
_setAuthority(newAuthority);
|
78
|
+
}
|
79
|
+
|
80
|
+
/// @inheritdoc IAccessManaged
|
81
|
+
function isConsumingScheduledOp() public view returns (bytes4) {
|
82
|
+
return _consumingSchedule ? this.isConsumingScheduledOp.selector : bytes4(0);
|
83
|
+
}
|
84
|
+
|
85
|
+
/**
|
86
|
+
* @dev Transfers control to a new authority. Internal function with no access restriction. Allows bypassing the
|
87
|
+
* permissions set by the current authority.
|
88
|
+
*/
|
89
|
+
function _setAuthority(address newAuthority) internal virtual {
|
90
|
+
_authority = newAuthority;
|
91
|
+
emit AuthorityUpdated(newAuthority);
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* @dev Reverts if the caller is not allowed to call the function identified by a selector. Panics if the calldata
|
96
|
+
* is less than 4 bytes long.
|
97
|
+
*/
|
98
|
+
function _checkCanCall(address caller, bytes calldata data) internal virtual {
|
99
|
+
(bool immediate, uint32 delay) = AuthorityUtils.canCallWithDelay(
|
100
|
+
authority(),
|
101
|
+
caller,
|
102
|
+
address(this),
|
103
|
+
bytes4(data[0:4])
|
104
|
+
);
|
105
|
+
if (!immediate) {
|
106
|
+
if (delay > 0) {
|
107
|
+
_consumingSchedule = true;
|
108
|
+
IAccessManagerSimple(authority()).consumeScheduledOp(caller, data);
|
109
|
+
_consumingSchedule = false;
|
110
|
+
} else {
|
111
|
+
revert AccessManagedUnauthorized(caller);
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
}
|