@etherisc/gif-next 0.0.2-9b434da-265 → 0.0.2-9bfd86b-310
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 +179 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +665 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +445 -3000
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1134 -31
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +401 -59
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +557 -179
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +558 -169
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +698 -259
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +368 -123
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1218 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
- package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -88
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +203 -164
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
- 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/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
- package/contracts/distribution/Distribution.sol +261 -0
- package/contracts/distribution/DistributionService.sol +297 -0
- package/contracts/distribution/DistributionServiceManager.sol +42 -0
- package/contracts/distribution/IDistributionComponent.sol +66 -0
- package/contracts/distribution/IDistributionService.sol +81 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +87 -0
- package/contracts/instance/IInstanceService.sol +97 -0
- package/contracts/instance/Instance.sol +189 -316
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
- package/contracts/instance/InstanceReader.sol +392 -0
- package/contracts/instance/InstanceService.sol +417 -23
- package/contracts/instance/InstanceServiceManager.sol +44 -0
- package/contracts/instance/InstanceStore.sol +269 -0
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +28 -0
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +80 -0
- package/contracts/instance/module/IAccess.sol +30 -22
- package/contracts/instance/module/IBundle.sol +8 -7
- package/contracts/instance/module/IComponents.sol +52 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +56 -17
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
- package/contracts/oracle/IOracle.sol +20 -0
- package/contracts/oracle/IOracleComponent.sol +32 -0
- package/contracts/oracle/IOracleService.sol +65 -0
- package/contracts/oracle/Oracle.sol +145 -0
- package/contracts/oracle/OracleService.sol +278 -0
- package/contracts/oracle/OracleServiceManager.sol +42 -0
- package/contracts/pool/BundleService.sol +296 -0
- package/contracts/pool/BundleServiceManager.sol +42 -0
- package/contracts/pool/IBundleService.sol +106 -0
- package/contracts/pool/IPoolComponent.sol +112 -0
- package/contracts/pool/IPoolService.sol +150 -0
- package/contracts/pool/Pool.sol +299 -0
- package/contracts/pool/PoolService.sol +452 -0
- package/contracts/pool/PoolServiceManager.sol +42 -0
- package/contracts/product/ApplicationService.sol +254 -0
- package/contracts/product/ApplicationServiceManager.sol +38 -0
- package/contracts/product/ClaimService.sol +442 -0
- package/contracts/product/ClaimServiceManager.sol +38 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +99 -0
- package/contracts/product/IPolicyService.sol +78 -0
- package/contracts/product/IPricingService.sol +39 -0
- package/contracts/product/IProductComponent.sol +42 -0
- package/contracts/product/IProductService.sol +33 -0
- package/contracts/product/PolicyService.sol +475 -0
- package/contracts/product/PolicyServiceManager.sol +42 -0
- package/contracts/product/PricingService.sol +300 -0
- package/contracts/product/PricingServiceManager.sol +42 -0
- package/contracts/product/Product.sol +377 -0
- package/contracts/product/ProductService.sol +124 -0
- package/contracts/product/ProductServiceManager.sol +42 -0
- package/contracts/registry/ChainNft.sol +55 -25
- package/contracts/registry/IRegistry.sol +80 -29
- package/contracts/registry/IRegistryService.sol +56 -16
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +416 -325
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +162 -265
- package/contracts/registry/RegistryServiceManager.sol +27 -17
- package/contracts/registry/ReleaseManager.sol +527 -0
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +315 -0
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +283 -224
- package/contracts/shared/AccessManagerExtended.sol +481 -0
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
- package/contracts/shared/Component.sol +281 -0
- package/contracts/shared/ComponentService.sol +617 -0
- package/contracts/shared/ComponentServiceManager.sol +35 -0
- package/contracts/shared/ComponentVerifyingService.sol +117 -0
- package/contracts/shared/ERC165.sol +16 -10
- package/contracts/shared/IAccessAdmin.sol +168 -0
- package/contracts/shared/IAccessManagerExtended.sol +74 -0
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
- package/contracts/shared/IComponent.sol +70 -0
- package/contracts/shared/IComponentService.sol +102 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +19 -14
- package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
- package/contracts/shared/INftOwnable.sol +13 -12
- package/contracts/shared/IPolicyHolder.sol +45 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +25 -0
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +144 -0
- package/contracts/shared/KeyValueStore.sol +127 -0
- package/contracts/{instance/base → shared}/Lifecycle.sol +37 -7
- package/contracts/shared/NftIdSetManager.sol +65 -0
- package/contracts/shared/NftOwnable.sol +60 -89
- package/contracts/shared/PolicyHolder.sol +102 -0
- package/contracts/shared/ProxyManager.sol +132 -27
- package/contracts/shared/Registerable.sol +27 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +83 -0
- package/contracts/shared/TokenHandler.sol +39 -8
- package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
- package/contracts/shared/Versionable.sol +5 -93
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +153 -0
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +513 -0
- package/contracts/staking/StakingManager.sol +54 -0
- package/contracts/staking/StakingReader.sol +187 -0
- package/contracts/staking/StakingService.sol +411 -0
- package/contracts/staking/StakingServiceManager.sol +44 -0
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +207 -0
- package/contracts/{types → type}/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +128 -0
- package/contracts/{types → type}/Blocknumber.sol +21 -3
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/type/Fee.sol +66 -0
- package/contracts/{types → type}/NftId.sol +21 -15
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/type/ObjectType.sol +241 -0
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +5 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/{types → type}/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +201 -0
- package/contracts/type/Seconds.sol +81 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/{types → type}/StateId.sol +38 -4
- package/contracts/type/String.sol +53 -0
- package/contracts/{types → type}/Timestamp.sol +23 -14
- package/contracts/{types → type}/UFixed.sol +129 -12
- package/contracts/{types → type}/Version.sol +6 -2
- package/package.json +8 -7
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -736
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- 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/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -10
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
- package/contracts/components/IBaseComponent.sol +0 -19
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
- package/contracts/instance/AccessManagedSimple.sol +0 -114
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/InstanceAccessManager.sol +0 -288
- package/contracts/instance/base/IService.sol +0 -15
- package/contracts/instance/base/KeyValueStore.sol +0 -188
- package/contracts/instance/base/ServiceBase.sol +0 -44
- package/contracts/instance/module/ISetup.sol +0 -41
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/registry/IChainNft.sol +0 -22
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/Fee.sol +0 -56
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- package/contracts/types/ObjectType.sol +0 -152
- package/contracts/types/RoleId.sol +0 -75
- /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,19 +1,34 @@
|
|
1
|
-
// SPDX-License-Identifier:
|
1
|
+
// SPDX-License-Identifier: MIT
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IAccessManaged} from "@
|
4
|
+
import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
|
5
|
+
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
6
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
7
|
+
import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol";
|
8
|
+
import {MulticallUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/MulticallUpgradeable.sol";
|
9
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
10
|
+
import {Time} from "@openzeppelin/contracts/utils/types/Time.sol";
|
11
|
+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
12
|
+
|
13
|
+
/*
|
14
|
+
* copy of @openzeppelin/contract-upgradeable/access/manager/AccessManagerUpgradeable.sol" except:
|
15
|
+
1. abstract
|
16
|
+
2. renamed to AccessManagerCustom
|
17
|
+
2. _getAdminRestrictions() private view -> internal virtual view
|
18
|
+
3. _checkSelector() private pure -> internal pure
|
19
|
+
*/
|
20
|
+
abstract contract AccessManagerCustom is
|
21
|
+
Initializable,
|
22
|
+
ContextUpgradeable,
|
23
|
+
MulticallUpgradeable,
|
24
|
+
IAccessManager
|
25
|
+
{
|
26
|
+
using Time for *;
|
6
27
|
|
7
|
-
import {IAccessManagerSimple} from "./IAccessManagerSimple.sol";
|
8
|
-
|
9
|
-
type Delay is uint112;
|
10
|
-
|
11
|
-
// @dev as oz5 AccessManager but without multicall and without timing logic
|
12
|
-
contract AccessManagerSimple is Context, IAccessManagerSimple {
|
13
28
|
// Structure that stores the details for a target contract.
|
14
29
|
struct TargetConfig {
|
15
30
|
mapping(bytes4 selector => uint64 roleId) allowedRoles;
|
16
|
-
|
31
|
+
Time.Delay adminDelay;
|
17
32
|
bool closed;
|
18
33
|
}
|
19
34
|
|
@@ -23,7 +38,7 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
23
38
|
// If this is either 0 or in the future, then the role permission is not available.
|
24
39
|
uint48 since;
|
25
40
|
// Delay for execution. Only applies to restricted() / execute() calls.
|
26
|
-
Delay delay;
|
41
|
+
Time.Delay delay;
|
27
42
|
}
|
28
43
|
|
29
44
|
// Structure that stores the details of a role.
|
@@ -35,7 +50,7 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
35
50
|
// Guardian who can cancel operations targeting functions that need this role.
|
36
51
|
uint64 guardian;
|
37
52
|
// Delay in which the role takes effect after being granted.
|
38
|
-
Delay grantDelay;
|
53
|
+
Time.Delay grantDelay;
|
39
54
|
}
|
40
55
|
|
41
56
|
// Structure that stores the details for a scheduled operation. This structure fits into a single slot.
|
@@ -49,13 +64,26 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
49
64
|
uint64 public constant ADMIN_ROLE = type(uint64).min; // 0
|
50
65
|
uint64 public constant PUBLIC_ROLE = type(uint64).max; // 2**64-1
|
51
66
|
|
52
|
-
|
53
|
-
|
54
|
-
|
67
|
+
/// @custom:storage-location erc7201:openzeppelin.storage.AccessManagerCustom
|
68
|
+
struct AccessManagerStorage {
|
69
|
+
mapping(address target => TargetConfig mode) _targets;
|
70
|
+
mapping(uint64 roleId => Role) _roles;
|
71
|
+
mapping(bytes32 operationId => Schedule) _schedules;
|
72
|
+
|
73
|
+
// Used to identify operations that are currently being executed via {execute}.
|
74
|
+
// This should be transient storage when supported by the EVM.
|
75
|
+
bytes32 _executionId;
|
76
|
+
}
|
77
|
+
|
78
|
+
// TODO compute address
|
79
|
+
// keccak256(abi.encode(uint256(keccak256("etherisc.storage.AccessManagerCustom")) - 1)) & ~bytes32(uint256(0xff))
|
80
|
+
bytes32 private constant AccessManagerCustomStorageLocation = 0x77301bc69e8248c80abb894217605b71fa89ea6a9e8bdf359d9e8aa1dd62bf00;
|
55
81
|
|
56
|
-
|
57
|
-
|
58
|
-
|
82
|
+
function _getAccessManagerCustomStorage() private pure returns (AccessManagerStorage storage $) {
|
83
|
+
assembly {
|
84
|
+
$.slot := AccessManagerCustomStorageLocation
|
85
|
+
}
|
86
|
+
}
|
59
87
|
|
60
88
|
/**
|
61
89
|
* @dev Check that the caller is authorized to perform the operation, following the restrictions encoded in
|
@@ -66,7 +94,11 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
66
94
|
_;
|
67
95
|
}
|
68
96
|
|
69
|
-
|
97
|
+
function __AccessManagerCustom_init(address initialAdmin) internal onlyInitializing {
|
98
|
+
__AccessManagerCustom_init_unchained(initialAdmin);
|
99
|
+
}
|
100
|
+
|
101
|
+
function __AccessManagerCustom_init_unchained(address initialAdmin) internal onlyInitializing {
|
70
102
|
if (initialAdmin == address(0)) {
|
71
103
|
revert AccessManagerInvalidInitialAdmin(address(0));
|
72
104
|
}
|
@@ -76,7 +108,7 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
76
108
|
}
|
77
109
|
|
78
110
|
// =================================================== GETTERS ====================================================
|
79
|
-
/// @inheritdoc
|
111
|
+
/// @inheritdoc IAccessManager
|
80
112
|
function canCall(
|
81
113
|
address caller,
|
82
114
|
address target,
|
@@ -84,10 +116,10 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
84
116
|
) public view virtual returns (bool immediate, uint32 delay) {
|
85
117
|
if (isTargetClosed(target)) {
|
86
118
|
return (false, 0);
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
119
|
+
} else if (caller == address(this)) {
|
120
|
+
// Caller is AccessManager, this means the call was sent through {execute} and it already checked
|
121
|
+
// permissions. We verify that the call "identifier", which is set during {execute}, is correct.
|
122
|
+
return (_isExecuting(target, selector), 0);
|
91
123
|
} else {
|
92
124
|
uint64 roleId = getTargetFunctionRole(target, selector);
|
93
125
|
(bool isMember, uint32 currentDelay) = hasRole(roleId, caller);
|
@@ -95,60 +127,67 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
95
127
|
}
|
96
128
|
}
|
97
129
|
|
98
|
-
/// @inheritdoc
|
130
|
+
/// @inheritdoc IAccessManager
|
99
131
|
function expiration() public view virtual returns (uint32) {
|
100
132
|
return 1 weeks;
|
101
133
|
}
|
102
134
|
|
103
|
-
/// @inheritdoc
|
135
|
+
/// @inheritdoc IAccessManager
|
104
136
|
function minSetback() public view virtual returns (uint32) {
|
105
137
|
return 5 days;
|
106
138
|
}
|
107
139
|
|
108
|
-
/// @inheritdoc
|
140
|
+
/// @inheritdoc IAccessManager
|
109
141
|
function isTargetClosed(address target) public view virtual returns (bool) {
|
110
|
-
|
142
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
143
|
+
return $._targets[target].closed;
|
111
144
|
}
|
112
145
|
|
113
|
-
/// @inheritdoc
|
146
|
+
/// @inheritdoc IAccessManager
|
114
147
|
function getTargetFunctionRole(address target, bytes4 selector) public view virtual returns (uint64) {
|
115
|
-
|
148
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
149
|
+
return $._targets[target].allowedRoles[selector];
|
116
150
|
}
|
117
151
|
|
118
|
-
/// @inheritdoc
|
152
|
+
/// @inheritdoc IAccessManager
|
119
153
|
function getTargetAdminDelay(address target) public view virtual returns (uint32) {
|
120
|
-
|
154
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
155
|
+
return $._targets[target].adminDelay.get();
|
121
156
|
}
|
122
157
|
|
123
|
-
/// @inheritdoc
|
158
|
+
/// @inheritdoc IAccessManager
|
124
159
|
function getRoleAdmin(uint64 roleId) public view virtual returns (uint64) {
|
125
|
-
|
160
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
161
|
+
return $._roles[roleId].admin;
|
126
162
|
}
|
127
163
|
|
128
|
-
/// @inheritdoc
|
164
|
+
/// @inheritdoc IAccessManager
|
129
165
|
function getRoleGuardian(uint64 roleId) public view virtual returns (uint64) {
|
130
|
-
|
166
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
167
|
+
return $._roles[roleId].guardian;
|
131
168
|
}
|
132
169
|
|
133
|
-
/// @inheritdoc
|
170
|
+
/// @inheritdoc IAccessManager
|
134
171
|
function getRoleGrantDelay(uint64 roleId) public view virtual returns (uint32) {
|
135
|
-
|
172
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
173
|
+
return $._roles[roleId].grantDelay.get();
|
136
174
|
}
|
137
175
|
|
138
|
-
/// @inheritdoc
|
176
|
+
/// @inheritdoc IAccessManager
|
139
177
|
function getAccess(
|
140
178
|
uint64 roleId,
|
141
179
|
address account
|
142
180
|
) public view virtual returns (uint48 since, uint32 currentDelay, uint32 pendingDelay, uint48 effect) {
|
143
|
-
|
181
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
182
|
+
Access storage access = $._roles[roleId].members[account];
|
144
183
|
|
145
184
|
since = access.since;
|
146
|
-
|
185
|
+
(currentDelay, pendingDelay, effect) = access.delay.getFull();
|
147
186
|
|
148
187
|
return (since, currentDelay, pendingDelay, effect);
|
149
188
|
}
|
150
189
|
|
151
|
-
/// @inheritdoc
|
190
|
+
/// @inheritdoc IAccessManager
|
152
191
|
function hasRole(
|
153
192
|
uint64 roleId,
|
154
193
|
address account
|
@@ -157,13 +196,12 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
157
196
|
return (true, 0);
|
158
197
|
} else {
|
159
198
|
(uint48 hasRoleSince, uint32 currentDelay, , ) = getAccess(roleId, account);
|
160
|
-
|
161
|
-
return (hasRoleSince != 0 && hasRoleSince <= uint48(block.timestamp), currentDelay);
|
199
|
+
return (hasRoleSince != 0 && hasRoleSince <= Time.timestamp(), currentDelay);
|
162
200
|
}
|
163
201
|
}
|
164
202
|
|
165
203
|
// =============================================== ROLE MANAGEMENT ===============================================
|
166
|
-
/// @inheritdoc
|
204
|
+
/// @inheritdoc IAccessManager
|
167
205
|
function labelRole(uint64 roleId, string calldata label) public virtual onlyAuthorized {
|
168
206
|
if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
|
169
207
|
revert AccessManagerLockedRole(roleId);
|
@@ -171,17 +209,17 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
171
209
|
emit RoleLabel(roleId, label);
|
172
210
|
}
|
173
211
|
|
174
|
-
/// @inheritdoc
|
212
|
+
/// @inheritdoc IAccessManager
|
175
213
|
function grantRole(uint64 roleId, address account, uint32 executionDelay) public virtual onlyAuthorized {
|
176
214
|
_grantRole(roleId, account, getRoleGrantDelay(roleId), executionDelay);
|
177
215
|
}
|
178
216
|
|
179
|
-
/// @inheritdoc
|
217
|
+
/// @inheritdoc IAccessManager
|
180
218
|
function revokeRole(uint64 roleId, address account) public virtual onlyAuthorized {
|
181
219
|
_revokeRole(roleId, account);
|
182
220
|
}
|
183
221
|
|
184
|
-
/// @inheritdoc
|
222
|
+
/// @inheritdoc IAccessManager
|
185
223
|
function renounceRole(uint64 roleId, address callerConfirmation) public virtual {
|
186
224
|
if (callerConfirmation != _msgSender()) {
|
187
225
|
revert AccessManagerBadConfirmation();
|
@@ -189,19 +227,19 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
189
227
|
_revokeRole(roleId, callerConfirmation);
|
190
228
|
}
|
191
229
|
|
192
|
-
/// @inheritdoc
|
230
|
+
/// @inheritdoc IAccessManager
|
193
231
|
function setRoleAdmin(uint64 roleId, uint64 admin) public virtual onlyAuthorized {
|
194
232
|
_setRoleAdmin(roleId, admin);
|
195
233
|
}
|
196
234
|
|
197
|
-
/// @inheritdoc
|
235
|
+
/// @inheritdoc IAccessManager
|
198
236
|
function setRoleGuardian(uint64 roleId, uint64 guardian) public virtual onlyAuthorized {
|
199
237
|
_setRoleGuardian(roleId, guardian);
|
200
238
|
}
|
201
239
|
|
202
|
-
/// @inheritdoc
|
240
|
+
/// @inheritdoc IAccessManager
|
203
241
|
function setGrantDelay(uint64 roleId, uint32 newDelay) public virtual onlyAuthorized {
|
204
|
-
|
242
|
+
_setGrantDelay(roleId, newDelay);
|
205
243
|
}
|
206
244
|
|
207
245
|
/**
|
@@ -215,25 +253,25 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
215
253
|
uint32 grantDelay,
|
216
254
|
uint32 executionDelay
|
217
255
|
) internal virtual returns (bool) {
|
256
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
218
257
|
if (roleId == PUBLIC_ROLE) {
|
219
258
|
revert AccessManagerLockedRole(roleId);
|
220
259
|
}
|
221
260
|
|
222
|
-
bool newMember = _roles[roleId].members[account].since == 0;
|
261
|
+
bool newMember = $._roles[roleId].members[account].since == 0;
|
223
262
|
uint48 since;
|
224
263
|
|
225
264
|
if (newMember) {
|
226
|
-
since =
|
227
|
-
_roles[roleId].members[account] = Access({since: since, delay:
|
228
|
-
}
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
// }
|
265
|
+
since = Time.timestamp() + grantDelay;
|
266
|
+
$._roles[roleId].members[account] = Access({since: since, delay: executionDelay.toDelay()});
|
267
|
+
} else {
|
268
|
+
// No setback here. Value can be reset by doing revoke + grant, effectively allowing the admin to perform
|
269
|
+
// any change to the execution delay within the duration of the role admin delay.
|
270
|
+
($._roles[roleId].members[account].delay, since) = $._roles[roleId].members[account].delay.withUpdate(
|
271
|
+
executionDelay,
|
272
|
+
0
|
273
|
+
);
|
274
|
+
}
|
237
275
|
|
238
276
|
emit RoleGranted(roleId, account, executionDelay, since, newMember);
|
239
277
|
return newMember;
|
@@ -246,15 +284,16 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
246
284
|
* Emits a {RoleRevoked} event if the account had the role.
|
247
285
|
*/
|
248
286
|
function _revokeRole(uint64 roleId, address account) internal virtual returns (bool) {
|
287
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
249
288
|
if (roleId == PUBLIC_ROLE) {
|
250
289
|
revert AccessManagerLockedRole(roleId);
|
251
290
|
}
|
252
291
|
|
253
|
-
if (_roles[roleId].members[account].since == 0) {
|
292
|
+
if ($._roles[roleId].members[account].since == 0) {
|
254
293
|
return false;
|
255
294
|
}
|
256
295
|
|
257
|
-
delete _roles[roleId].members[account];
|
296
|
+
delete $._roles[roleId].members[account];
|
258
297
|
|
259
298
|
emit RoleRevoked(roleId, account);
|
260
299
|
return true;
|
@@ -269,11 +308,12 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
269
308
|
* anyone to set grant or revoke such role.
|
270
309
|
*/
|
271
310
|
function _setRoleAdmin(uint64 roleId, uint64 admin) internal virtual {
|
311
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
272
312
|
if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
|
273
313
|
revert AccessManagerLockedRole(roleId);
|
274
314
|
}
|
275
315
|
|
276
|
-
_roles[roleId].admin = admin;
|
316
|
+
$._roles[roleId].admin = admin;
|
277
317
|
|
278
318
|
emit RoleAdminChanged(roleId, admin);
|
279
319
|
}
|
@@ -287,11 +327,12 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
287
327
|
* anyone to cancel any scheduled operation for such role.
|
288
328
|
*/
|
289
329
|
function _setRoleGuardian(uint64 roleId, uint64 guardian) internal virtual {
|
330
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
290
331
|
if (roleId == ADMIN_ROLE || roleId == PUBLIC_ROLE) {
|
291
332
|
revert AccessManagerLockedRole(roleId);
|
292
333
|
}
|
293
334
|
|
294
|
-
_roles[roleId].guardian = guardian;
|
335
|
+
$._roles[roleId].guardian = guardian;
|
295
336
|
|
296
337
|
emit RoleGuardianChanged(roleId, guardian);
|
297
338
|
}
|
@@ -301,19 +342,20 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
301
342
|
*
|
302
343
|
* Emits a {RoleGrantDelayChanged} event.
|
303
344
|
*/
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
345
|
+
function _setGrantDelay(uint64 roleId, uint32 newDelay) internal virtual {
|
346
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
347
|
+
if (roleId == PUBLIC_ROLE) {
|
348
|
+
revert AccessManagerLockedRole(roleId);
|
349
|
+
}
|
308
350
|
|
309
|
-
|
310
|
-
|
351
|
+
uint48 effect;
|
352
|
+
($._roles[roleId].grantDelay, effect) = $._roles[roleId].grantDelay.withUpdate(newDelay, minSetback());
|
311
353
|
|
312
|
-
|
313
|
-
|
354
|
+
emit RoleGrantDelayChanged(roleId, newDelay, effect);
|
355
|
+
}
|
314
356
|
|
315
357
|
// ============================================= FUNCTION MANAGEMENT ==============================================
|
316
|
-
/// @inheritdoc
|
358
|
+
/// @inheritdoc IAccessManager
|
317
359
|
function setTargetFunctionRole(
|
318
360
|
address target,
|
319
361
|
bytes4[] calldata selectors,
|
@@ -330,13 +372,14 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
330
372
|
* Emits a {TargetFunctionRoleUpdated} event.
|
331
373
|
*/
|
332
374
|
function _setTargetFunctionRole(address target, bytes4 selector, uint64 roleId) internal virtual {
|
333
|
-
|
375
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
376
|
+
$._targets[target].allowedRoles[selector] = roleId;
|
334
377
|
emit TargetFunctionRoleUpdated(target, selector, roleId);
|
335
378
|
}
|
336
379
|
|
337
|
-
/// @inheritdoc
|
380
|
+
/// @inheritdoc IAccessManager
|
338
381
|
function setTargetAdminDelay(address target, uint32 newDelay) public virtual onlyAuthorized {
|
339
|
-
|
382
|
+
_setTargetAdminDelay(target, newDelay);
|
340
383
|
}
|
341
384
|
|
342
385
|
/**
|
@@ -344,15 +387,15 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
344
387
|
*
|
345
388
|
* Emits a {TargetAdminDelayUpdated} event.
|
346
389
|
*/
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
390
|
+
function _setTargetAdminDelay(address target, uint32 newDelay) internal virtual {
|
391
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
392
|
+
uint48 effect;
|
393
|
+
($._targets[target].adminDelay, effect) = $._targets[target].adminDelay.withUpdate(newDelay, minSetback());
|
394
|
+
emit TargetAdminDelayUpdated(target, newDelay, effect);
|
395
|
+
}
|
353
396
|
|
354
397
|
// =============================================== MODE MANAGEMENT ================================================
|
355
|
-
/// @inheritdoc
|
398
|
+
/// @inheritdoc IAccessManager
|
356
399
|
function setTargetClosed(address target, bool closed) public virtual onlyAuthorized {
|
357
400
|
_setTargetClosed(target, closed);
|
358
401
|
}
|
@@ -363,173 +406,181 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
363
406
|
* Emits a {TargetClosed} event.
|
364
407
|
*/
|
365
408
|
function _setTargetClosed(address target, bool closed) internal virtual {
|
409
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
366
410
|
if (target == address(this)) {
|
367
411
|
revert AccessManagerLockedAccount(target);
|
368
412
|
}
|
369
|
-
_targets[target].closed = closed;
|
413
|
+
$._targets[target].closed = closed;
|
370
414
|
emit TargetClosed(target, closed);
|
371
415
|
}
|
372
416
|
|
373
417
|
// ============================================== DELAYED OPERATIONS ==============================================
|
374
|
-
/// @inheritdoc
|
418
|
+
/// @inheritdoc IAccessManager
|
375
419
|
function getSchedule(bytes32 id) public view virtual returns (uint48) {
|
376
|
-
|
377
|
-
|
420
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
421
|
+
uint48 timepoint = $._schedules[id].timepoint;
|
422
|
+
return _isExpired(timepoint) ? 0 : timepoint;
|
378
423
|
}
|
379
424
|
|
380
|
-
/// @inheritdoc
|
425
|
+
/// @inheritdoc IAccessManager
|
381
426
|
function getNonce(bytes32 id) public view virtual returns (uint32) {
|
382
|
-
|
427
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
428
|
+
return $._schedules[id].nonce;
|
383
429
|
}
|
384
430
|
|
385
|
-
/// @inheritdoc
|
431
|
+
/// @inheritdoc IAccessManager
|
386
432
|
function schedule(
|
387
433
|
address target,
|
388
434
|
bytes calldata data,
|
389
435
|
uint48 when
|
390
436
|
) public virtual returns (bytes32 operationId, uint32 nonce) {
|
391
|
-
|
437
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
438
|
+
address caller = _msgSender();
|
392
439
|
|
393
|
-
//
|
394
|
-
|
440
|
+
// Fetch restrictions that apply to the caller on the targeted function
|
441
|
+
(, uint32 setback) = _canCallExtended(caller, target, data);
|
395
442
|
|
396
|
-
|
443
|
+
uint48 minWhen = Time.timestamp() + setback;
|
397
444
|
|
398
|
-
//
|
399
|
-
|
400
|
-
|
401
|
-
|
445
|
+
// if call with delay is not authorized, or if requested timing is too soon
|
446
|
+
if (setback == 0 || (when > 0 && when < minWhen)) {
|
447
|
+
revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));
|
448
|
+
}
|
402
449
|
|
403
|
-
//
|
404
|
-
|
450
|
+
// Reuse variable due to stack too deep
|
451
|
+
when = uint48(Math.max(when, minWhen)); // cast is safe: both inputs are uint48
|
405
452
|
|
406
|
-
//
|
407
|
-
|
453
|
+
// If caller is authorised, schedule operation
|
454
|
+
operationId = hashOperation(caller, target, data);
|
408
455
|
|
409
|
-
|
456
|
+
_checkNotScheduled(operationId);
|
410
457
|
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
458
|
+
unchecked {
|
459
|
+
// It's not feasible to overflow the nonce in less than 1000 years
|
460
|
+
nonce = $._schedules[operationId].nonce + 1;
|
461
|
+
}
|
462
|
+
$._schedules[operationId].timepoint = when;
|
463
|
+
$._schedules[operationId].nonce = nonce;
|
464
|
+
emit OperationScheduled(operationId, nonce, when, caller, target, data);
|
418
465
|
|
419
|
-
//
|
466
|
+
// Using named return values because otherwise we get stack too deep
|
420
467
|
}
|
421
468
|
|
422
469
|
/**
|
423
470
|
* @dev Reverts if the operation is currently scheduled and has not expired.
|
424
471
|
* (Note: This function was introduced due to stack too deep errors in schedule.)
|
425
472
|
*/
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
473
|
+
function _checkNotScheduled(bytes32 operationId) private view {
|
474
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
475
|
+
uint48 prevTimepoint = $._schedules[operationId].timepoint;
|
476
|
+
if (prevTimepoint != 0 && !_isExpired(prevTimepoint)) {
|
477
|
+
revert AccessManagerAlreadyScheduled(operationId);
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
/// @inheritdoc IAccessManager
|
434
482
|
// Reentrancy is not an issue because permissions are checked on msg.sender. Additionally,
|
435
483
|
// _consumeScheduledOp guarantees a scheduled operation is only executed once.
|
436
484
|
// slither-disable-next-line reentrancy-no-eth
|
437
485
|
function execute(address target, bytes calldata data) public payable virtual returns (uint32) {
|
438
|
-
|
486
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
487
|
+
address caller = _msgSender();
|
439
488
|
|
440
|
-
//
|
441
|
-
|
489
|
+
// Fetch restrictions that apply to the caller on the targeted function
|
490
|
+
(bool immediate, uint32 setback) = _canCallExtended(caller, target, data);
|
442
491
|
|
443
|
-
//
|
444
|
-
|
445
|
-
|
446
|
-
|
492
|
+
// If caller is not authorised, revert
|
493
|
+
if (!immediate && setback == 0) {
|
494
|
+
revert AccessManagerUnauthorizedCall(caller, target, _checkSelector(data));
|
495
|
+
}
|
447
496
|
|
448
|
-
|
449
|
-
|
497
|
+
bytes32 operationId = hashOperation(caller, target, data);
|
498
|
+
uint32 nonce;
|
450
499
|
|
451
|
-
//
|
452
|
-
//
|
453
|
-
|
454
|
-
|
455
|
-
|
500
|
+
// If caller is authorised, check operation was scheduled early enough
|
501
|
+
// Consume an available schedule even if there is no currently enforced delay
|
502
|
+
if (setback != 0 || getSchedule(operationId) != 0) {
|
503
|
+
nonce = _consumeScheduledOp(operationId);
|
504
|
+
}
|
456
505
|
|
457
|
-
//
|
458
|
-
|
459
|
-
|
506
|
+
// Mark the target and selector as authorised
|
507
|
+
bytes32 executionIdBefore = $._executionId;
|
508
|
+
$._executionId = _hashExecutionId(target, _checkSelector(data));
|
460
509
|
|
461
|
-
//
|
462
|
-
|
510
|
+
// Perform call
|
511
|
+
Address.functionCallWithValue(target, data, msg.value);
|
463
512
|
|
464
|
-
//
|
465
|
-
|
513
|
+
// Reset execute identifier
|
514
|
+
$._executionId = executionIdBefore;
|
466
515
|
|
467
|
-
|
516
|
+
return nonce;
|
468
517
|
}
|
469
518
|
|
470
|
-
/// @inheritdoc
|
519
|
+
/// @inheritdoc IAccessManager
|
471
520
|
function cancel(address caller, address target, bytes calldata data) public virtual returns (uint32) {
|
472
|
-
|
473
|
-
|
521
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
522
|
+
address msgsender = _msgSender();
|
523
|
+
bytes4 selector = _checkSelector(data);
|
474
524
|
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
525
|
+
bytes32 operationId = hashOperation(caller, target, data);
|
526
|
+
if ($._schedules[operationId].timepoint == 0) {
|
527
|
+
revert AccessManagerNotScheduled(operationId);
|
528
|
+
} else if (caller != msgsender) {
|
529
|
+
// calls can only be canceled by the account that scheduled them, a global admin, or by a guardian of the required role.
|
530
|
+
(bool isAdmin, ) = hasRole(ADMIN_ROLE, msgsender);
|
531
|
+
(bool isGuardian, ) = hasRole(getRoleGuardian(getTargetFunctionRole(target, selector)), msgsender);
|
532
|
+
if (!isAdmin && !isGuardian) {
|
533
|
+
revert AccessManagerUnauthorizedCancel(msgsender, caller, target, selector);
|
534
|
+
}
|
535
|
+
}
|
486
536
|
|
487
|
-
|
488
|
-
|
489
|
-
|
537
|
+
delete $._schedules[operationId].timepoint; // reset the timepoint, keep the nonce
|
538
|
+
uint32 nonce = $._schedules[operationId].nonce;
|
539
|
+
emit OperationCanceled(operationId, nonce);
|
490
540
|
|
491
|
-
|
541
|
+
return nonce;
|
492
542
|
}
|
493
543
|
|
494
|
-
/// @inheritdoc
|
544
|
+
/// @inheritdoc IAccessManager
|
495
545
|
function consumeScheduledOp(address caller, bytes calldata data) public virtual {
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
}
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
546
|
+
address target = _msgSender();
|
547
|
+
if (IAccessManaged(target).isConsumingScheduledOp() != IAccessManaged.isConsumingScheduledOp.selector) {
|
548
|
+
revert AccessManagerUnauthorizedConsume(target);
|
549
|
+
}
|
550
|
+
_consumeScheduledOp(hashOperation(caller, target, data));
|
551
|
+
}
|
552
|
+
|
553
|
+
/**
|
554
|
+
* @dev Internal variant of {consumeScheduledOp} that operates on bytes32 operationId.
|
555
|
+
*
|
556
|
+
* Returns the nonce of the scheduled operation that is consumed.
|
557
|
+
*/
|
558
|
+
function _consumeScheduledOp(bytes32 operationId) internal virtual returns (uint32) {
|
559
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
560
|
+
uint48 timepoint = $._schedules[operationId].timepoint;
|
561
|
+
uint32 nonce = $._schedules[operationId].nonce;
|
562
|
+
|
563
|
+
if (timepoint == 0) {
|
564
|
+
revert AccessManagerNotScheduled(operationId);
|
565
|
+
} else if (timepoint > Time.timestamp()) {
|
566
|
+
revert AccessManagerNotReady(operationId);
|
567
|
+
} else if (_isExpired(timepoint)) {
|
568
|
+
revert AccessManagerExpired(operationId);
|
569
|
+
}
|
570
|
+
|
571
|
+
delete $._schedules[operationId].timepoint; // reset the timepoint, keep the nonce
|
572
|
+
emit OperationExecuted(operationId, nonce);
|
573
|
+
|
574
|
+
return nonce;
|
575
|
+
}
|
576
|
+
|
577
|
+
/// @inheritdoc IAccessManager
|
527
578
|
function hashOperation(address caller, address target, bytes calldata data) public view virtual returns (bytes32) {
|
528
579
|
return keccak256(abi.encode(caller, target, data));
|
529
580
|
}
|
530
581
|
|
531
582
|
// ==================================================== OTHERS ====================================================
|
532
|
-
/// @inheritdoc
|
583
|
+
/// @inheritdoc IAccessManager
|
533
584
|
function updateAuthority(address target, address newAuthority) public virtual onlyAuthorized {
|
534
585
|
IAccessManaged(target).setAuthority(newAuthority);
|
535
586
|
}
|
@@ -539,19 +590,26 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
539
590
|
* @dev Check if the current call is authorized according to admin logic.
|
540
591
|
*/
|
541
592
|
function _checkAuthorized() private {
|
542
|
-
address caller = _msgSender();
|
593
|
+
address caller = msg.sender;//_msgSender();
|
543
594
|
(bool immediate, uint32 delay) = _canCallSelf(caller, _msgData());
|
544
595
|
if (!immediate) {
|
545
596
|
if (delay == 0) {
|
546
597
|
(, uint64 requiredRole, ) = _getAdminRestrictions(_msgData());
|
547
598
|
revert AccessManagerUnauthorizedAccount(caller, requiredRole);
|
599
|
+
} else {
|
600
|
+
_consumeScheduledOp(hashOperation(caller, address(this), _msgData()));
|
548
601
|
}
|
549
|
-
// else {
|
550
|
-
// _consumeScheduledOp(hashOperation(caller, address(this), _msgData()));
|
551
|
-
// }
|
552
602
|
}
|
553
603
|
}
|
554
604
|
|
605
|
+
/**
|
606
|
+
* @dev Get the admin restrictions of a given function call based on the function and arguments involved.
|
607
|
+
*
|
608
|
+
* Returns:
|
609
|
+
* - bool restricted: does this data match a restricted operation
|
610
|
+
* - uint64: which role is this operation restricted to
|
611
|
+
* - uint32: minimum delay to enforce for that operation (max between operation's delay and admin's execution delay)
|
612
|
+
*/
|
555
613
|
/**
|
556
614
|
* @dev Get the admin restrictions of a given function call based on the function and arguments involved.
|
557
615
|
*
|
@@ -562,7 +620,7 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
562
620
|
*/
|
563
621
|
function _getAdminRestrictions(
|
564
622
|
bytes calldata data
|
565
|
-
)
|
623
|
+
) internal virtual view returns (bool restricted, uint64 roleAdminId, uint32 executionDelay) {
|
566
624
|
if (data.length < 4) {
|
567
625
|
return (false, 0, 0);
|
568
626
|
}
|
@@ -587,7 +645,7 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
587
645
|
selector == this.setTargetFunctionRole.selector
|
588
646
|
) {
|
589
647
|
// First argument is a target.
|
590
|
-
address target = abi.decode(data[0x04:0x24], (address))
|
648
|
+
address target = abi.decode(data[0x04:0x24], (address));// who is target???
|
591
649
|
uint32 delay = getTargetAdminDelay(target);
|
592
650
|
return (true, ADMIN_ROLE, delay);
|
593
651
|
}
|
@@ -631,11 +689,11 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
631
689
|
return (false, 0);
|
632
690
|
}
|
633
691
|
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
692
|
+
if (caller == address(this)) {
|
693
|
+
// Caller is AccessManager, this means the call was sent through {execute} and it already checked
|
694
|
+
// permissions. We verify that the call "identifier", which is set during {execute}, is correct.
|
695
|
+
return (_isExecuting(address(this), _checkSelector(data)), 0);
|
696
|
+
}
|
639
697
|
|
640
698
|
(bool enabled, uint64 roleId, uint32 operationDelay) = _getAdminRestrictions(data);
|
641
699
|
if (!enabled) {
|
@@ -648,35 +706,36 @@ contract AccessManagerSimple is Context, IAccessManagerSimple {
|
|
648
706
|
}
|
649
707
|
|
650
708
|
// downcast is safe because both options are uint32
|
651
|
-
delay =
|
709
|
+
delay = uint32(Math.max(operationDelay, executionDelay));
|
652
710
|
return (delay == 0, delay);
|
653
711
|
}
|
654
712
|
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
713
|
+
/**
|
714
|
+
* @dev Returns true if a call with `target` and `selector` is being executed via {executed}.
|
715
|
+
*/
|
716
|
+
function _isExecuting(address target, bytes4 selector) private view returns (bool) {
|
717
|
+
AccessManagerStorage storage $ = _getAccessManagerCustomStorage();
|
718
|
+
return $._executionId == _hashExecutionId(target, selector);
|
719
|
+
}
|
661
720
|
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
721
|
+
/**
|
722
|
+
* @dev Returns true if a schedule timepoint is past its expiration deadline.
|
723
|
+
*/
|
724
|
+
function _isExpired(uint48 timepoint) private view returns (bool) {
|
725
|
+
return timepoint + expiration() <= Time.timestamp();
|
726
|
+
}
|
668
727
|
|
669
728
|
/**
|
670
729
|
* @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes
|
671
730
|
*/
|
672
|
-
function _checkSelector(bytes calldata data)
|
731
|
+
function _checkSelector(bytes calldata data) internal pure returns (bytes4) {
|
673
732
|
return bytes4(data[0:4]);
|
674
733
|
}
|
675
734
|
|
676
735
|
/**
|
677
736
|
* @dev Hashing function for execute protection
|
678
737
|
*/
|
679
|
-
|
680
|
-
|
681
|
-
|
738
|
+
function _hashExecutionId(address target, bytes4 selector) private pure returns (bytes32) {
|
739
|
+
return keccak256(abi.encode(target, selector));
|
740
|
+
}
|
682
741
|
}
|