@etherisc/gif-next 3.0.0-1b49bd6-565 → 3.0.0-1bd1936-188
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/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +72 -139
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +116 -110
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +33 -72
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +66 -89
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +101 -122
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +65 -20
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +55 -31
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +10 -20
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +42 -18
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +75 -126
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +65 -41
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -72
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +139 -198
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +150 -140
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +56 -84
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -71
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +104 -166
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +138 -200
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +60 -30
- package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +152 -173
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +108 -170
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +164 -211
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +65 -41
- package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +102 -159
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +106 -163
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +120 -177
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +65 -41
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +114 -171
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +65 -41
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +54 -49
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +25 -77
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +44 -83
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +50 -144
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +147 -169
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +67 -43
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +36 -36
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +75 -138
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +112 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2 -2
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +2 -2
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +58 -53
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +8 -3
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +81 -132
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +65 -41
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +66 -94
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +83 -80
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -82
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +148 -149
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -111
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -88
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +65 -41
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +117 -176
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +139 -129
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -71
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +72 -100
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +86 -94
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -88
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +247 -24
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +165 -233
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +130 -140
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +63 -138
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -110
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +57 -72
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +65 -41
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +115 -182
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +138 -132
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +32 -71
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +32 -71
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +64 -82
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -82
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +56 -84
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +36 -75
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +127 -173
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +2 -2
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -122
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +94 -161
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +57 -72
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +63 -146
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +107 -109
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +56 -155
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +216 -202
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +15 -1
- 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 +96 -314
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +142 -163
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +77 -57
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +244 -285
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +110 -115
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +150 -159
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +185 -127
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +56 -32
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +29 -13
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +39 -84
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +320 -164
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +141 -115
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +169 -421
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +38 -96
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +38 -96
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +226 -82
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +56 -84
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +28 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +12 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +25 -77
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +12 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -71
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -72
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +34 -15
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +14 -3
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -76
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +37 -3
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +31 -70
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +29 -42
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +17 -30
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +34 -34
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +56 -101
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +36 -75
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +109 -170
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +31 -26
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +124 -112
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +22 -5
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +65 -132
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +111 -105
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +204 -212
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +19 -27
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +16 -16
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +6 -6
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +4 -4
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +10 -10
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +6 -19
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{IUpgradeable.sol/IUpgradeable.json → IVersionable.sol/IVersionable.json} +4 -54
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +86 -63
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/{Upgradeable.sol/Upgradeable.json → Versionable.sol/Versionable.json} +4 -54
- package/contracts/accounting/AccountingService.sol +6 -5
- package/contracts/accounting/AccountingServiceManager.sol +6 -4
- package/contracts/accounting/IAccountingService.sol +1 -1
- package/contracts/authorization/AccessAdmin.sol +19 -22
- package/contracts/authorization/AccessAdminLib.sol +9 -12
- package/contracts/authorization/AccessManagerCloneable.sol +48 -24
- package/contracts/authorization/Authorization.sol +2 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -3
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +2 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +4 -5
- package/contracts/distribution/Distribution.sol +2 -0
- package/contracts/distribution/DistributionService.sol +20 -24
- package/contracts/distribution/DistributionServiceManager.sol +6 -4
- package/contracts/examples/fire/FirePool.sol +4 -0
- package/contracts/examples/fire/FireProduct.sol +4 -0
- package/contracts/examples/flight/FlightLib.sol +5 -1
- package/contracts/examples/flight/FlightOracle.sol +8 -0
- package/contracts/examples/flight/FlightPool.sol +4 -0
- package/contracts/examples/flight/FlightProduct.sol +29 -4
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +4 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +4 -0
- package/contracts/instance/Instance.sol +11 -7
- package/contracts/instance/InstanceAdmin.sol +17 -10
- package/contracts/instance/InstanceAuthorizationV3.sol +2 -4
- package/contracts/instance/InstanceReader.sol +15 -15
- package/contracts/instance/InstanceService.sol +20 -18
- package/contracts/instance/InstanceServiceManager.sol +6 -4
- package/contracts/instance/base/Cloneable.sol +10 -4
- package/contracts/instance/base/ObjectSet.sol +2 -2
- package/contracts/oracle/BasicOracle.sol +2 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +1 -3
- package/contracts/oracle/IOracleService.sol +4 -0
- package/contracts/oracle/Oracle.sol +4 -3
- package/contracts/oracle/OracleService.sol +67 -37
- package/contracts/oracle/OracleServiceManager.sol +6 -4
- package/contracts/pool/BasicPool.sol +4 -2
- package/contracts/pool/BasicPoolAuthorization.sol +4 -5
- package/contracts/pool/BundleService.sol +19 -25
- package/contracts/pool/BundleServiceManager.sol +7 -5
- package/contracts/pool/IPoolService.sol +6 -5
- package/contracts/pool/Pool.sol +3 -1
- package/contracts/pool/PoolLib.sol +102 -5
- package/contracts/pool/PoolService.sol +101 -67
- package/contracts/pool/PoolServiceManager.sol +6 -4
- package/contracts/product/ApplicationService.sol +34 -13
- package/contracts/product/ApplicationServiceManager.sol +6 -4
- package/contracts/product/BasicProduct.sol +2 -0
- package/contracts/product/BasicProductAuthorization.sol +4 -5
- package/contracts/product/ClaimService.sol +34 -10
- package/contracts/product/ClaimServiceManager.sol +7 -5
- package/contracts/product/IPolicyService.sol +1 -0
- package/contracts/product/PolicyService.sol +57 -44
- package/contracts/product/PolicyServiceManager.sol +6 -4
- package/contracts/product/PricingService.sol +8 -7
- package/contracts/product/PricingServiceManager.sol +6 -4
- package/contracts/product/Product.sol +2 -0
- package/contracts/product/RiskService.sol +40 -8
- package/contracts/product/RiskServiceManager.sol +6 -4
- package/contracts/registry/IRegistry.sol +14 -20
- package/contracts/registry/IRegistryService.sol +14 -10
- package/contracts/registry/IRelease.sol +3 -0
- package/contracts/registry/Registry.sol +78 -124
- package/contracts/registry/RegistryAdmin.sol +22 -11
- package/contracts/registry/RegistryAuthorization.sol +3 -4
- package/contracts/registry/RegistryService.sol +82 -99
- package/contracts/registry/RegistryServiceManager.sol +11 -4
- package/contracts/registry/ReleaseAdmin.sol +16 -9
- package/contracts/registry/ReleaseRegistry.sol +74 -64
- package/contracts/registry/ServiceAuthorizationV3.sol +3 -4
- package/contracts/registry/TokenRegistry.sol +15 -6
- package/contracts/shared/Component.sol +22 -27
- package/contracts/shared/ComponentService.sol +130 -45
- package/contracts/shared/ComponentServiceManager.sol +7 -5
- package/contracts/shared/ContractLib.sol +93 -359
- package/contracts/shared/IComponent.sol +3 -5
- package/contracts/shared/IComponentService.sol +14 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -3
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +3 -14
- package/contracts/shared/IRegistryLinked.sol +3 -1
- package/contracts/shared/IService.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +64 -29
- package/contracts/shared/NftOwnable.sol +22 -9
- package/contracts/shared/PolicyHolder.sol +4 -2
- package/contracts/shared/Registerable.sol +20 -37
- package/contracts/shared/RegistryLinked.sol +23 -4
- package/contracts/shared/Service.sol +9 -8
- package/contracts/shared/TokenHandler.sol +1 -4
- package/contracts/staking/IStaking.sol +2 -2
- package/contracts/staking/Staking.sol +33 -28
- package/contracts/staking/StakingLib.sol +1 -3
- package/contracts/staking/StakingManager.sol +6 -3
- package/contracts/staking/StakingReader.sol +17 -9
- package/contracts/staking/StakingService.sol +13 -16
- package/contracts/staking/StakingServiceManager.sol +8 -4
- package/contracts/staking/StakingStore.sol +8 -8
- package/contracts/staking/TargetHandler.sol +5 -4
- package/contracts/type/Version.sol +16 -15
- package/contracts/upgradeability/{IUpgradeable.sol → IVersionable.sol} +19 -13
- package/contracts/upgradeability/ProxyManager.sol +54 -46
- package/contracts/upgradeability/{Upgradeable.sol → Versionable.sol} +14 -25
- package/package.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -74
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -74
- package/artifacts/contracts/upgradeability/IUpgradeable.sol/IUpgradeable.dbg.json +0 -4
- package/artifacts/contracts/upgradeability/Upgradeable.sol/Upgradeable.dbg.json +0 -4
- package/contracts/shared/IVersionable.sol +0 -19
- package/contracts/shared/Versionable.sol +0 -47
| @@ -4,10 +4,11 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 7 | 
            +
            import {IRelease} from "../registry/IRelease.sol";
         | 
| 7 8 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 8 9 | 
             
            import {IStakingService} from "./IStakingService.sol";
         | 
| 9 10 | 
             
            import {ITargetLimitHandler} from "./ITargetLimitHandler.sol";
         | 
| 10 | 
            -
            import {IVersionable} from "../ | 
| 11 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 11 12 |  | 
| 12 13 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 13 14 | 
             
            import {Blocknumber} from "../type/Blocknumber.sol";
         | 
| @@ -15,7 +16,7 @@ import {ChainId, ChainIdLib} from "../type/ChainId.sol"; | |
| 15 16 | 
             
            import {Component} from "../shared/Component.sol";
         | 
| 16 17 | 
             
            import {IComponent} from "../shared/IComponent.sol";
         | 
| 17 18 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 18 | 
            -
            import {ObjectType, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
         | 
| 19 | 
            +
            import {ObjectType, PROTOCOL, INSTANCE, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
         | 
| 19 20 | 
             
            import {Seconds, SecondsLib} from "../type/Seconds.sol";
         | 
| 20 21 | 
             
            import {Registerable} from "../shared/Registerable.sol";
         | 
| 21 22 | 
             
            import {StakingLib} from "./StakingLib.sol";
         | 
| @@ -27,13 +28,12 @@ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol"; | |
| 27 28 | 
             
            import {TokenRegistry} from "../registry/TokenRegistry.sol";
         | 
| 28 29 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 29 30 | 
             
            import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
         | 
| 30 | 
            -
            import {Versionable} from "../ | 
| 31 | 
            -
            import {Upgradeable} from "../upgradeability/Upgradeable.sol";
         | 
| 31 | 
            +
            import {Versionable} from "../upgradeability/Versionable.sol";
         | 
| 32 32 |  | 
| 33 33 |  | 
| 34 34 | 
             
            contract Staking is 
         | 
| 35 35 | 
             
                Component,
         | 
| 36 | 
            -
                 | 
| 36 | 
            +
                Versionable,
         | 
| 37 37 | 
             
                IStaking
         | 
| 38 38 | 
             
            {
         | 
| 39 39 | 
             
                string public constant CONTRACT_NAME = "Staking";
         | 
| @@ -75,18 +75,17 @@ contract Staking is | |
| 75 75 | 
             
                    external
         | 
| 76 76 | 
             
                    virtual
         | 
| 77 77 | 
             
                {
         | 
| 78 | 
            -
                     | 
| 79 | 
            -
                    if (msg.sender != address(registry)) {
         | 
| 78 | 
            +
                    if (msg.sender != address(getRegistry())) {
         | 
| 80 79 | 
             
                        revert ErrorStakingNotRegistry(msg.sender);
         | 
| 81 80 | 
             
                    }
         | 
| 82 81 |  | 
| 83 82 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 84 83 | 
             
                    address dipToken = _getStakingStorage()._tokenRegistry.getDipTokenAddress();
         | 
| 85 84 | 
             
                    $._tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
         | 
| 86 | 
            -
                        address( | 
| 85 | 
            +
                        address(getRegistry()),
         | 
| 87 86 | 
             
                        address(this),
         | 
| 88 87 | 
             
                        dipToken, 
         | 
| 89 | 
            -
                         | 
| 88 | 
            +
                        getRegistry().getAuthority());
         | 
| 90 89 | 
             
                }
         | 
| 91 90 |  | 
| 92 91 |  | 
| @@ -191,7 +190,7 @@ contract Staking is | |
| 191 190 | 
             
                    // effects
         | 
| 192 191 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 193 192 | 
             
                    address oldStakingService = address($._stakingService);
         | 
| 194 | 
            -
                    $._stakingService = StakingLib.checkAndGetStakingService(release);
         | 
| 193 | 
            +
                    $._stakingService = StakingLib.checkAndGetStakingService(getRegistry(), release);
         | 
| 195 194 |  | 
| 196 195 | 
             
                    emit LogStakingStakingServiceSet(address($._stakingService), release, oldStakingService);
         | 
| 197 196 | 
             
                }
         | 
| @@ -278,10 +277,9 @@ contract Staking is | |
| 278 277 | 
             
                    returns (Amount newBalance)
         | 
| 279 278 | 
             
                {
         | 
| 280 279 | 
             
                    address transferTo;
         | 
| 281 | 
            -
                    IRegistry registry = _getRegistry();
         | 
| 282 280 |  | 
| 283 281 | 
             
                    // case 1: protocol target: staking owner is recipient
         | 
| 284 | 
            -
                    if (targetNftId ==  | 
| 282 | 
            +
                    if (targetNftId == getRegistry().getProtocolNftId()) {
         | 
| 285 283 | 
             
                        // verify that the caller is the staking owner
         | 
| 286 284 | 
             
                        transferTo = getOwner();
         | 
| 287 285 | 
             
                        if (msg.sender != transferTo) {
         | 
| @@ -291,7 +289,7 @@ contract Staking is | |
| 291 289 | 
             
                    // case 2: same chain target: target owner is recipient
         | 
| 292 290 | 
             
                    } else if (ChainIdLib.isCurrentChain(targetNftId)) {
         | 
| 293 291 | 
             
                        // verify that the caller is the target owner
         | 
| 294 | 
            -
                        transferTo =  | 
| 292 | 
            +
                        transferTo = getRegistry().ownerOf(targetNftId);
         | 
| 295 293 | 
             
                        if (msg.sender != transferTo) {
         | 
| 296 294 | 
             
                            revert ErrorStakingNotNftOwner(targetNftId);
         | 
| 297 295 | 
             
                        }
         | 
| @@ -325,15 +323,13 @@ contract Staking is | |
| 325 323 | 
             
                    onlyTarget(targetNftId)
         | 
| 326 324 | 
             
                    returns (Amount newBalance)
         | 
| 327 325 | 
             
                {
         | 
| 328 | 
            -
                    IRegistry registry = _getRegistry();
         | 
| 329 | 
            -
             | 
| 330 326 | 
             
                    // check that service does not withdraw from protocol target 
         | 
| 331 | 
            -
                    if (targetNftId ==  | 
| 327 | 
            +
                    if (targetNftId == getRegistry().getProtocolNftId()) {
         | 
| 332 328 | 
             
                        revert ErrorStakingTargetTypeNotSupported(targetNftId, PROTOCOL());
         | 
| 333 329 | 
             
                    }
         | 
| 334 330 |  | 
| 335 331 | 
             
                    // default: on-chain target owner is recipient
         | 
| 336 | 
            -
                    address targetOwner =  | 
| 332 | 
            +
                    address targetOwner = getRegistry().ownerOf(targetNftId);
         | 
| 337 333 | 
             
                    return _withdrawRewardReserves(targetNftId, dipAmount, targetOwner);
         | 
| 338 334 | 
             
                }
         | 
| 339 335 |  | 
| @@ -435,9 +431,7 @@ contract Staking is | |
| 435 431 | 
             
                    virtual
         | 
| 436 432 | 
             
                    restricted() // only pool service
         | 
| 437 433 | 
             
                {
         | 
| 438 | 
            -
                    // !!! TODO amount can be 0
         | 
| 439 434 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 440 | 
            -
                    // why not StakingBalanceStore instead of StakingStore?
         | 
| 441 435 | 
             
                    $._store.increaseTotalValueLocked(targetNftId, token, amount);
         | 
| 442 436 | 
             
                }
         | 
| 443 437 |  | 
| @@ -534,7 +528,7 @@ contract Staking is | |
| 534 528 |  | 
| 535 529 | 
             
                    // collect staked DIP token via staking service
         | 
| 536 530 | 
             
                    if (stakeAmount.gtz()) {
         | 
| 537 | 
            -
                        address stakeOwner =  | 
| 531 | 
            +
                        address stakeOwner = getRegistry().ownerOf(stakeNftId);
         | 
| 538 532 | 
             
                        $._stakingService.pullDipToken(stakeAmount, stakeOwner);
         | 
| 539 533 | 
             
                    }
         | 
| 540 534 | 
             
                }
         | 
| @@ -557,7 +551,7 @@ contract Staking is | |
| 557 551 |  | 
| 558 552 | 
             
                    // transfer unstaked DIP token via staking service
         | 
| 559 553 | 
             
                    if (unstakedAmount.gtz()) {
         | 
| 560 | 
            -
                        address stakeOwner =  | 
| 554 | 
            +
                        address stakeOwner = getRegistry().ownerOf(stakeNftId);
         | 
| 561 555 | 
             
                        $._stakingService.pushDipToken(unstakedAmount, stakeOwner);
         | 
| 562 556 | 
             
                    }
         | 
| 563 557 | 
             
                }
         | 
| @@ -588,7 +582,7 @@ contract Staking is | |
| 588 582 | 
             
                        AmountLib.max()); // unstake up to this amount
         | 
| 589 583 |  | 
| 590 584 | 
             
                    // step 2: create new stake with full unstaked amount
         | 
| 591 | 
            -
                    address stakeOwner =  | 
| 585 | 
            +
                    address stakeOwner = getRegistry().ownerOf(stakeNftId);
         | 
| 592 586 | 
             
                    newStakeNftId = $._stakingService.createStakeObject(newTargetNftId, stakeOwner);
         | 
| 593 587 | 
             
                    $._store.createStake(newStakeNftId, newTargetNftId, stakeOwner, newStakedAmount);
         | 
| 594 588 |  | 
| @@ -627,7 +621,7 @@ contract Staking is | |
| 627 621 | 
             
                    // collect staked DIP token by staking service
         | 
| 628 622 | 
             
                    if (claimedAmount.gtz()) {
         | 
| 629 623 | 
             
                        // interactions
         | 
| 630 | 
            -
                        address stakeOwner =  | 
| 624 | 
            +
                        address stakeOwner = getRegistry().ownerOf(stakeNftId);
         | 
| 631 625 | 
             
                        $._stakingService.pushDipToken(claimedAmount, stakeOwner);
         | 
| 632 626 | 
             
                    }
         | 
| 633 627 | 
             
                }
         | 
| @@ -655,11 +649,21 @@ contract Staking is | |
| 655 649 | 
             
                    return _getStakingStorage()._tokenHandler;
         | 
| 656 650 | 
             
                }
         | 
| 657 651 |  | 
| 652 | 
            +
                // from IRegisterable
         | 
| 653 | 
            +
                function getRelease()
         | 
| 654 | 
            +
                    public 
         | 
| 655 | 
            +
                    pure 
         | 
| 656 | 
            +
                    virtual override (IRelease, Registerable)
         | 
| 657 | 
            +
                    returns(VersionPart)
         | 
| 658 | 
            +
                {
         | 
| 659 | 
            +
                    return VersionPartLib.toVersionPart(3);
         | 
| 660 | 
            +
                }
         | 
| 661 | 
            +
             | 
| 658 662 | 
             
                // from IVersionable
         | 
| 659 663 | 
             
                function getVersion()
         | 
| 660 664 | 
             
                    public 
         | 
| 661 665 | 
             
                    pure 
         | 
| 662 | 
            -
                    virtual override (IVersionable, Versionable)
         | 
| 666 | 
            +
                    virtual override (Component, IVersionable, Versionable)
         | 
| 663 667 | 
             
                    returns(Version)
         | 
| 664 668 | 
             
                {
         | 
| 665 669 | 
             
                    return VersionLib.toVersion(3,0,0);
         | 
| @@ -724,13 +728,14 @@ contract Staking is | |
| 724 728 | 
             
                    onlyInitializing()
         | 
| 725 729 | 
             
                {
         | 
| 726 730 | 
             
                    (
         | 
| 731 | 
            +
                        address registryAddress,
         | 
| 727 732 | 
             
                        address targetHandlerAddress,
         | 
| 728 733 | 
             
                        address stakingStoreAddress,
         | 
| 729 734 | 
             
                        address tokenRegistryAddress
         | 
| 730 | 
            -
                    ) = abi.decode(data, (address, address, address));
         | 
| 735 | 
            +
                    ) = abi.decode(data, (address, address, address, address));
         | 
| 731 736 |  | 
| 732 737 | 
             
                    // wiring to external contracts
         | 
| 733 | 
            -
                    IRegistry registry =  | 
| 738 | 
            +
                    IRegistry registry = IRegistry(registryAddress);
         | 
| 734 739 | 
             
                    StakingStorage storage $ = _getStakingStorage();
         | 
| 735 740 | 
             
                    $._protocolNftId = registry.getProtocolNftId();
         | 
| 736 741 | 
             
                    $._targetHandler = TargetHandler(targetHandlerAddress);
         | 
| @@ -740,9 +745,9 @@ contract Staking is | |
| 740 745 | 
             
                    // staking service has to be set via setStakingService after deploying the first GIF release
         | 
| 741 746 |  | 
| 742 747 | 
             
                    // initialize component
         | 
| 743 | 
            -
                    // TODO Will read 0 component service address from registry
         | 
| 744 748 | 
             
                    __Component_init(
         | 
| 745 749 | 
             
                        registry.getAuthority(),
         | 
| 750 | 
            +
                        address(registry), 
         | 
| 746 751 | 
             
                        registry.getNftId(), // parent nft id
         | 
| 747 752 | 
             
                        CONTRACT_NAME,
         | 
| 748 753 | 
             
                        STAKING(), 
         | 
| @@ -776,7 +781,7 @@ contract Staking is | |
| 776 781 | 
             
                    }
         | 
| 777 782 |  | 
| 778 783 | 
             
                    if (checkOwner) {
         | 
| 779 | 
            -
                        address nftOwner =  | 
| 784 | 
            +
                        address nftOwner = getRegistry().ownerOf(nftId);
         | 
| 780 785 | 
             
                        if (msg.sender != nftOwner) {
         | 
| 781 786 | 
             
                            revert ErrorStakingNotOwner(nftId, nftOwner, msg.sender);
         | 
| 782 787 | 
             
                        }
         | 
| @@ -6,7 +6,6 @@ import {IStaking} from "./IStaking.sol"; | |
| 6 6 | 
             
            import {IStakingService} from "./IStakingService.sol";
         | 
| 7 7 |  | 
| 8 8 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 9 | 
            -
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 10 9 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 11 10 | 
             
            import {ReleaseRegistry} from "../registry/ReleaseRegistry.sol";
         | 
| 12 11 | 
             
            import {Seconds, SecondsLib} from "../type/Seconds.sol";
         | 
| @@ -112,14 +111,13 @@ library StakingLib { | |
| 112 111 |  | 
| 113 112 |  | 
| 114 113 | 
             
                function checkAndGetStakingService(
         | 
| 114 | 
            +
                    IRegistry registry,
         | 
| 115 115 | 
             
                    VersionPart release
         | 
| 116 116 | 
             
                )
         | 
| 117 117 | 
             
                    public
         | 
| 118 118 | 
             
                    view
         | 
| 119 119 | 
             
                    returns (IStakingService stakingService)
         | 
| 120 120 | 
             
                {
         | 
| 121 | 
            -
                    IRegistry registry = ContractLib.getRegistry();
         | 
| 122 | 
            -
             | 
| 123 121 | 
             
                    if (!ReleaseRegistry(registry.getReleaseRegistryAddress()).isActiveRelease(release)) {
         | 
| 124 122 | 
             
                        revert IStaking.ErrorStakingReleaseNotActive(release);
         | 
| 125 123 | 
             
                    }
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            import { | 
| 4 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 5 5 | 
             
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 6 6 | 
             
            import {Staking} from "./Staking.sol";
         | 
| 7 7 |  | 
| @@ -15,6 +15,7 @@ contract StakingManager is | |
| 15 15 |  | 
| 16 16 | 
             
                /// @dev initializes proxy manager with service implementation 
         | 
| 17 17 | 
             
                constructor(
         | 
| 18 | 
            +
                    address registry,
         | 
| 18 19 | 
             
                    address targetHandler,
         | 
| 19 20 | 
             
                    address stakingStore,
         | 
| 20 21 | 
             
                    address tokenRegistry,
         | 
| @@ -26,16 +27,18 @@ contract StakingManager is | |
| 26 27 |  | 
| 27 28 | 
             
                    _initialImplementation = address(stakingImplementation);
         | 
| 28 29 | 
             
                    _initializationData = abi.encode(
         | 
| 30 | 
            +
                        registry,
         | 
| 29 31 | 
             
                        targetHandler,
         | 
| 30 32 | 
             
                        stakingStore,
         | 
| 31 33 | 
             
                        tokenRegistry);
         | 
| 32 34 |  | 
| 33 | 
            -
                     | 
| 35 | 
            +
                    IVersionable versionable = initialize(
         | 
| 36 | 
            +
                        registry,
         | 
| 34 37 | 
             
                        _initialImplementation,
         | 
| 35 38 | 
             
                        _initializationData,
         | 
| 36 39 | 
             
                        salt);
         | 
| 37 40 |  | 
| 38 | 
            -
                    _staking = Staking(address( | 
| 41 | 
            +
                    _staking = Staking(address(versionable));
         | 
| 39 42 | 
             
                }
         | 
| 40 43 |  | 
| 41 44 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| @@ -4,32 +4,36 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; 
         | 
| 5 5 |  | 
| 6 6 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 7 | 
            -
            import { | 
| 7 | 
            +
            import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
         | 
| 8 8 | 
             
            import {IStaking} from "../staking/IStaking.sol";
         | 
| 9 9 |  | 
| 10 | 
            -
            import {Amount} from "../type/Amount.sol";
         | 
| 10 | 
            +
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 11 | 
            +
            import {Blocknumber}  from "../type/Blocknumber.sol";
         | 
| 11 12 | 
             
            import {ChainId}  from "../type/ChainId.sol";
         | 
| 12 13 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 14 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 14 | 
            -
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 15 15 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 16 16 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 17 | 
            +
            import {STAKE, TARGET} from "../type/ObjectType.sol";
         | 
| 18 | 
            +
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 17 19 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 18 20 |  | 
| 19 21 |  | 
| 20 22 | 
             
            contract StakingReader is
         | 
| 21 | 
            -
                 | 
| 22 | 
            -
                 | 
| 23 | 
            +
                IRegistryLinked,
         | 
| 24 | 
            +
                Initializable
         | 
| 23 25 | 
             
            {
         | 
| 24 26 |  | 
| 25 27 | 
             
                error ErrorStakingReaderUnauthorizedCaler();
         | 
| 26 28 |  | 
| 27 29 | 
             
                address private _initializeOwner;
         | 
| 30 | 
            +
                IRegistry private _registry;
         | 
| 28 31 | 
             
                IStaking private _staking;
         | 
| 29 32 | 
             
                StakingStore private _store;
         | 
| 30 33 |  | 
| 31 | 
            -
                constructor() {
         | 
| 34 | 
            +
                constructor(IRegistry registry) {
         | 
| 32 35 | 
             
                    _initializeOwner = msg.sender;
         | 
| 36 | 
            +
                    _registry = registry;
         | 
| 33 37 | 
             
                }
         | 
| 34 38 |  | 
| 35 39 | 
             
                function initialize(
         | 
| @@ -47,14 +51,18 @@ contract StakingReader is | |
| 47 51 | 
             
                    _store = StakingStore(stakingStoreAddress);
         | 
| 48 52 | 
             
                }
         | 
| 49 53 |  | 
| 50 | 
            -
                // view functions
         | 
| 54 | 
            +
                // view and pure functions 
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                function getRegistry() external view returns (IRegistry registry) {
         | 
| 57 | 
            +
                    return _registry;
         | 
| 58 | 
            +
                }
         | 
| 51 59 |  | 
| 52 60 | 
             
                function getStaking() external view returns (IStaking staking) {
         | 
| 53 61 | 
             
                    return _staking;
         | 
| 54 62 | 
             
                }
         | 
| 55 63 |  | 
| 56 64 | 
             
                function getProtocolNftId() external view returns (NftId protocolNftId) {
         | 
| 57 | 
            -
                    return  | 
| 65 | 
            +
                    return _registry.getProtocolNftId();
         | 
| 58 66 | 
             
                }
         | 
| 59 67 |  | 
| 60 68 |  | 
| @@ -74,7 +82,7 @@ contract StakingReader is | |
| 74 82 |  | 
| 75 83 |  | 
| 76 84 | 
             
                function getTargetNftId(NftId stakeNftId) public view returns (NftId targetNftId) {
         | 
| 77 | 
            -
                    return  | 
| 85 | 
            +
                    return _registry.getParentNftId(stakeNftId);
         | 
| 78 86 | 
             
                }
         | 
| 79 87 |  | 
| 80 88 |  | 
| @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         | 
| 5 5 |  | 
| 6 | 
            +
            import {IRegisterable} from "../shared/IRegisterable.sol";
         | 
| 6 7 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 7 8 | 
             
            import {IStaking} from "./IStaking.sol";
         | 
| 8 9 | 
             
            import {IStakingService} from "./IStakingService.sol";
         | 
| @@ -113,7 +114,7 @@ contract StakingService is | |
| 113 114 |  | 
| 114 115 | 
             
                    // update reward reserve book keeping
         | 
| 115 116 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 116 | 
            -
                    address instanceOwner =  | 
| 117 | 
            +
                    address instanceOwner = getRegistry().ownerOf(instanceNftId);
         | 
| 117 118 | 
             
                    newBalance = $._staking.refillRewardReservesByService(instanceNftId, dipAmount, instanceOwner);
         | 
| 118 119 |  | 
| 119 120 | 
             
                    emit LogStakingServiceRewardReservesIncreased(instanceNftId, rewardProvider, dipAmount, newBalance);
         | 
| @@ -130,7 +131,7 @@ contract StakingService is | |
| 130 131 | 
             
                    _checkNftType(instanceNftId, INSTANCE());
         | 
| 131 132 | 
             
                    // update reward reserve book keeping
         | 
| 132 133 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 133 | 
            -
                    address instanceOwner =  | 
| 134 | 
            +
                    address instanceOwner = getRegistry().ownerOf(instanceNftId);
         | 
| 134 135 | 
             
                    newBalance = $._staking.withdrawRewardReservesByService(instanceNftId, dipAmount, instanceOwner);
         | 
| 135 136 |  | 
| 136 137 | 
             
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| @@ -157,12 +158,11 @@ contract StakingService is | |
| 157 158 | 
             
                            nftId: NftIdLib.zero(),
         | 
| 158 159 | 
             
                            parentNftId: targetNftId,
         | 
| 159 160 | 
             
                            objectType: STAKE(),
         | 
| 160 | 
            -
                            release: getRelease(),
         | 
| 161 161 | 
             
                            isInterceptor: false,
         | 
| 162 | 
            -
                            objectAddress: address(0) | 
| 163 | 
            -
             | 
| 164 | 
            -
             | 
| 165 | 
            -
             | 
| 162 | 
            +
                            objectAddress: address(0),
         | 
| 163 | 
            +
                            initialOwner: stakeOwner,
         | 
| 164 | 
            +
                            data: ""
         | 
| 165 | 
            +
                        }));
         | 
| 166 166 |  | 
| 167 167 | 
             
                    emit LogStakingServiceStakeObjectCreated(stakeNftId, targetNftId, stakeOwner);
         | 
| 168 168 | 
             
                }
         | 
| @@ -255,18 +255,18 @@ contract StakingService is | |
| 255 255 | 
             
                )
         | 
| 256 256 | 
             
                    internal
         | 
| 257 257 | 
             
                    virtual override
         | 
| 258 | 
            -
                     | 
| 258 | 
            +
                    initializer()
         | 
| 259 259 | 
             
                {
         | 
| 260 260 | 
             
                    (
         | 
| 261 261 | 
             
                        address authority,
         | 
| 262 | 
            +
                        address registry,
         | 
| 262 263 | 
             
                        address staking
         | 
| 263 | 
            -
                    ) = abi.decode(data, (address, address));
         | 
| 264 | 
            +
                    ) = abi.decode(data, (address, address, address));
         | 
| 264 265 |  | 
| 265 | 
            -
                    __Service_init(authority, owner);
         | 
| 266 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 266 267 |  | 
| 267 268 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 268 269 | 
             
                    $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
         | 
| 269 | 
            -
                    // TODO staking is registered in registry.initialize(), just check if address is registered staking
         | 
| 270 270 | 
             
                    $._staking = _registerStaking(staking);
         | 
| 271 271 | 
             
                    $._dip = $._staking.getToken();
         | 
| 272 272 | 
             
                    $._tokenHandler = $._staking.getTokenHandler();
         | 
| @@ -283,7 +283,7 @@ contract StakingService is | |
| 283 283 | 
             
                {
         | 
| 284 284 | 
             
                    // check if provided staking contract is already registred
         | 
| 285 285 | 
             
                    // staking contract may have been already registered by a previous major relase
         | 
| 286 | 
            -
                    IRegistry.ObjectInfo memory stakingInfo =  | 
| 286 | 
            +
                    IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
         | 
| 287 287 | 
             
                    if (stakingInfo.nftId.gtz()) {
         | 
| 288 288 | 
             
                        // registered object but wrong type
         | 
| 289 289 | 
             
                        if (stakingInfo.objectType != STAKING()) {
         | 
| @@ -294,9 +294,6 @@ contract StakingService is | |
| 294 294 | 
             
                        return IStaking(stakingAddress);
         | 
| 295 295 | 
             
                    }
         | 
| 296 296 |  | 
| 297 | 
            -
                    // TODO staking is registered in registry.initialize()
         | 
| 298 | 
            -
                    // consider deleting the rest of the function
         | 
| 299 | 
            -
             | 
| 300 297 | 
             
                    // check that contract implements IStaking
         | 
| 301 298 | 
             
                    if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
         | 
| 302 299 | 
             
                        revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
         | 
| @@ -304,7 +301,7 @@ contract StakingService is | |
| 304 301 |  | 
| 305 302 | 
             
                    address owner = msg.sender;
         | 
| 306 303 | 
             
                    _getStakingServiceStorage()._registryService.registerStaking(
         | 
| 307 | 
            -
                         | 
| 304 | 
            +
                        IRegisterable(stakingAddress),
         | 
| 308 305 | 
             
                        owner);
         | 
| 309 306 |  | 
| 310 307 | 
             
                    return IStaking(stakingAddress);
         | 
| @@ -2,7 +2,8 @@ | |
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 4 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 5 | 
            -
            import { | 
| 5 | 
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         | 
| 6 | 
            +
             | 
| 6 7 | 
             
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         | 
| 7 8 | 
             
            import {StakingService} from "./StakingService.sol";
         | 
| 8 9 |  | 
| @@ -15,20 +16,23 @@ contract StakingServiceManager is | |
| 15 16 | 
             
                /// @dev initializes proxy manager with service implementation 
         | 
| 16 17 | 
             
                constructor(
         | 
| 17 18 | 
             
                    address authority,
         | 
| 19 | 
            +
                    address registry,
         | 
| 18 20 | 
             
                    bytes32 salt
         | 
| 19 21 | 
             
                )
         | 
| 20 22 | 
             
                {
         | 
| 21 23 | 
             
                    StakingService svc = new StakingService();
         | 
| 22 24 | 
             
                    bytes memory data = abi.encode(
         | 
| 23 25 | 
             
                        authority, 
         | 
| 24 | 
            -
                         | 
| 26 | 
            +
                        registry, 
         | 
| 27 | 
            +
                        IRegistry(registry).getStakingAddress());
         | 
| 25 28 |  | 
| 26 | 
            -
                     | 
| 29 | 
            +
                    IVersionable versionable = initialize(
         | 
| 30 | 
            +
                        registry,
         | 
| 27 31 | 
             
                        address(svc), 
         | 
| 28 32 | 
             
                        data,
         | 
| 29 33 | 
             
                        salt);
         | 
| 30 34 |  | 
| 31 | 
            -
                    _stakingService = StakingService(address( | 
| 35 | 
            +
                    _stakingService = StakingService(address(versionable));
         | 
| 32 36 | 
             
                }
         | 
| 33 37 |  | 
| 34 38 | 
             
                //--- view functions ----------------------------------------------------//
         | 
| @@ -18,7 +18,6 @@ import {PROTOCOL, INSTANCE} from "../type/ObjectType.sol"; | |
| 18 18 | 
             
            import {Seconds, SecondsLib} from "../type/Seconds.sol";
         | 
| 19 19 | 
             
            import {StakingLib} from "./StakingLib.sol";
         | 
| 20 20 | 
             
            import {StakingReader} from "./StakingReader.sol";
         | 
| 21 | 
            -
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 22 21 | 
             
            import {TargetManagerLib} from "./TargetManagerLib.sol";
         | 
| 23 22 | 
             
            import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
         | 
| 24 23 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| @@ -26,8 +25,7 @@ import {UFixed, UFixedLib} from "../type/UFixed.sol"; | |
| 26 25 |  | 
| 27 26 | 
             
            contract StakingStore is 
         | 
| 28 27 | 
             
                Initializable,
         | 
| 29 | 
            -
                AccessManaged | 
| 30 | 
            -
                RegistryLinked
         | 
| 28 | 
            +
                AccessManaged
         | 
| 31 29 | 
             
            {
         | 
| 32 30 |  | 
| 33 31 | 
             
                // token
         | 
| @@ -55,6 +53,7 @@ contract StakingStore is | |
| 55 53 | 
             
                error ErrorStakingStoreTvlBalanceAlreadyInitialized(NftId nftId, address token);
         | 
| 56 54 | 
             
                error ErrorStakingStoreTvlBalanceNotInitialized(NftId nftId, address token);
         | 
| 57 55 |  | 
| 56 | 
            +
                IRegistry private _registry;
         | 
| 58 57 | 
             
                ITargetLimitHandler private _targetLimitHandler;
         | 
| 59 58 | 
             
                StakingReader private _reader;
         | 
| 60 59 | 
             
                NftIdSet private _targetNftIdSet;
         | 
| @@ -76,15 +75,16 @@ contract StakingStore is | |
| 76 75 |  | 
| 77 76 |  | 
| 78 77 | 
             
                constructor(
         | 
| 78 | 
            +
                    IRegistry registry, 
         | 
| 79 79 | 
             
                    StakingReader reader
         | 
| 80 80 | 
             
                )
         | 
| 81 81 | 
             
                    AccessManaged(msg.sender)
         | 
| 82 82 | 
             
                {
         | 
| 83 | 
            -
             | 
| 84 83 | 
             
                    // set final authority
         | 
| 85 | 
            -
                    setAuthority( | 
| 84 | 
            +
                    setAuthority(registry.getAuthority());
         | 
| 86 85 |  | 
| 87 86 | 
             
                    // set internal variables
         | 
| 87 | 
            +
                    _registry = registry;
         | 
| 88 88 | 
             
                    _reader = reader;
         | 
| 89 89 | 
             
                    _targetNftIdSet = new NftIdSet();
         | 
| 90 90 |  | 
| @@ -495,7 +495,7 @@ contract StakingStore is | |
| 495 495 | 
             
                    emit IStaking.LogStakingRewardReservesRefilled(
         | 
| 496 496 | 
             
                        targetNftId,
         | 
| 497 497 | 
             
                        dipAmount,
         | 
| 498 | 
            -
                         | 
| 498 | 
            +
                        _registry.ownerOf(targetNftId),
         | 
| 499 499 | 
             
                        newReserveBalance,
         | 
| 500 500 | 
             
                        lastUpdateIn);
         | 
| 501 501 | 
             
                }
         | 
| @@ -520,7 +520,7 @@ contract StakingStore is | |
| 520 520 | 
             
                    emit IStaking.LogStakingRewardReservesWithdrawn(
         | 
| 521 521 | 
             
                        targetNftId,
         | 
| 522 522 | 
             
                        dipAmount,
         | 
| 523 | 
            -
                         | 
| 523 | 
            +
                        _registry.ownerOf(targetNftId),
         | 
| 524 524 | 
             
                        newReserveBalance,
         | 
| 525 525 | 
             
                        lastUpdateIn);
         | 
| 526 526 | 
             
                }
         | 
| @@ -929,7 +929,7 @@ contract StakingStore is | |
| 929 929 | 
             
                    // checks
         | 
| 930 930 | 
             
                    if (checkParameters) {
         | 
| 931 931 | 
             
                        TargetManagerLib.checkTargetParameters(
         | 
| 932 | 
            -
                             | 
| 932 | 
            +
                            _registry, 
         | 
| 933 933 | 
             
                            _reader, 
         | 
| 934 934 | 
             
                            targetNftId, 
         | 
| 935 935 | 
             
                            objectType, 
         | 
| @@ -10,7 +10,6 @@ import {ITargetLimitHandler} from "./ITargetLimitHandler.sol"; | |
| 10 10 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 11 11 | 
             
            import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
         | 
| 12 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 | 
            -
            import {RegistryLinked} from "../shared/RegistryLinked.sol";
         | 
| 14 13 | 
             
            import {StakingStore} from "./StakingStore.sol";
         | 
| 15 14 | 
             
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         | 
| 16 15 |  | 
| @@ -18,12 +17,12 @@ import {UFixed, UFixedLib} from "../type/UFixed.sol"; | |
| 18 17 | 
             
            contract TargetHandler is
         | 
| 19 18 | 
             
                Initializable,
         | 
| 20 19 | 
             
                AccessManaged,
         | 
| 21 | 
            -
                ITargetLimitHandler | 
| 22 | 
            -
                RegistryLinked
         | 
| 20 | 
            +
                ITargetLimitHandler
         | 
| 23 21 | 
             
            {
         | 
| 24 22 |  | 
| 25 23 | 
             
                event LogTargetHandlerUpdateTriggersSet(uint16 tvlUpdatesTrigger, UFixed minTvlRatioTrigger, Blocknumber lastUpdateIn);
         | 
| 26 24 |  | 
| 25 | 
            +
                IRegistry private _registry;
         | 
| 27 26 | 
             
                StakingStore private _store;
         | 
| 28 27 |  | 
| 29 28 | 
             
                /// @dev Update trigger value: Number of TVL updates below which limit updates are suppressed
         | 
| @@ -34,12 +33,14 @@ contract TargetHandler is | |
| 34 33 |  | 
| 35 34 |  | 
| 36 35 | 
             
                constructor (
         | 
| 36 | 
            +
                    IRegistry registry,
         | 
| 37 37 | 
             
                    StakingStore stakingStore
         | 
| 38 38 | 
             
                )
         | 
| 39 39 | 
             
                    AccessManaged(msg.sender)
         | 
| 40 40 | 
             
                {
         | 
| 41 41 | 
             
                    // set final authority and registry
         | 
| 42 | 
            -
                    setAuthority( | 
| 42 | 
            +
                    setAuthority(registry.getAuthority());
         | 
| 43 | 
            +
                    _registry = registry;
         | 
| 43 44 | 
             
                    _store = stakingStore;
         | 
| 44 45 |  | 
| 45 46 | 
             
                    // set default trigger values
         | 
| @@ -5,9 +5,6 @@ type VersionPart is uint8; | |
| 5 5 |  | 
| 6 6 | 
             
            using {
         | 
| 7 7 | 
             
                versionPartGt as >,
         | 
| 8 | 
            -
                versionPartGte as >=,
         | 
| 9 | 
            -
                versionPartLt as <,
         | 
| 10 | 
            -
                versionPartLte as <=,
         | 
| 11 8 | 
             
                versionPartEq as ==,
         | 
| 12 9 | 
             
                versionPartNe as !=,
         | 
| 13 10 | 
             
                VersionPartLib.eqz,
         | 
| @@ -19,9 +16,6 @@ using { | |
| 19 16 | 
             
                for VersionPart global;
         | 
| 20 17 |  | 
| 21 18 | 
             
            function versionPartGt(VersionPart a, VersionPart b) pure returns(bool isGreaterThan) { return VersionPart.unwrap(a) > VersionPart.unwrap(b); }
         | 
| 22 | 
            -
            function versionPartGte(VersionPart a, VersionPart b) pure returns(bool isGreaterThan) { return VersionPart.unwrap(a) >= VersionPart.unwrap(b); }
         | 
| 23 | 
            -
            function versionPartLt(VersionPart a, VersionPart b) pure returns(bool isLessThan) { return VersionPart.unwrap(a) < VersionPart.unwrap(b); }
         | 
| 24 | 
            -
            function versionPartLte(VersionPart a, VersionPart b) pure returns(bool isLessThan) { return VersionPart.unwrap(a) <= VersionPart.unwrap(b); }
         | 
| 25 19 | 
             
            function versionPartEq(VersionPart a, VersionPart b) pure returns(bool isSame) { return VersionPart.unwrap(a) == VersionPart.unwrap(b); }
         | 
| 26 20 | 
             
            function versionPartNe(VersionPart a, VersionPart b) pure returns(bool isSame) { return VersionPart.unwrap(a) != VersionPart.unwrap(b); }
         | 
| 27 21 |  | 
| @@ -33,7 +27,8 @@ library VersionPartLib { | |
| 33 27 | 
             
                function releaseMax() public pure returns (VersionPart) { return toVersionPart(99); }
         | 
| 34 28 |  | 
| 35 29 | 
             
                function isValidRelease(VersionPart release) external pure returns(bool) { 
         | 
| 36 | 
            -
                     | 
| 30 | 
            +
                    uint256 releaseInt = VersionPart.unwrap(release);
         | 
| 31 | 
            +
                    return 3 <= releaseInt && releaseInt <= 99; 
         | 
| 37 32 | 
             
                } 
         | 
| 38 33 |  | 
| 39 34 | 
             
                function toString(VersionPart a) external pure returns (string memory) {
         | 
| @@ -71,9 +66,8 @@ library VersionPartLib { | |
| 71 66 |  | 
| 72 67 | 
             
                function eqz(VersionPart a) external pure returns(bool) { return VersionPart.unwrap(a) == 0; }
         | 
| 73 68 | 
             
                function gtz(VersionPart a) external pure returns(bool) { return VersionPart.unwrap(a) > 0; }
         | 
| 74 | 
            -
                function toInt(VersionPart a) external pure returns( | 
| 75 | 
            -
                function toVersionPart( | 
| 76 | 
            -
                function zero() external pure returns(VersionPart) { return VersionPart.wrap(0); }
         | 
| 69 | 
            +
                function toInt(VersionPart a) external pure returns(uint256) { return VersionPart.unwrap(a); }
         | 
| 70 | 
            +
                function toVersionPart(uint256 a) public pure returns(VersionPart) { return VersionPart.wrap(uint8(a)); }
         | 
| 77 71 | 
             
            }
         | 
| 78 72 |  | 
| 79 73 | 
             
            type Version is uint24; // contains major,minor,patch version parts
         | 
| @@ -93,7 +87,7 @@ function versionEq(Version a, Version b) pure returns(bool isSame) { return Vers | |
| 93 87 |  | 
| 94 88 | 
             
            library VersionLib {
         | 
| 95 89 |  | 
| 96 | 
            -
                function toInt(Version version) external pure returns( | 
| 90 | 
            +
                function toInt(Version version) external pure returns(uint) { return Version.unwrap(version); }
         | 
| 97 91 |  | 
| 98 92 | 
             
                function toUint64(Version version) external pure returns(uint64) { return Version.unwrap(version); }
         | 
| 99 93 |  | 
| @@ -130,19 +124,26 @@ library VersionLib { | |
| 130 124 | 
             
                    );
         | 
| 131 125 | 
             
                }
         | 
| 132 126 |  | 
| 127 | 
            +
                // function toVersionPart(uint256 versionPart) public pure returns(VersionPart) { 
         | 
| 128 | 
            +
                //     return VersionPart.wrap(uint8(versionPart)); 
         | 
| 129 | 
            +
                // }
         | 
| 130 | 
            +
             | 
| 133 131 | 
             
                function toVersion(
         | 
| 134 | 
            -
                     | 
| 135 | 
            -
                     | 
| 136 | 
            -
                     | 
| 132 | 
            +
                    uint256 major,
         | 
| 133 | 
            +
                    uint256 minor,
         | 
| 134 | 
            +
                    uint256 patch
         | 
| 137 135 | 
             
                )
         | 
| 138 136 | 
             
                    external
         | 
| 139 137 | 
             
                    pure
         | 
| 140 138 | 
             
                    returns(Version)
         | 
| 141 139 | 
             
                {
         | 
| 140 | 
            +
                    require(
         | 
| 141 | 
            +
                        major < 256 && minor < 256 && patch < 256,
         | 
| 142 | 
            +
                        "ERROR:VRS-010:VERSION_PART_TOO_BIG");
         | 
| 142 143 |  | 
| 143 144 | 
             
                    return Version.wrap(
         | 
| 144 145 | 
             
                        uint24(
         | 
| 145 | 
            -
                            ( | 
| 146 | 
            +
                            (major << 16) + (minor << 8) + patch));
         | 
| 146 147 | 
             
                }
         | 
| 147 148 |  | 
| 148 149 | 
             
                // TODO check for overflow?
         |