@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
@@ -2,6 +2,9 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
|
+
|
7
|
+
import {InitializableCustom} from "../shared/InitializableCustom.sol";
|
5
8
|
|
6
9
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
7
10
|
import {VersionPart} from "../type/Version.sol";
|
@@ -9,8 +12,10 @@ import {ObjectType, PROTOCOL, REGISTRY, TOKEN, SERVICE, INSTANCE, STAKE, STAKING
|
|
9
12
|
|
10
13
|
import {ChainNft} from "./ChainNft.sol";
|
11
14
|
import {IRegistry} from "./IRegistry.sol";
|
15
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
12
16
|
import {ReleaseManager} from "./ReleaseManager.sol";
|
13
17
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
18
|
+
import {RegistryAdmin} from "./RegistryAdmin.sol";
|
14
19
|
|
15
20
|
// IMPORTANT
|
16
21
|
// Each NFT minted by registry is accosiated with:
|
@@ -23,9 +28,10 @@ import {TokenRegistry} from "./TokenRegistry.sol";
|
|
23
28
|
// 4) state object by regular service (POLICY, BUNDLE, STAKE)
|
24
29
|
|
25
30
|
contract Registry is
|
31
|
+
InitializableCustom,
|
26
32
|
IRegistry
|
27
33
|
{
|
28
|
-
address public
|
34
|
+
address public NFT_LOCK_ADDRESS = address(0x1);
|
29
35
|
uint256 public constant REGISTRY_TOKEN_SEQUENCE_ID = 2;
|
30
36
|
uint256 public constant STAKING_TOKEN_SEQUENCE_ID = 3;
|
31
37
|
string public constant EMPTY_URI = "";
|
@@ -43,13 +49,23 @@ contract Registry is
|
|
43
49
|
mapping(ObjectType objectType => mapping(
|
44
50
|
ObjectType parentType => bool)) private _coreObjectCombinations;
|
45
51
|
|
46
|
-
|
47
|
-
ChainNft immutable _chainNft;
|
52
|
+
RegistryAdmin public immutable _admin;
|
53
|
+
ChainNft public immutable _chainNft;
|
54
|
+
|
55
|
+
NftId public immutable _protocolNftId;
|
56
|
+
NftId public immutable _registryNftId;
|
57
|
+
NftId public _stakingNftId;
|
48
58
|
|
49
|
-
|
50
|
-
address
|
51
|
-
|
59
|
+
address public _tokenRegistryAddress;
|
60
|
+
address public _stakingAddress;
|
61
|
+
ReleaseManager public _releaseManager;
|
52
62
|
|
63
|
+
// TODO
|
64
|
+
// 1). Registry and ReleaseManager must be treated as whole single entity.
|
65
|
+
// But current limitations of EVM does not allow it -> require it to be splitted
|
66
|
+
// 2). Keep onlyReleaseManager modifier
|
67
|
+
// 3). Delete onlyRegistryService in favor of restricted, introduce aditional "domain role", REGISTRY_SERVICE_ROLE
|
68
|
+
// 4). (For GlobalRegistry ONLY) make registerChainRegistry() restricted to GIF_ADMIN_ROLE
|
53
69
|
modifier onlyRegistryService() {
|
54
70
|
if(!_releaseManager.isActiveRegistryService(msg.sender)) {
|
55
71
|
revert ErrorRegistryCallerNotRegistryService();
|
@@ -57,6 +73,7 @@ contract Registry is
|
|
57
73
|
_;
|
58
74
|
}
|
59
75
|
|
76
|
+
|
60
77
|
modifier onlyReleaseManager() {
|
61
78
|
if(msg.sender != address(_releaseManager)) {
|
62
79
|
revert ErrorRegistryCallerNotReleaseManager();
|
@@ -64,14 +81,16 @@ contract Registry is
|
|
64
81
|
_;
|
65
82
|
}
|
66
83
|
|
67
|
-
constructor() {
|
68
|
-
_releaseManager = ReleaseManager(msg.sender);
|
69
84
|
|
85
|
+
constructor(RegistryAdmin admin)
|
86
|
+
InitializableCustom()
|
87
|
+
{
|
88
|
+
_admin = admin;
|
70
89
|
// deploy NFT
|
71
90
|
_chainNft = new ChainNft(address(this));
|
72
91
|
|
73
92
|
// initial registry setup
|
74
|
-
_registerProtocol();
|
93
|
+
_protocolNftId = _registerProtocol();
|
75
94
|
_registryNftId = _registerRegistry();
|
76
95
|
|
77
96
|
// set object types and object parent relations
|
@@ -79,53 +98,21 @@ contract Registry is
|
|
79
98
|
}
|
80
99
|
|
81
100
|
|
82
|
-
|
83
|
-
|
101
|
+
/// @dev wires release manager and token to registry (this contract).
|
102
|
+
/// MUST be called by release manager.
|
103
|
+
function initialize(
|
104
|
+
address releaseManager,
|
105
|
+
address tokenRegistry,
|
106
|
+
address staking
|
84
107
|
)
|
85
108
|
external
|
86
|
-
|
109
|
+
initializer()
|
87
110
|
{
|
88
|
-
|
89
|
-
revert TokenRegistryAlreadySet(tokenRegistry);
|
90
|
-
}
|
91
|
-
|
92
|
-
if (address(tokenRegistry) == address(0)) {
|
93
|
-
revert TokenRegistryZero();
|
94
|
-
}
|
95
|
-
|
111
|
+
_releaseManager = ReleaseManager(releaseManager);
|
96
112
|
_tokenRegistryAddress = tokenRegistry;
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
function registerStaking(
|
101
|
-
address stakingAddress,
|
102
|
-
address stakingOwner
|
103
|
-
)
|
104
|
-
external
|
105
|
-
onlyReleaseManager
|
106
|
-
returns(NftId stakingNftId)
|
107
|
-
{
|
108
|
-
// staking contract for same chain may only be registered once
|
109
|
-
if (_stakingAddress != address(0)) {
|
110
|
-
revert StakingAlreadyRegistered(_stakingAddress);
|
111
|
-
}
|
112
|
-
|
113
|
-
_stakingAddress = stakingAddress;
|
114
|
-
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
115
|
-
stakingNftId = NftIdLib.toNftId(stakingId);
|
116
|
-
|
117
|
-
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
118
|
-
_info[stakingNftId] = ObjectInfo({
|
119
|
-
nftId: stakingNftId,
|
120
|
-
parentNftId: _registryNftId,
|
121
|
-
objectType: STAKING(),
|
122
|
-
isInterceptor: false,
|
123
|
-
objectAddress: _stakingAddress,
|
124
|
-
initialOwner: stakingOwner,
|
125
|
-
data: ""
|
126
|
-
});
|
113
|
+
_stakingAddress = staking;
|
127
114
|
|
128
|
-
|
115
|
+
_stakingNftId = _registerStaking();
|
129
116
|
}
|
130
117
|
|
131
118
|
function registerService(
|
@@ -225,13 +212,7 @@ contract Registry is
|
|
225
212
|
return _releaseManager.getInitialVersion();
|
226
213
|
}
|
227
214
|
|
228
|
-
|
229
|
-
// need to be thought trough, not yet clear if necessary
|
230
|
-
// need to answer question: what is the latest version during the upgrade process?
|
231
|
-
// likely setting up a new gif version does not fit into a single tx
|
232
|
-
// in this case we might want to have a period where the latest version is
|
233
|
-
// in the process of being set up while the latest active version is 1 major release smaller
|
234
|
-
/// @dev latest GIF major version (might not yet be active)
|
215
|
+
/// @dev next GIF release version to be released
|
235
216
|
function getNextVersion() external view returns (VersionPart) {
|
236
217
|
return _releaseManager.getNextVersion();
|
237
218
|
}
|
@@ -253,6 +234,10 @@ contract Registry is
|
|
253
234
|
return _registryNftId;
|
254
235
|
}
|
255
236
|
|
237
|
+
function getProtocolNftId() external view returns (NftId nftId) {
|
238
|
+
return _protocolNftId;
|
239
|
+
}
|
240
|
+
|
256
241
|
function getNftId(address object) external view returns (NftId id) {
|
257
242
|
return _nftIdByAddress[object];
|
258
243
|
}
|
@@ -290,12 +275,14 @@ contract Registry is
|
|
290
275
|
return _info[objectParentNftId].objectType == INSTANCE();
|
291
276
|
}
|
292
277
|
|
293
|
-
function
|
278
|
+
function isActiveRelease(VersionPart version) external view returns (bool)
|
294
279
|
{
|
295
|
-
return _releaseManager.
|
280
|
+
return _releaseManager.isActiveRelease(version);
|
296
281
|
}
|
297
282
|
|
298
283
|
function getStakingAddress() external view returns (address staking) {
|
284
|
+
//return getObjectInfo(_stakingNftId).objectAddress;
|
285
|
+
//return _info[_stakingNftId].objectAddress;
|
299
286
|
return _stakingAddress;
|
300
287
|
}
|
301
288
|
|
@@ -308,7 +295,7 @@ contract Registry is
|
|
308
295
|
VersionPart releaseVersion
|
309
296
|
) external view returns (address service)
|
310
297
|
{
|
311
|
-
|
298
|
+
service = _service[releaseVersion][serviceDomain];
|
312
299
|
}
|
313
300
|
|
314
301
|
function getReleaseAccessManagerAddress(VersionPart version) external view returns (address) {
|
@@ -323,6 +310,14 @@ contract Registry is
|
|
323
310
|
return address(_chainNft);
|
324
311
|
}
|
325
312
|
|
313
|
+
function getRegistryAdminAddress() external view returns (address) {
|
314
|
+
return address(_admin);
|
315
|
+
}
|
316
|
+
|
317
|
+
function getAuthority() external view returns (address) {
|
318
|
+
return _admin.authority();
|
319
|
+
}
|
320
|
+
|
326
321
|
function getOwner() public view returns (address owner) {
|
327
322
|
return ownerOf(address(this));
|
328
323
|
}
|
@@ -408,7 +403,7 @@ contract Registry is
|
|
408
403
|
address parentObjectAddress
|
409
404
|
)
|
410
405
|
internal
|
411
|
-
|
406
|
+
pure
|
412
407
|
returns (address interceptor)
|
413
408
|
{
|
414
409
|
// no intercepting calls for stakes
|
@@ -436,9 +431,10 @@ contract Registry is
|
|
436
431
|
/// @dev protocol registration used to anchor the dip ecosystem relations
|
437
432
|
function _registerProtocol()
|
438
433
|
private
|
434
|
+
returns (NftId protocolNftId)
|
439
435
|
{
|
440
436
|
uint256 protocolId = _chainNft.PROTOCOL_NFT_ID();
|
441
|
-
|
437
|
+
protocolNftId = NftIdLib.toNftId(protocolId);
|
442
438
|
|
443
439
|
_info[protocolNftId] = ObjectInfo({
|
444
440
|
nftId: protocolNftId,
|
@@ -470,7 +466,7 @@ contract Registry is
|
|
470
466
|
}
|
471
467
|
else
|
472
468
|
{// we are global registry
|
473
|
-
parentNftId =
|
469
|
+
parentNftId = _protocolNftId;
|
474
470
|
}
|
475
471
|
|
476
472
|
_info[registryNftId] = ObjectInfo({
|
@@ -482,8 +478,8 @@ contract Registry is
|
|
482
478
|
initialOwner: NFT_LOCK_ADDRESS,
|
483
479
|
data: ""
|
484
480
|
});
|
485
|
-
_nftIdByAddress[address(this)] = registryNftId;
|
486
481
|
|
482
|
+
_nftIdByAddress[address(this)] = registryNftId;
|
487
483
|
_chainNft.mint(NFT_LOCK_ADDRESS, registryId);
|
488
484
|
}
|
489
485
|
|
@@ -506,13 +502,36 @@ contract Registry is
|
|
506
502
|
|
507
503
|
_chainNft.mint(NFT_LOCK_ADDRESS, globalRegistryId);
|
508
504
|
}
|
505
|
+
// depends on _registryNftId and _stakingAddress
|
506
|
+
function _registerStaking()
|
507
|
+
private
|
508
|
+
returns (NftId stakingNftId)
|
509
|
+
{
|
510
|
+
address stakingOwner = IRegisterable(_stakingAddress).getOwner();
|
511
|
+
uint256 stakingId = _chainNft.calculateTokenId(STAKING_TOKEN_SEQUENCE_ID);
|
512
|
+
stakingNftId = NftIdLib.toNftId(stakingId);
|
513
|
+
|
514
|
+
_info[stakingNftId] = ObjectInfo({
|
515
|
+
nftId: stakingNftId,
|
516
|
+
parentNftId: _registryNftId,
|
517
|
+
objectType: STAKING(),
|
518
|
+
isInterceptor: false,
|
519
|
+
objectAddress: _stakingAddress,
|
520
|
+
initialOwner: stakingOwner,
|
521
|
+
data: ""
|
522
|
+
});
|
523
|
+
|
524
|
+
_nftIdByAddress[_stakingAddress] = stakingNftId;
|
525
|
+
// reverts if nftId was already minted
|
526
|
+
_chainNft.mint(stakingOwner, stakingId);
|
527
|
+
}
|
509
528
|
|
510
529
|
/// @dev defines which object - parent types relations are allowed to register
|
511
530
|
// IMPORTANT:
|
512
531
|
// 1) EACH object type MUST have only one parent type across ALL mappings
|
513
532
|
// 2) DO NOT use object type (e.g. POLCY, BUNDLE, STAKE) as parent type
|
514
533
|
// 3) DO NOT use REGISTRY as object type
|
515
|
-
// 2) DO NOT use PROTOCOL and "
|
534
|
+
// 2) DO NOT use PROTOCOL and "ObjectTypeLib.zero"
|
516
535
|
function _setupValidCoreTypesAndCombinations()
|
517
536
|
private
|
518
537
|
{
|
@@ -0,0 +1,333 @@
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {AccessAdmin} from "../shared/AccessAdmin.sol";
|
5
|
+
import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
|
6
|
+
import {IRegistry} from "./IRegistry.sol";
|
7
|
+
import {IService} from "../shared/IService.sol";
|
8
|
+
import {IServiceAuthorization} from "./IServiceAuthorization.sol";
|
9
|
+
import {IStaking} from "../staking/IStaking.sol";
|
10
|
+
import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
|
11
|
+
import {ReleaseManager} from "./ReleaseManager.sol";
|
12
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
|
+
import {StakingStore} from "../staking/StakingStore.sol";
|
14
|
+
import {STAKING} from "../type/ObjectType.sol";
|
15
|
+
import {TokenRegistry} from "./TokenRegistry.sol";
|
16
|
+
import {VersionPart} from "../type/Version.sol";
|
17
|
+
|
18
|
+
/*
|
19
|
+
1) GIF_MANAGER_ROLE
|
20
|
+
- can have arbitrary number of members
|
21
|
+
- responsible for services registrations
|
22
|
+
- responsible for token registration and activation
|
23
|
+
|
24
|
+
2) GIF_ADMIN_ROLE
|
25
|
+
- admin of GIF_MANAGER_ROLE
|
26
|
+
- MUST have 1 member at any time
|
27
|
+
- granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
|
28
|
+
- responsible for creation and activation of releases
|
29
|
+
|
30
|
+
createServiceTarget(type, release)
|
31
|
+
createServiceRole(type,release)
|
32
|
+
getServiceRole(type, release)
|
33
|
+
*/
|
34
|
+
contract RegistryAdmin is
|
35
|
+
AccessAdmin
|
36
|
+
{
|
37
|
+
error ErrorRegistryAdminIsAlreadySetUp();
|
38
|
+
|
39
|
+
string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
|
40
|
+
string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
|
41
|
+
string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
|
42
|
+
string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
|
43
|
+
|
44
|
+
string public constant RELEASE_MANAGER_TARGET_NAME = "ReleaseManagerTarget";
|
45
|
+
string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistryTarget";
|
46
|
+
string public constant STAKING_TARGET_NAME = "StakingTarget";
|
47
|
+
string public constant STAKING_STORE_TARGET_NAME = "StakingStoreTarget";
|
48
|
+
|
49
|
+
mapping(address service => VersionPart majorVersion) private _ServiceRelease;
|
50
|
+
|
51
|
+
address private _releaseManager;
|
52
|
+
address private _tokenRegistry;
|
53
|
+
address private _staking;
|
54
|
+
address private _stakingStore;
|
55
|
+
bool private _setupCompleted;
|
56
|
+
|
57
|
+
constructor() AccessAdmin() { }
|
58
|
+
|
59
|
+
function completeSetup(
|
60
|
+
IRegistry registry,
|
61
|
+
address gifAdmin,
|
62
|
+
address gifManager
|
63
|
+
)
|
64
|
+
external
|
65
|
+
onlyDeployer()
|
66
|
+
{
|
67
|
+
if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
|
68
|
+
else { _setupCompleted = true; }
|
69
|
+
|
70
|
+
_releaseManager = registry.getReleaseManagerAddress();
|
71
|
+
_tokenRegistry = registry.getTokenRegistryAddress();
|
72
|
+
_staking = registry.getStakingAddress();
|
73
|
+
_stakingStore = address(
|
74
|
+
IStaking(_staking).getStakingStore());
|
75
|
+
|
76
|
+
// at this moment all registry contracts are deployed and fully intialized
|
77
|
+
_createTarget(_tokenRegistry, TOKEN_REGISTRY_TARGET_NAME);
|
78
|
+
|
79
|
+
_setupGifAdminRole(gifAdmin);
|
80
|
+
_setupGifManagerRole(gifManager);
|
81
|
+
|
82
|
+
_setupReleaseManager();
|
83
|
+
_setupStaking();
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
/// @dev Sets up authorizaion for specified service.
|
88
|
+
/// For all authorized services its authorized functions are enabled.
|
89
|
+
/// Permissioned function: Access is restricted to release manager.
|
90
|
+
function authorizeService(
|
91
|
+
IServiceAuthorization serviceAuthorization,
|
92
|
+
IService service
|
93
|
+
)
|
94
|
+
external
|
95
|
+
restricted()
|
96
|
+
{
|
97
|
+
_createServiceTargetAndRole(service);
|
98
|
+
_authorizeServiceFunctions(serviceAuthorization, service);
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
function grantServiceRoleForAllVersions(IService service, ObjectType domain)
|
103
|
+
external
|
104
|
+
restricted()
|
105
|
+
{
|
106
|
+
_grantRoleToAccount(
|
107
|
+
RoleIdLib.roleForTypeAndAllVersions(domain),
|
108
|
+
address(service));
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
function _createServiceTargetAndRole(IService service)
|
113
|
+
private
|
114
|
+
{
|
115
|
+
ObjectType domain = service.getDomain();
|
116
|
+
string memory baseName = ObjectTypeLib.toName(domain);
|
117
|
+
VersionPart version = service.getVersion().toMajorPart();
|
118
|
+
uint256 versionInt = version.toInt();
|
119
|
+
string memory versionName = "_v0";
|
120
|
+
string memory versionNumber = ObjectTypeLib.toString(versionInt);
|
121
|
+
|
122
|
+
if (versionInt >= 10) {
|
123
|
+
versionName = "_v";
|
124
|
+
}
|
125
|
+
|
126
|
+
// create service target
|
127
|
+
string memory serviceTargetName = string(
|
128
|
+
abi.encodePacked(
|
129
|
+
baseName,
|
130
|
+
"Service",
|
131
|
+
versionName,
|
132
|
+
versionNumber));
|
133
|
+
|
134
|
+
_createTarget(
|
135
|
+
address(service),
|
136
|
+
serviceTargetName);
|
137
|
+
|
138
|
+
// create service role
|
139
|
+
string memory serviceRoleName = string(
|
140
|
+
abi.encodePacked(
|
141
|
+
baseName,
|
142
|
+
"ServiceRole",
|
143
|
+
versionName,
|
144
|
+
versionNumber));
|
145
|
+
|
146
|
+
RoleId roleId = RoleIdLib.roleForTypeAndVersion(
|
147
|
+
domain,
|
148
|
+
version);
|
149
|
+
|
150
|
+
_createRole(
|
151
|
+
roleId,
|
152
|
+
ADMIN_ROLE(),
|
153
|
+
serviceRoleName,
|
154
|
+
1, // service roles must only be given to this unique service
|
155
|
+
true); // it must not be possible to remove this role once granted
|
156
|
+
|
157
|
+
_grantRoleToAccount(
|
158
|
+
roleId,
|
159
|
+
address(service));
|
160
|
+
}
|
161
|
+
|
162
|
+
|
163
|
+
function _authorizeServiceFunctions(
|
164
|
+
IServiceAuthorization serviceAuthorization,
|
165
|
+
IService service
|
166
|
+
)
|
167
|
+
private
|
168
|
+
{
|
169
|
+
ObjectType serviceDomain = service.getDomain();
|
170
|
+
ObjectType authorizedDomain;
|
171
|
+
RoleId authorizedRoleId;
|
172
|
+
|
173
|
+
VersionPart release = service.getVersion().toMajorPart();
|
174
|
+
ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
|
175
|
+
|
176
|
+
for (uint256 i = 0; i < authorizedDomains.length; i++) {
|
177
|
+
authorizedDomain = authorizedDomains[i];
|
178
|
+
|
179
|
+
// derive authorized role from authorized domain
|
180
|
+
if (authorizedDomain == ALL()) {
|
181
|
+
authorizedRoleId = PUBLIC_ROLE();
|
182
|
+
} else {
|
183
|
+
authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
|
184
|
+
authorizedDomain,
|
185
|
+
release);
|
186
|
+
}
|
187
|
+
|
188
|
+
// get authorized functions for authorized domain
|
189
|
+
IAccessAdmin.Function[] memory authorizatedFunctions = serviceAuthorization.getAuthorizedFunctions(
|
190
|
+
serviceDomain,
|
191
|
+
authorizedDomain);
|
192
|
+
|
193
|
+
_authorizeTargetFunctions(
|
194
|
+
address(service),
|
195
|
+
authorizedRoleId,
|
196
|
+
authorizatedFunctions);
|
197
|
+
}
|
198
|
+
}
|
199
|
+
|
200
|
+
/*function transferAdmin(address to)
|
201
|
+
external
|
202
|
+
restricted // only with GIF_ADMIN_ROLE or nft owner
|
203
|
+
{
|
204
|
+
_accessManager.revoke(GIF_ADMIN_ROLE, );
|
205
|
+
_accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
|
206
|
+
}*/
|
207
|
+
|
208
|
+
//--- view functions ----------------------------------------------------//
|
209
|
+
|
210
|
+
function getGifAdminRole() external view returns (RoleId) {
|
211
|
+
return GIF_ADMIN_ROLE();
|
212
|
+
}
|
213
|
+
|
214
|
+
function getGifManagerRole() external view returns (RoleId) {
|
215
|
+
return GIF_MANAGER_ROLE();
|
216
|
+
}
|
217
|
+
|
218
|
+
//--- private functions -------------------------------------------------//
|
219
|
+
|
220
|
+
function _setupGifAdminRole(address gifAdmin) private {
|
221
|
+
// TODO decide on max member count
|
222
|
+
_createRole(GIF_ADMIN_ROLE(), getAdminRole(), GIF_ADMIN_ROLE_NAME, 2, false);
|
223
|
+
_grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
|
224
|
+
|
225
|
+
// for ReleaseManager
|
226
|
+
Function[] memory functions;
|
227
|
+
functions = new Function[](2);
|
228
|
+
functions[0] = toFunction(ReleaseManager.createNextRelease.selector, "createNextRelease");
|
229
|
+
functions[1] = toFunction(ReleaseManager.activateNextRelease.selector, "activateNextRelease");
|
230
|
+
_authorizeTargetFunctions(_releaseManager, GIF_ADMIN_ROLE(), functions);
|
231
|
+
|
232
|
+
// for Staking
|
233
|
+
}
|
234
|
+
|
235
|
+
function _setupGifManagerRole(address gifManager) private {
|
236
|
+
_createRole(GIF_MANAGER_ROLE(), GIF_ADMIN_ROLE(), GIF_MANAGER_ROLE_NAME, 1, false);
|
237
|
+
_grantRoleToAccount(GIF_MANAGER_ROLE(), gifManager);
|
238
|
+
|
239
|
+
// for TokenRegistry
|
240
|
+
Function[] memory functions;
|
241
|
+
functions = new Function[](5);
|
242
|
+
functions[0] = toFunction(TokenRegistry.registerToken.selector, "registerToken");
|
243
|
+
functions[1] = toFunction(TokenRegistry.registerRemoteToken.selector, "registerRemoteToken");
|
244
|
+
functions[2] = toFunction(TokenRegistry.setActive.selector, "setActive");
|
245
|
+
functions[3] = toFunction(TokenRegistry.setActiveForVersion.selector, "setActiveForVersion");
|
246
|
+
// TODO find a better way (only needed for testing)
|
247
|
+
functions[4] = toFunction(TokenRegistry.setActiveWithVersionCheck.selector, "setActiveWithVersionCheck");
|
248
|
+
_authorizeTargetFunctions(_tokenRegistry, GIF_MANAGER_ROLE(), functions);
|
249
|
+
|
250
|
+
// for ReleaseManager
|
251
|
+
functions = new Function[](2);
|
252
|
+
functions[0] = toFunction(ReleaseManager.prepareNextRelease.selector, "prepareNextRelease");
|
253
|
+
functions[1] = toFunction(ReleaseManager.registerService.selector, "registerService");
|
254
|
+
_authorizeTargetFunctions(_releaseManager, GIF_MANAGER_ROLE(), functions);
|
255
|
+
|
256
|
+
// for Staking
|
257
|
+
}
|
258
|
+
|
259
|
+
|
260
|
+
function _setupReleaseManager() private {
|
261
|
+
_createTarget(_releaseManager, RELEASE_MANAGER_TARGET_NAME);
|
262
|
+
|
263
|
+
RoleId releaseManagerRoleId = RoleIdLib.roleForType(RELEASE());
|
264
|
+
_createRole(releaseManagerRoleId, ADMIN_ROLE(), RELEASE_MANAGER_TARGET_NAME, 1, true);
|
265
|
+
_grantRoleToAccount(releaseManagerRoleId, _releaseManager);
|
266
|
+
|
267
|
+
Function[] memory functions;
|
268
|
+
functions = new Function[](2);
|
269
|
+
functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
|
270
|
+
functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
|
271
|
+
_authorizeTargetFunctions(address(this), releaseManagerRoleId, functions);
|
272
|
+
}
|
273
|
+
|
274
|
+
|
275
|
+
function _setupStaking() private {
|
276
|
+
_createTarget(_staking, STAKING_TARGET_NAME);
|
277
|
+
_createTarget(_stakingStore, STAKING_STORE_TARGET_NAME);
|
278
|
+
|
279
|
+
|
280
|
+
// staking function authorization for staking service
|
281
|
+
RoleId stakingServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(STAKING());
|
282
|
+
_createRole(stakingServiceRoleId, ADMIN_ROLE(), STAKING_SERVICE_ROLE_NAME, 1, true);
|
283
|
+
|
284
|
+
Function[] memory functions;
|
285
|
+
functions = new Function[](13);
|
286
|
+
functions[0] = toFunction(IStaking.registerTarget.selector, "registerTarget");
|
287
|
+
functions[1] = toFunction(IStaking.setLockingPeriod.selector, "setLockingPeriod");
|
288
|
+
functions[2] = toFunction(IStaking.setRewardRate.selector, "setRewardRate");
|
289
|
+
functions[3] = toFunction(IStaking.refillRewardReserves.selector, "refillRewardReserves");
|
290
|
+
functions[4] = toFunction(IStaking.withdrawRewardReserves.selector, "withdrawRewardReserves");
|
291
|
+
functions[5] = toFunction(IStaking.createStake.selector, "createStake");
|
292
|
+
functions[6] = toFunction(IStaking.stake.selector, "stake");
|
293
|
+
functions[7] = toFunction(IStaking.unstake.selector, "unstake");
|
294
|
+
functions[8] = toFunction(IStaking.restake.selector, "restake");
|
295
|
+
functions[9] = toFunction(IStaking.updateRewards.selector, "updateRewards");
|
296
|
+
functions[10] = toFunction(IStaking.claimRewards.selector, "claimRewards");
|
297
|
+
functions[11] = toFunction(IStaking.collectDipAmount.selector, "collectDipAmount");
|
298
|
+
functions[12] = toFunction(IStaking.transferDipAmount.selector, "transferDipAmount");
|
299
|
+
_authorizeTargetFunctions(_staking, stakingServiceRoleId, functions);
|
300
|
+
|
301
|
+
// staking function authorization for pool service
|
302
|
+
RoleId poolServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(POOL());
|
303
|
+
_createRole(poolServiceRoleId, ADMIN_ROLE(), POOL_SERVICE_ROLE_NAME, 1, true);
|
304
|
+
|
305
|
+
// staking function authorizations
|
306
|
+
functions = new Function[](2);
|
307
|
+
functions[0] = toFunction(IStaking.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
308
|
+
functions[1] = toFunction(IStaking.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
309
|
+
_authorizeTargetFunctions(_staking, poolServiceRoleId, functions);
|
310
|
+
|
311
|
+
// staking store function authorizations
|
312
|
+
RoleId stakingRoleId = RoleIdLib.roleForType(STAKING());
|
313
|
+
_createRole(stakingRoleId, ADMIN_ROLE(), STAKING_TARGET_NAME, 1, true);
|
314
|
+
_grantRoleToAccount(stakingRoleId, _staking);
|
315
|
+
|
316
|
+
functions = new Function[](14);
|
317
|
+
functions[0] = toFunction(StakingStore.setStakingRate.selector, "setStakingRate");
|
318
|
+
functions[1] = toFunction(StakingStore.createTarget.selector, "createTarget");
|
319
|
+
functions[2] = toFunction(StakingStore.updateTarget.selector, "updateTarget");
|
320
|
+
functions[3] = toFunction(StakingStore.increaseReserves.selector, "increaseReserves");
|
321
|
+
functions[4] = toFunction(StakingStore.decreaseReserves.selector, "decreaseReserves");
|
322
|
+
functions[5] = toFunction(StakingStore.increaseTotalValueLocked.selector, "increaseTotalValueLocked");
|
323
|
+
functions[6] = toFunction(StakingStore.decreaseTotalValueLocked.selector, "decreaseTotalValueLocked");
|
324
|
+
functions[7] = toFunction(StakingStore.create.selector, "create");
|
325
|
+
functions[8] = toFunction(StakingStore.update.selector, "update");
|
326
|
+
functions[9] = toFunction(StakingStore.increaseStake.selector, "increaseStake");
|
327
|
+
functions[10] = toFunction(StakingStore.restakeRewards.selector, "restakeRewards");
|
328
|
+
functions[11] = toFunction(StakingStore.updateRewards.selector, "updateRewards");
|
329
|
+
functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
|
330
|
+
functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
|
331
|
+
_authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
|
332
|
+
}
|
333
|
+
}
|