@etherisc/gif-next 0.0.2-f347f00-614 → 0.0.2-f36fd21-685
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 +30 -2
- 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 +100 -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 +29 -5
- 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 +1548 -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 +46 -228
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -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 -81
- 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 +84 -101
- 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 +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- 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 +1185 -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 +43 -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 +43 -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 +1520 -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 +220 -54
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
- 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 +43 -296
- 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 +1318 -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/IPolicyService.sol/IPolicyService.json +13 -0
- 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 +32 -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 +64 -51
- 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 +63 -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 +32 -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 +239 -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 +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- 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 +44 -12
- 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 +271 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- 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/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- 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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- 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 +42 -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 +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- 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 +146 -165
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -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 +37 -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 +17 -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 +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -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 -294
- 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 +34 -60
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +7 -4
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -14
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +144 -110
- package/contracts/distribution/DistributionService.sol +71 -31
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +17 -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 +204 -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 +13 -5
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +72 -51
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +55 -0
- package/contracts/pool/BundleService.sol +72 -27
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +14 -0
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/Pool.sol +160 -131
- package/contracts/pool/PoolService.sol +12 -30
- 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 +52 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IPolicyService.sol +2 -0
- package/contracts/product/IProductComponent.sol +7 -9
- package/contracts/product/PolicyService.sol +28 -4
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +112 -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 +85 -85
- package/contracts/registry/RegistryAdmin.sol +118 -86
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +102 -68
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +47 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- 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 +20 -17
- package/contracts/staking/StakingLifecycle.sol +23 -0
- 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 +15 -23
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/UFixed.sol +34 -9
- 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 +6 -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 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -166
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1554
- 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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- 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/registry/ReleaseManager.sol +0 -521
- 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
| @@ -1,15 +1,11 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 5 | 
            -
             | 
| 6 | 
            -
            import {NftId} from "../type/NftId.sol";
         | 
| 7 | 
            -
            import {ObjectType, COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT} from "../type/ObjectType.sol";
         | 
| 8 | 
            -
            import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
         | 
| 4 | 
            +
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 5 | 
            +
            import {StateId, zeroStateId} from "../type/StateId.sol";
         | 
| 9 6 | 
             
            import {ILifecycle} from "./ILifecycle.sol";
         | 
| 10 7 |  | 
| 11 | 
            -
            contract Lifecycle is
         | 
| 12 | 
            -
                Initializable,
         | 
| 8 | 
            +
            abstract contract Lifecycle is
         | 
| 13 9 | 
             
                ILifecycle
         | 
| 14 10 | 
             
            {
         | 
| 15 11 | 
             
                mapping(ObjectType objectType => StateId initialState)
         | 
| @@ -18,16 +14,17 @@ contract Lifecycle is | |
| 18 14 | 
             
                mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
         | 
| 19 15 | 
             
                    private _isValidTransition;
         | 
| 20 16 |  | 
| 21 | 
            -
                 | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
                {
         | 
| 25 | 
            -
                     | 
| 26 | 
            -
                     | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
                     | 
| 17 | 
            +
                /// @dev child class must implement and CALL setup func at deployment/initializaton time
         | 
| 18 | 
            +
                function _setupLifecycle() internal virtual;
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                function setInitialState(ObjectType ttype, StateId state) internal virtual {
         | 
| 21 | 
            +
                    assert(_initialState[ttype] == zeroStateId());
         | 
| 22 | 
            +
                    _initialState[ttype] = state;
         | 
| 23 | 
            +
                }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
         | 
| 26 | 
            +
                    assert(_isValidTransition[ttype][oldState][newState] == false);
         | 
| 27 | 
            +
                    _isValidTransition[ttype][oldState][newState] = true;
         | 
| 31 28 | 
             
                }
         | 
| 32 29 |  | 
| 33 30 | 
             
                function hasLifecycle(
         | 
| @@ -59,9 +56,9 @@ contract Lifecycle is | |
| 59 56 | 
             
                    public
         | 
| 60 57 | 
             
                    view
         | 
| 61 58 | 
             
                {
         | 
| 62 | 
            -
                    //  | 
| 59 | 
            +
                    // revert if no life cycle support
         | 
| 63 60 | 
             
                    if (_initialState[objectType].eqz()) {
         | 
| 64 | 
            -
                         | 
| 61 | 
            +
                        revert ErrorNoLifecycle(objectType);
         | 
| 65 62 | 
             
                    }
         | 
| 66 63 |  | 
| 67 64 | 
             
                    // enforce valid state transition
         | 
| @@ -77,54 +74,4 @@ contract Lifecycle is | |
| 77 74 | 
             
                ) public view returns (bool) {
         | 
| 78 75 | 
             
                    return _isValidTransition[objectType][fromId][toId];
         | 
| 79 76 | 
             
                }
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                function _setupComponentLifecycle() internal {
         | 
| 82 | 
            -
                    _initialState[COMPONENT()] = ACTIVE();
         | 
| 83 | 
            -
                    _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
         | 
| 84 | 
            -
                    _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
         | 
| 85 | 
            -
                    _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
         | 
| 86 | 
            -
                }
         | 
| 87 | 
            -
             | 
| 88 | 
            -
                function _setupBundleLifecycle() internal {
         | 
| 89 | 
            -
                    _initialState[BUNDLE()] = ACTIVE();
         | 
| 90 | 
            -
                    _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
         | 
| 91 | 
            -
                    _isValidTransition[BUNDLE()][ACTIVE()][CLOSED()] = true;
         | 
| 92 | 
            -
                    _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
         | 
| 93 | 
            -
                    _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
         | 
| 94 | 
            -
                }
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                function _setupPolicyLifecycle() internal {
         | 
| 97 | 
            -
                    _initialState[POLICY()] = APPLIED();
         | 
| 98 | 
            -
                    _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
         | 
| 99 | 
            -
                    _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
         | 
| 100 | 
            -
                    _isValidTransition[POLICY()][APPLIED()][COLLATERALIZED()] = true;
         | 
| 101 | 
            -
                    _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
         | 
| 102 | 
            -
                    _isValidTransition[POLICY()][COLLATERALIZED()][ACTIVE()] = true;
         | 
| 103 | 
            -
                    _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
         | 
| 104 | 
            -
                }
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                function _setupClaimAndPayoutLifecycle() internal {
         | 
| 107 | 
            -
                    _initialState[CLAIM()] = SUBMITTED();
         | 
| 108 | 
            -
                    _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
         | 
| 109 | 
            -
                    _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
         | 
| 110 | 
            -
                    _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
         | 
| 111 | 
            -
             | 
| 112 | 
            -
                    _initialState[PAYOUT()] = EXPECTED();
         | 
| 113 | 
            -
                    _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
         | 
| 114 | 
            -
                }
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                function _setupRiskLifecycle() internal {
         | 
| 117 | 
            -
                    _initialState[RISK()] = ACTIVE();
         | 
| 118 | 
            -
                    _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
         | 
| 119 | 
            -
                    _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
         | 
| 120 | 
            -
                    _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
         | 
| 121 | 
            -
                }
         | 
| 122 | 
            -
             | 
| 123 | 
            -
                function _setupRequestLifecycle() internal {
         | 
| 124 | 
            -
                    _initialState[REQUEST()] = ACTIVE();
         | 
| 125 | 
            -
                    _isValidTransition[REQUEST()][ACTIVE()][FULFILLED()] = true;
         | 
| 126 | 
            -
                    _isValidTransition[REQUEST()][ACTIVE()][FAILED()] = true;
         | 
| 127 | 
            -
                    _isValidTransition[REQUEST()][FAILED()][FULFILLED()] = true;
         | 
| 128 | 
            -
                    _isValidTransition[REQUEST()][ACTIVE()][CANCELLED()] = true;
         | 
| 129 | 
            -
                }
         | 
| 130 77 | 
             
            }
         | 
| @@ -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);
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {InitializableERC165} from "./InitializableERC165.sol";
         | 
| 5 5 | 
             
            import {INftOwnable} from "./INftOwnable.sol";
         | 
| 6 6 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 7 7 | 
             
            import {RegistryLinked} from "./RegistryLinked.sol";
         | 
| 8 8 |  | 
| 9 9 | 
             
            contract NftOwnable is
         | 
| 10 | 
            -
                 | 
| 10 | 
            +
                InitializableERC165,
         | 
| 11 11 | 
             
                RegistryLinked,
         | 
| 12 12 | 
             
                INftOwnable
         | 
| 13 13 | 
             
            {
         | 
| @@ -1,22 +1,19 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 4 | 
             
            import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
         | 
| 6 | 
            -
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 7 5 |  | 
| 8 6 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 7 | 
             
            import {ClaimId} from "../type/ClaimId.sol";
         | 
| 10 | 
            -
            import { | 
| 8 | 
            +
            import {InitializableERC165} from "./InitializableERC165.sol";
         | 
| 11 9 | 
             
            import {IPolicyHolder} from "./IPolicyHolder.sol";
         | 
| 12 10 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 11 | 
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         | 
| 14 12 | 
             
            import {RegistryLinked} from "./RegistryLinked.sol";
         | 
| 15 | 
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 16 13 |  | 
| 17 14 | 
             
            /// @dev template implementation for IPolicyHolder
         | 
| 18 15 | 
             
            contract PolicyHolder is
         | 
| 19 | 
            -
                 | 
| 16 | 
            +
                InitializableERC165,
         | 
| 20 17 | 
             
                RegistryLinked, // TODO need upgradeable version
         | 
| 21 18 | 
             
                IPolicyHolder
         | 
| 22 19 | 
             
            {
         | 
| @@ -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,27 @@ | |
| 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 { | 
| 16 | 
            -
            import { | 
| 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 {IComponent} from "../shared/IComponent.sol";
         | 
| 12 | 
            +
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            +
            import {ObjectType, STAKING} from "../type/ObjectType.sol";
         | 
| 14 | 
            +
            import {Seconds} from "../type/Seconds.sol";
         | 
| 17 15 | 
             
            import {StakeManagerLib} from "./StakeManagerLib.sol";
         | 
| 18 16 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 19 17 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 20 18 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 21 | 
            -
            import {Timestamp | 
| 19 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 22 20 | 
             
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 23 21 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 24 | 
            -
            import {UFixed | 
| 22 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 25 23 | 
             
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 26 | 
            -
            import {Versionable} from "../ | 
| 24 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 27 25 |  | 
| 28 26 | 
             
            contract Staking is 
         | 
| 29 27 | 
             
                Component,
         | 
| @@ -39,6 +37,7 @@ contract Staking is | |
| 39 37 | 
             
                struct StakingStorage {
         | 
| 40 38 | 
             
                    IRegistryService _registryService;
         | 
| 41 39 | 
             
                    TokenRegistry _tokenRegistry;
         | 
| 40 | 
            +
                    TokenHandler _tokenHandler;
         | 
| 42 41 | 
             
                    StakingStore _store;
         | 
| 43 42 | 
             
                    StakingReader _reader;
         | 
| 44 43 | 
             
                    NftId _protocolNftId;
         | 
| @@ -54,7 +53,7 @@ contract Staking is | |
| 54 53 |  | 
| 55 54 |  | 
| 56 55 | 
             
                modifier onlyTarget(NftId targetNftId) {
         | 
| 57 | 
            -
                    if (!_getStakingStorage()._store. | 
| 56 | 
            +
                    if (!_getStakingStorage()._store.getTargetNftIdSet().exists(targetNftId)) {
         | 
| 58 57 | 
             
                        revert ErrorStakingNotTarget(targetNftId);
         | 
| 59 58 | 
             
                    }
         | 
| 60 59 | 
             
                    _;
         | 
| @@ -387,6 +386,7 @@ contract Staking is | |
| 387 386 | 
             
                        address(tokenHandler), 
         | 
| 388 387 | 
             
                        dipAmount);
         | 
| 389 388 |  | 
| 389 | 
            +
                    // TODO: centralize token handling (issue #471)
         | 
| 390 390 | 
             
                    tokenHandler.transfer(from, stakingWallet, dipAmount);
         | 
| 391 391 | 
             
                }
         | 
| 392 392 |  | 
| @@ -403,7 +403,8 @@ contract Staking is | |
| 403 403 | 
             
                        stakingWallet, 
         | 
| 404 404 | 
             
                        address(tokenHandler), 
         | 
| 405 405 | 
             
                        dipAmount);
         | 
| 406 | 
            -
             | 
| 406 | 
            +
                    
         | 
| 407 | 
            +
                    // TODO: centralize token handling (issue #471)
         | 
| 407 408 | 
             
                    tokenHandler.transfer(stakingWallet, to, dipAmount);
         | 
| 408 409 | 
             
                }
         | 
| 409 410 |  | 
| @@ -422,6 +423,9 @@ contract Staking is | |
| 422 423 | 
             
                    return address(_getStakingStorage()._tokenRegistry);
         | 
| 423 424 | 
             
                }
         | 
| 424 425 |  | 
| 426 | 
            +
                function getTokenHandler() public virtual override(Component, IComponent) view returns (TokenHandler tokenHandler) {
         | 
| 427 | 
            +
                    return _getStakingStorage()._tokenHandler;
         | 
| 428 | 
            +
                }
         | 
| 425 429 |  | 
| 426 430 | 
             
                // from Versionable
         | 
| 427 431 | 
             
                function getVersion()
         | 
| @@ -492,14 +496,13 @@ contract Staking is | |
| 492 496 | 
             
                        "", // registry data
         | 
| 493 497 | 
             
                        ""); // component data
         | 
| 494 498 |  | 
| 495 | 
            -
                    _createAndSetTokenHandler();
         | 
| 496 | 
            -
             | 
| 497 499 | 
             
                    // wiring to external contracts
         | 
| 498 500 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 499 501 | 
             
                    $._protocolNftId = getRegistry().getProtocolNftId();
         | 
| 500 502 | 
             
                    $._store = StakingStore(stakingStoreAddress);
         | 
| 501 503 | 
             
                    $._reader = StakingStore(stakingStoreAddress).getStakingReader();
         | 
| 502 504 | 
             
                    $._tokenRegistry = TokenRegistry(tokenRegistryAddress);
         | 
| 505 | 
            +
                    $._tokenHandler = new TokenHandler(address(getToken()));
         | 
| 503 506 |  | 
| 504 507 | 
             
                    registerInterface(type(IStaking).interfaceId);
         | 
| 505 508 | 
             
                }
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 | 
            +
            pragma solidity ^0.8.20;
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            import {TARGET, COMPONENT, STAKE} from "../type/ObjectType.sol";
         | 
| 5 | 
            +
            import {INITIAL} from "../type/StateId.sol";
         | 
| 6 | 
            +
            import {Lifecycle} from "../shared/Lifecycle.sol";
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            contract StakingLifecycle is
         | 
| 9 | 
            +
                Lifecycle
         | 
| 10 | 
            +
            {
         | 
| 11 | 
            +
                constructor() {
         | 
| 12 | 
            +
                    _setupLifecycle();
         | 
| 13 | 
            +
                }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                function _setupLifecycle()
         | 
| 16 | 
            +
                    internal
         | 
| 17 | 
            +
                    override
         | 
| 18 | 
            +
                {
         | 
| 19 | 
            +
                    setInitialState(TARGET(), INITIAL());
         | 
| 20 | 
            +
                    setInitialState(COMPONENT(), INITIAL());
         | 
| 21 | 
            +
                    setInitialState(STAKE(), INITIAL());
         | 
| 22 | 
            +
                }
         | 
| 23 | 
            +
            }
         | 
| @@ -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,36 +3,27 @@ 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 { | 
| 26 | 
            -
            import {UFixed | 
| 27 | 
            -
            import {Version, VersionLib} from "../type/Version.sol";
         | 
| 28 | 
            -
            import {Versionable} from "../shared/Versionable.sol";
         | 
| 29 | 
            -
             | 
| 30 | 
            -
            import {RegistryAdmin} from "../registry/RegistryAdmin.sol";
         | 
| 19 | 
            +
            import {StakingLifecycle} from "./StakingLifecycle.sol";
         | 
| 20 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 31 21 |  | 
| 32 22 |  | 
| 33 23 | 
             
            contract StakingStore is 
         | 
| 34 24 | 
             
                AccessManaged,
         | 
| 35 | 
            -
                KeyValueStore
         | 
| 25 | 
            +
                KeyValueStore,
         | 
| 26 | 
            +
                StakingLifecycle
         | 
| 36 27 | 
             
            {
         | 
| 37 28 |  | 
| 38 29 | 
             
                event LogStakingStoreReserveBalanceIncreased(NftId targetNftId, Amount dipAmount, Amount reserveBalance, Blocknumber lastUpdatedIn);
         | 
| @@ -61,7 +52,7 @@ contract StakingStore is | |
| 61 52 | 
             
                error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId);
         | 
| 62 53 |  | 
| 63 54 | 
             
                IRegistry private _registry;
         | 
| 64 | 
            -
                 | 
| 55 | 
            +
                NftIdSet private _targetNftIdSet;
         | 
| 65 56 | 
             
                StakingReader private _reader;
         | 
| 66 57 |  | 
| 67 58 | 
             
                // staking rate
         | 
| @@ -91,7 +82,7 @@ contract StakingStore is | |
| 91 82 | 
             
                    // set internal variables
         | 
| 92 83 | 
             
                    _registry = registry; //TODO if keeps registry -> RegistryLinked and checks registry address
         | 
| 93 84 | 
             
                    _reader = reader;
         | 
| 94 | 
            -
                     | 
| 85 | 
            +
                    _targetNftIdSet = new NftIdSet();
         | 
| 95 86 |  | 
| 96 87 | 
             
                    // register protocol target
         | 
| 97 88 | 
             
                    _createTarget(
         | 
| @@ -426,8 +417,9 @@ contract StakingStore is | |
| 426 417 | 
             
                    return _reader;
         | 
| 427 418 | 
             
                }
         | 
| 428 419 |  | 
| 429 | 
            -
                 | 
| 430 | 
            -
             | 
| 420 | 
            +
                // TODO rename
         | 
| 421 | 
            +
                function getTargetNftIdSet() external view returns (NftIdSet targetNftIdSet){
         | 
| 422 | 
            +
                    return _targetNftIdSet;
         | 
| 431 423 | 
             
                }
         | 
| 432 424 |  | 
| 433 425 | 
             
                function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) { return _stakingRate[chainId][token]; }
         | 
| @@ -491,7 +483,7 @@ contract StakingStore is | |
| 491 483 | 
             
                    _tvlLastUpdatedIn[targetNftId]= BlocknumberLib.currentBlocknumber();
         | 
| 492 484 | 
             
                    _createTargetBalance(targetNftId);
         | 
| 493 485 |  | 
| 494 | 
            -
                     | 
| 486 | 
            +
                    _targetNftIdSet.add(targetNftId);
         | 
| 495 487 | 
             
                }
         | 
| 496 488 |  | 
| 497 489 | 
             
                function _updateReserves(
         | 
| @@ -12,13 +12,15 @@ using { | |
| 12 12 | 
             
                nqAmount as !=,
         | 
| 13 13 | 
             
                ltAmount as <,
         | 
| 14 14 | 
             
                gtAmount as >,
         | 
| 15 | 
            +
                AmountLib.add,
         | 
| 15 16 | 
             
                AmountLib.eq,
         | 
| 16 17 | 
             
                AmountLib.eqz,
         | 
| 17 18 | 
             
                AmountLib.gtz,
         | 
| 19 | 
            +
                AmountLib.gt,
         | 
| 20 | 
            +
                AmountLib.gte,
         | 
| 21 | 
            +
                AmountLib.multiplyWith,
         | 
| 18 22 | 
             
                AmountLib.toInt,
         | 
| 19 | 
            -
                AmountLib. | 
| 20 | 
            -
                AmountLib.toUFixed,
         | 
| 21 | 
            -
                AmountLib.multiplyWith
         | 
| 23 | 
            +
                AmountLib.toUFixed
         | 
| 22 24 | 
             
            } for Amount global;
         | 
| 23 25 |  | 
| 24 26 | 
             
            function addAmount(Amount a, Amount b) pure returns (Amount) {
         | 
| @@ -77,16 +79,21 @@ library AmountLib { | |
| 77 79 | 
             
                    return Amount.unwrap(amount1) == Amount.unwrap(amount2);
         | 
| 78 80 | 
             
                }
         | 
| 79 81 |  | 
| 80 | 
            -
                /// @dev return true if amount a1 is  | 
| 82 | 
            +
                /// @dev return true if amount a1 is less than a2
         | 
| 81 83 | 
             
                function lt(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 82 84 | 
             
                    return Amount.unwrap(a1) < Amount.unwrap(a2);
         | 
| 83 85 | 
             
                }
         | 
| 84 86 |  | 
| 85 | 
            -
                /// @dev return true if amount a1 is  | 
| 87 | 
            +
                /// @dev return true if amount a1 is greater than a2
         | 
| 86 88 | 
             
                function gt(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 87 89 | 
             
                    return Amount.unwrap(a1) > Amount.unwrap(a2);
         | 
| 88 90 | 
             
                }
         | 
| 89 91 |  | 
| 92 | 
            +
                /// @dev return true if amount a1 is greater or equal than a2
         | 
| 93 | 
            +
                function gte(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 94 | 
            +
                    return Amount.unwrap(a1) >= Amount.unwrap(a2);
         | 
| 95 | 
            +
                }
         | 
| 96 | 
            +
             | 
| 90 97 | 
             
                /// @dev return minimum of a1 and a2.
         | 
| 91 98 | 
             
                function min(Amount a1, Amount a2) public pure returns (Amount) {
         | 
| 92 99 | 
             
                    if (Amount.unwrap(a1) < Amount.unwrap(a2)) {
         | 
| @@ -27,20 +27,16 @@ function STAKING() pure returns (ObjectType) { | |
| 27 27 | 
             
                return ObjectType.wrap(3);
         | 
| 28 28 | 
             
            }
         | 
| 29 29 |  | 
| 30 | 
            -
            function TOKEN() pure returns (ObjectType) {
         | 
| 31 | 
            -
                return ObjectType.wrap(6);
         | 
| 32 | 
            -
            }
         | 
| 33 | 
            -
             | 
| 34 30 | 
             
            function RELEASE() pure returns (ObjectType) {
         | 
| 35 | 
            -
                return ObjectType.wrap( | 
| 31 | 
            +
                return ObjectType.wrap(6);
         | 
| 36 32 | 
             
            }
         | 
| 37 33 |  | 
| 38 34 | 
             
            function ROLE() pure returns (ObjectType) {
         | 
| 39 | 
            -
                return ObjectType.wrap( | 
| 35 | 
            +
                return ObjectType.wrap(7);
         | 
| 40 36 | 
             
            }
         | 
| 41 37 |  | 
| 42 38 | 
             
            function SERVICE() pure returns (ObjectType) {
         | 
| 43 | 
            -
                return ObjectType.wrap( | 
| 39 | 
            +
                return ObjectType.wrap(8);
         | 
| 44 40 | 
             
            }
         | 
| 45 41 |  | 
| 46 42 | 
             
            function INSTANCE() pure returns (ObjectType) {
         | 
| @@ -137,6 +133,8 @@ function neObjectType(ObjectType a, ObjectType b) pure returns (bool isSame) { | |
| 137 133 | 
             
            // library functions that operate on user defined type
         | 
| 138 134 | 
             
            library ObjectTypeLib {
         | 
| 139 135 |  | 
| 136 | 
            +
                error ErrorVersionTooBig(uint256 version);
         | 
| 137 | 
            +
             | 
| 140 138 | 
             
                function zero() public pure returns (ObjectType) {
         | 
| 141 139 | 
             
                    return ObjectType.wrap(0);
         | 
| 142 140 | 
             
                }
         | 
| @@ -209,6 +207,38 @@ library ObjectTypeLib { | |
| 209 207 | 
             
                                toInt(objectType))));
         | 
| 210 208 | 
             
                }
         | 
| 211 209 |  | 
| 210 | 
            +
                function toVersionedName(
         | 
| 211 | 
            +
                    string memory name, 
         | 
| 212 | 
            +
                    string memory suffix, 
         | 
| 213 | 
            +
                    uint256 version
         | 
| 214 | 
            +
                )
         | 
| 215 | 
            +
                    external
         | 
| 216 | 
            +
                    pure
         | 
| 217 | 
            +
                    returns (string memory versionedName)
         | 
| 218 | 
            +
                {
         | 
| 219 | 
            +
                    if (version > maxNumReleases()) {
         | 
| 220 | 
            +
                        revert ErrorVersionTooBig(version);
         | 
| 221 | 
            +
                    }
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                    string memory versionName = "_v0";
         | 
| 224 | 
            +
             | 
| 225 | 
            +
                    if (version >= 10) {
         | 
| 226 | 
            +
                        versionName = "_v";
         | 
| 227 | 
            +
                    }
         | 
| 228 | 
            +
             | 
| 229 | 
            +
                    versionedName = string(
         | 
| 230 | 
            +
                        abi.encodePacked(
         | 
| 231 | 
            +
                            name,
         | 
| 232 | 
            +
                            suffix,
         | 
| 233 | 
            +
                            versionName,
         | 
| 234 | 
            +
                            toString(version)));
         | 
| 235 | 
            +
                }
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                /// @dev returns the max number of releases (major versions) this gif setup can handle.
         | 
| 238 | 
            +
                function maxNumReleases() public pure returns (uint8) {
         | 
| 239 | 
            +
                    return 99;
         | 
| 240 | 
            +
                }
         | 
| 241 | 
            +
             | 
| 212 242 | 
             
                /// @dev returns the provied int as a string
         | 
| 213 243 | 
             
                function toString(uint256 value) public pure returns (string memory name) {
         | 
| 214 244 |  |