@etherisc/gif-next 0.0.2-f1fe735-758 → 0.0.2-f2a5ca7-763
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 +13 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +17 -242
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +106 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +55 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +110 -76
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +73 -79
- 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/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +55 -55
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +40 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +13 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- 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 +50 -46
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- 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 +101 -73
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +62 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +49 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- 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/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
- 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/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +134 -134
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
- 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 +8 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
- 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 +4 -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 +55 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- 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 +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
- 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 +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
- package/contracts/distribution/BasicDistribution.sol +149 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
- package/contracts/distribution/Distribution.sol +126 -104
- package/contracts/distribution/DistributionService.sol +12 -21
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +17 -35
- package/contracts/distribution/IDistributionService.sol +5 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +8 -9
- package/contracts/instance/IInstanceService.sol +13 -18
- package/contracts/instance/Instance.sol +61 -70
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +74 -70
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +5 -1
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/Oracle.sol +61 -49
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +49 -0
- package/contracts/pool/BundleService.sol +14 -26
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IPoolComponent.sol +0 -60
- package/contracts/pool/Pool.sol +143 -131
- package/contracts/pool/PoolService.sol +11 -27
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +40 -0
- package/contracts/product/ClaimService.sol +5 -31
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IProductComponent.sol +6 -9
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +81 -87
- package/contracts/registry/RegistryAdmin.sol +118 -88
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +97 -113
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/ComponentService.sol +19 -58
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +26 -19
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/Staking.sol +11 -14
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +12 -22
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +6 -0
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +3 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1177
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
| @@ -11,7 +11,7 @@ import {IInstance} from "../instance/IInstance.sol"; | |
| 11 11 | 
             
            import {IAccess} from "../instance/module/IAccess.sol";
         | 
| 12 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 13 | 
             
            import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
         | 
| 14 | 
            -
            import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE | 
| 14 | 
            +
            import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
         | 
| 15 15 | 
             
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 16 16 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 17 17 | 
             
            import {IComponentService} from "./IComponentService.sol";
         | 
| @@ -102,12 +102,6 @@ contract ComponentService is | |
| 102 102 | 
             
                    virtual
         | 
| 103 103 | 
             
                {
         | 
| 104 104 | 
             
                    address contractAddress = msg.sender;
         | 
| 105 | 
            -
                    RoleId[] memory roles = new RoleId[](1);
         | 
| 106 | 
            -
                    bytes4[][] memory selectors = new bytes4[][](1);
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                    // authorizaion for distribution owner
         | 
| 109 | 
            -
                    roles[0] = PRODUCT_OWNER_ROLE();
         | 
| 110 | 
            -
                    selectors[0] = _createSelectors(IProductComponent.setFees.selector);
         | 
| 111 105 |  | 
| 112 106 | 
             
                    // register/create component setup
         | 
| 113 107 | 
             
                    (
         | 
| @@ -117,9 +111,7 @@ contract ComponentService is | |
| 117 111 | 
             
                    ) = _register(
         | 
| 118 112 | 
             
                        contractAddress,
         | 
| 119 113 | 
             
                        PRODUCT(),
         | 
| 120 | 
            -
                        PRODUCT_OWNER_ROLE() | 
| 121 | 
            -
                        roles,
         | 
| 122 | 
            -
                        selectors);
         | 
| 114 | 
            +
                        PRODUCT_OWNER_ROLE());
         | 
| 123 115 |  | 
| 124 116 | 
             
                    // create product info
         | 
| 125 117 | 
             
                    IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
         | 
| @@ -193,24 +185,12 @@ contract ComponentService is | |
| 193 185 | 
             
                    virtual
         | 
| 194 186 | 
             
                {
         | 
| 195 187 | 
             
                    address contractAddress = msg.sender;
         | 
| 196 | 
            -
                    RoleId[] memory roles = new RoleId[](2);
         | 
| 197 | 
            -
                    bytes4[][] memory selectors = new bytes4[][](2);
         | 
| 198 | 
            -
             | 
| 199 | 
            -
                    // authorizaion for distribution owner
         | 
| 200 | 
            -
                    roles[0] = DISTRIBUTION_OWNER_ROLE();
         | 
| 201 | 
            -
                    selectors[0] = _createSelectors(IDistributionComponent.setFees.selector);
         | 
| 202 | 
            -
             | 
| 203 | 
            -
                    // authorizaion for product service
         | 
| 204 | 
            -
                    roles[1] = PRODUCT_SERVICE_ROLE();
         | 
| 205 | 
            -
                    selectors[1] = _createSelectors(IDistributionComponent.processRenewal.selector);
         | 
| 206 188 |  | 
| 207 189 | 
             
                    // register/create component info
         | 
| 208 190 | 
             
                    _register(
         | 
| 209 191 | 
             
                        contractAddress,
         | 
| 210 192 | 
             
                        DISTRIBUTION(),
         | 
| 211 | 
            -
                        DISTRIBUTION_OWNER_ROLE() | 
| 212 | 
            -
                        roles,
         | 
| 213 | 
            -
                        selectors);
         | 
| 193 | 
            +
                        DISTRIBUTION_OWNER_ROLE());
         | 
| 214 194 | 
             
                }
         | 
| 215 195 |  | 
| 216 196 |  | 
| @@ -282,8 +262,6 @@ contract ComponentService is | |
| 282 262 | 
             
                    virtual
         | 
| 283 263 | 
             
                {
         | 
| 284 264 | 
             
                    address contractAddress = msg.sender;
         | 
| 285 | 
            -
                    RoleId[] memory roles = new RoleId[](0);
         | 
| 286 | 
            -
                    bytes4[][] memory selectors = new bytes4[][](0);
         | 
| 287 265 |  | 
| 288 266 | 
             
                    // register/create component setup
         | 
| 289 267 | 
             
                    (
         | 
| @@ -293,9 +271,7 @@ contract ComponentService is | |
| 293 271 | 
             
                    ) = _register(
         | 
| 294 272 | 
             
                        contractAddress,
         | 
| 295 273 | 
             
                        ORACLE(),
         | 
| 296 | 
            -
                        ORACLE_OWNER_ROLE() | 
| 297 | 
            -
                        roles,
         | 
| 298 | 
            -
                        selectors);            
         | 
| 274 | 
            +
                        ORACLE_OWNER_ROLE());            
         | 
| 299 275 | 
             
                }
         | 
| 300 276 |  | 
| 301 277 | 
             
                //-------- pool ---------------------------------------------------------//
         | 
| @@ -305,16 +281,6 @@ contract ComponentService is | |
| 305 281 | 
             
                    virtual
         | 
| 306 282 | 
             
                {
         | 
| 307 283 | 
             
                    address contractAddress = msg.sender;
         | 
| 308 | 
            -
                    RoleId[] memory roles = new RoleId[](2);
         | 
| 309 | 
            -
                    bytes4[][] memory selectors = new bytes4[][](2);
         | 
| 310 | 
            -
             | 
| 311 | 
            -
                    // authorizaion for pool owner
         | 
| 312 | 
            -
                    roles[0] = POOL_OWNER_ROLE();
         | 
| 313 | 
            -
                    selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
         | 
| 314 | 
            -
             | 
| 315 | 
            -
                    // authorizaion for product service
         | 
| 316 | 
            -
                    roles[1] = POLICY_SERVICE_ROLE();
         | 
| 317 | 
            -
                    selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
         | 
| 318 284 |  | 
| 319 285 | 
             
                    // register/create component setup
         | 
| 320 286 | 
             
                    (
         | 
| @@ -324,14 +290,13 @@ contract ComponentService is | |
| 324 290 | 
             
                    ) = _register(
         | 
| 325 291 | 
             
                        contractAddress,
         | 
| 326 292 | 
             
                        POOL(),
         | 
| 327 | 
            -
                        POOL_OWNER_ROLE() | 
| 328 | 
            -
                        roles,
         | 
| 329 | 
            -
                        selectors);            
         | 
| 293 | 
            +
                        POOL_OWNER_ROLE());            
         | 
| 330 294 |  | 
| 331 295 | 
             
                    // create info
         | 
| 332 296 | 
             
                    instanceStore.createPool(
         | 
| 333 297 | 
             
                        componentNftId, 
         | 
| 334 | 
            -
                        IPoolComponent( | 
| 298 | 
            +
                        IPoolComponent(
         | 
| 299 | 
            +
                            contractAddress).getInitialPoolInfo());
         | 
| 335 300 | 
             
                }
         | 
| 336 301 |  | 
| 337 302 |  | 
| @@ -461,9 +426,7 @@ contract ComponentService is | |
| 461 426 | 
             
                function _register(
         | 
| 462 427 | 
             
                    address componentAddress, // address of component to register
         | 
| 463 428 | 
             
                    ObjectType requiredType, // required type for component for registration
         | 
| 464 | 
            -
                    RoleId requiredRole | 
| 465 | 
            -
                    RoleId[] memory roles, // roles with write access to component
         | 
| 466 | 
            -
                    bytes4[][] memory selectors // authorized functions per role with write access
         | 
| 429 | 
            +
                    RoleId requiredRole // role required for comonent owner for registration
         | 
| 467 430 | 
             
                )
         | 
| 468 431 | 
             
                    internal
         | 
| 469 432 | 
             
                    virtual
         | 
| @@ -490,8 +453,10 @@ contract ComponentService is | |
| 490 453 |  | 
| 491 454 | 
             
                    component.linkToRegisteredNftId();
         | 
| 492 455 |  | 
| 493 | 
            -
             | 
| 494 | 
            -
                     | 
| 456 | 
            +
                    // setup initial component authorization
         | 
| 457 | 
            +
                    _instanceService.initializeAuthorization(
         | 
| 458 | 
            +
                        instance.getNftId(),
         | 
| 459 | 
            +
                        component);
         | 
| 495 460 |  | 
| 496 461 | 
             
                    // save amended component info with instance
         | 
| 497 462 | 
             
                    instanceReader = instance.getInstanceReader();
         | 
| @@ -499,15 +464,12 @@ contract ComponentService is | |
| 499 464 |  | 
| 500 465 | 
             
                    IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
         | 
| 501 466 | 
             
                    componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
         | 
| 502 | 
            -
             | 
| 503 | 
            -
             | 
| 504 | 
            -
             | 
| 505 | 
            -
             | 
| 506 | 
            -
             | 
| 507 | 
            -
             | 
| 508 | 
            -
                        component.getName(), 
         | 
| 509 | 
            -
                        selectors, 
         | 
| 510 | 
            -
                        roles);
         | 
| 467 | 
            +
             | 
| 468 | 
            +
                    instanceStore.createComponent(
         | 
| 469 | 
            +
                        component.getNftId(), 
         | 
| 470 | 
            +
                        componentInfo);
         | 
| 471 | 
            +
             | 
| 472 | 
            +
                    // TODO add logging
         | 
| 511 473 | 
             
                }
         | 
| 512 474 |  | 
| 513 475 |  | 
| @@ -608,8 +570,7 @@ contract ComponentService is | |
| 608 570 | 
             
                    instance = _getInstance(info.parentNftId);
         | 
| 609 571 | 
             
                    owner = info.initialOwner;
         | 
| 610 572 |  | 
| 611 | 
            -
                    ( | 
| 612 | 
            -
                    if(!hasRole) {
         | 
| 573 | 
            +
                    if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
         | 
| 613 574 | 
             
                        revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
         | 
| 614 575 | 
             
                    }
         | 
| 615 576 | 
             
                }
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "./IVersionable.sol";
         | 
| 5 | 
            -
            import {ProxyManager} from "./ProxyManager.sol";
         | 
| 6 4 | 
             
            import {ComponentService} from "./ComponentService.sol";
         | 
| 5 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 6 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            contract ComponentServiceManager is ProxyManager {
         | 
| 9 9 |  | 
| @@ -87,7 +87,7 @@ abstract contract ComponentVerifyingService is | |
| 87 87 |  | 
| 88 88 | 
             
                    // ensure component is not locked
         | 
| 89 89 | 
             
                    if (onlyActive) {
         | 
| 90 | 
            -
                        if (instance. | 
| 90 | 
            +
                        if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
         | 
| 91 91 | 
             
                            revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
         | 
| 92 92 | 
             
                        }
         | 
| 93 93 | 
             
                    }
         | 
| @@ -5,6 +5,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana | |
| 5 5 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 6 6 |  | 
| 7 7 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 8 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 8 9 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 9 10 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 10 11 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| @@ -43,4 +44,7 @@ interface IInstanceLinkedComponent is | |
| 43 44 | 
             
                /// this is only relevant for pool and distribution components
         | 
| 44 45 | 
             
                function getProductNftId() external view returns (NftId productNftId);
         | 
| 45 46 |  | 
| 47 | 
            +
                /// @dev returns the initial component authorization specification.
         | 
| 48 | 
            +
                function getAuthorization() external view returns (IAuthorization authorization);
         | 
| 49 | 
            +
             | 
| 46 50 | 
             
            }
         | 
| @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {IRegisterable} from "./IRegisterable.sol";
         | 
| 7 | 
            -
            import {IVersionable} from " | 
| 7 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 8 8 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 9 9 | 
             
            import {RoleId} from "../type/RoleId.sol";
         | 
| 10 10 |  | 
| @@ -9,10 +9,10 @@ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol | |
| 9 9 | 
             
            import {Component} from "./Component.sol";
         | 
| 10 10 | 
             
            import {IComponentService} from "./IComponentService.sol";
         | 
| 11 11 | 
             
            import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
         | 
| 12 | 
            +
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         | 
| 12 13 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 13 14 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 14 15 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 15 | 
            -
            import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
         | 
| 16 16 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 17 17 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 18 18 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| @@ -35,6 +35,27 @@ abstract contract InstanceLinkedComponent is | |
| 35 35 | 
             
                struct InstanceLinkedComponentStorage {
         | 
| 36 36 | 
             
                    IInstance _instance; // instance for this component
         | 
| 37 37 | 
             
                    InstanceReader _instanceReader; // instance reader for this component
         | 
| 38 | 
            +
                    IAuthorization _initialAuthorization;
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                function lock() external onlyOwner {
         | 
| 42 | 
            +
                    IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
         | 
| 43 | 
            +
                }
         | 
| 44 | 
            +
                
         | 
| 45 | 
            +
                function unlock() external onlyOwner {
         | 
| 46 | 
            +
                    IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
         | 
| 47 | 
            +
                }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                function getInstance() public view override returns (IInstance instance) {
         | 
| 50 | 
            +
                    return _getInstanceLinkedComponentStorage()._instance;
         | 
| 51 | 
            +
                }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                function getProductNftId() public view override returns (NftId productNftId) {
         | 
| 54 | 
            +
                    return getComponentInfo().productNftId;
         | 
| 55 | 
            +
                }
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                function getAuthorization() external view returns (IAuthorization authorization) {
         | 
| 58 | 
            +
                    return _getInstanceLinkedComponentStorage()._initialAuthorization;
         | 
| 38 59 | 
             
                }
         | 
| 39 60 |  | 
| 40 61 | 
             
                function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
         | 
| @@ -43,18 +64,19 @@ abstract contract InstanceLinkedComponent is | |
| 43 64 | 
             
                    }
         | 
| 44 65 | 
             
                }
         | 
| 45 66 |  | 
| 46 | 
            -
                function  | 
| 67 | 
            +
                function _initializeInstanceLinkedComponent(
         | 
| 47 68 | 
             
                    address registry,
         | 
| 48 69 | 
             
                    NftId instanceNftId,
         | 
| 49 70 | 
             
                    string memory name,
         | 
| 50 71 | 
             
                    address token,
         | 
| 51 72 | 
             
                    ObjectType componentType,
         | 
| 73 | 
            +
                    IAuthorization authorization,
         | 
| 52 74 | 
             
                    bool isInterceptor,
         | 
| 53 75 | 
             
                    address initialOwner,
         | 
| 54 76 | 
             
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         | 
| 55 77 | 
             
                    bytes memory componentData // data that will saved with the component info in the instance store
         | 
| 56 78 | 
             
                )
         | 
| 57 | 
            -
                     | 
| 79 | 
            +
                    internal
         | 
| 58 80 | 
             
                    virtual
         | 
| 59 81 | 
             
                    onlyInitializing()
         | 
| 60 82 | 
             
                {
         | 
| @@ -82,6 +104,7 @@ abstract contract InstanceLinkedComponent is | |
| 82 104 |  | 
| 83 105 | 
             
                    // set component state
         | 
| 84 106 | 
             
                    $._instanceReader = $._instance.getInstanceReader();
         | 
| 107 | 
            +
                    $._initialAuthorization = authorization;
         | 
| 85 108 |  | 
| 86 109 | 
             
                    registerInterface(type(IAccessManaged).interfaceId);
         | 
| 87 110 | 
             
                    registerInterface(type(IInstanceLinkedComponent).interfaceId);
         | 
| @@ -93,22 +116,6 @@ abstract contract InstanceLinkedComponent is | |
| 93 116 | 
             
                    IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
         | 
| 94 117 | 
             
                }
         | 
| 95 118 |  | 
| 96 | 
            -
                function lock() external onlyOwner {
         | 
| 97 | 
            -
                    IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
         | 
| 98 | 
            -
                }
         | 
| 99 | 
            -
                
         | 
| 100 | 
            -
                function unlock() external onlyOwner {
         | 
| 101 | 
            -
                    IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
         | 
| 102 | 
            -
                }
         | 
| 103 | 
            -
             | 
| 104 | 
            -
                function getInstance() public view override returns (IInstance instance) {
         | 
| 105 | 
            -
                    return _getInstanceLinkedComponentStorage()._instance;
         | 
| 106 | 
            -
                }
         | 
| 107 | 
            -
             | 
| 108 | 
            -
                function getProductNftId() public view override returns (NftId productNftId) {
         | 
| 109 | 
            -
                    return getComponentInfo().productNftId;
         | 
| 110 | 
            -
                }
         | 
| 111 | 
            -
             | 
| 112 119 |  | 
| 113 120 | 
             
                function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
         | 
| 114 121 | 
             
                    NftId componentNftId = getRegistry().getNftId(address(this));
         | 
| @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         | 
| 5 5 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 6 6 |  | 
| 7 | 
            -
            contract  | 
| 7 | 
            +
            contract NftIdSet {
         | 
| 8 8 |  | 
| 9 9 | 
             
                error ErrorNftIdSetManagerNotOwner(address owner, address sender);
         | 
| 10 10 | 
             
                error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
         | 
| @@ -6,13 +6,12 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana | |
| 6 6 |  | 
| 7 7 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 8 | 
             
            import {IService} from "./IService.sol";
         | 
| 9 | 
            -
            import {IVersionable} from " | 
| 10 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 9 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 11 10 | 
             
            import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
         | 
| 12 11 | 
             
            import {Registerable} from "./Registerable.sol";
         | 
| 13 12 | 
             
            import {RoleId, RoleIdLib} from "../type/RoleId.sol";
         | 
| 14 | 
            -
            import {Version,  | 
| 15 | 
            -
            import {Versionable} from " | 
| 13 | 
            +
            import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
         | 
| 14 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 16 15 |  | 
| 17 16 |  | 
| 18 17 | 
             
            /// @dev service base contract
         | 
| @@ -3,9 +3,8 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 5 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 6 | 
            -
            import {IVersionable} from "../ | 
| 6 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 7 7 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 8 | 
            -
            import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
         | 
| 9 8 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 10 9 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 10 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| @@ -44,6 +44,13 @@ interface IStakingService is IService | |
| 44 44 | 
             
                error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
         | 
| 45 45 | 
             
                error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
         | 
| 46 46 |  | 
| 47 | 
            +
                /// @dev Set the protocol reward rate stake locking period to the specified duration.
         | 
| 48 | 
            +
                /// Permissioned: only staking owner
         | 
| 49 | 
            +
                // TODO implement
         | 
| 50 | 
            +
                // function setProtocolRewardRate(UFixed rewardRate) external;
         | 
| 51 | 
            +
                // function setProtocolLockingPeriod(Seconds lockingPeriod) external;
         | 
| 52 | 
            +
                // TODO also make sure that protocol rewards can be refilled and withdrawn
         | 
| 53 | 
            +
             | 
| 47 54 | 
             
                /// @dev creates/registers an on-chain instance staking target.
         | 
| 48 55 | 
             
                /// function granted to instance service
         | 
| 49 56 | 
             
                function createInstanceTarget(
         | 
| @@ -53,11 +60,11 @@ interface IStakingService is IService | |
| 53 60 | 
             
                ) external;
         | 
| 54 61 |  | 
| 55 62 | 
             
                /// @dev Set the instance stake locking period to the specified duration.
         | 
| 56 | 
            -
                ///  | 
| 63 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 57 64 | 
             
                function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
         | 
| 58 65 |  | 
| 59 | 
            -
                /// @dev Set the instance reward rate to the specified value
         | 
| 60 | 
            -
                ///  | 
| 66 | 
            +
                /// @dev Set the instance reward rate to the specified value.
         | 
| 67 | 
            +
                /// Permissioned: Only owner of the specified target.
         | 
| 61 68 | 
             
                function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
         | 
| 62 69 |  | 
| 63 70 | 
             
                /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
         | 
| @@ -68,8 +75,8 @@ interface IStakingService is IService | |
| 68 75 | 
             
                /// unpermissioned: anybody may fill up staking reward reserves
         | 
| 69 76 | 
             
                function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 70 77 |  | 
| 71 | 
            -
                /// @dev  | 
| 72 | 
            -
                ///  | 
| 78 | 
            +
                /// @dev Defunds the staking reward reserves for the specified target
         | 
| 79 | 
            +
                /// Permissioned: only the target owner may call this function
         | 
| 73 80 | 
             
                function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
         | 
| 74 81 |  | 
| 75 82 | 
             
                /// @dev create a new stake with amount DIP to the specified target
         | 
| @@ -1,29 +1,26 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 6 | 
            -
            import {Component} from "../shared/Component.sol";
         | 
| 7 4 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 5 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 9 6 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 10 | 
            -
            import {IVersionable} from "../ | 
| 11 | 
            -
             | 
| 12 | 
            -
            import { | 
| 13 | 
            -
            import { | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import {ObjectType,  | 
| 16 | 
            -
            import {Seconds | 
| 7 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 10 | 
            +
            import {Component} from "../shared/Component.sol";
         | 
| 11 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 12 | 
            +
            import {ObjectType, STAKING} from "../type/ObjectType.sol";
         | 
| 13 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 17 14 | 
             
            import {StakeManagerLib} from "./StakeManagerLib.sol";
         | 
| 18 15 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 19 16 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 20 17 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 21 | 
            -
            import {Timestamp | 
| 18 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 19 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 23 20 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 24 | 
            -
            import {UFixed | 
| 21 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 25 22 | 
             
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 26 | 
            -
            import {Versionable} from "../ | 
| 23 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 27 24 |  | 
| 28 25 | 
             
            contract Staking is 
         | 
| 29 26 | 
             
                Component,
         | 
| @@ -54,7 +51,7 @@ contract Staking is | |
| 54 51 |  | 
| 55 52 |  | 
| 56 53 | 
             
                modifier onlyTarget(NftId targetNftId) {
         | 
| 57 | 
            -
                    if (!_getStakingStorage()._store. | 
| 54 | 
            +
                    if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
         | 
| 58 55 | 
             
                        revert ErrorStakingNotTarget(targetNftId);
         | 
| 59 56 | 
             
                    }
         | 
| 60 57 | 
             
                    _;
         | 
| @@ -1,14 +1,10 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IVersionable} from "../ | 
| 5 | 
            -
            import {ProxyManager} from "../ | 
| 6 | 
            -
            import {ReleaseManager} from "../registry/ReleaseManager.sol";
         | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 6 | 
             
            import {Staking} from "./Staking.sol";
         | 
| 8 | 
            -
            import {StakingReader} from "./StakingReader.sol";
         | 
| 9 | 
            -
            import {StakingStore} from "./StakingStore.sol";
         | 
| 10 7 |  | 
| 11 | 
            -
            import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
         | 
| 12 8 |  | 
| 13 9 | 
             
            contract StakingManager is
         | 
| 14 10 | 
             
                ProxyManager
         | 
| @@ -1,22 +1,18 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {Amount} from "../type/Amount.sol";
         | 
| 5 | 
            -
            import {Blocknumber}  from "../type/Blocknumber.sol";
         | 
| 6 | 
            -
            import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
         | 
| 7 | 
            -
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 8 | 
            -
            import {InitializableCustom} from "../shared/InitializableCustom.sol";
         | 
| 9 4 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 10 5 | 
             
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 11 6 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 12 | 
            -
             | 
| 7 | 
            +
             | 
| 8 | 
            +
            import {Amount} from "../type/Amount.sol";
         | 
| 9 | 
            +
            import {Blocknumber}  from "../type/Blocknumber.sol";
         | 
| 10 | 
            +
            import {InitializableCustom} from "../shared/InitializableCustom.sol";
         | 
| 13 11 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 14 | 
            -
            import { | 
| 15 | 
            -
            import {ObjectType, STAKE, TARGET} from "../type/ObjectType.sol";
         | 
| 16 | 
            -
            import {Seconds} from "../type/Seconds.sol";
         | 
| 12 | 
            +
            import {STAKE, TARGET} from "../type/ObjectType.sol";
         | 
| 17 13 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 18 14 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 19 | 
            -
            import {UFixed | 
| 15 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 20 16 |  | 
| 21 17 | 
             
            contract StakingReader is
         | 
| 22 18 | 
             
                IRegistryLinked,
         | 
| @@ -60,32 +56,32 @@ contract StakingReader is | |
| 60 56 |  | 
| 61 57 |  | 
| 62 58 | 
             
                function isTarget(NftId targetNftId) external view returns (bool) {
         | 
| 63 | 
            -
                    return _store. | 
| 59 | 
            +
                    return _store.getTargetNftIdSet().exists(targetNftId);
         | 
| 64 60 | 
             
                }
         | 
| 65 61 |  | 
| 66 62 |  | 
| 67 63 | 
             
                function targets() external view returns (uint256) {
         | 
| 68 | 
            -
                    return _store. | 
| 64 | 
            +
                    return _store.getTargetNftIdSet().nftIds();
         | 
| 69 65 | 
             
                }
         | 
| 70 66 |  | 
| 71 67 |  | 
| 72 68 | 
             
                function getTargetNftId(uint256 idx) external view returns (NftId) {
         | 
| 73 | 
            -
                    return _store. | 
| 69 | 
            +
                    return _store.getTargetNftIdSet().getNftId(idx);
         | 
| 74 70 | 
             
                }
         | 
| 75 71 |  | 
| 76 72 |  | 
| 77 73 | 
             
                function isActive(NftId targetNftId) external view returns (bool) {
         | 
| 78 | 
            -
                    return _store. | 
| 74 | 
            +
                    return _store.getTargetNftIdSet().isActive(targetNftId);
         | 
| 79 75 | 
             
                }
         | 
| 80 76 |  | 
| 81 77 |  | 
| 82 78 | 
             
                function activeTargets() external view returns (uint256) {
         | 
| 83 | 
            -
                    return _store. | 
| 79 | 
            +
                    return _store.getTargetNftIdSet().activeNftIds();
         | 
| 84 80 | 
             
                }
         | 
| 85 81 |  | 
| 86 82 |  | 
| 87 83 | 
             
                function getActiveTargetNftId(uint256 idx) external view returns (NftId) {
         | 
| 88 | 
            -
                    return _store. | 
| 84 | 
            +
                    return _store.getTargetNftIdSet().getActiveNftId(idx);
         | 
| 89 85 | 
             
                }
         | 
| 90 86 |  | 
| 91 87 |  | 
| @@ -2,8 +2,8 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 5 | 
            -
            import {IVersionable} from "../ | 
| 6 | 
            -
            import {ProxyManager} from "../ | 
| 5 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 6 | 
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 7 | 
             
            import {StakingService} from "./StakingService.sol";
         | 
| 8 8 |  | 
| 9 9 | 
             
            contract StakingServiceManager is
         | 
| @@ -3,32 +3,21 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
         | 
| 5 5 |  | 
| 6 | 
            -
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 7 | 
            -
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 8 | 
            -
            import {ChainNft} from "../registry/ChainNft.sol";
         | 
| 9 | 
            -
            import {Component} from "../shared/Component.sol";
         | 
| 10 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 11 | 
            -
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 12 7 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            import { | 
| 8 | 
            +
             | 
| 9 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 10 | 
            +
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 15 11 | 
             
            import {KeyValueStore} from "../shared/KeyValueStore.sol";
         | 
| 16 12 | 
             
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 17 | 
            -
            import {LibNftIdSet} from "../type/NftIdSet.sol";
         | 
| 18 13 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 19 | 
            -
            import { | 
| 20 | 
            -
            import { | 
| 21 | 
            -
            import {Seconds, SecondsLib} from "../type/Seconds.sol";
         | 
| 14 | 
            +
            import {NftIdSet} from "../shared/NftIdSet.sol";
         | 
| 15 | 
            +
            import {PROTOCOL, STAKE, TARGET} from "../type/ObjectType.sol";
         | 
| 22 16 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 23 17 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 24 18 | 
             
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 25 | 
            -
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 26 | 
            -
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 27 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 28 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 29 | 
            -
             | 
| 30 | 
            -
            import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
         | 
| 31 19 | 
             
            import {StakingLifecycle} from "./StakingLifecycle.sol";
         | 
| 20 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 32 21 |  | 
| 33 22 |  | 
| 34 23 | 
             
            contract StakingStore is 
         | 
| @@ -63,7 +52,7 @@ contract StakingStore is | |
| 63 52 | 
             
                error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
         | 
| 64 53 |  | 
| 65 54 | 
             
                IRegistry private _registry;
         | 
| 66 | 
            -
                 | 
| 55 | 
            +
                NftIdSet private _targetNftIdSet;
         | 
| 67 56 | 
             
                StakingReader private _reader;
         | 
| 68 57 |  | 
| 69 58 | 
             
                // staking rate
         | 
| @@ -93,7 +82,7 @@ contract StakingStore is | |
| 93 82 | 
             
                    // set internal variables
         | 
| 94 83 | 
             
                    _registry = registry; //TODO if keeps registry -> RegistryLinked and checks registry address
         | 
| 95 84 | 
             
                    _reader = reader;
         | 
| 96 | 
            -
                     | 
| 85 | 
            +
                    _targetNftIdSet = new NftIdSet();
         | 
| 97 86 |  | 
| 98 87 | 
             
                    // register protocol target
         | 
| 99 88 | 
             
                    _createTarget(
         | 
| @@ -428,8 +417,9 @@ contract StakingStore is | |
| 428 417 | 
             
                    return _reader;
         | 
| 429 418 | 
             
                }
         | 
| 430 419 |  | 
| 431 | 
            -
                 | 
| 432 | 
            -
             | 
| 420 | 
            +
                // TODO rename
         | 
| 421 | 
            +
                function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
         | 
| 422 | 
            +
                    return _targetNftIdSet;
         | 
| 433 423 | 
             
                }
         | 
| 434 424 |  | 
| 435 425 | 
             
                function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
         | 
| @@ -493,7 +483,7 @@ contract StakingStore is | |
| 493 483 | 
             
                    _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
         | 
| 494 484 | 
             
                    _createTargetBalance(targetNftId);
         | 
| 495 485 |  | 
| 496 | 
            -
                     | 
| 486 | 
            +
                    _targetNftIdSet.add(targetNftId);
         | 
| 497 487 | 
             
                }
         | 
| 498 488 |  | 
| 499 489 | 
             
                function _updateReserves(
         |