@etherisc/gif-next 0.0.2-fd4931b-974 → 0.0.2-fd4ee14-428
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 +2 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +19 -13
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +115 -80
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +81 -54
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -5
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +20 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +32 -101
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +83 -71
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +121 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +105 -85
- 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 +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +126 -30
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +195 -64
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +206 -49
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +74 -31
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +248 -118
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +2 -71
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
- 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 +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +91 -48
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +69 -38
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -5
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +18 -12
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +58 -35
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +63 -32
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +83 -48
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +11 -5
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +72 -37
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +76 -45
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +18 -12
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +54 -27
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +82 -45
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -1
- 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/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +254 -97
- 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 +69 -15
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +46 -30
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +288 -182
- 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 +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +46 -177
- 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/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
- 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 +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +120 -70
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +80 -49
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -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/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 +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -5
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +0 -10
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +18 -12
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +10 -20
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +6 -6
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +27 -35
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +15 -9
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- 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/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +247 -579
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +471 -62
- 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 +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +303 -798
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +81 -164
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -39
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +503 -120
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -43
- 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 +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +281 -18
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +96 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- 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 +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +114 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +52 -2
- 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 +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
- package/contracts/distribution/Distribution.sol +2 -4
- package/contracts/distribution/DistributionService.sol +5 -6
- package/contracts/distribution/DistributionServiceManager.sol +0 -12
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +1 -1
- package/contracts/instance/IInstance.sol +21 -11
- package/contracts/instance/IInstanceService.sol +26 -12
- package/contracts/instance/Instance.sol +84 -49
- package/contracts/instance/InstanceAdmin.sol +331 -0
- package/contracts/instance/InstanceAuthorizationsLib.sol +192 -151
- package/contracts/instance/InstanceReader.sol +32 -6
- package/contracts/instance/InstanceService.sol +119 -47
- package/contracts/instance/InstanceStore.sol +29 -20
- package/contracts/instance/base/BalanceStore.sol +11 -6
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectManager.sol +1 -3
- package/contracts/instance/module/IAccess.sol +2 -10
- 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 +20 -20
- package/contracts/pool/IBundleService.sol +1 -1
- package/contracts/pool/IPoolService.sol +4 -1
- package/contracts/pool/PoolService.sol +38 -10
- package/contracts/product/ApplicationService.sol +6 -6
- package/contracts/product/ClaimService.sol +12 -7
- package/contracts/product/IApplicationService.sol +1 -1
- package/contracts/product/IClaimService.sol +7 -1
- package/contracts/product/IPolicyService.sol +1 -1
- package/contracts/product/IPricingService.sol +1 -1
- package/contracts/product/IProductService.sol +1 -1
- package/contracts/product/PolicyService.sol +9 -7
- package/contracts/product/PricingService.sol +8 -9
- package/contracts/product/Product.sol +1 -1
- package/contracts/product/ProductService.sol +6 -6
- package/contracts/registry/ChainNft.sol +1 -0
- package/contracts/registry/IRegistry.sol +20 -14
- package/contracts/registry/IRegistryService.sol +1 -0
- package/contracts/registry/IServiceAuthorization.sol +35 -0
- package/contracts/registry/Registry.sol +85 -66
- package/contracts/registry/RegistryAdmin.sol +333 -0
- package/contracts/registry/RegistryService.sol +8 -70
- package/contracts/registry/RegistryServiceManager.sol +1 -20
- package/contracts/registry/ReleaseManager.sol +218 -221
- package/contracts/registry/ServiceAuthorization.sol +86 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
- package/contracts/registry/TokenRegistry.sol +56 -60
- package/contracts/shared/AccessAdmin.sol +759 -0
- package/contracts/shared/AccessManagerCustom.sol +741 -0
- 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 +8 -13
- package/contracts/shared/ComponentService.sol +39 -17
- package/contracts/shared/ComponentVerifyingService.sol +13 -7
- package/contracts/shared/ERC165.sol +1 -1
- 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 +3 -7
- package/contracts/shared/IComponentService.sol +11 -0
- package/contracts/shared/IKeyValueStore.sol +1 -1
- package/contracts/shared/INftOwnable.sol +1 -1
- package/contracts/shared/IService.sol +8 -1
- package/contracts/shared/InitializableCustom.sol +177 -0
- package/contracts/shared/InstanceLinkedComponent.sol +1 -2
- package/contracts/shared/KeyValueStore.sol +1 -4
- package/contracts/shared/Lifecycle.sol +11 -2
- package/contracts/shared/NftIdSetManager.sol +2 -6
- package/contracts/shared/NftOwnable.sol +2 -13
- package/contracts/shared/PolicyHolder.sol +2 -1
- package/contracts/shared/ProxyManager.sol +6 -2
- package/contracts/shared/Service.sol +28 -22
- package/contracts/staking/IStaking.sol +93 -38
- package/contracts/staking/IStakingService.sol +71 -40
- package/contracts/staking/StakeManagerLib.sol +231 -0
- package/contracts/staking/Staking.sol +302 -137
- package/contracts/staking/StakingManager.sol +22 -20
- package/contracts/staking/StakingReader.sol +119 -24
- package/contracts/staking/StakingService.sol +193 -76
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +613 -0
- package/contracts/staking/TargetManagerLib.sol +76 -10
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +15 -1
- package/contracts/type/Blocknumber.sol +14 -2
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/NftId.sol +9 -9
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +139 -67
- package/contracts/type/Referral.sol +1 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +1 -1
- package/contracts/type/RoleId.sol +79 -21
- package/contracts/type/Seconds.sol +18 -0
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +12 -0
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +6 -2
- package/contracts/type/Version.sol +1 -1
- package/package.json +3 -3
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -298
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/registry/RegistryAccessManager.sol +0 -167
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
@@ -3,25 +3,30 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
5
|
|
6
|
+
import {Amount} from "../type/Amount.sol";
|
6
7
|
import {Key32} from "../type/Key32.sol";
|
7
8
|
import {NftId} from "../type/NftId.sol";
|
8
9
|
import {RiskId} from "../type/RiskId.sol";
|
9
10
|
import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
|
10
11
|
import {RoleId, RoleIdLib, eqRoleId, ADMIN_ROLE, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
|
11
|
-
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
12
12
|
import {ClaimId} from "../type/ClaimId.sol";
|
13
13
|
import {ReferralId} from "../type/Referral.sol";
|
14
14
|
import {PayoutId} from "../type/PayoutId.sol";
|
15
15
|
import {DistributorType} from "../type/DistributorType.sol";
|
16
|
+
import {Seconds} from "../type/Seconds.sol";
|
17
|
+
import {UFixed} from "../type/UFixed.sol";
|
18
|
+
import {VersionPart, VersionPartLib} from "../type/Version.sol";
|
16
19
|
|
17
20
|
import {Registerable} from "../shared/Registerable.sol";
|
18
21
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
22
|
+
import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
|
19
23
|
|
20
24
|
import {IRegistry} from "../registry/IRegistry.sol";
|
21
25
|
|
22
26
|
import {IInstance} from "./IInstance.sol";
|
27
|
+
import {IInstanceService} from "./IInstanceService.sol";
|
23
28
|
import {InstanceReader} from "./InstanceReader.sol";
|
24
|
-
import {
|
29
|
+
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
25
30
|
import {BundleManager} from "./BundleManager.sol";
|
26
31
|
import {InstanceStore} from "./InstanceStore.sol";
|
27
32
|
|
@@ -48,7 +53,8 @@ contract Instance is
|
|
48
53
|
|
49
54
|
bool private _initialized;
|
50
55
|
|
51
|
-
|
56
|
+
IInstanceService internal _instanceService;
|
57
|
+
InstanceAdmin internal _instanceAdmin;
|
52
58
|
InstanceReader internal _instanceReader;
|
53
59
|
BundleManager internal _bundleManager;
|
54
60
|
InstanceStore internal _instanceStore;
|
@@ -65,7 +71,7 @@ contract Instance is
|
|
65
71
|
initializer()
|
66
72
|
{
|
67
73
|
if(authority == address(0)) {
|
68
|
-
revert
|
74
|
+
revert ErrorInstanceInstanceAdminZero();
|
69
75
|
}
|
70
76
|
|
71
77
|
__AccessManaged_init(authority);
|
@@ -73,40 +79,82 @@ contract Instance is
|
|
73
79
|
IRegistry registry = IRegistry(registryAddress);
|
74
80
|
initializeRegisterable(registryAddress, registry.getNftId(), INSTANCE(), true, initialOwner, "");
|
75
81
|
|
82
|
+
_instanceService = IInstanceService(
|
83
|
+
getRegistry().getServiceAddress(
|
84
|
+
INSTANCE(),
|
85
|
+
getMajorVersion()));
|
86
|
+
|
76
87
|
registerInterface(type(IInstance).interfaceId);
|
77
88
|
}
|
78
89
|
|
90
|
+
//--- Staking ----------------------------------------------------------//
|
91
|
+
|
92
|
+
function setStakingLockingPeriod(Seconds stakeLockingPeriod)
|
93
|
+
external
|
94
|
+
// TODO decide if onlyOwner or restricted to instance owner role is better
|
95
|
+
onlyOwner()
|
96
|
+
{
|
97
|
+
_instanceService.setStakingLockingPeriod(stakeLockingPeriod);
|
98
|
+
}
|
99
|
+
|
100
|
+
function setStakingRewardRate(UFixed rewardRate)
|
101
|
+
external
|
102
|
+
onlyOwner()
|
103
|
+
{
|
104
|
+
_instanceService.setStakingRewardRate(rewardRate);
|
105
|
+
}
|
106
|
+
|
107
|
+
function refillStakingRewardReserves(Amount dipAmount)
|
108
|
+
external
|
109
|
+
onlyOwner()
|
110
|
+
{
|
111
|
+
address instanceOwner = msg.sender;
|
112
|
+
_instanceService.refillStakingRewardReserves(instanceOwner, dipAmount);
|
113
|
+
}
|
114
|
+
|
115
|
+
function withdrawStakingRewardReserves(Amount dipAmount)
|
116
|
+
external
|
117
|
+
onlyOwner()
|
118
|
+
returns (Amount newBalance)
|
119
|
+
{
|
120
|
+
return _instanceService.withdrawStakingRewardReserves(dipAmount);
|
121
|
+
}
|
122
|
+
|
79
123
|
//--- Roles ------------------------------------------------------------//
|
80
124
|
|
81
125
|
function createRole(string memory roleName, string memory adminName)
|
82
126
|
external
|
127
|
+
// TODO decide if onlyOwner or restricted to instance owner role is better
|
83
128
|
restricted // INSTANCE_OWNER_ROLE
|
84
129
|
returns (RoleId roleId, RoleId admin)
|
85
130
|
{
|
86
|
-
(roleId, admin) =
|
131
|
+
(roleId, admin) = _instanceAdmin.createRole(roleName, adminName);
|
87
132
|
}
|
88
133
|
|
89
134
|
function grantRole(RoleId roleId, address account)
|
90
135
|
external
|
136
|
+
// TODO decide if onlyOwner or restricted to instance owner role is better
|
91
137
|
restricted // INSTANCE_OWNER_ROLE
|
92
138
|
{
|
93
|
-
|
139
|
+
AccessManagerExtendedInitializeable(authority()).grantRole(roleId.toInt(), account, 0);
|
94
140
|
}
|
95
141
|
|
96
142
|
function revokeRole(RoleId roleId, address account)
|
97
143
|
external
|
144
|
+
// TODO decide if onlyOwner or restricted to instance owner role is better
|
98
145
|
restricted // INSTANCE_OWNER_ROLE
|
99
146
|
{
|
100
|
-
|
147
|
+
AccessManagerExtendedInitializeable(authority()).revokeRole(roleId.toInt(), account);
|
101
148
|
}
|
102
149
|
|
103
150
|
//--- Targets ------------------------------------------------------------//
|
104
151
|
|
105
152
|
function createTarget(address target, string memory name)
|
106
153
|
external
|
154
|
+
// TODO decide if onlyOwner or restricted to instance owner role is better
|
107
155
|
restricted // INSTANCE_OWNER_ROLE
|
108
156
|
{
|
109
|
-
|
157
|
+
_instanceAdmin.createTarget(target, name);
|
110
158
|
}
|
111
159
|
|
112
160
|
function setTargetFunctionRole(
|
@@ -117,38 +165,41 @@ contract Instance is
|
|
117
165
|
external
|
118
166
|
restricted // INSTANCE_OWNER_ROLE
|
119
167
|
{
|
120
|
-
|
168
|
+
_instanceAdmin.setTargetFunctionRoleByInstance(targetName, selectors, roleId);
|
121
169
|
}
|
122
170
|
|
123
171
|
function setTargetLocked(address target, bool locked)
|
124
172
|
external
|
125
173
|
restricted // INSTANCE_OWNER_ROLE
|
126
174
|
{
|
127
|
-
|
175
|
+
_instanceAdmin.setTargetLockedByInstance(target, locked);
|
128
176
|
}
|
129
177
|
|
130
|
-
//--- ITransferInterceptor
|
178
|
+
//--- ITransferInterceptor ----------------------------------------------//
|
131
179
|
|
180
|
+
// TODO interception of child components nfts
|
132
181
|
function nftMint(address to, uint256 tokenId) external onlyChainNft {
|
133
|
-
|
134
|
-
assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
|
182
|
+
_instanceAdmin.transferInstanceOwnerRole(address(0), to);
|
135
183
|
}
|
136
184
|
|
137
185
|
function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
|
138
|
-
|
139
|
-
assert(_accessManager.grantRole(INSTANCE_OWNER_ROLE(), to) == true);
|
186
|
+
_instanceAdmin.transferInstanceOwnerRole(from, to);
|
140
187
|
}
|
141
188
|
|
189
|
+
//function nftBurn(address from, uint256 tokenId) external onlyChainNft {
|
190
|
+
//_instanceAdmin.transferInstanceOwnerRole(from, address(0));
|
191
|
+
//}
|
192
|
+
|
142
193
|
//--- initial setup functions -------------------------------------------//
|
143
194
|
|
144
|
-
function
|
145
|
-
if(address(
|
146
|
-
revert
|
195
|
+
function setInstanceAdmin(InstanceAdmin accessManager) external restricted {
|
196
|
+
if(address(_instanceAdmin) != address(0)) {
|
197
|
+
revert ErrorInstanceInstanceAdminAlreadySet(address(_instanceAdmin));
|
147
198
|
}
|
148
199
|
if(accessManager.authority() != authority()) {
|
149
|
-
revert
|
200
|
+
revert ErrorInstanceInstanceAdminAuthorityMismatch(authority());
|
150
201
|
}
|
151
|
-
|
202
|
+
_instanceAdmin = accessManager;
|
152
203
|
}
|
153
204
|
|
154
205
|
function setBundleManager(BundleManager bundleManager) external restricted() {
|
@@ -172,20 +223,6 @@ contract Instance is
|
|
172
223
|
_instanceReader = instanceReader;
|
173
224
|
}
|
174
225
|
|
175
|
-
//--- external view functions -------------------------------------------//
|
176
|
-
|
177
|
-
function getInstanceReader() external view returns (InstanceReader) {
|
178
|
-
return _instanceReader;
|
179
|
-
}
|
180
|
-
|
181
|
-
function getBundleManager() external view returns (BundleManager) {
|
182
|
-
return _bundleManager;
|
183
|
-
}
|
184
|
-
|
185
|
-
function getInstanceAccessManager() external view returns (InstanceAccessManager) {
|
186
|
-
return _accessManager;
|
187
|
-
}
|
188
|
-
|
189
226
|
function setInstanceStore(InstanceStore instanceStore) external restricted {
|
190
227
|
if(address(_instanceStore) != address(0)) {
|
191
228
|
revert ErrorInstanceInstanceStoreAlreadySet(address(_instanceStore));
|
@@ -196,32 +233,30 @@ contract Instance is
|
|
196
233
|
_instanceStore = instanceStore;
|
197
234
|
}
|
198
235
|
|
199
|
-
|
200
|
-
return _instanceStore;
|
201
|
-
}
|
236
|
+
//--- external view functions -------------------------------------------//
|
202
237
|
|
203
|
-
function
|
204
|
-
return
|
238
|
+
function getInstanceReader() external view returns (InstanceReader) {
|
239
|
+
return _instanceReader;
|
205
240
|
}
|
206
241
|
|
207
|
-
function
|
208
|
-
return
|
242
|
+
function getBundleManager() external view returns (BundleManager) {
|
243
|
+
return _bundleManager;
|
209
244
|
}
|
210
245
|
|
211
|
-
function
|
212
|
-
return
|
246
|
+
function getInstanceAdmin() external view returns (InstanceAdmin) {
|
247
|
+
return _instanceAdmin;
|
213
248
|
}
|
214
249
|
|
215
|
-
function
|
216
|
-
return
|
250
|
+
function getInstanceAccessManager() external view returns (AccessManagerExtendedInitializeable) {
|
251
|
+
return AccessManagerExtendedInitializeable(authority());
|
217
252
|
}
|
218
253
|
|
219
|
-
function
|
220
|
-
return
|
254
|
+
function getInstanceStore() external view returns (InstanceStore) {
|
255
|
+
return _instanceStore;
|
221
256
|
}
|
222
257
|
|
223
|
-
function
|
224
|
-
return
|
258
|
+
function getMajorVersion() public pure returns (VersionPart majorVersion) {
|
259
|
+
return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
|
225
260
|
}
|
226
261
|
|
227
262
|
//--- internal view/pure functions --------------------------------------//
|
@@ -0,0 +1,331 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
5
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
6
|
+
|
7
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
|
8
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
+
import {NftId} from "../type/NftId.sol";
|
10
|
+
|
11
|
+
import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
|
12
|
+
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
|
15
|
+
import {IInstance} from "./IInstance.sol";
|
16
|
+
import {IAccess} from "./module/IAccess.sol";
|
17
|
+
|
18
|
+
contract InstanceAdmin is
|
19
|
+
AccessManagedUpgradeable
|
20
|
+
{
|
21
|
+
using RoleIdLib for RoleId;
|
22
|
+
|
23
|
+
string public constant INSTANCE_ROLE_NAME = "InstanceRole";
|
24
|
+
string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
|
25
|
+
|
26
|
+
string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
|
27
|
+
|
28
|
+
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
|
29
|
+
uint32 public constant EXECUTION_DELAY = 0;
|
30
|
+
|
31
|
+
mapping(address target => IAccess.Type) _targetType;
|
32
|
+
mapping(RoleId roleId => IAccess.Type) _roleType;
|
33
|
+
uint64 _idNext;
|
34
|
+
|
35
|
+
AccessManagerExtendedInitializeable internal _accessManager;
|
36
|
+
address _instance;
|
37
|
+
IRegistry internal _registry;
|
38
|
+
|
39
|
+
// instance owner role is granted upon instance nft minting in callback function
|
40
|
+
// assume this contract is already a member of ADMIN_ROLE, the only member
|
41
|
+
function initialize(address instanceAddress) external initializer
|
42
|
+
{
|
43
|
+
IInstance instance = IInstance(instanceAddress);
|
44
|
+
IRegistry registry = instance.getRegistry();
|
45
|
+
address authority = instance.authority();
|
46
|
+
|
47
|
+
__AccessManaged_init(authority);
|
48
|
+
|
49
|
+
_accessManager = AccessManagerExtendedInitializeable(authority);
|
50
|
+
_instance = instanceAddress;
|
51
|
+
_registry = registry;
|
52
|
+
_idNext = CUSTOM_ROLE_ID_MIN;
|
53
|
+
|
54
|
+
// minimum configuration required for nft interception
|
55
|
+
_createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
|
56
|
+
_createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Core);
|
57
|
+
_grantRole(INSTANCE_ROLE(), address(instance));
|
58
|
+
|
59
|
+
_createTarget(address(this), INSTANCE_ADMIN_TARGET_NAME, IAccess.Type.Core);
|
60
|
+
bytes4[] memory instanceAdminInstanceSelectors = new bytes4[](1);
|
61
|
+
instanceAdminInstanceSelectors[0] = this.transferInstanceOwnerRole.selector;
|
62
|
+
_setTargetFunctionRole(address(this), instanceAdminInstanceSelectors, INSTANCE_ROLE());
|
63
|
+
}
|
64
|
+
|
65
|
+
//--- Role ------------------------------------------------------//
|
66
|
+
// ADMIN_ROLE
|
67
|
+
// assume all core roles are known at deployment time
|
68
|
+
// assume core roles are set and granted only during instance cloning
|
69
|
+
// assume core roles are never revoked -> core roles admin is never active after intialization
|
70
|
+
function createCoreRole(RoleId roleId, string memory name) external restricted() {
|
71
|
+
_createRole(roleId, name, IAccess.Type.Core);
|
72
|
+
}
|
73
|
+
|
74
|
+
// ADMIN_ROLE
|
75
|
+
// assume gif roles can be revoked
|
76
|
+
// assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
|
77
|
+
function createGifRole(RoleId roleId, string memory name, RoleId admin) external restricted() {
|
78
|
+
_createRole(roleId, name, IAccess.Type.Gif);
|
79
|
+
_setRoleAdmin(roleId, admin);
|
80
|
+
}
|
81
|
+
|
82
|
+
// INSTANCE_ROLE
|
83
|
+
// TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
|
84
|
+
function createRole(string memory roleName, string memory adminName)
|
85
|
+
external
|
86
|
+
restricted()
|
87
|
+
returns(RoleId roleId, RoleId admin)
|
88
|
+
{
|
89
|
+
(roleId, admin) = _getNextCustomRoleId();
|
90
|
+
|
91
|
+
_createRole(roleId, roleName, IAccess.Type.Custom);
|
92
|
+
_createRole(admin, adminName, IAccess.Type.Custom);
|
93
|
+
|
94
|
+
_setRoleAdmin(roleId, admin);
|
95
|
+
_setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
|
96
|
+
}
|
97
|
+
|
98
|
+
// ADMIN_ROLE
|
99
|
+
// assume used by instance service only during instance cloning
|
100
|
+
// assume used only by this.createRole(), this.createGifRole() afterwards
|
101
|
+
function setRoleAdmin(RoleId roleId, RoleId admin) public restricted() {
|
102
|
+
_setRoleAdmin(roleId, admin);
|
103
|
+
}
|
104
|
+
|
105
|
+
// INSTANCE_ROLE
|
106
|
+
function transferInstanceOwnerRole(address from, address to) external restricted() {
|
107
|
+
// temp pre transfer checks
|
108
|
+
assert(_getRoleMembers(INSTANCE_ROLE()) == 1);
|
109
|
+
assert(_hasRole(INSTANCE_ROLE(), _instance));
|
110
|
+
assert(_getRoleAdmin(INSTANCE_OWNER_ROLE()).toInt() == ADMIN_ROLE().toInt());
|
111
|
+
if(from != address(0)) { // nft transfer
|
112
|
+
assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);
|
113
|
+
} else { // nft minting
|
114
|
+
assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 0);
|
115
|
+
}
|
116
|
+
|
117
|
+
// transfer
|
118
|
+
assert(from != to);
|
119
|
+
_grantRole(INSTANCE_OWNER_ROLE(), to);
|
120
|
+
if(from != address(0)) { // nft transfer
|
121
|
+
_revokeRole(INSTANCE_OWNER_ROLE(), from);
|
122
|
+
}
|
123
|
+
|
124
|
+
// temp post transfer checks
|
125
|
+
assert(_getRoleMembers(INSTANCE_OWNER_ROLE()) == 1);// temp
|
126
|
+
assert(_hasRole(INSTANCE_OWNER_ROLE(), to));
|
127
|
+
}
|
128
|
+
|
129
|
+
//--- Target ------------------------------------------------------//
|
130
|
+
// ADMIN_ROLE
|
131
|
+
// assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
|
132
|
+
function createCoreTarget(address target, string memory name) external restricted() {
|
133
|
+
_createTarget(target, name, IAccess.Type.Core);
|
134
|
+
}
|
135
|
+
|
136
|
+
// INSTANCE_SERVICE_ROLE
|
137
|
+
function createGifTarget(address target, string memory name) external restricted()
|
138
|
+
{
|
139
|
+
if(!_registry.isRegistered(target)) {
|
140
|
+
revert IAccess.ErrorIAccessTargetNotRegistered(target);
|
141
|
+
}
|
142
|
+
|
143
|
+
NftId targetParentNftId = _registry.getObjectInfo(target).parentNftId;
|
144
|
+
NftId instanceNftId = _registry.getObjectInfo(_instance).nftId;
|
145
|
+
if(targetParentNftId != instanceNftId) {
|
146
|
+
revert IAccess.ErrorIAccessTargetInstanceMismatch(target, targetParentNftId, instanceNftId);
|
147
|
+
}
|
148
|
+
|
149
|
+
_createTarget(target, name, IAccess.Type.Gif);
|
150
|
+
}
|
151
|
+
|
152
|
+
// INSTANCE_ROLE
|
153
|
+
// assume custom target.authority() is constant -> target MUST not be used with different instance access manager
|
154
|
+
// assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
|
155
|
+
// assume custom target can not be registered as instance or service -> why?
|
156
|
+
// TODO check target associated with instance owner or instance or instance components or components helpers
|
157
|
+
function createTarget(address target, string memory name) external restricted() {
|
158
|
+
_createTarget(target, name, IAccess.Type.Custom);
|
159
|
+
}
|
160
|
+
|
161
|
+
// TODO instance owner locks component instead of revoking it access to the instance...
|
162
|
+
// INSTANCE_SERVICE_ROLE
|
163
|
+
function setTargetLockedByService(address target, bool locked) external restricted {
|
164
|
+
_setTargetLocked(target, locked);
|
165
|
+
}
|
166
|
+
|
167
|
+
// INSTANCE_ROLE
|
168
|
+
function setTargetLockedByInstance(address target, bool locked) external restricted {
|
169
|
+
_setTargetLocked(target, locked);
|
170
|
+
}
|
171
|
+
|
172
|
+
|
173
|
+
// allowed combinations of roles and targets:
|
174
|
+
//1) set core role for core target
|
175
|
+
//2) set gif role for gif target
|
176
|
+
//3) set custom role for gif target
|
177
|
+
//4) set custom role for custom target
|
178
|
+
|
179
|
+
// ADMIN_ROLE if used only during initialization, works with:
|
180
|
+
// any roles for any targets
|
181
|
+
// INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
|
182
|
+
// core roles for core targets
|
183
|
+
// gif roles for gif targets
|
184
|
+
function setTargetFunctionRoleByService(
|
185
|
+
string memory targetName,
|
186
|
+
bytes4[] calldata selectors,
|
187
|
+
RoleId roleId
|
188
|
+
)
|
189
|
+
public
|
190
|
+
virtual
|
191
|
+
restricted
|
192
|
+
{
|
193
|
+
address target = _accessManager.getTargetAddress(targetName);
|
194
|
+
// not custom target
|
195
|
+
if(_targetType[target] == IAccess.Type.Custom) {
|
196
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
|
197
|
+
}
|
198
|
+
|
199
|
+
// not custom role
|
200
|
+
if(_roleType[roleId] == IAccess.Type.Custom) {
|
201
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
|
202
|
+
}
|
203
|
+
|
204
|
+
_setTargetFunctionRole(target, selectors, roleId);
|
205
|
+
}
|
206
|
+
|
207
|
+
// INSTANCE_ROLE
|
208
|
+
// gif role for gif target
|
209
|
+
// gif role for custom target
|
210
|
+
// custom role for gif target -> need to prohibit
|
211
|
+
// custom role for custom target
|
212
|
+
// TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
|
213
|
+
function setTargetFunctionRoleByInstance(
|
214
|
+
string memory targetName,
|
215
|
+
bytes4[] calldata selectors,
|
216
|
+
RoleId roleId// string memory roleName
|
217
|
+
)
|
218
|
+
public
|
219
|
+
virtual
|
220
|
+
restricted()
|
221
|
+
{
|
222
|
+
address target = _accessManager.getTargetAddress(targetName);
|
223
|
+
|
224
|
+
// not core target
|
225
|
+
if(_targetType[target] == IAccess.Type.Core) {
|
226
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
|
227
|
+
}
|
228
|
+
|
229
|
+
// not core role
|
230
|
+
if(_roleType[roleId] == IAccess.Type.Core) {
|
231
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
232
|
+
}
|
233
|
+
|
234
|
+
_setTargetFunctionRole(target, selectors, roleId);
|
235
|
+
}
|
236
|
+
|
237
|
+
//--- Role internal view/pure functions --------------------------------------//
|
238
|
+
function _createRole(RoleId roleId, string memory name, IAccess.Type rtype) internal {
|
239
|
+
_validateRole(roleId, rtype);
|
240
|
+
|
241
|
+
_roleType[roleId] = rtype;
|
242
|
+
_accessManager.createRole(roleId.toInt(), name);
|
243
|
+
}
|
244
|
+
|
245
|
+
function _validateRole(RoleId roleId, IAccess.Type rtype) internal pure
|
246
|
+
{
|
247
|
+
uint roleIdInt = roleId.toInt();
|
248
|
+
if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
|
249
|
+
revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
|
250
|
+
}
|
251
|
+
|
252
|
+
if(
|
253
|
+
rtype != IAccess.Type.Custom &&
|
254
|
+
roleIdInt >= CUSTOM_ROLE_ID_MIN &&
|
255
|
+
roleIdInt != PUBLIC_ROLE().toInt())
|
256
|
+
{
|
257
|
+
revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
|
258
|
+
}
|
259
|
+
}
|
260
|
+
|
261
|
+
function _grantRole(RoleId roleId, address account) internal {
|
262
|
+
_accessManager.grantRole(roleId.toInt(), account, EXECUTION_DELAY);
|
263
|
+
}
|
264
|
+
|
265
|
+
function _revokeRole(RoleId roleId, address member) internal {
|
266
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
267
|
+
}
|
268
|
+
|
269
|
+
function _setRoleAdmin(RoleId roleId, RoleId admin) internal {
|
270
|
+
if(_roleType[roleId] == IAccess.Type.Core) {
|
271
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
272
|
+
}
|
273
|
+
|
274
|
+
_accessManager.setRoleAdmin(roleId.toInt(), admin.toInt());
|
275
|
+
}
|
276
|
+
|
277
|
+
function _getRoleAdmin(RoleId roleId) internal view returns (RoleId admin) {
|
278
|
+
return RoleIdLib.toRoleId(_accessManager.getRoleAdmin(roleId.toInt()));
|
279
|
+
}
|
280
|
+
|
281
|
+
function _hasRole(RoleId roleId, address account) internal view returns (bool accountHasRole) {
|
282
|
+
uint32 executionDelay;
|
283
|
+
(accountHasRole, executionDelay) = _accessManager.hasRole(roleId.toInt(), account);
|
284
|
+
assert(executionDelay == 0);
|
285
|
+
}
|
286
|
+
|
287
|
+
function _getRoleMembers(RoleId roleId) internal view returns (uint) {
|
288
|
+
return _accessManager.getRoleMembers(roleId.toInt());
|
289
|
+
}
|
290
|
+
|
291
|
+
function _getNextCustomRoleId() internal returns(RoleId roleId, RoleId admin) {
|
292
|
+
uint64 roleIdInt = _idNext;
|
293
|
+
uint64 adminInt = roleIdInt + 1;
|
294
|
+
|
295
|
+
_idNext = roleIdInt + 2;
|
296
|
+
|
297
|
+
roleId = RoleIdLib.toRoleId(roleIdInt);
|
298
|
+
admin = RoleIdLib.toRoleId(adminInt);
|
299
|
+
}
|
300
|
+
|
301
|
+
//--- Target internal view/pure functions --------------------------------------//
|
302
|
+
function _createTarget(address target, string memory name, IAccess.Type ttype)
|
303
|
+
internal
|
304
|
+
{
|
305
|
+
_validateTarget(target, ttype);
|
306
|
+
_targetType[target] = ttype;
|
307
|
+
_accessManager.createTarget(target, name);
|
308
|
+
}
|
309
|
+
|
310
|
+
function _validateTarget(address target, IAccess.Type ttype)
|
311
|
+
internal
|
312
|
+
view
|
313
|
+
{}
|
314
|
+
|
315
|
+
// IMPORTANT: instance admin MUST be of Core type -> otherwise can be locked forever
|
316
|
+
// TODO: consider locking gif targets in a separate function?
|
317
|
+
function _setTargetLocked(address target, bool locked) internal
|
318
|
+
{
|
319
|
+
IAccess.Type targetType = _targetType[target];
|
320
|
+
|
321
|
+
if(targetType == IAccess.Type.Core) {
|
322
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
|
323
|
+
}
|
324
|
+
|
325
|
+
_accessManager.setTargetClosed(target, locked);
|
326
|
+
}
|
327
|
+
|
328
|
+
function _setTargetFunctionRole(address target, bytes4[] memory selectors, RoleId roleId) internal {
|
329
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleId.toInt());
|
330
|
+
}
|
331
|
+
}
|